Research Planet

As a new graduate student, one of the first things I learned was that the success of a researcher depends on the publish-or-perish model. It’s not a perfect system, but the pressure to generate publications of truly novel ideas does tend to motivate cutting-edge research. The peer-review process also provides valuable objective feedback for researchers, and it usually prevents low-quality work from being published. As a result, publication frequency has become—for better or for worse—the primary method of judging a researcher’s status and ability.

With the advent of the Internet, finding these publications has become a much simpler task. Spiders such as CiteSeer and Google Scholar, as well as publisher databases from IEEE and Springer, can find relevant publications with a simple keyword search. Some sites even offer vital statistics, such as the number of times a paper has been cited, to help judge the importance of the work. These tools are an enormous help when researching a topic.

But what happens when the research is done and it’s time to publish your own work? Surprisingly, finding a relevant conference or journal is often more difficult than finding a relevant publication. Searching the web can help, but you might overlook new or esoteric venues. For a more comprehensive search, professional organizations provide complete lists of the conferences they sponsor, but these too are limited. For instance, the ACM conference database doesn’t list IEEE events, while the IEEE database doesn’t list ACM events. And neither web site has any knowledge about conferences outside of their respective fields.

Making matters worse, some conferences have been accused of being “fake,” lacking any form of peer review and accepting all submissions (even randomly-generated papers) simply to make a profit. Journals, too, have been known to spam researchers with offers to publish in exchange for a fee. Given the key role that conferences and journals play in the integrity of research, these trends are disturbing.

After several years of dealing with these issues, always feeling a bit in the dark when it came to keeping track of research venues, I finally decided to do something about it: I created Research Planet, an independent, cross-discipline source of information about conferences and journals. Designed to make the life of a researcher easier, it offers:

  • A searchable database of venues with filtering by acceptance rate, submission deadline, and other criteria
  • A global, interactive map to help you locate upcoming conferences in your region of the world
  • A calendar of events (available for importing into Apple iCal, Google Calendar, and other calendaring applications) so that you’ll never miss another submission deadline
  • A forum for discussing conferences and journals
  • Customizable web feeds to keep you informed of new venues and other updates to the Research Planet database

Over time, I’ll be adding additional features, such as user comments, a rating system, photo handling, and more. I also plan to import conference data from other organizations, making the Research Planet database more comprehensive. Together, these features will help you find the best place to publish your work.

Research Planet

The Kansas City standard

During episode #66 of This Week in Tech, host Leo Laporte reminded his fellow pundits that August 2006 marked the 25th anniversary of the IBM PC. It cost $1565—a fairly inexpensive computer in those days—but Leo noted that’s because it didn’t come with a hard drive, only a cassette port. John C. Dvorak immediately asked, “Does anyone remember if that used the Kansas City standard?”

[flashvideo file= height=60 width=450 /]

My reaction was the same as Leo’s: Kansas City standard? Is that a joke? I grew up in K.C. and have lived there most of my life, and yet I’d never heard of such a thing.

This thirty year-old standard was actually fairly revolutionary. According to Wikipedia, it was one of the first standards to allow consumer-quality audio cassettes to store computer data. It was thus a catalyst in the rise of the personal computer, offering home users inexpensive data storage at a time when floppy disk drives cost around $1000.

An example comes from personal experience. I recall my dad’s old TI-99/4A having a cassette port to which he had hooked up an even older portable tape recorder. I’d use it to save my little BASIC programs and whatnot. I could turn off the computer then come back the next day, playback the tape, and pick up where I left off…hopefully. (As Leo says, those cheap tapes weren’t particularly reliable.)

Despite reliability issues, the Kansas City standard remained influential. It even spawned a completely new type of computer data storage: vinyl records! That’s right; old-fashioned 33â…“ RPM records were once used for recording high-tech digital data—formatted according to the Kansas City standard, of course.

Kansas City floppy

And all this time I thought my home town was known only for its barbecue and jazz

The earliest pop-culture Peace Corps reference?

The Peace Corps is a household name. You can ask almost anyone in America if they’ve heard of it, and they’ll probably answer in the affirmative. I’ve always wondered how this small federal agency could have such a huge impact on American culture, but I think it comes down to three basic factors:

  1. It’s exotic. Although many have heard of the Peace Corps, most don’t know exactly what it’s all about. There seems to be a romantic stereotype that Peace Corps volunteers are sent to some tropical village to live in a mud hut and teach the natives animal husbandry or some such skill. (The reality these days is that volunteers are more likely to end up in a city teaching computer literacy, but the stereotype lives on.)
  2. It’s old. Established in 1961, America has had plenty of time to learn about the Peace Corps, and nearly 200,000 returned volunteers have had ample opportunity to spread the word around. In fact, the Peace Corps has been around long enough that it’s even had its own postage stamp.

    Peace Corps stamp

  3. Hollywood loves it. I suspect this factor has had the single greatest impact on making the Peace Corps a household name. I’ve lost count of how many references to it I’ve seen on TV and in movies, each one helping to cement a place for the Peace Corps in American culture. My favorite is this segment from the movie Airplane!.

[flashvideo file= width=450 height=340 /]

Filmed in 1978, I had thought that Airplane! was perhaps the earliest pop-culture reference to the Peace Corps. Last week, when I happened to rent The Pink Panther from GreenCine, I discovered I was wrong.

Playing a supporting role in the film was Robert Wagner, better known to today’s audiences as Number Two from the Austin Powers series.

Number Two

In the scene below, note how Wagner casually mentions the Peace Corps. Moments later, David Niven enters and also drops the Peace Corps name as if it were common knowledge.

[flashvideo file= width=450 height=280 /]

What shocked me about this scene was the date: The Pink Panther was filmed in 1963, just two years after the Peace Corps was established! It could very well be the first reference to the Peace Corps—ever—in mainstream popular culture. Perhaps even more surprising is how nonchalantly the Peace Corps is mentioned, as if everyone knows what it is.

So, contrary to what I had assumed, the longevity of the Peace Corps may have had little to do with its status as a household name. Judging by this clip, it became well-known almost as soon as it was created.

A set of scripts to unmount drives before sleeping

When I’m at home, my MacBook Pro is hooked up to an external display, a couple of hard drives, and other peripherals. When I need to go on the road, I put it to sleep, unplug all the peripherals, and away I go.

There’s only one problem: Unplugging a hard drive can corrupt its filesystem if it’s still mounted. To prevent that from happening, I wrote a script that automatically unmounts all drives. As an added bonus, the script fails if any of those drives are busy and can’t be unmounted, warning me to take additional action before hitting the road. Here it is:

tell application “Finder”
    eject (every disk whose ejectable is true)
end tell

In most cases, this simple script works great, but it suffers from a few drawbacks:

  1. It ejects not only hard drives, but optical discs as well, which is usually not what I want.
  2. It won’t eject remotely mounted drives, such as NFS or AFP mounts.
  3. It won’t work if Finder is not running, which may be the case for PathFinder users like myself.

To fix these issues, I split the script into two parts, one for local drives and one for remote drives, and I rewrote it so that optical discs would be left alone. Here’s the part that unmounts local drives:

-- Set this list to the names of the local drives
-- you want to unmount
set local_drives to [“Backup drive”, “Clone”]

repeat with drive in local_drives
   set drive to “/Volumes/” & drive
   set driveExists to false
   try -- Ignore AppleScript warnings
      do shell script “test -d ” & ¬
            quoted form of drive
      -- Test completed successfully; drive exists
      set driveExists to true
   end try
   if driveExists then
      -- Eject the drive
      do shell script "umount " & ¬
            quoted form of drive
   end if
end repeat

And here’s the part that unmounts the remote drives:

-- Set this list to the names of the remote drives
-- you want to unmount
set remote_drives to [“DreamHost”, “DOC”]

repeat with drive in remote_drives
   set drive to “/Volumes/” & drive
   do shell script “umount ” & ¬
         quoted form of drive
end repeat

I don’t eject optical drives, but if for some reason you need to do so, here’s how:

-- This will eject the optical disc in the
-- primary (built-in) drive
do shell script “drutil -drive 1 eject”

-- This will eject all discs in all optical drives
do shell script “drutil eject”

For a downloadable version of these scripts, see my AppleScript page.

A tourist trap in Ghana

It’s not every day one hears about Ghana. Most Americans don’t know where it is, and many don’t even know it exists. The only mainstream media that gives Ghana any attention is the BBC News, but their stories are almost always soccer-related: a Ghanaian player transfers to a European club, a coach for the Black Stars gets fired, that sort of thing. As a returned Peace Corps Ghana volunteer, I’m a little disappointed the country doesn’t get more press.

That’s why, when watching ABC World News Tonight last December, my mouth dropped open. Charles Gibson suddenly started talking about Ghana! The story, from London-based correspondent Mike Lee, was all about Paga, a small town far in the northeast that is famous for one thing: crocodiles.

Note that Mike mispronounces the town’s name: It’s pägä, not pāgä. (Surprising, given that he actually visited the place.) Otherwise, it’s a nice segment that provides a fun glimpse into Ghanaian-style tourism. If you’re interested in even more scenes from Paga, check out the videos Straddling a Crocodile and sight n sound from the jungle.

These videos are especially fascinating for me because I’ve never actually been to Paga, even though I lived for twenty-six months in Tumu, a town less than 100 kilometers away. And I would often pass through Navrongo, a town just 10 kilometers from Paga, for my trips south. (If you use Google Earth, see just how close I was.)

So why did I never end up in Paga? At the time, I was much more interested in using my vacation days to head down to Accra, the only place in the whole country where a guy can get a burger, a shake, and a movie! But the next time I visit Ghana, I’ll definitely be swinging by Paga.

How to use Saxon with Ant

As the only open-source processor that supports the XSLT 2.0 specification, Saxon is becoming indispensable. I use it in my HR-XSL project, and the new functions and features of XSLT 2.0 have helped make the code a lot simpler.

A typical way of running Saxon is via Ant, which offers built-in support for XSLT processors. Its Xslt task defaults to the Xalan processor, but because this task understands the TrAX API, switching to Saxon is trivial. All you need to do is put Saxon’s JAR on the classpath. (This works because Saxon declares support for the TransformerFactory service in its manifest. When TrAX finds a match for this service, it knows which processor to use.)

But there’s a problem here. Xalan also supports TrAX, so it specifies the TransformerFactory service, as well. Thus it becomes a contest. The first processor listed on the classpath wins!

Now, one would think this wouldn’t be an issue. Xslt’s classpath attribute trumps the system’s classpath, right? Unfortunately, that’s not how it works—as discussed in the Ant FAQ—and as a result, you get unpredictable behavior: Your Ant script may or may not use Saxon depending on whether Xalan happens to be in your system’s classpath. This can be a real problem if, for example, you’ve used Fink to install Ant, which places Xalan on the system classpath by default.

All right, so that’s bad. Is there an easy way to solve this dilemma? How about the <factory> element of the Xslt task? It specifies a particular transformer factory to use, rather than letting TrAX instantiate the first one it happens to find. With this element, you should easily be able to force Ant to use Saxon, like this:

<xslt ...>
    <classpath location=“/path/to/saxon.jar”/>
    <factory name=“net.sf.saxon.TransformerFactoryImpl”/>

Alas, this also fails to work. For some reason, Ant always throws a ClassNotFoundException when you try to use the <factory> element this way. (See bug #41314 for more details.)

This was starting to hurt. I didn’t want my HR-XSL users submitting bug reports just because Ant couldn’t find Saxon. I needed a way to ensure that Saxon would run every time.

After following a number of dead ends, I finally found a solution. The trick is to set the Java property javax.xml.transform.TransformerFactory to Saxon’s transformer factory class. The TrAX implementation in Ant happens to look for this property and, if set, it will use the specified class rather than whatever it discovers on the classpath.

The hard part, surprisingly, is how to set the property. Ant provides no mechanism for changing Java’s system properties, so I rely instead on a custom Java class that extends and replaces Ant’s default TrAX handler. Just before a transformation occurs, it sets the transform factory property to net.sf.saxon.TransformerFactoryImpl, forcing Saxon to be used, then it restores the previous setting when the transformation is complete. (Restoring the property prevents conflicts with other XSLT-related Ant tasks, such as FOP.)

Once this class has been compiled, you tell Ant to use it via the processor attribute. For example, if the custom class is called SaxonLiaison (to reflect the class that it overrides, TraXLiaison), you’d call the Xslt task like this:

<xslt ... processor=“SaxonLiaison”>
    <classpath location=“/path/to/saxon.jar:/path/to/SaxonLiaison”/>

That’s it! Saxon will be used every time, regardless of what’s on the system classpath.

You can find a complete listing of my SaxonLiaison custom class in the util directory of the HR-XSL distribution.

UC Irvine professor is “sexy geek”

UCI often makes headlines in local media like The Orange County Register, but it rarely shows up on international news outlets. That’s why I’m always surprised when I see articles mentioning UCI, such as a recent BBC News piece on the water cycle in Africa that included quotes from UCI’s Jay Famiglietti.

Even more surprising was the news that UCI placed ninth in Wired’s geek beauty contest. 124 people voted Hans Keirstead, anatomy and neurobiology professor at UCI, the “Sexiest Geek for 2006.”

Hans Keirstead

So does this mean our rankings will go up next year?

Could you finish a Ph.D. in six months?

Sawsan Salameh has been dreaming of getting a doctorate since the age of sixteen. Now 29, her dream has been placed on hold because none of the universities in her native Palestine offers a Ph.D. program in theoretical chemistry, her chosen subject. Studying abroad wasn’t an option, for she comes from a traditional Muslim family and believes traveling abroad alone is improper. Making matters worse, her father recently passed away, leaving Sawsan to provide for her mother and younger sister.

Suddenly, luck changed for Sawsan. She applied to Hebrew University in East Jerusalem, just a short drive from her home in the West Bank, and not only did she gain acceptance, she received a full scholarship. She hopes to use her future degree to launch a career as a chemistry professor.

Only one obstacle remains: the Israeli checkpoint at the East Jerusalem border. Protected by barbed wire and machine guns, it blocks Sawsan from even setting foot on the university’s campus. Obtaining a permit for entry is possible—fourteen Palestinian students are currently enrolled in Israeli universities—but Sawsan’s application was denied eight times. (The government of Israel has become much tighter with permits since the Hamas takeover of Palestine in March.)

With help from the human rights group Gisha, Sawsan appealed to Israel’s High Court of Justice. After a month of delays and hearings, Sawsan’s dream was finally about to come true! The court overruled the government and approved a permit that would allow her to attend school in Israel…for six months.

Sawsan Salameh

Sawsan Salameh
Photograph © BBC News

The idea that anyone could complete a doctoral degree in six months is ludicrous. To put this in perspective, consider that in the United States, earning a Ph.D. in the sciences requires about seven years of post-Bachelor’s study. Sawsan’s six-month permit, which the High Court apparently considers a gift, is as good as none.

The Israeli authorities haven’t commented publicly on this case, so one can only imagine what they were thinking.


Apparently the developers at 1 Infinite Loop like to keep their code cheerful. An example posted to the Apple Developer Connection uses bunnies—yes, cute little bunnies—to demonstrate the power of frame buffer objects in OpenGL.

If you have a Mac, go ahead and download the example. Run it, then hit the Spacebar. You’ll see some very trippy effects that remind me of Dumbo’s pink elephant hallucination.


The frame buffer object, in case you were wondering, is a relatively new feature in OpenGL. It provides hardware-accelerated offscreen rendering of a texture. FBOs improve upon the older pixel buffer (PBuffer) technique, which was basically the same but required an evil context switch that hindered performance.

From Russia with Love

Back in July, Link TV aired one of the most fascinating documentaries I’ve seen in recent years. It was the story of fiendish addiction, intimidation, and high-stakes legal feuds set against the backdrop of Cold War tensions. And the cause of this real-life drama? A video game.

The BBC documentary, Tetris: From Russia with Love, chronicled how a simple, black-and-white, silent computer game started out as a prisoner behind the Iron Curtain, then suddenly escaped and went on to become one of the most popular titles of all time. Well-written and artfully photographed, the first half of the show focused on the birth of Tetris, explaining how Alexey Pazhitnov came up with the original idea and programmed it on his Electronika 60 (a Russian clone of the PDP-11) while working for the Soviet Academy of Sciences in Moscow.

The second half of the show was arguably more exciting, but it focused on the business aspects—contract disputes with the Kremlin, million-dollar royalties, that sort of thing—and ironically, that’s when I got a little bored. I was much more interested in the video clips of “ancient” computer systems. For instance, check out how big the floppy disks were back in the early 1980s:

Floppy disk of the 80s

Still, the documentary is well worth watching, especially if you played Tetris as a kid or have any interest in video game history. If it ever comes back on the air, I highly recommend tuning in.