John Haren's blog

Man, this ISV thing is tough

Well! I am proud to announce that progress is being made, and soon we'll be unveiling my new company, Chubby Game Studios. I'm using the ol' "Don't quit yer day job" strategy for this foray; I'll keep you posted on how it goes.
We don't have a production game yet, and in fact the website isn't ready to go, but I just had to announce the name of the company as it was a major undertaking just to settle on one out of many candidates. The selection was made easier by the dearth of available domain names that are even in the same solar system as your company name. Sheesh! As if cybersquatters weren't bad enough, what's up with all the lamers taking perfectly good domain names (think ${foo} and putting some piece 'o crap blog on it? And updating it every eight months. Arrrrgh. "Here's pictures of my cat." "Duhhh, Google is overrated gwaaaaah..."

Yeah, I'm two weeks into this, and I already know both why people start their own businesses and why they do not. Oh, there's the thrill, and the satisfaction that comes from making something (something that works, anyway). And sometimes it's just fun to make decisions.

Then again, sleep is kinda nice. Think I'll go get some here within the next... twenty hours or so.

Oh, almost forgot... can anyone recommend a jsp webhost?

Don't Worry, it's Just Computer-Generated...

This has been happening a lot lately, but the canonical example ocurred today with my <sarcasm>wonderful</sarcasm> DSL provider, SBC. Some scary and/or irritating bit of correspondence arrives in the post, declaiming that I'm about to lose my health insurance, or my house, or my savings, or my left leg. Today, with SBC, it was along the lines of "your contract expires at the end of this month; if you renew for another year, we'll only jack up your rates 20%. If you fail to renew, we'll jack them up 150%."

How nice of them. You'd think that maybe, just maybe, they'd think to reward loyal customers by, oh, say... lowering their rates? Or at the very least, not sticking them with an increase?

Hey, anyone want Wheel2.0?

Or, How I Learned to Stop Worrying and Love Hibernate

Okee-dokee. To make a very long story short: We've got this thing, see, that we call a DAL. It's kind of a data abstraction layer, but not really; it doesn't do much to 'abstract' data access. It does, however, put all the data access in a common set of packages, if not necessarily behind a common interface. It's not all bad. In fact, it's been useful, and it's gotten us this far. But it is a bit... anemic. And we do have maintenence problems - hundreds and hundreds of 'query modules', some ludicrously specific (bad abstraction! no! no!), most redundant.


Wow, what a productive week!

No, I'm not kidding. I'm on fire, kids. Just having a good week, cranking out lots of good, working code. I've been kickin' ass and chewin' gum, and I'm almost out of gum. You know how it is: sometimes you're on and sometimes you're not. This week I was on.
Something I'm feeling good about: I have a large degree of autonomy on my latest project. I gathered a pile of requirements and went to town. Just for kicks, I decided to try a development approach I've read about but never got to try in a production environment: refactoring to patterns.

For those of you who are old hands at this, accept my apologies, stop reading this, and go watch Arrested Development instead. The rest of you, if you're still awake, finish reading, then go watch A.D.

Aaaah, Vacation

I needed one, so I took one. I didn't go anywhere; instead I stayed at home and renovated my garage. It was really fun, and (as I've worked in construction before) it was gratifying to move around, lift things, nail other things together, use words like "soffit" and "facia" and say things like "They want too much for sixteen sinkers" out loud and to no one in particular at Home Depot. I didn't even turn my computer on all week. I felt like a real man.

Playing Around with Boutique Software

Looks like it's been a busy week on Codesnipers, and I've missed most of it. In addition to the usual work cycle, I've been hatching plans of my own to join the ranks of so many us here and get my own project going.

There's some... interesting roadblocks in store for me on my way to micro-ISVdom. As people like Paul Graham point out, getting a startup off the ground is a young person's job; or rather, reading the subtext, a manic, no-significant-other-havin', 22-year-old recent graduate from Stanford's job.

The Prophet's Dilemma

No real substantive post today; what started as a busy week has turned into a nightmare, complete with some very bad news about a very old friend.

Well, life goes on, and with it, work. On that front, my company is in the process of our first ever project post-mortem. One of the questions that's come up is the amount of hours spent unit testing vs. improvements to code quality. We had to fight to get hours in the schedule for UTs, and we got them. But now we're faced with the "Prophet's Dilemma": we predicted quality would suffer without unit tests, and we got unit tests, and now we can't prove that code quality would have suffered without them.

Software Evolution Considered Harmful

There’s a common trope in CS education that goes something like this:
“All software evolves, so be prepared for it.”

Far be it from me to imply that one shouldn’t be able to respond to change; that’s not my intention. But the idea expressed above contains a flaw: software does not evolve.

Greater Than, Less Than, What’s the Difference?

Thinking big by thinking small

I had a professor once (actually the finest I’ve ever known) who insisted to his students that “programming is all about the little details”. In my view, what he meant by this is that regardless of the project, methodology, people involved, or what-have-you, if the software doesn’t do what it’s supposed to do, it’s most likely the result of someone, somewhere, failing to account for a few little details. Not that those few details are necessarily easy or hard to identify (or rectify)—the point is that tiny discrepancies in code can have tremendous impact.

Case in point: our ship date is nigh, looming upon us like a brick wall in the middle of an interstate. We’re about ready to let this thing out the door, when we discover oops, that module X that we built two months ago, the one that we’ve had the requirements signed off on three separate times, isn’t quite right. Essentially,
Behavior ‘foo’ should result when incoming_date is > existing_date
should read:
Behavior ‘foo’ should result when incoming_date is >= existing_date

There are some additional details which only add to the headache, but I’ll spare you those.

Makin' Pie

Well, must be the season for wrapping up development cycles. As evidenced by other entries (by Alex and Keith) I’m not the only one looking forward to the winding-down of another successful product.

Only our development cycle ended in July, so we’re a few months late. Sue me.