January 8th, 2009


Happy Things: a good dance practice

It's not novel, but always worth reflecting on: when I'm a little discouraged, there is almost nothing better for my mood than a good dance practice. Last night was one such. Despite the weather, we got the better part of 20 people, including three folks from MIT who were checking it out as part of IAP and Karen from Camelot. (Whose LJ handle I don't know, if she has one.) The gender balance was a little male-heavy (unusually; we tend to be more or less female-heavy most weeks), but not so out of whack as to be a problem. The Waytes played well, the dancers seemed to all have a good time; all in all, it was a net-positive dance practice for me, the sort of evening that leaves me more energetic and enthusiastic than I was going into it.

Seriously: y'all come by, and drag your friends along. Dance practice, even more than most SCA activities, has intensely strong network effects -- in simple terms, the more, the merrier. Small sessions (fewer than a dozen people) can be kind of quiet, but any time we hit 20 it's a *lot* of fun. It's one of the best activities to simply drop into when you have the time, and if you bring along a few people you almost guarantee that we'll be large enough for it to be a good night...

The Satyam debacle

Don't know how much mainstream press this is getting, but today's interesting business disaster is the Satyam mess.

It's the sort of story that I expect we'll see a lot more of in the coming months: a company that was riding high during the boom, that cooked its books just a *little* bit to make things look better. Then, when things started to go sour last year, they committed what clearly was ever-more-outrageous levels of fraud, to keep anybody from catching on, in a desperate hope that something would go right and they could quietly sweep it under the rug. This built and built, to the point where by now they are more than a billion dollars in the hole. In the end, when the chairman finally had to own up to it (his full letter is enclosed in the article), it brought the company crashing down: their stock is down over 90%, and nobody really expects the company to survive in its current form, despite the fact that a week ago most people would have considered it a great success story.

The moral of the story is, as always, that it's the cover-up that'll kill you. If the letter is to be believed (and given that it confesses to massive fraud, I'm inclined to mostly do so), there would probably have been a moderate but survivable scandal if they'd admitted it when it started. But fudging it forced them to require good luck, and luck was not on their side...

The right tool for the job

In this case, the Ice Chipper. For those in my flist who live in warmer climes, this is essentially a sharp metal spatula at the end of a five-foot stick. On days like today, when the front path is covered by 3/4 inch of solid ice, you walk along, slamming the thing down into the ice (ideally at a slight angle) to break it up into chunks that you can then kick off to the side. Took about 45 minutes to clear a rough but serviceable path from the front door to the street.

But my thanks to whoever it was (ladysprite, maybe?) who pointed out a while ago that taking your ibuprofen *before* you're in major pain is much more useful than after. I think that particular advice is the only reason I'm making it through this winter without winding up flat on my back...

The programmer's equivalent of a rosary

Say to yourself ten times each day, "Raw Integers and Stringified Integers do *not* make acceptable IDs for your model objects. You should be using strongly-typed ID objects whenever possible."

Yeah, I know -- I really should know better, but it was so *easy* to just use the ints from the initial database representation (and derive type from context) that they wound up laced through the system. But while they haven't caused any Horrible Disasters yet, it's probably only a matter of time, and they will probably fail scalability eventually. So I'm currently doing penance by going through the whole system and replacing them with properly-typed ID wrappers everywhere that I can find them, which should make the next steps a *lot* more solid...