Today’s defensetech digest held a couple of gems:
- Back in the 50s, the Brits designed a huge nuclear landmine to be used to slow the advance of an invading Soviet army in Germany. Who needs armor divisions in the Fulda Gap when you’ve got Blue Peacock?
- I haven’t dug much into the recently-introduced “satellite” option on Google Maps (except to note that they mislocated my address by about 3 houses)…but other people have.
Recently I tripped over another stupid mistake – just among us, I’m still waiting for the day when I stop making stupid mistakes and start making the smart ones – in a Java project. This time I spent about 20 minutes in the debugger, watching a paricular method call. One of the arguments in the call was a direct reference to a static final String defined in a class from another package. I had just changed the value and recompiled the class in which it was defined. However, the old value was still being passed in this method call. I stepped through it in the debugger; inspecting the value before the method call showed that the new value was indeed assigned to the variable. However, as soon as I stepped into the method, the old value popped up.
After a while I had a colleague look at the decompiled source, and then it hit us: the -O flag in the java compiler will inline references to static final variables. I not only needed to recompile the class where the variable was defined, I needed to recompile any class that referred to it. You C/C++ types out there are probably screaming about makedepend right now, and you’re right…sorta. Java does not have a popular makedepend-like tool. Thinking briefly about why this is so, I attribute it to the greater complexities of dependencies in Java than #include in C and the relative cheapness of compiling Java classes to bytecode. Couple those with considerations like JVM startup overhead at compile time, and you wind up with the conclusion that it’s cheaper to recompile all the classes all the time than to try to maintain a dependency tree.
Yet another twist on Hoare’s Dictum: “Premature optimization is the root of all evil.” During development, it’s probably best to leave optimization off.
Anyway, that’s not the gripe, just the moral. It’s a good thing we remembered the optimization flag, because I went looking for docs and found…nothing. The javac optimization flag is not in the Sun tool documentation, or any other place I could think to look. That’s the gripe. What else don’t I know about javac?
We went to Drumlin Farm this weekend with the Culvers, and we have a few pics to share. This is baby animal season so we got to see piglets, kids (the goat kind as well as human), ewes and chicks. The lambs were especially vocal on Saturday.
On a technical note, the Gallery install is new, so if you have any problems please let me know.
To her credit, Elise didn’t balk when I told her I wanted to do a race.
“Isn’t that dangerous?” She didn’t say.
“What are you trying to prove?” She did not challenge.
“Don’t you want to meet your second child?” She failed to ask.
No, she’s far more tolerant than that. She simply said “You’d better be back by 1 since we’re having people over for dinner.” Leaving me with little choice but to sign up, show up, and hope I could hang on. I haven’t raced in a dozen years, and as I recall I was pretty miserable. But my training habits have come a long way since then and there’s nothing like a race to hold a yardstick up to your fitness. But, as I soon remembered, road racing is about more than just fitness.
My Unitarian Jihad Name is: Brother Gatling Gun of Sweet Reason.
Or perhaps you’d prefer a Wu-Tang Clan Name.
I think I have the comment registration working now. You’ll need to register at www.typekey.com but once you do, this website will recognize you and allow you to post without having to go through moderation (if I so choose…)
The templates might be a bit cockeyed but everything should be readable, so that’s enough for now.
“Newborns don’t need much,” one of Elise’s colleagues remarked to her today.
“Yeah, but they do need names and car seats and we haven’t done any work on either one yet,” she replied.
We’re in the final countdown for the oral boards. Elise flies on Monday and takes the test on Tuesday. Maybe after that we’ll get our act together for May.