Archive

Archive for March, 2007

Things DrProject Has To Pay Attention To

March 8th, 2007
Comments Off

Nice post from Brian Benzinger.  But I already have (quick check) over 100 links on del.icio.us to things I need to check out as possible additions to DrProject… *sigh*

Uncategorized

Strawman Proposal for a New Ticketing System

March 8th, 2007

DrProject has been in use in half a dozen courses at two universities for over six months. We’re mostly pleased with it, but it’s clear that the ticketing system needs a major overhaul. Most class projects need nothing more than a shared to-do list, but some (like DrProject and OLM) need the priorities, due dates, and so on that real ticketing systems provide.

Cutting it another way, I’m mostly opposed to telling students they have to use tools—I think it’s more likely to turn students off, and if the tool doesn’t appeal, it should be redesigned. There are times, though, when the whole point of a course is to teach students to work a certain way, and in those cases, I want to have a full-blown ticketing system for them to practice with.

How can we reconcile these competing forces? Options are:

  1. Keep things the way they are, and tell students to live with it. I don’t like this, because what it will teach most students is that ticketing is “just overhead”.
  2. Don’t even try: build a separate to-do list, and provide an easy way for users to promote items from there to the ticketing system.
  3. Make the ticketing system customizable, extensible, or both. The former means that the set of fields that could be displayed is predefined; administrators and users can select which fields they want to use and see. The latter means that people can add new fields to tickets after the system is up and running.

Here’s a proposal, which I’d like everyone out in blogland to poke holes in. It’s inspired in part by Roundup, in which each ticket is its own dynamically-growing mailing list. Every message about the ticket is appended to the “list” (just like comments on tickets are appended to tickets); every time someone is cc’d on a ticket message, they are automatically added to the list, so that it grows to be as big as it needs to be. The system as a whole lets users define aliases for groups of people (like “QA” or “Customer XYZ”), so that groups can be added as well as individuals.

This proposal is also inspired by tagging, in which the vocabulary grows as it needs to. Many tagging systems (like del.icio.us) use typeahead to encourage people to re-use vocabulary; I think every extensible system should try to do that as well.

So, here’s a ticketing system that grows to be just as big and complex as its users need it to be:

  1. In a fresh-from-version-control DrProject installation, a ticket has just four fields. Title and description are wiki-formatted text; title is mandatory, but description is not. The ticket’s author is automatically recorded, and the system gives each ticket a unique sequence number. That’s it: a simple to-do list.
  2. Anyone who can modify a ticket can also add new fields to it. To add a field, the user selects the type (integer, enumeration, timestamp, text, etc.), gives the field a name, and fills in a value. For the moment, we won’t worry about whether this is done with forms and POSTs, or AJAX, or telepathy.
  3. Once a field XYZ has been added to any ticket, it is available whenever any new tickets are created. For example, if I add “Due” to ticket #22, the form for creating tickets will thereafter have a “Due” field with a calendar popup. If I add “Owner”, of type “UserId”, subsequent tickets will have “Owner” with a pulldown to select a user. If I add, “Priority”, the ticket creation and editing forms will—oh, wait I have to talk about enumerations.
  4. If a user creates an enumeration field (e.g., ticket state or priority), she must provide one or more values for that enumeration. These are just symbolic names, but she must specify the sorting order (probably just the order in which they are entered into a text box, but that’s another UI question which can be deferred for now). Other users can later add more values to the enumeration. For example, if I create “Priority” with “High” and “Low”, Jay could later add “Medium” in between.
  5. Admins can pre-load fields in a fresh installation, or bulk add fields without creating tickets. In a project course, for example, I’d add “Priority” and “Owner”, but might not add “Due”, since stuff’s due at the end of term. In a regular course, I might add “Owner” and “Due”, but not “Priority”, since students can probably keep track of that. And in the real world, people might add “Parent” or “Predecessor” to build those inter-ticket links we’ve been talking about.

Open questions:

  1. Would this, in principle, solve the problem we’re trying to solve? If not, none of the other questions below is worth answering…
  2. What happens to tickets that already exist when a new field is added? Are users required to specify a default for previous tickets? If so, does that default apply to future tickets? Do we have to go back and fill in existing tickets? Or is every field nullable?
  3. Can users delete fields? If so, does this really delete the field from all tickets? Or just hide it (i.e., make it invisible), so that old data in the database remains consistent?
  4. How is this stuff laid out? Are fields show in the order in which they were created? Can users specify where fields should go? Do we embed some sort of graphic design AI in DrProject? (I’m guessing not…) Or can we AJAX up a drag-around interface?
  5. What schema do we create to support this? I started doodling one last night; I’m not frightened by its multiple layers of indirection (I am, after all, a reformed C programmer), but I am bothered by the fact that ticket operations would require Python-level loops, i.e., they couldn’t be written in SQL alone. (My schema puts all the string-valued fields in one table, all the date-valued fields in another, and so on. The alternative is to give each record N columns, one for each data type, and only use one of those; the code around this doesn’t look any prettier…)

See also:

DrProject

Two Pictures Say It All

March 7th, 2007
Comments Off

Figure 1 shows that the number of women earning bachelor’s degrees in science & engineering has been climbing of late:

Figure 2 shows that the number earning bachelor’s degrees in Computer Science has been dropping, even while the male numbers have risen:

Anyone want to talk about it at Toronto Technology Week?

Equity

Us vs. Spam

March 6th, 2007
Comments Off

Dale Dougherty, at O’Reilly, posted a rather pessimistic article titled “Us vs. Spam: Another War We’re Not Winning“.  Scary stats: well over 90% of traffic is junk on some servers.  Charging even $0.0001 per message would make spam uneconomic, but as with signing and other proposals, it seems socially infeasible.

Uncategorized

SPA Conference

March 5th, 2007
Comments Off

Very indirectly, I came across a link to the SPA Conference in Cambridge (UK) today.  Looks very cool — I’d never heard of it before, but wish I was going.  Anyone been?  Have experiences to report?

Uncategorized

Fran Allen Wins Turing Award

March 4th, 2007
Comments Off

I should have posted this weeks ago: IBM’s Fran Allen won this year’s Turing Award for her work on optimizing compilers.  Here are all the winners to date—I’m embarrassed to admit that I recognize fewer than half the names.

2006 Frances E. Allen For pioneering contributions to the theory and practice of optimizing compiler techniques that laid the foundation for modern optimizing compilers and automatic parallel execution.
2005 Peter Naur For fundamental contributions to programming language design and the definition of Algol 60, to compiler design, and to the art and practice of computer programming.
2004 Vinton G. Cerf For pioneering work on internetworking, including the design and implementation of the Internet’s basic communications protocols, TCP/IP, and for inspired leadership in networking.
Robert E. Kahn For pioneering work on internetworking, including the design and implementation of the Internet’s basic communications protocols, TCP/IP, and for inspired leadership in networking.
2003 Alan Kay For pioneering many of the ideas at the root of contemporary object-oriented programming languages, leading the team that developed Smalltalk, and for fundamental contributions to personal computing.
2002 Leonard M. Adleman For their ingenious contribution for making public-key cryptography useful in practice.
Ronald L. Rivest For their ingenious contribution for making public-key cryptography useful in practice.
Adi Shamir For their ingenious contribution for making public-key cryptography useful in practice.
2001 Ole-Johan Dahl For ideas fundamental to the emergence of object oriented programming, through their design of the programming languages Simula I and Simula 67.
Kristen Nygaard For ideas fundamental to the emergence of object oriented programming, through their design of the programming languages Simula I and Simula 67.
2000 Andrew Chi-Chih Yao In recognition of his fundamental contributions to the theory of computation, including the complexity-based theory of pseudorandom number generation, cryptography, and communication complexity.
1999 Frederick P. Brooks For landmark contributions to computer architecture, operating systems, and software engineering.
1998 James Gray For seminal contributions to database and transaction processing research and technical leadership in system implementation.
1997 Douglas Engelbart For an inspiring vision of the future of interactive computing and the invention of key technologies to help realize this vision.
1996 Amir Pnueli For seminal work introducing temporal logic into computing science and for outstanding contributions to program and system verification.
1995 Manuel Blum In recognition of his contributions to the foundations of computational complexity theory and its application to cryptography and program checking.
1994 Edward Feigenbaum For pioneering the design and construction of large scale artificial intelligence systems, demonstrating the practical importance and potential commercial impact of artificial intelligence technology.
Raj Reddy For pioneering the design and construction of large scale artificial intelligence systems, demonstrating the practical importance and potential commercial impact of artificial intelligence technology.
1993 Juris Hartmanis In recognition of their seminal paper which established the foundations for the field of computational complexity theory.
Richard E. Stearns In recognition of their seminal paper which established the foundations for the field of computational complexity theory.
1992 Butler W. Lampson For contributions to the development of distributed, personal computing environments and the technology for their implementation: workstations, networks, operating systems, programming systems, displays, security and document publishing.
1991 Robin Milner For three distinct and complete achievements: 1) LCF, the mechanization of Scott’s Logic of Computable Functions, probably the first theoretically based yet practical tool for machine assisted proof construction; 2) ML, the first language to include polymorphic type inference together with a type-safe exception-handling mechanism; 3) CCS, a general theory of concurrency. In addition, he formulated and strongly advanced full abstraction, the study of the relationship between operational and denotational semantics.
1990 Fernando J. Corbato For his pioneering work organizing the concepts and leading the development of the general-purpose, large-scale, time-sharing and resource-sharing computer systems, CTSS and Multics.
1989 William (Velvel) Kahan For his fundamental contributions to numerical analysis. One of the foremost experts on floating-point computations. Kahan has dedicated himself to “making the world safe for numerical computations.”
1988 Ivan Sutherland For his pioneering and visionary contributions to computer graphics, starting with Sketchpad, and continuing after. Sketchpad, though written twenty-five years ago, introduced many techniques still important today. These include a display file for screen refresh, a recursively traversed hierarchical structure for modeling graphical objects, recursive methods for geometric transformations, and an object oriented programming style. Later innovations include a “Lorgnette” for viewing stereo or colored images, and elegant algorithms for registering digitized views, clipping polygons, and representing surfaces with hidden lines.
1987 John Cocke For significant contributions in the design and theory of compilers, the architecture of large systems and the development of reduced instruction set computers (RISC); for discovering and systematizing many fundamental transformations now used in optimizing compilers including reduction of operator strength, elimination of common subexpressions, register allocation, constant propagation, and dead code elimination.
1986 John Hopcroft For fundamental achievements in the design and analysis of algorithms and data structures.
Robert Tarjan For fundamental achievements in the design and analysis of algorithms and data structures.
1985 Richard M. Karp For his continuing contributions to the theory of algorithms including the development of efficient algorithms for network flow and other combinatorial optimization problems, the identification of polynomial-time computability with the intuitive notion of algorithmic efficiency, and, most notably, contributions to the theory of NP-completeness. Karp introduced the now standard methodology for proving problems to be NP-complete which has led to the identification of many theoretical and practical problems as being computationally difficult.
1984 Niklaus Wirth For developing a sequence of innovative computer languages, EULER, ALGOL-W, MODULA and PASCAL. PASCAL has become pedagogically significant and has provided a foundation for future computer language, systems, and architectural research.
1983 Dennis M. Ritchie For their development of generic operating systems theory and specifically for the implementation of the UNIX operating system.
Ken Thompson For their development of generic operating systems theory and specifically for the implementation of the UNIX operating system.
1982 Stephen A. Cook For his advancement of our understanding of the complexity of computation in a significant and profound way. His seminal paper, “The Complexity of Theorem Proving Procedures,” presented at the 1971 ACM SIGACT Symposium on the Theory of Computing, Laid the foundations for the theory of NP-Completeness. The ensuing exploration of the boundaries and nature of NP-complete class of problems has been one of the most active and important research activities in computer science for the last decade.
1981 Edgar F. Codd For his fundamental and continuing contributions to the theory and practice of database management systems. He originated the relational approach to database management in a series of research papers published commencing in 1970. His paper “A Relational Model of Data for Large Shared Data Banks” was a seminal paper, in a continuing and carefully developed series of papers. Dr. Codd built upon this space and in doing so has provided the impetus for widespread research into numerous related areas, including database languages, query subsystems, database semantics, locking and recovery, and inferential subsystems.
1980 C. Antony R. Hoare For his fundamental contributions to the definition and design of programming languages.
1979 Kenneth E. Iverson For his pioneering effort in programming languages and mathematical notation resulting in what the computing field now knows as APL, for his contributions to the implementation of interactive systems, to educational uses of APL, and to programming language theory and practice.
1978 Robert W. Floyd For having a clear influence on methodologies for the creation of efficient and reliable software, and for helping to found the following important subfields of computer science: the theory of parsing, the semantics of programming languages, automatic program verification, automatic program synthesis, and analysis of algorithms.
1977 John Backus For profound, influential, and lasting contributions to the design of practical high-level programming systems, notably through his work on FORTRAN, and for seminal publication of formal procedures for the specification of programming languages.
1976 Michael O. Rabin For their joint paper “Finite Automata and Their Decision Problem,” which introduced the idea of nondeterministic machines, which has proved to be an enormously valuable concept. Their (Scott & Rabin) classic paper has been a continuous source of inspiration for subsequent work in this field.
Dana S. Scott For their joint paper “Finite Automata and Their Decision Problem,” which introduced the idea of nondeterministic machines, which has proved to be an enormously valuable concept. Their (Scott & Rabin) classic paper has been a continuous source of inspiration for subsequent work in this field.
1975 Allen Newell In joint scientific efforts extending over twenty years, initially in collaboration with J. C. Shaw at the RAND Corporation, and subsequentially with numerous faculty and student collegues at Carnegie-Mellon University, they have made basic contributions to artificial intelligence, the psychology of human cognition, and list processing.
Herbert A. Simon In joint scientific efforts extending over twenty years, initially in collaboration with J. C. Shaw at the RAND Corporation, and subsequentially with numerous faculty and student collegues at Carnegie-Mellon University, they have made basic contributions to artificial intelligence, the psychology of human cognition, and list processing.
1974 Donald E. Knuth For his major contributions to the analysis of algorithms and the design of programming languages, and in particular for his contributions to the “art of computer programming” through his well-known books in a continuous series by this title.
1973 Charles W. Bachman For his outstanding contributions to database technology.
1972 E. W. Dijkstra The working vocabulary of programmers everywhere is studded with words originated or forcefully promulgated by E.W. Dijkstra – display, deadly embrace, semaphore, got-to-less programming, structured programming. But his influence on programming is more pervasive than any glossary can possibly indicate.
1971 John McCarthy For his contributions to artificial intelligence.
1970 J. H. Wilkinson For his research in numerical analysis to facilitiate the use of the high-speed digital computer, having received special recognition for his work in computations in linear algebra and “backward” error analysis.
1969 Marvin Minsky For his contributions to artificial intelligence.
1968 Richard Hamming For his work on numerical methods, automatic coding systems, and error-detecting and error-correcting codes.
1967 Maurice V Wilkes Professor Wilkes is best known as the builder and designer of the EDSAC, the first computer with an internally stored program. Built in 1949, the EDSAC used a mercury delay line memory. He is also known as the author, with Wheeler and Gill, of a volume on “Preparation of Programs for Electronic Digital Computers” in 1951, in which program libraries were effectively introduced.
1966 A. J. Perlis For his influence in the area of advanced programming techniques and compiler construction.

Uncategorized

Economics of Information Security lecture at U of T

March 4th, 2007
Comments Off

Prof. Ross Anderson (Cambridge University) is lecturing on the economics of information security on Thursday, March 15, 3:15 p.m., in SF 1105.  Promises to be engaging…

Announcements

Two Signs o’ the Times

March 2nd, 2007
Comments Off

Jeffrey Palermo describes a change that affected 200 files, but took only 7+N keystrokes (where N is the length of a namespace, typed in once).  Piaw Na announces a new release of gtags, a shared code tagging tool developed at Google, and now available on Google Code.  The future is here, it’s just not evenly distributed…

Uncategorized

Mac/Thunderbird Puzzlement

March 2nd, 2007

I spent some time this morning cleaning up and reorganizing my mail folders, which are stored on the Computer Science department’s server.  I use Thunderbird as a client on both Windows and Mac, and the Windows machine in my office had no trouble at all figuring out the new arrangements.  When I got home, though, things went south.  I:

  1. Launched Thunderbird 1.5.0.10 (which I’ve been using ever since I got this new Mac a week ago without any trouble).
  2. Watched for a couple of minutes as it added folders to its view of my CS lab account.
  3. Realized that it had hung up (this was about 5 minutes in; it had picked up about half of the new folders, then stopped adding any more).
  4. “Forced Quit” from the Apple menu.
  5. Restarted Thunderbird, only to have it hang immediately—the frame of the application came up, but none of the menus would respond, and the cursor was stuck in multicolored pinwheel mode.
  6. Restarted my machine, then restarted Thunderbird—same result.
  7. ssh’d to the CS lab server to check that my mail folders were all still there (they were).
  8. Delete Thunderbird.app from Applications, reopened the .dmg that I’d downloaded, dragged a fresh copy to Applications.
  9. Started it up.  This time, Thunderbird showed me exactly the mixed view that it had frozen on ten minutes before, i.e., some of the new folders were there, and some of the old folders that I’d deleted were mixed in with them.  It was as if everything I’d done in those ten minutes hadn’t happened.
  10. Just as strange, all of the menu items were grayed out except ‘About Thunderbird’.  Folders that contained real mail folders could be expanded and closed in the left-pane tree view (my ~/mail directory contains directories with names like ’2006-sent’ and ‘drproject’, which then contain mail folders holding the real messages), but I couldn’t view the contents of the mail folders themselves.
  11. Deleted Thunderbird.app and the .dmg file, downloaded a fresh copy, rebooted, reinstalled, and—yup, same bad behavior.

At this point I’m stuck.  All I can think of is that somewhere on my Mac, Thunderbird is storing a configuration or state file that I need to delete, but I’m damned if I can find it.  There’s nothing obvious in my home directory—anyone have any pointers?

Uncategorized

SIGGRAPH Volunteers and Passport Numbers

March 2nd, 2007

One of my students asked me to be a reference for his application to be a student volunteer at this summer’s SIGGRAPH (the big annual computer graphics conference). I was happy to do it, but when I clicked on the link SIGGRAPH sent me, it took me to a registration form which asked for (among other things) my passport number—as a required field (with a little red star beside it). As if that wasn’t bad enough, I was also offered a link to an unsecure version of the form, just in case the site was having problems. *sigh*


Later: Matylda Czarnecka, from siggraph.org, asked me to post this:

Many apologies for the confusion. We experienced a technical problem today which caused the review form to appear behind a login screen. We just resolved the problem and the link you received in the e-mail should now function correctly.

The passport field appears on the general sign-up for new SIGGRAPH accounts and is NOT a required field. We certainly never intended to require references to create a SIGGRAPH account just to review an applicant, and we apologize for the confusion!

Thank you for your patience. Please try the link again and let me know if you have any further questions or problems.


Later still: Mk Haley, also of SIGGRAPH, sent the below. Ironic that I spent half an hour in my Software Architecture course last week ranting about the pervasive loss of privacy in the wired society…

This optional field was added to the electronic submission system in response to the massive number of visa letters that SIGGRAPH is asked to produce each year for our foreign student volunteers and attendees. For many, they have to produce an official letter from the conference as part of a visa application to get into the country to attend. By compiling this information on the front-end, we have helped streamline that process for our international attendees. If that is not an issue for any participant, or they would rather handle the data transfer in another way, they are welcome to do so.

For any questions related to ACM SIGGRAPH, The SIGGRAPH 2007 Conference, or the Student Volunteer Program, please tap us directly, we are delighted to provide the information you need to participate.

ACM SIGGRAPH Director for Communications – Mk Haley mk_haley@siggraph.org

Uncategorized