We now know what’s been wrong with me the past 10 years and worse in the past 5 years and just about unbearable in the past 2 years. I have Dr. Ritchie Shoemaker’s Biotoxin Illness. No question about it. Unfortunately, the first step in treating this miserable disease is to find a home (and workplace) that’s low in toxic molds. The workplace is easy because I can work from home, but so far finding a living space that’s below 2 on the ERMI (EPA Relative Moldiness Index) scale is next to impossible in Seattle and Albuquerque (it’s clearly not about climate). Older buildings are too toxic from disrepair, crawlspaces, basements and rugs. Newer buildings are built so tight that they don’t ventilate. I have measured brand new construction at greater than ERMI 7 on more than one occasion. This is some seriously bad construction created by people who could not care less about indoor air quality! Out of the dozen or so tests I’ve run, only one has passed so far and it now appears to have a water intrusion problem that was identified during inspection.
Is there a city in the world that builds for high indoor air quality? I need solidly engineered, low-humidity, high ventilation modern construction. I’m a great software engineer and fully ready to move if there is such a place… willing to learn Dutch or German!
What is the coolest startup out there? The most interesting company with the best mission?
Check it out! And vote for it if you like it. With some luck maybe Quirky will pick my invention and we can all have ouchless pushpins in the future!
“Fado” on Google Code
Jason stopped by this afternoon and we chatted about his open source project, “Fado.” It takes SQL as input and generates all the prepared statement and result set accessor classes that you might write by hand. It’s a very interesting approach for many database use cases and merits further investigation and development. If Fado could be used in conjunction with something that bound data from these generated result set accessors to some generated Java POJO base classes, it would pretty much replace Hibernate or similar technologies as far as I’m concerned. Certainly I like the idea of starting with the SQL.
I’ve created a series of very short screencasts that illustrate how I think about refactoring a very basic code example. If people find this interesting, I could create some more screen casts where I refactor other pieces of code.
Should it be saved?
I recently got an object lesson (pun intended) in when to start over on something. When a deadline rears its ugly head, that’s usually the best time in the project to “slow down to hurry up.” The more pressured and frazzled you get, the more mistakes you make. The more you keep thinking “just this one last fix (and this slightly wonky design will work).” Easier said than done.
The past two weeks of my work life have been invested in debugging something that was “99% done” pretty much the whole time. But after this huge waste of time, this area of the product was ultimately redesigned and rewritten in two days and now has no significant bugs. This kind of “we’re almost there” failure mode reminds me of mistakes people make in the stock market trying to “wait out” bad investments. Just because the stock you bought is going down, doesn’t mean you shouldn’t sell it.
In this particular “bad investment,” the trouble was that the underlying model was wrong. And the reason it was wrong was because our original conception of the problem was wrong. And the reason that was wrong was that we rushed at the start of the project to start coding when we didn’t really have the requirements down as fully as we thought we did. Under deadline pressure, who wants to go back and re-examine the foundations of your model when it’s almost working? Sound familiar?
Our particular issue stemmed from thinking that certain concepts were related when they weren’t related enough. This can be a really tricky thing in OO programming because it can initially look like like B extends A and C extends A is a good model, simply because B and C have some things in common. But in some cases this can be a trap where you slowly discover that they aren’t really the same concept. And unfortunately, in the meantime, you’ve wrecked a good chunk of your codebase (well, at least polluted it with a lot of unnecessary code).
I’m curious if any readers out there have ideas about how to identify when code should be saved and “remodeled” and when it should be leveled and rebuilt from the ground up. How do you know when to “cut and run?”
I’m also curious if people have interesting ideas about how to identify inheritance schemes that have run amok. Do you also find that too much adherence to DRY sometimes leads to unnecessary or unwise inheritance?
Since Steve Jobs recently trashed my iWeb site from beyond the grave, I have been forced to migrate at least the bones of my old site to WordPress. Let’s hope my new WordPress overlords are kinder.