Lost Art


When I was a child going to the grocery store and watching the bag boy work was always fascinating to me. Standing at the end of the conveyer belt, he sorted items into different bag.  Some items were shunted aside for later bags, occasionally an item was repositioned in a new bag.  They were fast and efficient, able to keep up with the checker, and having everything in the cart ready to be wheeled to our car by the time my mom had paid and gotten her change and receipt. 

Today stores like Walmart have done away with the bagger; putting the bags on a rotating stand next to the checker, so that he or she can scan the item and deposit it immediately in a bag.  The layout of their workstation doesn’t lend itself to the priority sorting the bag boy of my youth was able to perform.  There isn’t a place to set things aside until enough items of similar consistency, fragility, or heft are amassed and ready to be bagged.  

Moreover, it seems that few of these people paid attention when they were last in a store that employed baggers.  Even when we position items on the belt in logical bag groupings, they seem to be able combine in the worst possible ways.  Bananas in a bag with soup cans.  Frozen, and therefore covered with condensation, items with dry goods that hadn’t ought to get wet at all. 

Some, higher end stores, still have the bagging station at each check out lane, but often as not there isn’t a bagger there, leaving the checker to do both jobs.  I almost always position myself at the bagging station and start filling bags, in part to speed things up and in part to fulfill the brief childhood dream of being a bagger.  Even at these stores, the baggers seem not to quite understand their responsibilities.  These items are no longer the stores, they have been bought and paid for by the customer, and should be treated with respect.

Bagging, I fear, is a dying, soon to be lost art.


Building Blocks


When I was a child I was given a large set of wooden blocks.  The set included a huge variety of sizes and shapes, and I spent many happy hours building any number of things with them.  My favorite activity was to build large towers; some required that I stand on a chair to add the upper layers.  Once the tower was complete I’d tie several newspaper rubber bands together and start attacking various supporting structures, until the whole thing came crashing down.  Followed shortly by my mother calling downstairs, “What was that?!  Are you alright?”

Today, as a software developer, I play with different blocks, but the underlying idea is the same: build useful structures that can withstand unexpected outside pressures.  Developing applications in Java, with or without HTML front-ends, requires an amazing number of blocks just to get started.

Assuming that your operating system is stable (a dangerous assumption to make, perhaps), the first block necessary is a JDK, or Java Development Kit.  Sun provides these, and a nifty installer to put it on your machine.  Of course there are various flavors of Java (SE, ME, EE) and versions within those families; choosing the right block is important.

With a JDK installed, and a simple text editor you are ready to go.  Two, maybe three blocks - low and stable.  Unfortunately, while simple, this basic arrangement forces you to do most development chores by hand.  Automation is the key to success here.  Or at least the key to the appearance of success.

Oh, and calling Java “a block” is a bit disingenuous.  Java is a vast collection of libraries, concepts, and intricate dependencies.  Abstracting Java to just one block is useful in polite conversation; the reality is that it represents an incredibly complex array of blocks.

After laying down the Java block, or blocks, the next piece is a good IDE, or integrated development environment.  There are several major players in this market segment, however the one I am most familiar with is Eclipse, so I’ll use it for our discussion.  As with Java, Eclipse (or any other IDE) is usually thought of as one block, when it is really a complex collection of blocks.  Adding to the fun are plugins; small (or not so small) blocks that get inserted into Eclipse to add or augment existing functionality.  

Hm.  Actually it isn’t fair to call Eclipse a block.  It is truly a framework that other blocks are hung off, creating a platform for building software.  That the framework itself is a collection of hundreds of blocks is interesting in a recursive, turtles all the way down sort of way.  It also adds to the sense of instability building applications with the vast sea of blocks that is Java has already created.

Imagine standing on one box to reach a high shelf.  Not too bad, huh?  Now image that instead of a nice sturdy crate of a box, you are standing on a platform made of dozens and dozens of tiny blocks, neatly fitted together, but not required or restrained into a coherent assembly.  Not a comfortable sensation.  Now imagine that you are standing on not one, but two such platforms.  That is building Java applications with Eclipse, or any other large IDE.

There are one or two other significant pieces to this puzzle.  There is a plugin to manage the versioning of the code between my workspace and the central repository.  Also, there is a plugin that resolves dependencies - finds additional code libraries for when your application needs more than base Java provides.

When all the blocks are neatly lined up, and the weight of your development is properly supported, you can build great things.  When one or more of the blocks gets out of position, however, disaster can (and does) strike.

I spent the day yesterday building a new service, a simple data access object (DAO) to read data from a table and build an single object containing all the information about an entity.  Just a handful of code, really.  In order to vet my code I used a feature in Eclipse to generate a unit test.  This new piece of code is specially designed to exercise all the limits of the original code.  Of course, the test mechanism requires still more blocks to be shoehorned into our every-growing tower.  And when I tried to run the test all I got were nonsense errors.  

The errors seem to be saying that some piece of the Java, Eclipse, unit test framework, was out of whack.  So now, instead of debugging my application code, I get to debug the platform on which I am trying to build it.  Is there something wrong with Eclipse?  Or, more likely, one of the plugins currently employed?  Maybe the workspace is somehow corrupted.  Did I miss a small, but critical configuration setting?  

Somewhere, in the tower of blocks that extends from the operating system up through the Java JDK, the Eclipse IDE, with all its plugins, the version control system, and dependency resolution process, somewhere in that vast mass of blocks, one or more is out of place.  With no easy way to find it and realign it, the path forward is to knock the rest of the tower over, clean up the mess, and start over fresh.

Today I am rebuilding my environment, fresh copy of Eclipse, re-installing the necessary plugins, re-configuring the variables, and hopefully, eventually, testing my application.


Love 'Em or Hate 'Em


Whether you are a fan or a foe of Walmart, this visualization of their growth is fascinating.  I especially like the part at the end where all the projected, future stores are added to the map.


Unwritten Rules


On the playground, when teams are chosen for team sports, there is a definite picking order.  The future jocks are almost always the team captains, and their sycophants are rapidly picked next to fill out the roster.  Eventually the picking gets down to the kids who can’t throw or run or who are somehow deemed as “better on the other team.”  Growing up, I was one of those kids.  

While I couldn’t express it in words back then, I know now that there were some unwritten rules in play.  Even the society of children has norms and, since mercy is a learned trait, those outside the norm were shunned and pushed aside.  Much is made today of nerds, and there appears to be growing acceptance of those who aren’t mainstream.  Still, it hurts to be on the outside looking in, especially when the rules aren’t published.

As an adult I have run afoul of these “unwritten rule” situations more than once.  It is every bit as painful today as it was on the playground four decades ago.  Any group, or organization, develops an immune system as it inoculates itself against foreign bodies - be they people or ideas.  Which is all fine and dandy until you are the foreign body.  

Sibylle described to me once what it was like to move to the United States, where everyone looked just like the people she’d left behind in Germany, and the bitter lesson of discovering that underneath everything was completely different.  For the past 18 months I have experienced a tiny example of that, as I have tried to assimilate into a new group, a group that looked and talked just like me.  A group that has rebuffed my efforts to fit in, a group that is treating me as a foreign body.

My only hope is that the next group has unwritten rules that make sense to me, that I am not a foreign body, that I am not the kid who doesn’t know to run on two outs.

For the last 18 months I have tried mightily to become part of a group only to be continually rebuffed and turned aside.  


The Hacker's Manifesto


The following manifesto was originally published here.

                               ==Phrack Inc.==

                    Volume One, Issue 7, Phile 3 of 10

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The following was written shortly after my arrest...

                       \/\The Conscience of a Hacker/\/

                                      by

                               +++The Mentor+++

                          Written on January 8, 1986
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

        Another one got caught today, it's all over the papers.  "Teenager
Arrested in Computer Crime Scandal", "Hacker Arrested after Bank Tampering"...
        Damn kids.  They're all alike.

        But did you, in your three-piece psychology and 1950's technobrain,
ever take a look behind the eyes of the hacker?  Did you ever wonder what
made him tick, what forces shaped him, what may have molded him?
        I am a hacker, enter my world...
        Mine is a world that begins with school... I'm smarter than most of
the other kids, this crap they teach us bores me...
        Damn underachiever.  They're all alike.

        I'm in junior high or high school.  I've listened to teachers explain
for the fifteenth time how to reduce a fraction.  I understand it.  "No, Ms.
Smith, I didn't show my work.  I did it in my head..."
        Damn kid.  Probably copied it.  They're all alike.

        I made a discovery today.  I found a computer.  Wait a second, this is
cool.  It does what I want it to.  If it makes a mistake, it's because I
screwed it up.  Not because it doesn't like me...
                Or feels threatened by me...
                Or thinks I'm a smart ass...
                Or doesn't like teaching and shouldn't be here...
        Damn kid.  All he does is play games.  They're all alike.

        And then it happened... a door opened to a world... rushing through
the phone line like heroin through an addict's veins, an electronic pulse is
sent out, a refuge from the day-to-day incompetencies is sought... a board is
found.
        "This is it... this is where I belong..."
        I know everyone here... even if I've never met them, never talked to
them, may never hear from them again... I know you all...
        Damn kid.  Tying up the phone line again.  They're all alike...

        You bet your ass we're all alike... we've been spoon-fed baby food at
school when we hungered for steak... the bits of meat that you did let slip
through were pre-chewed and tasteless.  We've been dominated by sadists, or
ignored by the apathetic.  The few that had something to teach found us will-
ing pupils, but those few are like drops of water in the desert.

        This is our world now... the world of the electron and the switch, the
beauty of the baud.  We make use of a service already existing without paying
for what could be dirt-cheap if it wasn't run by profiteering gluttons, and
you call us criminals.  We explore... and you call us criminals.  We seek
after knowledge... and you call us criminals.  We exist without skin color,
without nationality, without religious bias... and you call us criminals.
You build atomic bombs, you wage wars, you murder, cheat, and lie to us
and try to make us believe it's for our own good, yet we're the criminals.

        Yes, I am a criminal.  My crime is that of curiosity.  My crime is
that of judging people by what they say and think, not what they look like.
My crime is that of outsmarting you, something that you will never forgive me
for.

        I am a hacker, and this is my manifesto.  You may stop this individual,
but you can't stop us all... after all, we're all alike.

                               +++The Mentor+++
_______________________________________________________________________________


Software Development Meme


I’m not sure I can really call this a “meme” since I was tagged with it by someone else but rather am borrowing it from the Petzold Book Blog.

 

How old were you when you first started programming? 

16.

How did you get started in programming?

Self-taught BASIC using time-sharing on a thermal paper terminal.

What was your first language? 

BASIC.

What was the first real program you wrote? 

First non-paid program was a lottery simulation that, after 96 hours of continuously running, hadn’t matched more than 4 or 5 numbers out of 6.  First paid program was state veterinary laboratory billing system.

What languages have you used since you started programming? 

COBOL, PL/I, JCL, Forte TOOL, Java.

What was your first professional programming gig? 

I worked as a summer intern for a grain wet-miller on a COBOL conversion project.  Re-writing Honeywell code to run cleanly on IBM hardware.

If you knew then what you know now, would you have started programming? 

Without a doubt.  It’s a meta-job; I get to learn about all the other jobs as I develop automated processes to augment them.

If there is one thing you learned along the way that you would tell new developers, what would it be? 

Always, always, ALWAYS take the time to explore new software.  Learn the shortcut keys, fiddle with all the settings, explore the entire interface.

What’s the most fun you’ve ever had … programming? 

Developing a brand new interface for large inter-agency intake system.  It was the perfect combination of stress, deadline, challenge, learning curve, and, ultimately, accomplishment.

 


Course Catalog


Every semester in college, when the new course catalog was issued, you got to look for classes to take following the break.  There was always an anticipation in this process.  Reading the course descriptions, matching offerings up to your schedule, and wondering if Psychology 101 was really as bad as everyone said.

This week I am re-experiencing this kind of activity as I am sifting through the numerous job descriptions my employer has, looking for a new position.  My current position was created for a project that died over a year ago.  Momentum and some rather extensive organizational changes have sheltered me until now, however, without the project I was hired for, my position has become superfluous.  Fortunately my company is part of a very much bigger company, and transfers between organizations is not only quite possible, it is encouraged.

Starting next week I’ll be working with a specialist in the human resources department, sifting through the job descriptions and openings looking for a match for my particular set of talents and desires.  Today I took some time to look at all the titles within the organization, and printed out all of the ones that intrigued me.  When I told Sibylle about printing them all off, she remarked that having them, and looking through them was a bit like looking at the college course catalog for next semester.

I think it’s going to be a good next semester, and I am looking forward to it already.


The Ends Never Justify The Means


Vanity Fair is running a chilling, sobering article by Christopher Hitchens on the subject of waterboarding, called “Believe Me, It’s Torture.” In short, it’s torture.  In it, he quotes Malcom Nance’s denunciation of waterboarding,

  1. If we allow it and justify it, we cannot complain if it is employed in the future by other regimes on captive U.S. citizens. It is a method of putting American prisoners in harm’s way.

  2. It may be a means of extracting information, but it is also a means of extracting junk information. (Mr. Nance told me that he had heard of someone’s being compelled to confess that he was a hermaphrodite. I later had an awful twinge while wondering if I myself could have been “dunked” this far.) To put it briefly, even the C.I.A. sources for the Washington Post story on waterboarding conceded that the information they got out of Khalid Sheikh Mohammed was “not all of it reliable.” Just put a pencil line under that last phrase, or commit it to memory.

  3. It opens a door that cannot be closed. Once you have posed the notorious “ticking bomb” question, and once you assume that you are in the right, what will you not do? Waterboarding not getting results fast enough? The terrorist’s clock still ticking? Well, then, bring on the thumbscrews and the pincers and the electrodes and the rack. There is also a video.  


Netflix Listens


Recently it was reported that Netflix was eliminating the profile feature on their web site.  Profiles allow you to create sub-queues of movies for family members or others in your household, which are independent from the account holder’s queue.  You could create a one-movie at a time, G-rated profile for a child, for example.

The public reason given for eliminating the profile feature was to simplify the web site.  In the days that followed the announcement, it seems the Netflix heard from many of its uses, and moreover, they listened to what those users were saying.

On the Netflix blog today, there is a new posting, Profile features NOT going away.  That’s good business.


WALL\xE2\x80\xA2E


Wondrous.  Amazing.  Love-story.  Laugh-out-loud funny.  Enchanting.  

Pixar’s best movie ever.  One of the best films of the year.  Perhaps one of the best films ever.

Go see it.  And then go see it again.