Posts from "August 2009"

Opower Labs

Move meetings to move developers

  • By Tom Vaughan
  • August 28, 2009

Here’s the scenario:

You cruise in to the office at 8:45, get your coffee, check the reddits, and ignore that email from your parents asking if their computer picked up a virus because McAfee won’t stop popping up a tooltray icon helpfully informing them that they’re totally vulnerable. Right around 9:15, you get motivated to tackle that 2 point user story for the current iteration.

You head over to the wiki, check out the specs for the requirement, find out what the Trac ticket number is and see if there are any comments with last minute advice or dependencies. None? Good. . . let’s get started!

Oh, huh. . . it’s 9:40. There’s that all-hands meeting at 10 o’clock. I could get started, but I’m not really going to get anything done in 20 minutes really….and that link to the keyboard-cat-three-wolf-t-shirt did look interesting.

The 10 o’clock meeting runs a little long, and then there’s the lunch train, and suddenly it’s the afternoon and you haven’t been in The Zone once.

The Zone

We’ve all been in The Zone – that magical place where time appears to stop and you rock out an insane amount of code in what seems like 10 minutes, but when you look up from your keyboard the sun is down and the cleaning crew is giving you a weird look because you didn’t realize you were trying to sing along to Sigur Ros.

Trying to force yourself into The Zone is like trying to force yourself to see through those stereograms (hint: it’s always a Schooner). And as hard as it is to get in The Zone, it’s annoying easily to get out of The Zone.

There are a lot of recommendations out there to help create “zone-friendly” work places including:

We were wrapping up our all-hands meeting yesterday when the ever-perceptive Dave noted that our weekly meeting schedules were really not all that Zone-Friendly. With a couple of exceptions, we had standing meetings along the following schedule:
Standing Meetings

And keep in mind, that’s just the standing meetings, so it’s the bare-minimum one would expect. Now let’s add some “procrastination shading” to that calendar to demonstrate the actual standing meeting impact:
Standing Meetings

If we shuffled some meetings around (especially around the meat of the middle of the week), I think we could end up “finding” 2 or 3 hours a week more conducive to The Zone:
Friendly Standing Meetings

Of course, this is an idealized example, but it’s something we’re thinking about and playing with.

What do you guys out there in development land do? Any recommendations of particular effectiveness?

Read More
Opower Labs

A year-long analysis of snack consumption

  • By Dave Copeland
  • August 26, 2009

Consistently, month after month, the chips that get left in the giant ‘box-o-free-snacks’ are:

Doritos Are No Bueno

Nacho Cheese Doritos.

Honorable Mentions: Fritos and Cool Ranch Doritos.

Read More
Opower Labs

New Developer Law

  • By Tom Vaughan
  • August 26, 2009

NEW LAW FOR DEVELOPERS:

If you throw an exception about some connection being refused, you’d better damn well put what connection you were attempting to make in the exception message.

What inspired this law?  Thanks for asking.

Check out this snippet in the middle of an 80 line stack dump:

2009-08-25 17:23:42.373::WARN:  Nested in org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'coreAutopatcher' defined in class path resource [config/migrationContext.xml]: Invocation of init method failed; nested exception is com.tacitknowledge.util.migration.MigrationException: Error applying patches:
com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1319)
at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)

“A ResourcePool could not acquire a resource from its primary factory or source”. Awesome. Sooo helpful. /wristsemoragegrowl

Also, a WARN? Seriously? You’re a connection pool. Do you think not connecting to your underlying datasource warrants maybe something as stern as an ERROR? Or, heaven forbid, a FATAL?

I’m sure I could have turned up logging somewhere, but I noticed Spring’s DelegatingDataSource bean standing out from among the stack lines and set a break point on its called method to figure out exactly which of my many connections was unable to be resolved:

what_am_i_connecting_to

There’s the culprit! localhost:5455. You know, whoever the idiot is who runs that localhost server needs to get his act together. I should call the guys from YouTube and have them do a Maury Povich-style video expose on why he can’t keep any of his connections stable.

Read More
Older Posts