Archive

Archive for February, 2005

100 Best Gadgets of All Time

February 27th, 2005

A neat list for the gadget-obsessed. I own, or have owned, 15 of the 100 items — what’s your score?

Uncategorized

AJAX: Asynchronous Javascript + XML

February 27th, 2005
Comments Off

An interesting overview from Jesse Garrett about the new wave of web applications, which are based on:

  • presentation using XHTML and CSS;
  • dynamic display and interaction using the Document Object Model;
  • data interchange and manipulation using XML and XSLT;
  • asynchronous data retrieval using XMLHttpRequest;
  • and Javascript binding everything together.

I wondered several years ago whether Javascript was going to stealth its way past Perl, Python, Tcl, Ruby, and all the other “heavyweight” scripting languages. Still don’t see any technical reason it couldn’t, and would any of us really be surprised if it built up enough momentum in the browser to colonise other application areas as well? Who knows—maybe E4X will be the seed from which the extensible programming systems I’ve been dreaming of grow…

Uncategorized

RIP Peter Benenson

February 27th, 2005
Comments Off

Peter Benenson, the founder of Amnesty International, has died at the age of 83. Amnesty has been a voice for the voiceless around the world, and is proof that anyone who wants to can make a difference. We’ll miss you, Peter…

Uncategorized

Possible vs. Feasible vs. Trivial

February 25th, 2005
Comments Off

A sociologist I once did some work for once told me that all human activities could be classified as belonging to one of a small number of natural timescales, which he described as:

  • continuous;
  • sip of coffee;
  • fresh pot;
  • tomorrow; and
  • sometime.

A continuous activity is one that you’re completely absorbed in, like typing a blog posting. The “sip of coffee” category includes things like quick compiles, launching OpenOffice, and other activities that give you enough time to check on a background task (“I wonder if I have mail?”), but not enough for you to go and do something else. “Fresh pot” is rebuilding PostgreSQL from source—you park the task, go and think about something else for a while (possibly forgetting details of what you were doing), and come back some time later. “Tomorrow” and “sometime” are timescales that involve planning; the difference between them is that “sometime” requires you to put time into planning (i.e., the main task generates meta-tasks).

The sociologist’s argument was that revolutionary technologies (or programs) are ones that move an activity from one category to another. Take desktop publishing, for example—what had been a “sometime” became a “fresh pot” (early systems would sit there and think a while to format a page), then “continuous” (WYSIWYG on first-generation Macs). Email did something similar to communication, and so on.

I was reminded of all this yet again when I read Mike Clark’s recent post on how Google Maps is changing the way he works. By pulling several things together, it moves a bunch of objective-oriented tasks (how do I print the handouts for my course? where will I stay while I’m in Indianapolis?) down a category, as a group.

I think (well, I hope) that Trac will do the same thing for undergraduate team programming. From what I’ve see in the last few years, ignorance isn’t the only reason that students don’t work like professionals; the other is that when you’re juggling four or five courses, you simply can’t afford tasks that are in high-cost categories. It remains to be seen whether we can push ‘em down the stack, but I’m hopeful…

Uncategorized

Evolution and Language

February 25th, 2005

Yet another fascinating article from Carl Zimmer, this one about the evolution of linguistic ability. If I had another twenty-four hours each day, I still wouldn’t be able to keep up with all the reading I’d like to do…

Uncategorized

News Roundup

February 25th, 2005
Comments Off

Three pieces of news:

A paper by Vlad Mnih, Jonathan Taylor, Lee Zamparo, Paul Gries, and Greg Wilson describing their addition of memory visualization to DrJava has been accepted by the Frontiers in Education 2005 conference. This work was done as a 49X project in the summer of 2004; congratulations, guys.

Prof. Karen Reid is speaking at 2:00 p.m. on Friday at SIGCSE 2005 about our experiences using CVS to manage undergraduate programming assignments.

Jonathan Taylor (a former 49Xer) is giving a talk on “CAPSGEN and CAPSID: Tools for Genotyping and Molecular Breeding based on DNA sequence information from multiple individuals/ecotypes/strains” on Tuesday, March 1, in MSB 2173, at 4:30 p.m.

Learning, Research

Technical Writing Decisions

February 20th, 2005

The Python Software
Foundation
has given me a grant to open source my course on
software engineering for scientists and engineers. I’ve been
consulting with several people on what the course’s exact content
should be; the other issue I have to sort out before I start work is
its format. The course will include:

  • point-form lecture notes that:
    • lecturers can use in class
    • students can skim through when they already know something about
      a topic
  • full-text explanations for people who ”don’t” know the topic,
    and won’t be able to figure it out from point-form notes
  • images
    • line drawings
    • screen shots
  • programs
    • The lecture notes and text will need to be able to refer to
      specific sections, either by callout (O’Reilly style—cleaner look,
      harder to engineer) or by line number
  • sample data files
  • “generated” files (e.g. program output)
    • Must be able to re-generate all program output
      automatically
    • Must also get a report if/when any of it changes, so that I can
      check back against the text
  • supporting code
    • Makefiles (or the equivalent, if I use SCons or some other system)
    • libraries and other big (often platform-specific) things

The question is, how to prepare, store, transform, and present all
of this? I bring this up here because my students face many of the
same challenges every time they have to write a final report. While
they don’t need to mix slide content and prose side-by-side, they do
have to manage images, code fragments, and so on.

Lots of systems already exist that do some or all of what I want,
and new ones are appearing all the time. (For example, S5, the Simple
Standards-Based Slide Show System, uses XHTML and JavaScript to create
a simple slide show.) The problem I have is that I’ve used all of the
ones described below, and haven’t been happy with any of them:

  • A (modified?) form of Wiki text as the source (so that it’s easy
    to edit and diff)

    • Generate slides and prose programmatically
    • Use a simple CGI system to display pages in a browser while
      editing in order to check formatting
    • Transform generated HTML/XML to create printable copy
  • LaTeX
    • Already has grown-up production tools (don’t need to invent any
      wheels!)
    • Editing and diffing is harder than Wiki text (comparable to
      XML)
    • Expressing formatting right (e.g. indentation of code samples in
      slide bullet points) is easier than with Wiki text
  • HTML
    • Can view exactly what I’m writing…
    • …except I don’t want to: included code, point form vs. prose,
      etc.
    • Can CSS take care of some of the display/view problems?
  • XML (home grown)
    • Can provide exactly as much information as I need to
    • Transformation is relatively straightforward
    • Do I really want to build up my own tagset?
  • XML (borrowed from the Pragmatic Programmers)
    • Don’t know if they’d let me
    • Doesn’t handle slides
  • XML (DocBook or other)
    • Overkill (esp. from an editing point of view)
    • Don’t know if it handles slides or not
  • WYSIWYG (Word, OpenOffice, etc.)
    • Hard to process (e.g. extract slides to one fileset, prose to
      another, or insert/check code samples)

What else is there? What have you used that helped make you
productive?

Uncategorized

On the Size of Programming Teams

February 18th, 2005
Comments Off

I once heard an anthropologist ask a room, “How big is a sports team?” When people said, “They’re all different sizes,” she said, “No, actually, they all have about half a dozen members. Anything larger than that (football, rugby, baseball) immediately splits into smaller groups (forwards and backs in rugby, infield and outfield in baseball).”

She went on to say that hunting parties in non-agricultural societies are usually that size as well, as are basic military units around the world (a platoon is two squad of six guys each). She thought there was a biological reason for this: we can only keep track of seven plus or minus things at once, so that’s the largest group most of us can work in effectively.

I’ve often wondered since how that applies to programming. I’ve seen three or four people work tightly on a single piece of code, but never any more—when there are more bodies, we divvy up the work, define some interfaces, and go our separate ways. Collaborative tools (bug trackers, wikis, instant messaging) don’t seem to affect this—they allow individuals to track the progress of other subgroups more effectively, but don’t make for larger subgroups.

Learning

Paging Dr. House…

February 17th, 2005
Comments Off

This week’s episode of House (the only new show this season I bother watching) chronicled the good doctor’s attempt to go a week without using painkillers for his leg. I sympathize—thanks to some drywall dust and a burned-out power supply, I was unable to access my personal mail for almost sixty hours. It’s all good now, though; it’s aaaaallll gooooood…..

So, here are a few links that have accumulated in the meantime:

  • Bruce Schneier on Unicode security holes.
  • Schneier again on a new tool called GhostBuster that uses a zero-information strategy to find viruses, trojans, etc.
  • A mother and son blog about computer games, which ties back to Allan Fisher‘s excellent talk on gender in computer science education.
  • Another rant (this by James Governor) about how SOAP is the “new CORBA”, i.e., is so bloated and clumsy that developers are using just about anything else instead.
  • This clever hack allows you to create new infix operators in Python. I’d beat any student who ever did it in production code, but it’s a very clever idea.
  • Also for Python fans, here’s an article about agile documentation, which is a fancy phrase for “let the tests explain what the code does”. I may have to reconsider my dislike of this…
  • For Windows users, a nice file system management tool called WinDirStat.
  • java.net’s Global Education and Learning Community, which has lots of interesting links. (Can I offshore my web surfing?)
  • A magazine called Better Software. I’ve only read one issue (found it by accident), but I was very impressed.
  • And the Vatican is finally offering a course on Satanism. ‘Bout time they updated their brand’s image…

Uncategorized

Real Development Life Cycles

February 14th, 2005
Comments Off

Here are descriptions of some real development lifecycles:

Anyone know any others?

Uncategorized