Subscribe to feed
Blog | About

Archive for October, 2007

Barcamp + Hiring

I attended Barcamp Atlanta this past weekend and found it to be a great deal of fun. I met a lot of interesting people and heard some great content. I found the sessions lead by Stephen Fleming to be particularly excellent. For my own session I guess introductory database admin/tuning just isn’t very inspiring, i’ll do something appropriately cooler next time. Much of the late night discussion (which unfortunately corresponded in time to a big production issue I had to be distracted by - see previous post if you care to know what issue I hit) was Startup Weekend Atlanta specific and left me wishing i’d known about the signups sooner. I just joined the wait list as a backend developer and/or sysadmin.

There was a fair amount of discussion about the Atlanta startup environment in general and thoughts on what factors prevent it from being better. Though I may not have the year and company counts that more experienced area entrepreneurs hold I have co-founded 2 startups and been employed by 2 more in the last 4ish years and have a lot of thoughts about this. I also realize I have a tremendous amount to learn through future experience.

The biggest issue we’ve faced is finding and keeping talent. We’ve managed to succeed with a mixture of contract and full-time help but in general I think qualified people are in short supply here. Obviously this is not a problem isolated to our company as we’ve lost a few to poaching by other startups. Perhaps going forward we’ll be able to collect advice and guidance from these older/wiser area entrepreneurs instead of painfully unwanted profit increases - they aren’t always a good thing :)

I rarely talk about work directly here, but as the newly crowned Minister of Libations at my company, i’d like to mention that we are looking to make several hires in both development and QA. Check out our website at wethecitizens.com and if you might be interested shoot me an e-mail at juhl [at] wethecitizens [dot] com. The code involves Java 1.5, Spring, Hibernate, and DWR (lots of Ajax) running against a stout PostgreSQL database. The interfaces are a mixture of publicly-accessible webpages and a more powerful application exposed to certain users that is delivered through webrunner.

It is a startup and while the work can be tough I also find it to be particularly rewarding. We work on a lot of nontrivial problems and interact with front-page customers and the opportunities ahead are excellent. We’ve been around for a few years, are well funded, have a committed and dedicated board, and as a startup actually have substantive revenue. Competitive salary, stock options, benefits (health and dental), flexible hours, snacks and drinks, proper workstations (Aerons while supplies last + Dual Screen + Laptop or Desktop), beer on Friday at close of business, and a committed core group of people make this a pretty great place to work in my opinion.

Comments

Hibernate Colon (:) Bug

In our main product we’ve built a pretty heavy-weight, powerful block of code for allowing users to build and execute very complex queries through the GUI. The permutations covered by this widget recently uncovered a hibernate bug and want to quickly write up this overview so google can start indexing it :)

As a short explanation, the queries being generated by the code backing this GUI-based query builder was generating fragments that involved type casts. We are using PostgreSQL and they looked like this:

(some_column > 0)::integer

This has worked great for awhile but last night I uncovered a combination of factors that causes this to break. If you are:

  • Using the Criteria API to build up a query
  • Using sqlRestrictions in your query
  • Using colons in your sql restriction (in my case it was the ::type casting for PostgreSQL)
  • Have a filter applied to your queries. In our case it was a filter being set by a @FilterDef annotation on the model object

If you combine these factors you will get an error along the lines of Invalid filter-parameter name format. When I googled this I ran into the common scenario of only finding hits within public-facing code repositories for the project throwing the error. Hopefully the next searcher finds it here.

Basically I think what happens in this case is colons aren’t properly escaped and hibernate then expects named parameters. In my case it was seeing ::integer and thinking I had a named parameter called :integer and the code in SessionImpl.java of the hibernate project was blowing up because this doesn’t look like a valid parameter name. It would have been much harder to track down the problem if hibernate wasn’t open source.

If I disabled the filter it worked fine. In either case the complete workaround is thanks to PostgreSQL and involves using this alternate casting syntax:

CAST ((some_column > 0) AS integer)

Thank goodness PostgreSQL provides different types of syntax for this. I’ll probably post this to the Hibernate JIRA before too long, i’ll likely somehow be told it isn’t a bug.

Comments

Potential Workstation Alternative

As nice as laptops can be, sometimes desktops are just nice to have for pure power. This is especially true for tasks like development where you have loads of applications up, probably have a database cranking, and are constantly compiling or deploying or profiling or debugging etc.

We setup a big ball of servers for a new client recently and being around that equipment for a few days really made me appreciate the speed of those boxes. A fresh restart of JBoss and a complete redeploy of our non-trivial .ear takes 1.5 - 2 minutes on my office workstation (respectably equipped) but only 20 seconds on these new web servers. Queries against large row counts that take minutes on the workstation take seconds or fractions of a second on the new database hardware.

Doing fresh restarts and redeploys and testing against large data sets are only necessary occasionally on my local environment but wouldn’t it be great to not care?

That said, I think (and only half-jokingly) that Dell or another vendor should start offering server-based workstations. If not offering them assembled at least pushing the idea.

Here’s a diagram from the front:

Desk Front

Basically take 2 well-equipped 2U 2950s (or maybe the 3U 6950s if you really want to get crazy), strap them to a vent unit that pushes the hot air back behind your desk, attach legs to the bottom and put your monitor and peripherals right on top of the servers.

Here’s a view from the top:

Desk Top

The position of your desk would be pretty crucial as even though the air is being pushed out of the back those 2 machines being backed up against one another is going to generate some heat. You would probably want to either back the desk into a wall and cut a hole into the office of someone you don’t like or situate the desk against an exterior wall and cut a hole to the outside.

Though this is largely a joke, having 2 servers would be pretty excellent if you could figure out what to do about both the airflow and the noise. Dell’s servers, and maybe all others as well, sound like mini jets at startup and don’t quiet down too terribly much when running steady.

Comments