House Defeats Bailout Bill – And now it begins

As I’m sure folks know by now, the US House of Representatives has defeated the bailout bill.
What follows is my own personal opinion. Disclaimers are put forth – I am not an economist, a financial investor, or particularly savvy in us world markets. I have, however, spent a lot of time reading, listening to level-headed reporting and commentary.
I think we’re in deep doodoo.
My opinion is that the US lawmakers just took the side of localized petty politics, instead of doing what is right for the nation. And we’re not talking about this whole “main street vs wall street” BS that’s been bandied about. To me that’s a distraction away from the real issues.
Most people don’t understand how the larger financial markets work. They think ‘credit’ is a bank loan to buy a car. It isn’t. The global credit market is about the hundreds of billions of dollars that are exchanged every night in short term credit between banks and businesses. This is about a production plant in Wisconsin that normally needs $1,000,000 a day to operate. The night before, the bookmakers say “We’re short $100k. We need a loan”. They call up their broker, say “Gimme $1,000,000, I’ll pay you back on Thursday”. They get the loan, the plant functions another day, they bring in $1.1million on Thursday, and pay off the loan. Done.
That is how industrial and business credit works. It is the lifeblood of our economy.
If that loan can’t happen, that plant either operates at a loss, or they shut down for the day. That daily shutdown means instead of making $900,000 that day, they make zero.
Which is worse?
This credit cycle is what this bill is… er… was… designed to protect. It was to keep the markets alive and ease the credit tensions so the banks wouldn’t continue jacking up the interest rates on those short-term loans, thereby making it very difficult for a business to make money on a day to day basis. There’s already stress on this market, already ‘credit freezes’ going on. Businesses unable to get the short term loans necessary to function. Now it’ll just get worse.
Unfortunately, the politicians and the general US population doesn’t understand this. They just see fat cat Wall street folks getting zillion dollar paychecks, and other people getting foreclosed on houses. They vote down what might have been the only thing that could have kept the banks in business, and the credit flowing.
IMHO, we are now in serious danger of a depression. And frankly, I’m scared.
Thank you Washington. You may have killed us all.

Nobody Cares about your Build

My pal Owen (who, incidentally, is doing some wonderful work on CONGO) has just written an excellent high level of of build system philosophy entitled Nobody Cares about your Build. If you’re a developer or release engineer, or are just plain curious about build systems, check it out – here’s a sample:

A reliable, comfortable build system has measurable benefits for software development. Being able to build a testable, deployable system at any point during development lets the team test more frequently. Frequent testing isolates bugs and integration problems earlier, reducing their impact. Simple, working builds allow new team members to ramp up more quickly on a project: once they understand how one piece of the system is constructed, they can apply that knowledge to the entire system and move on to doing useful work. If releases, the points where code is made available outside the development team, are done using the same build system that developers use in daily life, there will be fewer surprises during releases as the “releaseâ€? build process will be well-understood from development.

Not what I wanted to see tonight

I knew something looked fishy when I looked at this drive and only saw half the volume size I thought was there….

/dev/sdd             240365240 206665208  21490104  91% /media/usb3
dbs@yawl:~$ sudo umount /media/usb3
dbs@yawl:~$ sudo fsck /dev/sdd
fsck 1.40.8 (13-Mar-2008)
e2fsck 1.40.8 (13-Mar-2008)
The filesystem size (according to the superblock) is 61049646 blocks
The physical size of the device is 33554431 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort?

This is the 500gig external USB drive I’ve been carting around. In reality, there’s nothing particularly critical on it, some, er, backed up music files which I’m loathe to part with, but at least it’s not irreplaceable data.

Pandora-related Amusement.

I’m really getting into Pandora lately. One of the channels I’ve set up is stuff I consider ‘Progressive’. I initially seeded it with Spocks Beard and Yes, and Pandora happily ran with it, adding in Alan Parsons, Styx, Steely Dan, Pink Floyd, and Genesis.
It’s also added in groups I hadn’t ever heard of, such as Dream Theater, Marillion, and Flower Kings. Today I was bopping along listening, and a track came on that I really liked – turns out it was “Suite Charlotte Pike” by the band “Transatlantic”.
Huh, sez I. I like these guys. They remind me of Spocks beard and Dream Theater. Off I go to Wikipedia, and, right there at the top of the page about Transatlantic, I see:

Transatlantic was a progressive rock supergroup formed in 1999 by vocalist/keyboardist Neal Morse of Spock’s Beard and drummer Mike Portnoy of Dream Theater.

Guess I was on the right track.

iPhone mobility

I type this sitting in the bay of my local super-quicky-lube place while happy drones in red swaarm around my vehicle. I’m torn between the image of a formula car driver making a pit stop (the minivan sort of clashes here) and some sort of starcraftian crossover – where one of the drones would suddenly stop in their tracks and go ‘Work complete!’
Regardless, I’m able to do all this insightful commentary due to the ‘internet? We got yer internet right here, buddy’ utility of my iPhone.
I love technology.

Pandora – Try It. Really.

If you haven’t tried Pandora, you should. So far, it’s the only thing that has attracted me away from listening to Radio Paradise.

Here’s how it works.

You create a ‘radio station’ (basically a ‘channel’). In that, you hand it a few songs, or bands that you like – best if you choose a specific genre. For instance, I created a ‘progressive rock’ channel, and seeded it with Spocks Beard. Pandora will start playing songs it thinks are similar. From what it plays, you can say “Yep, that’s great!” or “No, I don’t like that at all.” If you find the station is drifting, or is not including other similar styles, you can seed in new band names or tracks.

So far I’ve set up a couple channels:

  • Progressive
    Spocks Beard, ELO, Alan Parsons Project, Yes

  • Modern Folk?
    The Duhks, Nickle Creek

  • 80’s Mix
    Tears for Fears

  • Live Blues / Jazz
    Les McCann, BB King

If you’d like to listen to any of these tracks, they should be available on my profile page, just click on the feeds (they’re named after the first band or song you add to them).

These channels have netted new bands I’d never heard of, and songs that were new, but, 8 times out of 10, they were songs and artists I liked. So I tell Pandora “Yes, please, more like that!” When I find a band I’d like to really find out more about, I ‘bookmark’ them. I have a list of new bands I hadn’t heard of before, but now I’ll look for more of their music:

  • The Flower Kings
  • Tim O’Brien
  • The Green Cards
  • The David Grisman Quartet
  • Pete Murray

It would be unlikely that I’d run across these folks listening to broadcast radio, though RP might play them. Both sources (RP and Pandora) are opening me up to wonderful new music. I love technology.

Data Recovery: DENIED




IMG_0044

Originally uploaded by eidolon

So what happens when you’re retiring a computer that has had your personal financial information on it for the last 7 years, and you really don’t want that information falling into someone elses hands?

Why, you uninstall the drive, get a hammer, hand both to your 9yr old son, and say “HAVE AT YE!”

I’d like to see Drivesavers recover THAT information. (Note – I’ve had to use that company before, usually after an executive does Something Dumb with their laptop, such as check it. At an airport. In a soft carrying case. When an advanced, powerful machine consisted of 20lbs of NEC v80 powah.)

Grrr. Rarr. Beware. I have tools.

20080906 iphone 023The time is fast approaching where the dreaded “MOVING” word will begin showing up in my “what are you up to?” column. To prepare for that, I really needed to turn the trailer we got from Harbor Freight a few years ago and turn it into a box trailer. Last weekend I built sides for it, and a folding rear gate, and started loading all the garbage we had lying around into it for a run to the dump.
Now, because we’re in the burbs, getting rid of garbage that’s not normal kitchen waste and not recycling can be a pain in the butt. Fortunately, my brother in law pointed out a commercial garbage facility in Westborough called EL Harvey (warning, it has music on the home page) that, wonder of wonders, takes garbage. Any garbage.
So with Zach’s help I finished loading up the trailer, bungied down the tarp (EL Harvey requires all loads to be tarp covered), and headed over. The trailer held a mix of debris including old boxes that had gotten wet, old yard equipment, broken computers, etcetc. Judging by how the van was behaving, I guessed it was about a ton all told.
Once we got to the station, we lined up with all the big heavy duty trucks, weighed the van and the trailer together, and got directed to one of the buildings. We backed up the trailer, handed over our receipt, and started unloading. It was simply a matter of tossing everything over a low wall into the building, where a pair of big front loaders were shifting the junk around into various piles about 10′ below us. Unloading only took 10 minutes, after which we re-weighed the van and trailer, and paid for the dropoff. Because we were below a ton (about 1600lbs total), we still paid the ‘minimum’ amount ($55 for a ton), and headed off.
20080906 iphone 019Zach and I stopped off on the way up to Burlington to visit Cat’s mom, and checked over the trailer to see how it held up to the garbage run. My sides and gate worked as advertised, and the trailer was happily rattling around empty for the drive up.
I still need to have a ratchet strap around the back to keep the sides together, unfortunately. The 1/4″ plywood siding isn’t rigid enough to keep straight up and still keep the rear gate closed. I may add some bracing on the sides, but really, for the first time out, everything worked just as I wanted.
We’ll be doing another garbage haul next weekend, and I’m sure the trailer will get tons of use once we start hauling things over to Mosaic in… amazingly enough… about 7 weeks.

Mmm, Qualified job leads.

I am… aquiver with excitement over this position. It’s just what I’ve always wanted to do, particularly at this point in my career!

Date: Fri, 5 Sep 2008 10:17:50 -0400 (EDT)
From: Peter@REDACTED.com
Subject: $15.00/hr - 1 Day (Sept 10th Wed) Worcester PC TECH
Hi Dave,
      My name is Peter REDACTED and I'm a recruiter at REDACTED Computer Corporation.
Our records show that you have expertisereflecting  work that I have available at my direct
client. 
The details are: 
WED SEPT 10TH IN WORCESTER
PC IMAGE DEPLOYMENT (SYMANTEC GHOST)
$15.00/PER HOUR W2
MUST BE ABLE TO PASS A BACKGROUND CHECK.
If you are still available, interested, and/or planning to make a change, or know of a friend who
might have the required qualifications and interest, please PLEASE EMAIL ME YOUR MS
WORD RESUME TO peter@REDACTED.com  even if we have spoken recently about a
different position.
When you respond, please include a daytime phone number so that I can reach you.  In
considering candidates, time is of the essence, so please respond ASAP.  Thank you.
Sincerely yours,
Peter REDACTED
REDACTED Computer Corp, Inc.
Note: Please allow me to reiterate that I chose to contact you either because your resume had
been posted to one of the internet job sites to which we subscribe, or you had previously
submitted your resume to RMS. I assumed that you are either looking for a new employment
opportunity, or you are interested in investigating the current job market.
If you are not currently seeking employment, or if you would prefer I contact you at some later
date, please indicate your date of availability so that I may honor your request. In any event, I
respectfully recommend you continue to avail yourself to the employment options and job
market information we provide with our e-mail notices.
Thanks again.
Peter REDACTED
New York, NY 10036

Perl GRRRR.

Warning. I’m ranting. I’m annoyed. I’m frustrated. You might want to put on your rant-proof galoshes before proceeding.
Ready?
Perl should be considered a Write-Only Language.
Code that is written in it is generally incomprehensible by anyone but the person who wrote it. It’s great for one-offs, quick simple jobs, and low-scope tools. But anyone who says it’s appropriate for an enterprise level application (and I mean anything over about a thousand lines) should be strung up, draw, quartered, glued back together, and shot into space.
The main problem is Perl is so weakly typed, it should be considered not to have any. That means that parameters passed to methods are not type-checked, and therefore there’s no way to tell if you’re calling a method correctly, except to see if the app blows up when you run it. Editors and IDE’s cannot magically determine that “such and such a method requires an integer, a string, and a hashmap containing such and such values. You’re doing it wrong.”
Because of this weak typing and lack of structure, Perl libraries become worthless. Let’s leave aside the fact that Perl OOP implementations are complete and total trash (OOP is designed to organize your data into object form, and stabilize how components are used, defining a rigid structure so that when you use the component, you must use it correctly). In the case of libraries, it’s impossible to use a library unless you understand how it works. Libraries are not self documenting, they don’t even have a standard method of organization. They’re just loose collections of Perl code, again, with very little defined structure.
Therefore, people who come along to maintain code after the first person has suffered the above fate has no clue how a method is supposed to work, unless the original coder documented it, or built in type checking in their code. I have seen NO Perl code that actively makes sure the parameters being passed in are of the correct type. At best, they make sure the parameter are not null. And if they’re super-advanced, they even use prototypes.
And yes. I am in the unenviable position of maintaining thousands upon thousands of lines of undocumented, badly maintained, incomprehensible Perl code. Yes, the developers could have documented, formatted, and put the code into a form that’s easier to maintain. But they didn’t, and to me that’s the languages fault, not the developers. A language should have some element of maintainability, and not require the programmer to make up for it’s inherent ambiguity. If it does, it’s doubling the burden on the programmer. They not only have to write the code, they have to document it, and make it maintainable.
In my opinion… Perl by its very nature encourages sloppy organization and unmaintainable code.
And now, back to the trenches.

My iPhone – 2 weeks on.

Taking a break here to chatter a bit about my iPhone. Catya and I got ours at the same time, and I have to say, it’s been a pretty nifty experience all around. The iPhone is pretty much the first ‘quasi-perfect’ melding of handheld computer, telephone, and portable internet device I’ve ever used.

I’ve named mine ‘speicus’, a reference for you Roger Zelazny fans. It’s really more of a companion than my Treo ever was. I have it hooked to my 2 email accounts (work and home), and viewing / responding / filing mail works perfectly, whether I’m on the 3g network or on a local WiFi connection. I love not having to carry an iPod around around for music. Not to mention having a web browser that is powerful, well supported, and fast, and there are volumes of applications coming through the AppStore that keep things interesting.

However, naturally, it has it’s faults. I wouldn’t be a blogger if I didn’t gripe and groan about things, so here’s my current ‘stuff that is aggravating me’ list…

  • Contacts
    The Contact manager is quite powerful. I was able to sync it against my Google Contacts via Outlook (bleah), and all 400 contacts came into the phone just fine. The problem is that it’s SLOW. Pulling up my Contacts list and scrolling it can take 7+ seconds to get started, that’s just plain too long.

  • SMS
    I text a lot. The SMS interface is good, but it’s hard to get to – it’s just a normal icon in the program listing. You can shortcut the one useable button on the phone to get somewhere quickly with a double tap, and I have that set to go to my favorites in Phone, but to get to an SMS conversation, I have to tap Home, scroll to the first window, tap SMS, and then select which convo I want to participate in. Startup of the SMS app is also quite slow, sometimes taking 4-5 seconds to come up.

  • Buttons
    I applaud the design of the iPhone. The screen is a joy, touch sensitive, multitouch, fast and beautiful. There are 5 external controls (Home, Volume up/down, Silence, and Close (?)). The last 4 have fixed, non-changeable functions,and the Home button is required to always be Home, but has 1 programmable function (double-tap). IMHO, a button on either side of the home button would have been a huge win. They could have been reassignable, and having shortcut access to certain well used applications would be great.

That’s it. For 2 weeks of heavy usage, these are really the only things that have made me go “grr”. If I were pressed for another problem it might be the battery life. But really, the volume of things this device is doing, from internet connections to bluetooth to playing games to playing music, coupled with easy charging via USB cables, I’m okay with having to plug it in once a day to recharge it.

My first store-bought new Apple product, and I’m impressed.

Vacation, Geeking, Code, and MySQL

I think I just made up for my lack of productivity toward the end of last week.
Database Fixes
I had been totally stymied by a problem in the CONGO rewrite – how to handle state of a registrant in a way that didn’t involve scanning history logs and essentially replaying an audit each time. The real stumbling block was defining exactly what states a registrant could be in.
Going by a recent event, it appears there really is a situation where someone may have signed up to work up to attending an event, but hadn’t actually completed the registration yet. In early version of CONGO, we called this ‘subscribed’. It caused all sorts of havoc in the larger events, because there should never have been a situation where someone was subscribed, but not registered.
Cept, it kept happening. The counts of people subscribed compared to the counts of people registered would drift, but in weird ways, and also in ways that were hard to source, due to the funky way CONGO v1 was calculating state of the registrant.
All of this is going away now, with a directly updated and maintained reg_state table that underwent some major surgery tonight. I introduced reg_state to help with this ‘what is the current situation of this person’ question that arises constantly. Apparently, though, I never quite completed tuning it. To wit:
o The table was a MyISAM table, rather than InnoDB
o It had no foreign key indexes at all
o It was not tracking subscription status at all (the logic was ‘if they were in the table, they were subscribed’
Etc etc. That’s all fixed now, and logic was introduced to automatically toss the registrant into the reg_state table whenever they were looked up in the current event. So they’re added, but NOT subscribed, that can be done later, but their state is no longer non-deterministic.
Layout Schmayout. Just show it
Well, not so much. The ShowRegistrants.jsp file may be my number-one edited file in the whole project. It’s the one that determines what the ‘registrant zoom’ screen looks like – probably the most viewed page in CONGO. And I keep fiddling with it. I’m currently trying to cut down the number of pushbuttons on it, and organize them in a useful way. It’s frustrating work, because I’m not really a UI designer. I’m sure I’ll good solid feedback from the CONGO power users out there. I hope ya’ll like it. *worry*.
The next step is attaching the reworked status display with functions (like ‘subscribe’ ‘register’ and ‘print badge’). These new hooks really change the workflow of the application, but I think it’ll be for the better.
Unfortunately, I’ve just gotten a poke that the next major event to use CONGO may be going live in about 10 weeks with pre-registration, so I have a hard deadline now for when v2 really needs to at least be in basic useful form. I really don’t want to deploy the old version again, so maybe this is a good kick in the pants to work toward a functional version in a reasonable timeframe.
Yeah, but… Vacation?
So, I did mention vacation up there. This weekend I’ve been up at the house in Maine with the family and the water and the woods. I suppose it helped to get away from the code for a few days, because sitting down tonight definitely got things rolling again. It’s the last ‘official’ day of the summer-vacation-house season, so we did things like pull the sailboat and power boat out of the water, put the docks away for the winter, and cleaned out the freezer. There’s always some meloncholy associated with labor day because of this. The weekends spent up here during the summer are great, and we had a wonderful time this summer. On the flipside, we’ll start having weekends back at home, which will primarily be taken up with packing for the move to Mosaic in a month or two, but I’ll still miss the mornings waking up to loons calling and the calm still lake out our windows.