Long time no blog

October 3rd, 2006

I’ve been pretty busy over the last several months, which has left little time for blogging. Since June I have moved to San Francisco with my fiancee, found an apartment (no small affair) and started a new job with a small cheminformatics startup as director of software development. So far so good. Probably more about that later.

The two posts below I wrote a long time ago but for some reason never published.

Lab Dynamics

October 3rd, 2006

A wonderful passage from page 56 of Lab Dynamics, a book recommended to me by a biologist colleague:

If you are a technical professional, it would probably not come as a big surprise to learn that some people in your organization think you are hard to manage or are a poor manager. In the private sector, scientists are often sent to management training seminars. These typically teach participants to set goals and objectives, give feedback, do evaluations, and manage projects. These are all important skills and worth learning. However, your success at applying these skills is not determined by how well you know them or even how long you use them. It is determined by how well you understand yourself, and how well you relate to and respond to the people to whom you need to apply them. If you are oblivious to your own motivations and feelings, you probably do not pay attention to or understand the motivations and feelings of those you manage. If you interpret silence as agreement, repeated absences as laziness, and failure to follow instructions as forgetfulness, you cannot be an effective manager.

Fun with foreign language etymology: sicario and 별똥

October 2nd, 2006

More random foreign language trivia, this time of an etymological nature: the Italian word, sicario, means “hired assassin”. The Latin root is sicarius, which means “wielder of the knife”. By contrast, the Italian word assassino just means murderer.

The Korean word for “meteorite” is 별똥 (roughly, pyeol-ddong), which literally means “star droppings”, as in feces. A quick Google search confirms this word is commonly used. Other words containing the word for “droppings” indicate that I am being gentle in my translation here. I wonder if it’s similar to the German word, Dreck, which means “animal droppings” but is also used for “crap” and “dirt” in the nasty sense of that word.

Let me also mention where I learned these fun facts. I subscribe to Acquerello Italiano, an Italian langauge audio magazine that sends you a CD and transcript of the recording, filled with interesting facts about the vocabulary of the program. They also offer German, French and Spanish versions (all with different, country-specific content).

The “meteorite” derivation came from the Handbook of Korean Vocabulary, another great Korean language book by Miho Choo and Wiliam O’Grady. The book contains two sections, one on Chinese roots and the other on Korean roots common in Korean words. I have found the book very useful when learning vocabulary, because otherwise Korean words are just a bunch of meaningless syllables to me and are therefore difficult to remember.

Agile bioinformatics paper

June 18th, 2006

I don’t know why I didn’t post this before, but at the end of last month BMC Bioinformatics posted a provisional version of our paper on agile software methods in bioinformatics. The good news is people seem to be reading it. It is the journal’s #3 most viewed paper in the last thirty days! Give it a read and let me know what you think.

schemamule 1.0 released

May 23rd, 2006

We finally got around to open sourcing schemamule, a utility we wrote in the bioinformatics core at Northwestern. Schemamule copies the schema from one database to another (right now we support copying from Oracle to HSQLDB). We have used this tool for over two years now to set up an in-memory HSQDLB database to use for unit testing. This has at least a couple nice benefits:

  • Database-dependent tests (e.g. DAO tests) run much faster than when they are run against a database accessible only over the network, especially when working from home
  • Database-dependent unit tests can be run even if you aren’t on the network at all, very nice if you’re working on a plane, in an airport, or at the beach

We use schemamule primarily via its schemacopy Ant task, which has some nice configuration options if you just want to copy a subset of the table definitions from the schema, if you want to copy views, sequences, etc. Note that table records are never copied.

One of our apps does a number of funky custom-SQL queries for reporting (we have not yet taken the plunge and created a reporting data warehouse DB), and this meant that we had to fake a number of Oracle-specific features in HSQLDB. For example, in HSQLDB there is no DUAL table. We fake it by creating a table called DUAL that has one (and only one) row (the column names and record content being irrelevant). We also provide an HsqldbLibrary class to define other functions (e.g. TRUNC) not available in HSQLDB.

Anyway, if you do a lot of automated unit testing in Java, use Ant to automate your builds, and have slow database-dependent tests, try out schemamule, see if it helps, and let us know. Usage examples are available on the project website.