I’m using JDBC and Hibernate for one of my projects. The backend is MySQL. We want our users (predominantly biologists and researchers of the non-computational variety) to pick up our product and run with it with as little effort as possible. MySQL isn’t trivial to set-up so we opted to package the product with a preconfigured embedded Derby database. They won’t even know it’s there ’cause it’s that easy.
Right?
Well, not quite. Hibernate supports a variety of different SQL dialects but there are still some bugs. I tracked down the problem to the way Hibernate generates the DDL for Derby databases. By default, it forces Derby to take full control over identity columns. That means you can’t explicitly set the unique IDs manually.
That really really sucks if you’re trying to copy an entire object graph over verbatim from MySQL to Derby. Trying to remap the 300k IDs from the old values to the new Derby-generated ones isn’t an option either. That’s just the sample data set. The full version (so far) has over 50M entries.
You’d think that an object model over a relational database would make it easy to swap out different database back ends. Sadly, this isn’t the case. All the popular abstractions for database connectivity still require you to speak whatever SQL dialect your backend speaks.
Free beer/dinner for the first person who does a proper abstraction of SQL that incorporates the full semantics of the language in a nice API form that’s portable enough that you could use the same front end with any database back end with no modifications.
I’ll throw in dessert if you actually implement it.
I gave up a media pass for the crowning of the 2008 Playmate of the Year over the past weekend so I could spend some time with my nephew. Yes, that Jayde Nicole; and a handful of her playmate friends.
My subway commute took 30 minutes longer than usual—at least according to my phone’s clock. I barely made it in time for my 10am class.
When I got there, no one was around. So I fired up my laptop to see if the room changed.
I quickly learned that my laptop was either 30 minutes behind, or my phone was 30 minutes ahead.
My phone’s clock is set to sync with my cell provider’s time server. I thought it’d be safe to assume that a huge national communication services company would at least know what time it is.
Not only are they taking my money—they’re also trying to steal my time.
Had our first paper discussion session of the year over lunch today. I think I focused too much on the negatives this time. It’s hard to overlook poorly formulated arguments, especially when it’s backed by inconclusive data.
I should have tried harder to tune into the signal while filtering out the noise. Would’ve been more constructive to think about some of the new contributions (if any—see? Negative again) those studies brought to the field.
Those papers did shed some insight on the difficulties of conducting experiments in software engineering. Solid numbers about the practical aspect of software engineering is hard to find. The interesting bits are hard to measure (e.g. productivity, reliability, correctness, efficiency).
Even if we could come up with a way to do it, many factors would get in the way of collecting those metrics faithfully and reliably (e.g. how do we get test subjects to “collect” data for us without bogging them down with extra documentation work?).
As I was wandering into the grad lounge to brew myself a cup of coffee (note to self: don’t put water in grinds basket or people will laugh at you again), I found myself caught in a grad student’s talk. It was a topic I had little background in, so I had a high chance of getting lost.
I decided to stay for a different reason.
A number of faculty attended this talk and grilled the poor student. These same people will eventually grill me when I have to give a talk or defend my thesis. It was extremely constructive to see it live.
It also helps that the object of grilling wasn’t me in this case
Went to my first class today as a graduate student. Lots of smart people, small close-knit groups, and best of all, virtually no exams and tests! All schools should be like this.
Highlights:
Stood in five different lines to get five different kinds of yummy free food
Spilled two kinds of liquids on myself (both of which can be used as cleaning solvents)
Watched a real table shear in slow motion (and see all its contents fall on the floor)
Helped design the next killer portable technology over a stand-up lunch (yes, killer portable, not portable killer)
Helped come up with an awesome new movie idea—so awesome that you should buy the rights
I met four people over the past week who’ve been thinking about attempting a triathlon (or a sprint, or a try-and-tri). I’m sharing an office with three of them; our desks, all lined up in a row. Sometimes, I wonder if our supervisor did that on purpose.
The first (indoor) tri is coming up in February. Looks like it’s going to be a good year