Monthly Archives: June 2008

As We Head Into the Holiday Weekend…

And in other news, Jorge and Jeremy both had good weekends (but as the photos show, in very different ways).

Another DrProject Design Question

We’ve hit another “what should it do?” question in DrProject, and I’d welcome opinions from readers. As I’ve mentioned previously, the new ticketing system for DrProject is going to be extensible. Each project’s tickets will initially contain just four fields: sequence number, date created, creator ID, and one line of text. The first three will be filled in automatically; the user will only have to type the fourth. From experience, a simple “to do list” like this is all student teams really want or need.

However, almost everyone wants to add “just one more field” to this design. Sometimes it’s a person responsible; other times it’s priority, due date, a larger text area for a detailed description of the problem, or attachments. The new ticketing system will therefore allow the developers in a project to change the ticket schema for that project using a drag-and-drop form editor.

(Not that it matters right now, but we’re not just building this to support teams’ chosen workflows. It will also give us a way to find out what those workflows actually are—if we deploy DrProject, wait a few months, then look at what people have chosen to record, it should give us some insight into how they’re thinking about their work.)

Now here’s the problem. DrProject currently offers two “personal” views called “All Projects” and “All Tickets”. The first shows a merge of the event logs from all the projects the user belongs to; the second shows all the tickets assigned to the user from across all the same projects. The question is, what should we show for “All Tickets” if every project’s ticketing schema can be different? To make this more concrete, imagine that project Telepathy’s schema has grown to:

(id INTEGER, created DATE, creator USER_ID, title TEXT, duedate DATE, priority ENUM(“hi”, “med”, “low”))

while project Antigravity’s schema has grown to:

(id INTEGER, created DATE, creator USER_ID, title TEXT, priority(“urgent”, “optional”), owner USER_ID)

Options we can see are:

  1. Only show the common fields. (Unlike user-added fields, the four basic fields can never be deleted from a project’s ticket schema, so we know they’ll always be there.)
  2. Show the union of all the columns. This is awkward for all the obvious reasons: it’ll be very wide, many tickets will have blanks in many columns, enumerations with the same name but different values will be a pain, etc.
  3. Have one table for each project, but put all the tables on the same HTML page. A basic version is easy to implement, but sorting and filtering would be difficult.

Anyone have strong preferences? Can anyone see anything better? The ticket for this problem is #1506, and as I said, input would be welcome.

Every Problem in Computer Science…

…can be solved by adding another level of indirection, or so the saying goes.  We’re already seeing browsers serving that purpose by running applications like spreadsheets and word processors that used to sit directly on top of the operating system; the announcement about Project Coverage is yet another example of virtualization being used to simplify solutions by adding a level of indirection to the OS itself.

Navigating IRC Logs, Nested Forms, Et Cetera

A Different Kind of Game

AudiOdyssey (via DDJ) is “…an experimental computer game designed to be accessible to both the visually impaired community and mainstream gamers. The user stars as Vinyl Scorcher, an up-and-coming DJ, on his quest to get club patrons dancing. Swinging the Nintendo Wii controller to the beat, Vinyl lays down the various component tracks of a song, and keeps the party jumping. If he [sic] does an especially good job, he [sic] can even freestyle! But beware—if dancers get too rowdy, they’re likely to bump into the turntables, messing up Vinyl’s tracks.”