fighting the lack of good ideas

preliminary update on kirk’s crash

All who knew Kirk Aragon are still in shock over his sudden and tragic loss Sunday.

The N&O called me this week for a brief interview, and some of what I had to say is in an article published today by Aliana Ramos, along with the following preliminary information about the crash:

The private-plane crash that killed an Apex man this week probably was not caused by mechanical failure, according to early findings by an investigator with the National Transportation Safety Board.

Aragon’s plane went down about 12:45 p.m. Sunday, minutes after radioing to air traffic control that he was departing. A pilot who was in the air at the time told investigators that Aragon’s plane appeared to be lower than usual and losing altitude before crashing.

“The entire airplane was consumed by fire,” Rayner said. “The engine was significantly damaged; the gears are melted together; the instruments have been destroyed.”

Aragon was alive immediately after the crash and managed to separate himself about 10 feet from the plane, said Deep River Fire Chief Larry Kelly. A trio of area residents managed to reach Aragon before the fire department arrived and helped to remove some of his clothing.

“They helped to keep him calm until we could get there,” Kelly said. “He was conscious. I was able to talk with him to find out if anyone else was in the plane. He was in a lot of pain. He did not give any indication of what happened.”

My prayers are with his family especially today.

netherland by joseph o’neill

I finished reading Netherland by Joseph O’Neill Tuesday.

It’s a “novel” in the same sense that One Flew Over the Cuckoo’s Nest or Where the Heart Is are novels – it’s a story. The story unfolds in a rambling fashion as a the memoirs of Hans van den Broek.

It’s a story of one man’s life in New York, his wife, his son, and their ultimate return to London taking place over several years after the attacks on the World Trade Center. It’s a story of lost purpose, betrayal, uncaringness, and, ultimately, the refound and rekindled love Hans has for his wife Rachel.

Mostly told as a flashback from finding out that his friend (in loose airquotes) Chuck Ramkisson has been found dead, Hans’ story is one that I’m sure far too many people can relate to – not because of the intricacies of cricket, or the exoticity of various locales visited and mentioned, nor due to the propensity of the author to use words most of us haven’t thought about since we took the SATs. But it’s simply the story of a man who has lost his way, nearly lost his family, and found himself again through focusing on an artifact of his childhood self: cricket.

I don’t know if I recommend this book or not – it’s not a genre I typically read or like, but I didn’t not enjoy it.

kirk aragon – lost 25 september 2011

Kirk Aragon was a former direct coworker, and long-time colleague of mine. Kirk died Sunday doing what he loved to do.

I first met Kirk a few days after starting Opsware in January of 2007. He was one of the “named resources” for dealing with our biggest customer, EDS. Kirk’s professionalism, friendliness, and over-powering happiness that exuded from him constantly was a fantastic encouragement to the entire team in Support. A few months later, he returned from his loan from ProServe to go back on the road.

I had the opportunity to learn from him frequently on a variety of subjects – flying (his passion), family, technical intricacies of the product we worked on, great places to eat, work/life balance, etc.

I’m going to quote one of the members of senior HP Management with regards to Kirk:

Kirk Aragon was a kind and loving person, helpful, professional, and a true gentleman.

For Kirk, aviation was his passion and true love. He embodied the American story. As a former Air force captain of 4 years he fuelled his passion for flight, and carried this on to building and flying his unique kit plane. While serving in the Air force, Kirk Met his wife Archana, and later became a very proud and loving father of 2 daughters (12 and 9).

He was beloved, respected and admired by his managers, his teammates and his customers.

Kirk will be remembered by all of us.

“Kirk was always happy as he seemed to always be upbeat. He was an awesome guy and demonstrated everything a professional could.”

“All he talked about was his wife, his beautiful girls, and his love of flying. Kirk was one of those guys you just had to love, and I know our team will miss him as much as I do.”

“Kirk was a gentleman, a friend and a professional.”

“I have not felt this way for a long time. My eyes are moist, and my heart is saddened. It is a sad, sad day. I’ve known Kirk since the days at Opsware. We had SA boot camp and dinner together a number of times. He is a great person, respected colleague, strong teammate, SA expert and friend. He always brought a colorful perspective to our exchanges and made the conversation lively. He is helpful, open and friendly. You feel close and personal with him. His ‘baby’ face is hard to forget. I miss him a lot.”

I am privileged to have counted Kirk as a dear colleague and am deeply grieved by his unexpected death. I hope our memories of Kirk will comfort us. Let us all support Kirk’s family with our deepest sympathy, prayers and thoughts.

Further, some comments left by his friends and colleagues on social sites:

“I remember the time a bunch of us went to ‘China Town’ for lunch and reallocated car pool distribution on the way back to the office and Kirk graciously volunteered to ride in the seat-free doggie/storage area in the back of my Forester since we were short a seat. Afterward, he just happily tumbled out with that impish smile that he shared so freely. I will miss Kirk.”

“Kirk was a great guy.”

“Wow…. this is very sad. He was a really nice guy.”

“I am so saddened to hear of Kirk’s passing.”

“Mourning the loss of a coworker. RIP Kirk. You were a great person.”

I know tributes like these don’t cover everything that needs to be said – and we always regret what we didn’t tell someone when we had the chance when we no longer do.

One thing I can be grateful for, though, is that I have no regrets about what I did say to the man in the years I knew him.

Good bye, Kirk – may God be with your family in this dark time.

effective error messages

I had a recent conversation with an old classmate, and he stated that using asserts when programming Java is useless because an exception can generate more useful information. Exceptions are only “more useful” if you are a developer or perhaps supporting an application. When a bug report or support case needs to be created, supplying the “raw” errors can be a useful tool in finding a solution.

However, to go back to my friend’s point, he asked how an assert can “benefit someone that is running the application”. The short version is that NO “error message” that is in the frame for a developer will [likely] benefit the person “running the application”.

David Pogue wrote about this more than a decade ago, but it’s something that still has not taken hold in most applications: the human-friendly error message.

The C Compiler in MPW (a Macintosh programming tool kit) gives you messages like this: “You can’t modify a constant, float upstream, win an argument with the IRS, or satisfy this compiler.” Or this: “Type in (cast) must be scalar; ANSI 3.3.4; page 39, lines 10-11. (I know you don’t care, I’m just trying to annoy you.)” Or how about “This label is the target of a goto from outside of the block containing this label AND this block has an automatic variable with an initializer AND your window wasn’t wide enough to read this whole error message.”

The BeOS‘s native browser, Net+ (pronounced “net positive”), had amusing error messages – in fact, it was those amusing messages that spurred the name of the OSS reimplementation of BeOS, Haiku.

For instance, a user might see the following error message if they try to access a website that is unavailable:

Cables have been cut
Southwest of Northeast somewhere
We are not amused.

If the user tried unsuccessfully to authenticate against a website, they might see:

Server’s poor response
Not quick enough for browser.
Timed out, plum blossom.

One you might see, however, in a product I use frequently:

2011-09-08 19:03:58,590 INFO Thread-12 [org.apache.beehive.netui.util.logging.Logger] [info] Register RequestParameterHandler with
prefix: checkbox_key
handler: org.apache.beehive.netui.tags.html.CheckBox$CheckBoxPrefixHandler
2011-09-08 19:03:58,591 INFO Thread-12 [org.apache.beehive.netui.util.logging.Logger] [info] Register RequestParameterHandler with
prefix: checkbox_group_key
handler: org.apache.beehive.netui.tags.html.CheckBoxGroup$CheckboxGroupPrefixHandler
2011-09-08 19:03:58,592 INFO Thread-12 [org.apache.beehive.netui.util.logging.Logger] [info] Register RequestParameterHandler with
prefix: radio_button_group_key
handler: org.apache.beehive.netui.tags.html.RadioButtonGroup$RadioButtonGroupPrefixHandler
2011-09-08 19:03:58,592 INFO Thread-12 [org.apache.beehive.netui.util.logging.Logger] [info] Register RequestParameterHandler with
prefix: select_key
handler: org.apache.beehive.netui.tags.html.Select$SelectPrefixHandler

Gee, thanks Apache!

Compare that with Google’s Chrome browser that puts a frowny face on a file folder and says “Oh Snap!” when something goes wrong (whether it’s the browser’s ‘fault’ or not).

So why don’t more applications come with “friendly” error messages?

Part of it is because developers too often are concerned with getting something shipped (shipping is a feature, after all), that they don’t stop to consider who is going to actually use the software.

User. The four-letter-word of the development community. Developers all too often (I’m as guilty as anyone on this) of forgetting that what they are writing is for someone else to use. Not for them to work on, debug, develop, extend, and futz with. No, it’s to use.

The average user doesn’t care that some component interacted in a bad way and caused a stack trace… they don’t care that there even are components and stacks to trace!

It takes conscious effort to write message people can care about, or at least understand. And it’s not because the userbase of a given product are dumb: they’re just not developers. Doctors surely are not dumb as a group, but that doesn’t mean they’re qualified to understand a stack trace on the EMR system.

Developers need to take a step back from their work and remember that there are other people in the world beyond just them, and if the more easy and friendly a system is to use and interact with, the more likely people are to want to use it – which might just keep them employed 🙂

http is a stateless protocol

The ubiquitous protocol that enables the internet as we know it, http, is stateless.

Stateless merely means that any given request has nothing to do with the previous, or the next request. This enables the world wide web, as web servers do not need to keep track of who is receiving data, nor how much they have: they get a request, and ship data to the requestor.

It is up to the requestor (often a web browser) to handle the incoming data.

If not every part of a web page, for example, is sent, the browser will display what it can.

This is analogous to a creditor sending you a bill (request), and you sending a check back to them – once the bill has been sent, the creditor knows nothing about the state of the bill until he receives a payment. Likewise, once the check is dropped in the mail, the payor knows nothing about his bill until the check clears his bank.

Why is this important? Because of an oft-repeated “request for enhancement” to the product I use on a daily basis. When the implementors of Opsware SAS were picking how a user should communicate with the system, they picked to run everything over http(s). They chose to utilize http because it’s commonplace, well-understood, and easy to work with.

One of the things about statelessness is that you cannot know how many people are using a given web page at the same time. Google cannot tell anyone how many people are actually looking at at this moment. They can tell you how many loaded it,and how many just pressed “Search”, but they can’t know what percentage of the loaders promptly went elsewhere – either to a different page, or a different room in their home.

One [partial] way around the statelessness of http is to utilize cookies or session data – but that merely adds a check layer to the interaction, it does not provide true “statefulness”.

Several times during my time in Support at Opsware (and after HP’s acquistion), I would have a customer who was looking for the ability to determine who was logged-in at any given time (in similar fashion to running `w` or `who` or `finger` on a Linux/Unix system). This could be important to know whether a user is “doing something” before doing an application restart.

However, since communication is all done via http, there can be no state known in the tool. Once you load a web page, it is being viewed/rendered on your local machine in your web browser – the server could be shut off, your network connection removed, or any of a host of other simulations of restarting the application. And your browser would be none-the-wiser, nor should it be: it has the data it requested/received, and you’re doing something with it.

This carries over to the product I work with. Jobs might be scheduled by a user to run every day at 0200 – but he doesn’t need to be actively logged-in to have them run. Likewise, someone may have logged-in, but is not “doing” anything currently (maybe they’re at lunch).

Another case of why technical intricacies matter 🙂

apple should buy sprint

According to The Street, Sprint-Nextel is at a 52-week low with today’s closing price. Their market cap is $10 billion.

Apple as $70 billion in cash on hand.

Google is buying Motorola.

I think Apple should buy Sprint. And they should stop distributing the iPhone via Verizon and AT&T in the US.

  • guarantee a distribution channel for media which Apple proffers
  • boost Sprint’s value
  • accelerate the deployment of 4g (and better) network technologies (a la LightSquared)

It would also give, in my opinion, a strong leg-up for Sprint on their suit against AT&T’s proposed acquisition of T-Mobile.

changing hosts

After several years of being hosted at tektonic, it has come time to move hosts.

My current web server is running 32-bit CentOS 4.9. Eek! That is old.

Since upgrading to a new release of CentOS is now becoming more urgent, and upgrading is really reinstalling a new OS, I’ve started to look at new hosts. I’ve considered Chunk Host, but while their entry-level service are Okay, they’re not really in line with what I need at this time. Likewise, I have review iWeb‘s offerings, but unless I go for a colo, they’re not going to suit my personal needs well, either.

My requirements for a new host are the following:

  • CentOS 6 x64 (for a variety of reasons – this is not a religious thing: I have evaluated other distros/platforms, and this is the best option for me)
  • at least 250GB of storage (>500G preferable)
  • several CPU cores (a minimum of 2, 4 or 8 would be better)
  • at least 4GB RAM
  • decent amount of available traffic (though I don’t anticipate major traffic patterns for some time)
  • at

What I am planning to run:

  • Apache (ports 80 and 443) hosting several domains
  • MySQL
  • Plone (on 8080)
  • PostgreSQL
  • sendmail for several domains
  • SVN
  • Trac
  • WordPress with some plugins (one of which is a little CPU intensive)
  • a backup store for myself (hence the storage requirements)
    • OS media
    • personal files
  • continued mirroring of m0n0wall
  • oh – and it’d be nice if it was in the same rough price range as what I’m spending now on far less 🙂 (2GB 2CPU 60GB on one host, and 512M 4CPU 20GB on my other host – total ~$45/month)

So far, I have found a couple viable options – but have not 100% settled on them yet.

I am curious as to what alternatives may exist in this area that I have not yet seen, and would appreciate any suggestions 🙂