Defending the Green Zone with an anti-mortar laser.
Damn.
Anti-artillery lasers have got to be the coolest Buck Rogers technology out of the labs since those jogging robots escaped last year...
Go slide-rule guys!
-the Centaur
... the webcomic is grossly delayed. However, while I've been gallivanting around on Mars and teaching my AI course I've also been letting work build up ... and so now I'm prepping some software for the PHIN Conference.
So until that's done, no grading papers, no postproducing webcomics, little to no sketching, and no serious work on Sangreal or OpenAPL. And no karate of any form, though that last bit has more to do with the ongoing pain in my arm than it has to do with any degree of business. Still, grrrr....
Yeah, I hear the 10,000 tiny violins playing. "Things will be better after May 9, I swear it!" At least I'm going to have a house ...
... God willing, of course. Let's hope this one isn't going to fall on my head or anything.
-the Centaur, whiner.
So until that's done, no grading papers, no postproducing webcomics, little to no sketching, and no serious work on Sangreal or OpenAPL. And no karate of any form, though that last bit has more to do with the ongoing pain in my arm than it has to do with any degree of business. Still, grrrr....
Yeah, I hear the 10,000 tiny violins playing. "Things will be better after May 9, I swear it!" At least I'm going to have a house ...
... God willing, of course. Let's hope this one isn't going to fall on my head or anything.
-the Centaur, whiner.
So at least Slava Pestov sees the rising tide of jargonitis that I do. (Of course, he's writing Factor, his own next-generation Forth (perhaps the only language as terse as APL ... almost), so you'd expect he'd be down on jargonitis).
But the point is, it ain't just me.
Clean up your act, folks. This will come back to bite ya.
-the Centaur
But the point is, it ain't just me.
Clean up your act, folks. This will come back to bite ya.
-the Centaur
HEY! Software developers! Yes, you. Wake up!
An insiduous disease is spreading its way through the development community, leaving confusion in its wake. No-one wants to talk about it - but someone's got to take a stand.
I'm talking about jargonitis.
Is your open-source project "designed to enhance the ability of the community to develop tools to plug into frameworks for the construction of software components?" Are you "exploiting an extensible platform for hosting innovative software tools for the development of cross-platform components?" Have you started a "revolutionary technology development platform to leverage an open source application framework?" If so, then I'm afraid you - yes, you - have been infected with jargonitis.
The primary symptom of jargonitis is logorrhea: a runny stream of useless verbiage. Word salsa like "designed to enhance the ability of the community to develop tools to plug into frameworks for the construction of software components" doesn't mean anything - or, more accurately, doesn't mean anything more than "improves plug-in development". The extra blather actually drains the meaning that is there, until the point gets lost in a sea of undifferentied grey jargon, and readers of your project web site drift away.
"Technology infrastructures for implementation frameworks" - feh!
Software comes in three major flavors: applications, tools, and platforms:
So the next time I roll on to SourceForge, or Freshmeat, or Apache, or the Eclipse project home page, I want to hear about "visual editors for graphs" (applications that do something) or "IDEs for developing web applications" (tools for building things) or "APIs for collaborative applications" (platforms for building things on). That's right: write nice, clear, concrete descriptions that say what you fricking mean.
If I see any more "technology projects to develop toolsets that leverage application frameworks" I'll come smack ya.
You know who you are.
-the Centaur
An insiduous disease is spreading its way through the development community, leaving confusion in its wake. No-one wants to talk about it - but someone's got to take a stand.
I'm talking about jargonitis.
Is your open-source project "designed to enhance the ability of the community to develop tools to plug into frameworks for the construction of software components?" Are you "exploiting an extensible platform for hosting innovative software tools for the development of cross-platform components?" Have you started a "revolutionary technology development platform to leverage an open source application framework?" If so, then I'm afraid you - yes, you - have been infected with jargonitis.
The primary symptom of jargonitis is logorrhea: a runny stream of useless verbiage. Word salsa like "designed to enhance the ability of the community to develop tools to plug into frameworks for the construction of software components" doesn't mean anything - or, more accurately, doesn't mean anything more than "improves plug-in development". The extra blather actually drains the meaning that is there, until the point gets lost in a sea of undifferentied grey jargon, and readers of your project web site drift away.
"Technology infrastructures for implementation frameworks" - feh!
Software comes in three major flavors: applications, tools, and platforms:
- Applications do something.
- Tools let you make something.
- And platforms provide the building blocks out of which you build applications and tools.
So the next time I roll on to SourceForge, or Freshmeat, or Apache, or the Eclipse project home page, I want to hear about "visual editors for graphs" (applications that do something) or "IDEs for developing web applications" (tools for building things) or "APIs for collaborative applications" (platforms for building things on). That's right: write nice, clear, concrete descriptions that say what you fricking mean.
If I see any more "technology projects to develop toolsets that leverage application frameworks" I'll come smack ya.
You know who you are.
-the Centaur
At last, someone understands my subtle attitude about spoilers. Penny Arcade once again says it all.
Note for future reference.
-the Centaur
Note for future reference.
-the Centaur
Hey! Vader's got a blog! Some highlights:
I can only say BWAH HA HA HAAAA! Oh. Ha. Whew ... where's my spleen?
-the Centaur
Have I mentioned before that I am surrounded by idiots? Let me cut to chase and just tell you up front: the rebels got away. All of them ... My elite squadron of StarDestroyers proved itself utterly incapable of a securing a single unescorted freighter travelling less than the speed of light.
I mean, come on. I've seen drills that were more challenging.
...You try to be an effective manager, you weed out the bad apples like the late Admiral Ozzel -- only to find that an insidious culture of incompetence has somehow transformed your deadly pan-galactic armada into a fleet of spaceballs...
Do you want to know what the worst part is? My left leg is still on the fritz. Whose trachea do you have to crush with your mind to get a little service around here?
I can only say BWAH HA HA HAAAA! Oh. Ha. Whew ... where's my spleen?
-the Centaur
...it is all you dreamed it could be.
Is it the original radio play brought to life word-for-word with the faithfulness of Sin
City? No. Do some of the reviews on line have a point? Yes. But, as my good friend Glenn said as the preview showing's credits scrolled to a close: "They imposed a more conventional narrative structure - but that's hardly a criticism!" or as another friend said "Given the constraints of making a movie people who haven't read the books will watch? Get over it."
Or, as another friend said: "I never read the books, and I enjoyed it."
Go see The Hitchhiker's Guide to the Galaxy. And have fun!
-the Centaur
Is it the original radio play brought to life word-for-word with the faithfulness of Sin
City? No. Do some of the reviews on line have a point? Yes. But, as my good friend Glenn said as the preview showing's credits scrolled to a close: "They imposed a more conventional narrative structure - but that's hardly a criticism!" or as another friend said "Given the constraints of making a movie people who haven't read the books will watch? Get over it."
Or, as another friend said: "I never read the books, and I enjoyed it."
Go see The Hitchhiker's Guide to the Galaxy. And have fun!
-the Centaur
SO, NASA is delaying the shuttle launch to make sure it dots all the I's and crosses all the T's on safety.
Hurray! NOW I'm happy.
Check it out, fix anything broke, check it out again, clear it, and if it blows up this time no one will blame you because you did every dang thing ya could, rather than just rushing it out there!
-the Centaur
Hurray! NOW I'm happy.
Check it out, fix anything broke, check it out again, clear it, and if it blows up this time no one will blame you because you did every dang thing ya could, rather than just rushing it out there!
-the Centaur
... but I've heard about flying cars for so long, I don't care anymore. People have been working on this for half a century. It isn't going to get feasible anytime soon.
No, really. Robots are jogging. There's water on Mars. And it looks like we're going to return to the moon.
But don't expect flying cars anytime soon.
-the Centaur
No, really. Robots are jogging. There's water on Mars. And it looks like we're going to return to the moon.
But don't expect flying cars anytime soon.
-the Centaur
... you might consider talking to Kelly Carnahan over at Atlanta Townhomes. He's helped at least one of my friends find a good home and has been patiently helping me find something (a) nice (b) close (c) affordable and, most importantly, (d) structurally sound.
This last part is perhaps the most important bit - see the picture of the cracked beam on icy hand of fate? Well, rather than just wandering around and saying "mmm, buyable goodness," Kelly (and the home inspectors he works with) actually look out for the customer and help them pick the best home - and then when the customer makes a choice, they *really* *inspect* the *home* with an eye to structural and resale deficiencies to make sure Kelly's proud of the sale.
Kelly has already saved me from at least one a possible $75K mistake and hopefully is steering me closer and closer to a Really Nice Home Really Soon Now. So I recommend him highly.
More developments as they happen...
This last part is perhaps the most important bit - see the picture of the cracked beam on icy hand of fate? Well, rather than just wandering around and saying "mmm, buyable goodness," Kelly (and the home inspectors he works with) actually look out for the customer and help them pick the best home - and then when the customer makes a choice, they *really* *inspect* the *home* with an eye to structural and resale deficiencies to make sure Kelly's proud of the sale.
Kelly has already saved me from at least one a possible $75K mistake and hopefully is steering me closer and closer to a Really Nice Home Really Soon Now. So I recommend him highly.
More developments as they happen...
So the Shuttle Discovery, about to re-launch America into space after a near two-year delay, has a crack in its fuel tank.
NASA scientists, in consultation with the manufacturer, have apparently decided that this crack is too small to deal with and will roll the fucker out any damn way so we can get on with our next national tragedy.
At what point do we say "enough is enough"?
What *is* it about the NASA bureaucracy that lops off the balls of anyone high up enough to say "Stop. Roll the fucker back into the bay. *Find* the *problem* --- I don't believe for one minute that a crack in the insulation does NOT mean that there aren't deeper problems somewhere in that tank. And while you're in there, find out whatever ELSE we missed --- we are not launching another $2 billion bottle rocket on MY watch."
No. Really. We've been down this road. We don't need to go down it again.
-Anthony
NASA scientists, in consultation with the manufacturer, have apparently decided that this crack is too small to deal with and will roll the fucker out any damn way so we can get on with our next national tragedy.
At what point do we say "enough is enough"?
What *is* it about the NASA bureaucracy that lops off the balls of anyone high up enough to say "Stop. Roll the fucker back into the bay. *Find* the *problem* --- I don't believe for one minute that a crack in the insulation does NOT mean that there aren't deeper problems somewhere in that tank. And while you're in there, find out whatever ELSE we missed --- we are not launching another $2 billion bottle rocket on MY watch."
No. Really. We've been down this road. We don't need to go down it again.
-Anthony
As a former Republican, remaining Libertarian, and once and future entrepreneur, I'm all in favor of the government getting out of the way of business and letting it get its work done because I know, at least for small businesses, it's frigging HARD.
That having been said, the distribution of wealth in this country shows signs that, at least for some folks, success gets easier ... or perhaps even out of control:
"It looks like two straight lines, but it's actually an astronomically steep curve that shows just how inequitably income, and power, are distributed in the US. And Alternet reports that the curve for wealth (accumulated income) is much steeper even than the income curve shown above. Five million US households possess over 60% of the nation's total wealth."
This sounds like a clear instance of Murdock's Law: "Once you become infinitely powerful, it is easy to find a way to win the game."
-the Centaur
That having been said, the distribution of wealth in this country shows signs that, at least for some folks, success gets easier ... or perhaps even out of control:
"It looks like two straight lines, but it's actually an astronomically steep curve that shows just how inequitably income, and power, are distributed in the US. And Alternet reports that the curve for wealth (accumulated income) is much steeper even than the income curve shown above. Five million US households possess over 60% of the nation's total wealth."
This sounds like a clear instance of Murdock's Law: "Once you become infinitely powerful, it is easy to find a way to win the game."
-the Centaur
Ya know, as one of the head-freezing set I'm normally not one to critique bleeding-edge science. For example, I'm all in favor of the atom smashing going on at the Brookhaven Relativistic Heavy Ion Collider (RHIC), where they're smashing gold nuclei together at greater than 99.99999% the speed of light, in an attempt to create "quark gluon plasmas" ... that *just* *might* have less than an 0.00001% chance of creating a new big bang and destroying the universe.
Why am I not afraid? Becuase of ultra-high-energy cosmic rays, which regularly bombard the Earth's atmosphere with far, far more energy than we can make in our measly human particle accelerators.
So if the universe could end over something like this, it'd be ending all the time.
I don't have such a cavalier attitude towards the attempt to mix bird flu and human flu, in which "what health officials fear most about bird flu ... acquiring genes from a human flu virus ... is getting under way in a high level biosecurity laboratory."
Why does this worry me, when news that the Brookhaven collider might have been spawning black holes does not? It's simple. The mixing of genes between pathogens, while it does happen in nature, is rare and hasn't yet happened between avian and human influenza. So while I don't worry about something dangerous that MIGHT happen relating to a phenomena that DOES happen all the time, as at Brookhaven, I do get worried about trying to create something that COULD but DOESN'T happen precisely because you are worried that something bad MIGHT happen. If you're really that worried that avian flu and human flu might combine into a world-ravaging pandemic ... why are you trying to make it happen?!?
Now, in reality, I'm not saying stop work. By all means --- if they can figure out how avian and human influenza tick and develop a proactive vaccine, more power to you. But ... haven't these guys seen or read The Stand?
I'm not joking around here. Tom Clancy's Debt of Honor included (spoiler alert) terrorists crashing an airliner into the Capitol building in Washington, long before 9/11. Ignore the crazy conspiracy theories --- the point is that what happened at 9/11 should not have come as a great surprise to anyone. We should have been prepared for this from the getgo, because a known failure mode had been examined and exposed. Or maybe the larger point is that speculative fiction enables us to wargame possible scenarios and prepare ourselves to deal with them --- or avoid them.
True, you can't live your life based on what you read in novels. For example, David Brin's Earth presages the kind of work going on at Brookhaven ... illustrating graphically the disasters that might happen if a man-made black hole fell into the Earth's core. I'm not worried about this, because I know that at the size range of the black holes we might create, quantum effects will dominate over gravitational effects and the black holes would evaporate before it had a chance to eat anything. This mental model of physics is helps me understand what's going on at Brookhaven and gives me the confidence to give them a walk on what they're trying to do. SO while fiction can spark our imaginations, it can't replace thought --- we need to develop mental models of the situations at hand and apply them rationally.
This is precisely the same kind of mental model that I use for my work in artificial intelligence --- knowing what artificial intelligence is and how it works enables me to realistically gauge the risks --- creating a superintelligent machine, for example (a very low probability event!) --- and to take steps to mitigate that risk appropriately --- namely, don't put any machinery that can take human life in the hands of your intelligent machines (much less Mankind's entire collection of nuclear weapons, as people seem to want to do in the movies)!
This is not because artificial intelligence researchers fear a superintelligent machine taking over a la Colossus the Forbin Project or the Terminator. Quite frankly, we'd be tickled pink if a superintelligent machine showed up, but we're not holding our breath waiting. No, the reason you don't put dangerous machinery in the hands of intelligent machines is because of the far more realistic --- and realized --- fear that so-called "intelligent" machine will make a stupid mistake because of bad programming and hurt somebody because, in reality, the machines we can make are just not smart enough to take over the world --- they're not even smart enough to even realize what they are doing.
So. Perhaps the workers at the CDC combining the avian and human influenza strains have a similar mental model of epidemiology which enables them assess the risks realistically and structure their work appropriately. Let's hope so.
Otherwise...
We're very concerned.
-the Centaur
Why am I not afraid? Becuase of ultra-high-energy cosmic rays, which regularly bombard the Earth's atmosphere with far, far more energy than we can make in our measly human particle accelerators.
So if the universe could end over something like this, it'd be ending all the time.
I don't have such a cavalier attitude towards the attempt to mix bird flu and human flu, in which "what health officials fear most about bird flu ... acquiring genes from a human flu virus ... is getting under way in a high level biosecurity laboratory."
Why does this worry me, when news that the Brookhaven collider might have been spawning black holes does not? It's simple. The mixing of genes between pathogens, while it does happen in nature, is rare and hasn't yet happened between avian and human influenza. So while I don't worry about something dangerous that MIGHT happen relating to a phenomena that DOES happen all the time, as at Brookhaven, I do get worried about trying to create something that COULD but DOESN'T happen precisely because you are worried that something bad MIGHT happen. If you're really that worried that avian flu and human flu might combine into a world-ravaging pandemic ... why are you trying to make it happen?!?
Now, in reality, I'm not saying stop work. By all means --- if they can figure out how avian and human influenza tick and develop a proactive vaccine, more power to you. But ... haven't these guys seen or read The Stand?
I'm not joking around here. Tom Clancy's Debt of Honor included (spoiler alert) terrorists crashing an airliner into the Capitol building in Washington, long before 9/11. Ignore the crazy conspiracy theories --- the point is that what happened at 9/11 should not have come as a great surprise to anyone. We should have been prepared for this from the getgo, because a known failure mode had been examined and exposed. Or maybe the larger point is that speculative fiction enables us to wargame possible scenarios and prepare ourselves to deal with them --- or avoid them.
True, you can't live your life based on what you read in novels. For example, David Brin's Earth presages the kind of work going on at Brookhaven ... illustrating graphically the disasters that might happen if a man-made black hole fell into the Earth's core. I'm not worried about this, because I know that at the size range of the black holes we might create, quantum effects will dominate over gravitational effects and the black holes would evaporate before it had a chance to eat anything. This mental model of physics is helps me understand what's going on at Brookhaven and gives me the confidence to give them a walk on what they're trying to do. SO while fiction can spark our imaginations, it can't replace thought --- we need to develop mental models of the situations at hand and apply them rationally.
This is precisely the same kind of mental model that I use for my work in artificial intelligence --- knowing what artificial intelligence is and how it works enables me to realistically gauge the risks --- creating a superintelligent machine, for example (a very low probability event!) --- and to take steps to mitigate that risk appropriately --- namely, don't put any machinery that can take human life in the hands of your intelligent machines (much less Mankind's entire collection of nuclear weapons, as people seem to want to do in the movies)!
This is not because artificial intelligence researchers fear a superintelligent machine taking over a la Colossus the Forbin Project or the Terminator. Quite frankly, we'd be tickled pink if a superintelligent machine showed up, but we're not holding our breath waiting. No, the reason you don't put dangerous machinery in the hands of intelligent machines is because of the far more realistic --- and realized --- fear that so-called "intelligent" machine will make a stupid mistake because of bad programming and hurt somebody because, in reality, the machines we can make are just not smart enough to take over the world --- they're not even smart enough to even realize what they are doing.
So. Perhaps the workers at the CDC combining the avian and human influenza strains have a similar mental model of epidemiology which enables them assess the risks realistically and structure their work appropriately. Let's hope so.
Otherwise...
We're very concerned.
-the Centaur
So I'm writing a new sorting function for OIDs. What OIDs are is not important right now ... the important things are that they're strings that hold dot-separated sequences of numbers, like 1.3.6.1 (the Internet OID) and because the sequence of numbers is significant, OIDs cannot be sorted alphabetically (because 1.1 should be followed by 1.2, not by 1.10 as naive alphabetic sorting would imply).
Now, there's a lot to be done to update our software to sort OIDs correctly, but, being trained as an AI programmer, I started by breaking the problem down into its smallest possible parts --- namely, an OID comparison function. And, being a good modern Java programmer, I started with a JUnit unit test which enabled me to check my comparison function.
For those who don't know, JUnit tests are functions in a software module that all start with the word "test", like testLengthOneOIDs or testOIDsVsBlanks. Initially I just had a few handwritten tests - 1 is less than 1.1, which is less than 1.2, which is less than 1.12, which is less than 1.100 but greater than 1.2.1, and so on. These tests are complicated little stanzas of code, and being trained as a good AI programmer, I kept breaking things apart, writing a validateEquality and validateOrdering functions that automatically checked two OIDs for the right ordering. The idea, you see is that once I've written one correct test, I now have a tool to write many more correct tests, and don't have to worry about typos causing failures in later tests.
But still, there were dozens and dozens of cases to test. Then I had a brainflash: rather than writing a whole bunch of tests, one for each pair I wanted to examine, why not write an array with a list of OIDs in the right order (1.1, 1.2, 1.2.1, 1.10, 1.21, 1.30.1, etc) and then write a simple pair of for loops that test each one for the right sequence?
So I did. The outer loop went through every OID in the given list, and the second one went through every OID preceding it in the list to make sure that the comparison worked. That is, for three OIDs, the outer loop would go through items 1, 2 and 3. On the first loop, the inner loop would just go through item 1, but on the second it would go through 1 and 2, and then finally 1, 2, and 3, testing all combinations of OIDs.
SO I wrote that, as well as three or four lists of OIDs. And everything passed with flying colors. So I added that code to my OID utility library, built my sorter exploiting Java's wonderful Collections framework, and sorted the OIDs to call it good. It even ran smoothly at first.
Until I added some new code to do searches. This changed the list of OIDs feeding into my sorting algorithm and --- BOOM! --- Java compains that I'm asking for the fifth item of a four item list. Bad Java juju. What gives?
Well, it's simple. My cute little validateOrdering function should have been called validateLesserThan, because it implicitly assumed that the first OID it was given was lesser and the second OID was greater. However, that test doesn't test all cases of the algorithm --- to do a sort using Java's Collections framework, you need to generate a *numerical* comparision: the compare function is not asking whether a is less than b, true or false, but instead asking for the *sign* of the *difference* --- so that compare of (1,2) is -1, compare of (2,2) is 0, and compare of (2,1) is +1. This is the mathematical signum function.
My test was testing only lesser than and equality --- two branches, not the three branches of the signum. And, sure enough, when I augmented my validateOrdering tester to include a "desired result" parameter so you could specify you wanted lesser-than (-1), equality (0), or greater-than (+1) --- BOOM --- I found an error with my unit tester. When the comparison algorithm checked to see if "1.2.3" was greater than "1", it had an off-by-one error, assuming the second OID had one more element in its list than it actually had. So Java fall down and go boom.
So the POINT? Don't assume. It's a great idea to write unit tests, and an even better idea to make them comprehensive. But when you do so, think carefully about what you're testing --- make sure that you're testing all possible branches of the function at hand, or it may blow up on you later when some new --- possibly entirely unrelated function --- rips the rug of your assumptions out from beneath your feet of clay.
-the Centaur
Now, there's a lot to be done to update our software to sort OIDs correctly, but, being trained as an AI programmer, I started by breaking the problem down into its smallest possible parts --- namely, an OID comparison function. And, being a good modern Java programmer, I started with a JUnit unit test which enabled me to check my comparison function.
For those who don't know, JUnit tests are functions in a software module that all start with the word "test", like testLengthOneOIDs or testOIDsVsBlanks. Initially I just had a few handwritten tests - 1 is less than 1.1, which is less than 1.2, which is less than 1.12, which is less than 1.100 but greater than 1.2.1, and so on. These tests are complicated little stanzas of code, and being trained as a good AI programmer, I kept breaking things apart, writing a validateEquality and validateOrdering functions that automatically checked two OIDs for the right ordering. The idea, you see is that once I've written one correct test, I now have a tool to write many more correct tests, and don't have to worry about typos causing failures in later tests.
But still, there were dozens and dozens of cases to test. Then I had a brainflash: rather than writing a whole bunch of tests, one for each pair I wanted to examine, why not write an array with a list of OIDs in the right order (1.1, 1.2, 1.2.1, 1.10, 1.21, 1.30.1, etc) and then write a simple pair of for loops that test each one for the right sequence?
So I did. The outer loop went through every OID in the given list, and the second one went through every OID preceding it in the list to make sure that the comparison worked. That is, for three OIDs, the outer loop would go through items 1, 2 and 3. On the first loop, the inner loop would just go through item 1, but on the second it would go through 1 and 2, and then finally 1, 2, and 3, testing all combinations of OIDs.
SO I wrote that, as well as three or four lists of OIDs. And everything passed with flying colors. So I added that code to my OID utility library, built my sorter exploiting Java's wonderful Collections framework, and sorted the OIDs to call it good. It even ran smoothly at first.
Until I added some new code to do searches. This changed the list of OIDs feeding into my sorting algorithm and --- BOOM! --- Java compains that I'm asking for the fifth item of a four item list. Bad Java juju. What gives?
Well, it's simple. My cute little validateOrdering function should have been called validateLesserThan, because it implicitly assumed that the first OID it was given was lesser and the second OID was greater. However, that test doesn't test all cases of the algorithm --- to do a sort using Java's Collections framework, you need to generate a *numerical* comparision: the compare function is not asking whether a is less than b, true or false, but instead asking for the *sign* of the *difference* --- so that compare of (1,2) is -1, compare of (2,2) is 0, and compare of (2,1) is +1. This is the mathematical signum function.
My test was testing only lesser than and equality --- two branches, not the three branches of the signum. And, sure enough, when I augmented my validateOrdering tester to include a "desired result" parameter so you could specify you wanted lesser-than (-1), equality (0), or greater-than (+1) --- BOOM --- I found an error with my unit tester. When the comparison algorithm checked to see if "1.2.3" was greater than "1", it had an off-by-one error, assuming the second OID had one more element in its list than it actually had. So Java fall down and go boom.
So the POINT? Don't assume. It's a great idea to write unit tests, and an even better idea to make them comprehensive. But when you do so, think carefully about what you're testing --- make sure that you're testing all possible branches of the function at hand, or it may blow up on you later when some new --- possibly entirely unrelated function --- rips the rug of your assumptions out from beneath your feet of clay.
-the Centaur
Morning Pages. Work. Class. Webcomic. Novel. Sandi. Research. Development. Sangreal. Reading. Drawing. Writing. Houseshopping. Packing. Treadmilling. Waiting for arm to heal so I can go karate-ing. Coffeehousing. Klatching. Whining. Blogging. Sleeping.
Repeat.
Repeat.
As I write this I've just reviewed a mountain of unfinished work from the MDRS: stacks of papers, unfinished reports, uncollated photos --- and even the essay I planned to write upon ARRIVING at the MDRS.
This, for me, was one of the Big Lessons from Mars: You Can't Do Everything. I should have learned this from my days as an undergraduate at Georgia Tech --- when the same lesson was called Sometimes You Have To Punt --- but you learn this in force on Mars, even analogue Mars. There are too many tasks and too few hours in the day and, more importantly, people who depend on you to get up the next morning and refuel the generator, cook the food, or join them on an EVA --- so you can't even cheat yourself by staying up late to finish Just One More Task. You have to set a time, get done what you can get done, and go to bed so you can get up in the morning and tackle the next day's tasks, which are coming fast and will not retreat.
There are other Big Lessons from Mars --- such as Everybody Has To Learn To Get Along, You Don't Need So Much Stuff, All Leftovers Go Good In Tomato Soup, Duct Tape Solves Everything, and Everything You Pour Down The Drain Will Reappear In the Greenhab (aka There's No Away To Throw Things To) --- but You Can't Do Everything is the big one. You have to gather your punch list, prioritize, and pick the most urgent tasks. And there's no time for anything else ...
... almost no time, that is. The truth is, there's a dozen short moments during the day in which you're neither too busy to do anything and not tired enough to do nothing, and in those moments you can sit around waiting for your EVA partner to find his gaiters or you can sweep the stairs, organize the battery drawer, or tackle any of a number of small tasks that need to get done but fall off the punch list. The little things. The fit and finish.
So I felt unaccountably proud when, after finishing my packing, I had a few minutes to myself --- and took that time to clean up the Habcom desk, which gave me the space to move the Medical books from a scrap of floor onto a real shelf, which in turn gave me a place to put our supplies of UHT soy, which in turn FINALLY opened up the space on the floor at the bottom of the stepladder. And so then, after over 10 days, I was finally able to dig out the missing bottom stair of the stepladder and screw that sucker into place.

*the sound of a line being crossed off*
And with that, I crossed a punch list item that had been hanging around since Crew 34 left. It's not much of an accomplishment, I admit, but it's still an accomplishment --- one small victory against the forces of entropy, even if only for a little while.
-the Centaur
This, for me, was one of the Big Lessons from Mars: You Can't Do Everything. I should have learned this from my days as an undergraduate at Georgia Tech --- when the same lesson was called Sometimes You Have To Punt --- but you learn this in force on Mars, even analogue Mars. There are too many tasks and too few hours in the day and, more importantly, people who depend on you to get up the next morning and refuel the generator, cook the food, or join them on an EVA --- so you can't even cheat yourself by staying up late to finish Just One More Task. You have to set a time, get done what you can get done, and go to bed so you can get up in the morning and tackle the next day's tasks, which are coming fast and will not retreat.
There are other Big Lessons from Mars --- such as Everybody Has To Learn To Get Along, You Don't Need So Much Stuff, All Leftovers Go Good In Tomato Soup, Duct Tape Solves Everything, and Everything You Pour Down The Drain Will Reappear In the Greenhab (aka There's No Away To Throw Things To) --- but You Can't Do Everything is the big one. You have to gather your punch list, prioritize, and pick the most urgent tasks. And there's no time for anything else ...
... almost no time, that is. The truth is, there's a dozen short moments during the day in which you're neither too busy to do anything and not tired enough to do nothing, and in those moments you can sit around waiting for your EVA partner to find his gaiters or you can sweep the stairs, organize the battery drawer, or tackle any of a number of small tasks that need to get done but fall off the punch list. The little things. The fit and finish.
So I felt unaccountably proud when, after finishing my packing, I had a few minutes to myself --- and took that time to clean up the Habcom desk, which gave me the space to move the Medical books from a scrap of floor onto a real shelf, which in turn gave me a place to put our supplies of UHT soy, which in turn FINALLY opened up the space on the floor at the bottom of the stepladder. And so then, after over 10 days, I was finally able to dig out the missing bottom stair of the stepladder and screw that sucker into place.

*the sound of a line being crossed off*
And with that, I crossed a punch list item that had been hanging around since Crew 34 left. It's not much of an accomplishment, I admit, but it's still an accomplishment --- one small victory against the forces of entropy, even if only for a little while.
-the Centaur
