About Adam Young

Once upon a time I was an Army Officer, but that was long ago. Now I work as a Software Engineer. I climb rocks, play saxophone, and spend way too much time in front of a computer.

contracting

After  the dot com bubble burst, I worked as an independent contractor in software for a few years. This is extremely common in the field. Some companies will hire independents outright, where as many others make you go through contracting firms to mitigate risk. (There was a lawsuit regarding compensation and stock options at Microsoft that caused this, worth googling and reading about). I set up an LLC that I used for a couple of the projects. I want to record a few of the lessons that I learned.

I leanred that when figuring negotiating price, I needed to  remember to factor in Health Insurance, which is much higher for a single payer than for a member of a large organization. I had to pay both sides of payroll tax (roughly 15%) but you then could deduct half of that as a business expense. The math gets a little tricky, but I would say that I was paying about 5% more in taxes than I would have as a salaried employee. There are tax benefits: you can expense much more than you can as a full time employee.  Many of these additional costs to me would have been norne by the comapny that issued me a W2 if I had been a Full Time Employee.

Regardless of the setup between me and the company, I  treated it just like I was  a company, and separated out the money I earned as an LLC from the money I paid to myself as an employee.  Except for the times I had to work through a body shop that issued  a W2, I had to deal with paying  both state and federal taxes. I didn’t pay income tax directly out of your monthly pay, so I held on to the tax money for an average of 1 month an a half longer, which I could invest. There is a final accounting done at the end of the year.  There are books on this. I had a good accountant.

One thing I learned to watch is the length of the contracts. Once a contract ends, if I didn’t have another lined up, I went  without work, but was still paying the mortgage. It was up to me to fill in my own schedule.  I spent a good deal of the time working on my own software, and a lot of time cleaning the apartment.

Entangled Dependencies

Our LDAP Client has a wrapper for creating a persistent search.  In order to execute a persistent search, a polling mechanism has to call the client code with notifications of changes from the LDAP server.  This means a threading library.  The call looks something like this:

LDAPCLient->GetApp()->GetThreadPool()->ScheduleTimer(MakeFunctor(callback))

Here the call to GetApp is completely superfluos to the logic:  we should not care where the ThreadPool comes from.  Instead, LDAP client should either take a thread pool pointer in its constructor, or a thread pool should be passed as a parameter to CreatePersistentSearch.  I prefer to resolve all dependencies like this at object construction time.

GetApp throws an exception if it is called prior to a call to AppImpl::Init.  Init reads an XML based config file.  So our dependencies now include both the config file and the xml parser on top of the App object.  The LogObject and LogName are also initialized in the App.

What we are seeing here is how dependencies get entangled implicitly.  In order to reuse the LDAP client, or to create a Unit Test for it, I have to initialize an App object, which is far beyond the scope of LDAP.

Continuing on looking at the ThreadPool, I see that the AppImpl actually creates the ThreadPoolWin32 object by passing the config file view to it, and the config file view is used to fetch values for the state of the thread pool value by value.  Example:

_config->Get(“TaskMax”, &_maxWorkerThreads);
_minIOThreads = 1;
_config->Get(“IoMin”, &_minIOThreads);
_maxIOThreads = 2 * _maxWorkerThreads + 1;
_config->Get(“IoMax”, &_maxIOThreads);

The binding of the values to the object should be external of the constructor, as it is just one Initialization scheme.  What if we want to reuse this object and read the values in from a database, or from a different config file format?

The LDAP Client should have a field that is the ThreadPool base class.  For the Unit test, we could mock this out. Of course, maybe the persistent search itself should be its own class.

Hometown

One facet of returning to Boston after half my life away is dealing with the demons of High School. Not just my demons but those of my friends from my home town. Things we didn’t talk about then are now part of the conversations. The emotional irritants from 1986 have been encapsulated in enough mother of pearl to be taken out and admired in the light. As technology increases the frequency of re-acquaintance, old names and faces trip old traps. The strong and confident find themselves in tears over a snub two decades passed. Anger long since packed away in the attic is extracted, unfolded, and ignites upon exposure to fresh air.

When we were expecting our son, my wife and I read many books. One phrase that stood out is ontology recapitulates phylogeny. In simpler language, an embryo passes through all the stages of evolution before it becomes a baby. All those previous steps are incorporated into the nascent human. But evolution didn’t stop with human infancy. Dr Karp suggests we should think of toddlers as cavemen not yet ready to comprehend full language. Is the teenager then still carrying around the same set of energy and impulses as we needed when we were in the trees? As adults, we have built on what we were as children and teens. We’ve incorporated it into our adult selves. Have we grown from our pains or just grown around them? Nietzsche promised us to grow stronger from a non fatal encounters, but was that may have just been the optimistic aspiration of a man in extreme pain.

Like Robert Frosts swinger of birches, I have gone away and come back. My arc described not just a removal from earth, although I have spent a good deal of time looking down at earth from high up on a cliff side, but also a removal from the society in which I first developed. I can’t claim to any great insights to any development but, maybe, my own. It is not that I have grown beyond who I was in 1989, but that I’ve gotten a sense of how that boy fits inside the man I am now.

Stoughton. Mention of the name of my home town now evokes a common response: Ikea. Yes, the great blue behemoth sits in the center of the woods that we dubbed Sasquatch Territory many years ago. The name came from the trees bent, like Frost’s Birches, from an ice storm, that an older brother in the neighborhood would rather have ascribe to the attentions of a descendant of some sibling branch of our phylogeny. The naming was inspired, no doubt, by the most popular of episode from the Six Million Dollar man. Those woods were our playground, our battle grounds, where we built dams and dug for old railroad spikes. The benefit of living with such great woods behind our houses came at the cost of being removed from the center of action, around the North Elementary School, where the tighter knit subdivisions lead to the forming of alliances that would play out on the school grounds and classrooms. Four of us from the edge of Stoughton had the combination of nurture and nature to succeed in Stoughton’s Academic environment. A Catholic, a Korean Buddhist, and a Unitarian, and me, the Jew, somehow survived and succeeded, at least academically.

Stoughton is proud of its blue-collar roots.  Drinking and smoking were normal part of teen culture, as was a moderate degree of drug use.  We lost a few kids to driving accidents, most notably for me one of my older sisters boyfriends.  There was social ostracism, taunting, bullying, and fights.  The latter were often started with our version of a thrown gauntlet, the phrase “meet you at the tracks”. We even have our own minstral, singing in much more evocative terms than I ever could.  My sister’s friend Lori Gerow grew up and married into the name Lori McKenna.  How a girl from a school that prized speed metal above all grew up to be a country/folk star is just the sort of irony that you might expect from a town that is caught on the edge of the Boston Metrosprawl:  not quite farm country anymore, but not quite the city.

There are many stories triggered by this reminiscence, but they don’t really address the matter at hand. My demons from this part of my life are domesticated beasts who now rarely ruin the carpet or chew my slippers. I faced them later in life, when they were the members of a larger pack that briefly overwhelmed me. That time brought deep introspection and a truce that has held.  Nec Stoughtonia Terrent. High School Ended for me in 1989. Between there and here is a long journey. But my connection with these friends, the commonality of experience ended then, too. After that, Stoughton was a place visited for a Week during Christmas or Summer in between Training and Education. After my folks sold their place on Larson Road, I didn’t have any excuse to go back, and lots of other demands on my vacation time. So to connect with people I knew back then, I refer to events of two decades hence. But what to do when the responses bring forth such vehemence? Stoughton wasn’t nearly the worst thing I’ve faced in my life. I can’t claim I would have chosen that as my upbringing, or that there are not major steps there I would have changed, but I don’t hate the place, not by any stretch.

One common theme though is a sense that we really didn’t know each other back then. Certainly the divide along gender lines was quite strict amongst us, the geeks. There might a be a strong friendships that crossed lines, but they were ones and twos. My friends were mostly guys. Girls in class were fearsome things, more likely to laugh at you then to respond kindly to an approach. My early relationships happened during transitions: summers, trips. Even crushes were reserved for girls outside my classes, girls who wouldn’t have seen the ass I made of myself by talking too much during a class I had prepared for too little. I don’t know if a 13 year old boy and girl can be just friends. Certainly it is a chemically unstable situation, too prone to slip on one side or the other into obsession or rejection. Some of the girls in the classes were caustic . Some unconscious action of mine would bring derision, a sneer of contempt and add another layer of shellac to my shell of isolation. It didn’t keep me from speaking up to the teacher, to challenging the pedagogy, but is kept my attention focused on the front of the classroom. Another girl from these days remain fixed in my mind with a perpetually startled expression, mortified of the least attention. An essay read aloud in English class would periodically cast a brief spotlight into the mind of one of these foreign entities.

There are a few things I got from Stoughton that I might not have if I had grown up elsewhere.  It was far enough from the city that there were still large tracts of woods.  Both houses I lived in backed up to stretches of woods large enough that I never fully explored them.  I loved the freedom and relative safety I had of wandering free in the woods, a freedom that my Brookline raised son will not be ableto enjoy without travel.  Stoughton was a small enough town that we knew, if not everyone, than the majority.  Rare is the member of my graduatin class whose name does not evoke some small memory.  I remember my teachers, knew the principals.  My folks and my friends parents were involved in town meeting and in social issues that affected our town.  If I was left behind by the organized sports collectives so popular amongst my peers in elementary school (Soccer, Baseball) the music department and High School Wrestling team made up for it.  The honors program challenged me enough to get me engavged, but was not so competative that it stifled anything other than the superstars.

Today Stoughton is more memory to me than reality.  I cheered to hear that we won the football game on Thaksgiving against tradition rival of Canton, but didn’t go to watch the game.  Few of the teachers that taught me are still employed in the system, far more have retired.  My friends no longer live there:  those that stayed in the area have migrated to surrounding towns, or, like me, have been drawn in to the city.  Periodic epsidoes involving Ikea aside, the greatest draw of Stoughton remains the staple of our diet from adolescence:  Town Spa Pizza.

Coding at Walker Interactive Systems

My time at Walker Interactive Systems, a now defunct Mainframe financials company, served both as my transition out of the Army and into the civilian world, and as my introduction to life as a professional programmer.  It marked a rapid change in many of my attitudes about life, software, and business.

When I started at Walker, the company had recently gone through a round of layoffs, and was just recovering enough to start hiring again.  Many of the people on staff around me were veterans of the company, somewhat jaded, and ready to move on.  When I started in January of 1997, there were two other developers on my Group:  Laura and Tony.  By the time August rolled around, they were both gone.

I worked in a group developing internal software.  The end users were primarily the consultants of the company who customized the software for the end users.  Overall, the company sold a suite of financial software:  General Ledger, Accounts Receivable, and the like.  The software ran on IBM System 390 mainframes.  Customers were behemoths like AAFES, and one of the Airlines (I think United).  The primary software was designed to run on a 3270 terminal:  a fixed size, fixed font terminal run on a screen by screen basis.  It was an old technology.  Keystrokes were scanned and processed by the terminal software and stayed on the local system until an explicit “Enter” command would send the whole buffer back to the mainframe.

My team was responsible for turning these screens into an API that Visual Basic programmers could use, a process known as screen scraping.  An off line process would read the database of screens, including position and length information, and store it in a database on client side.  Code inside the applications would act like a terminal, buffer up the changed information, and send it back and forth to the mainframe.  The code to execute this was split into two pieces, one for the UI and one for direct communication to the mainframe.  When Laura left, I inherited the front end.  When Tony left, I got the rest.

Microsoft technology was then at the DCOM stage.  What had started as Object Linking and Embedding had evolved into a development philosophy that pervaded the various flavors of the Operating systems at that time:  Windows 95, NT4.  I became a student of the component object model, learned about monikers and marshalling, reflective cross language interfaces, and remote procedure calls.  Wrox Press provided most of the information I needed, and Stacey’s bookstore graciously provided me access to spend a portion of my salary to purchase the books I needed.

The first thing I did was a rewrite of the UI code.  This was less a matter of Hubris and more a matter of it being easier to learn by writing than understanding the existing code base.  The existing code was in C, and I was immersed in C++.  The existing code was a series of dynamic link libraries for the non-preemptive-multitasking version of windows that had been forward ported to Win32, but that had much of the vestiges of the older systems.  The old code was more error handling than anything else.  My version had the benefit of focusing on a single platform.  Since I had the freedom to develop the code from scratch without worrying about backwards compatibility, it made it much easier to make the new code re-entrant, something that the old code had to work to prevent.

One big lesson learned from this effort was to respect the amount of embedded knowledge that there is in a pre-existing code base.  After the first release of my code, I spent a lot of time fielding bug reports from the UI developers about features I had missed.  I learned the value of having a quick-to-run debugging code driver that allowed me to easily reproduce their problems.  The integrated debugger was invaluable in stepping through, viewing what was actually happening, and allowing me to quickly make and distribute fixes.  I got the notion of step through your code drilled into my bones.

When adapting the Gateway code, I had to deal once again with the rapidly changing API from Microsoft.  The older method of remote procedure call was deprecated.  DCOM was the new hotness.   After much trial and error with their Interface Defintion Language (IDL) and SAFEARRAYS I finally got a simple network service to run.  Since my version was expected to be remote, we had reduced licensing from each client machine to a single NT server as well…or at least the potential to do that.  Not sure if the company ever followed up on it.

Of course, all of this distracted me from what I was “supposed” to be working on:  the replacement for the screen scraping which was an asynchronous messaging layer.  This was my first exposure to the recurring theme that I will state here as a rule:  Never name a software project Phoenix.  Really, do you want to imply that your project will go down in flames, dying time and time again?  This project phoenix was no different.  The concept was good:  pull out a section of the cobol code that could be executed as a standalone transaction.  Turn this into an asynchronos message and let the developers send the message to the mainframe.  The reality was that so much of Walkers code would needed to be restructures that even after we got the messaging layer working, the concept was unusable.

One of the end goals of the messaging layer was to work with Data Bound Controls.  There are things like spread sheeets and fields that can be bound to a column from a database query.  Since that meant playing nicely with the Microsfot database technoligies, I dove in and made the messaging layer an OLEDB Provider.  If this doesn’t scare, just be glad and move on with you life.  If this does scare you, then you know way too much about microsoft technologies and I feel somewhat sorry for you.  Basically, I had to learn about the technology that microsoft was then pimping as a replacement for ODBC, a tehcnology which never really should have caught on, and a technology that should be quietly taken out to the back 40 and shot.

One bug while developing the OLEDB provider took me two weeks to track down and fix.  THe mistake was mina and mine alone.  I was apassing in a NULL to a field that required an allocated structure.  THe problem was that, while I owned the calling and implementing code, in the middle it had to go through a microsoft technology called Active DAta Objects (ADO).  This particular API was closed source.  I could see only the disaassembly of the executing code, which didn’t provide the context I needed to deduce my mistake.  This adventure really sold me on the concept of Free (as in Speech) Software and Open Source coding.  I had just started experimenting with Linux, and this really drove home why the development model was so successful.

The very tail end of my time at Walker was spent learning about Java.  IBM was pushing Visual Age, and the company was planning a bitg transition. Walker really suffered from the .com boom:  people fled to cooler, more interesting jobs throughout 1998 and 99.  I left in the summer of 99 to go to Fort Point Partners, a botique services company that was pretty focused on ATG/Dynamo and eCommerce.  Soon after I left, I happened across a group of former co-workers there.  We chatted and they let me know that the company was then very Java and Websphere focused.  Not long after that, Walker was acquired and then passed on to the corporate afterlife.

What’s wrong with me

(Lyrics Composed while jogging some years back and dedicated to my wife)

When I was a little boy

I had a schoolyard crush

There was a little dark haired girl

I wanted very much

Instead I go rejection,

delivered brutally

Hey, what’s wrong with me?

Starting out, a first career

my enthusiasm burst

When the time came to evaluate

my performance was the worst

I worked so long, I tried so hard,

oh no, this cannot be

Hey’ what’s wrong with me?

Looking back at all my life,

have I done the whole thing wrong?

When will I find happiness,

and where will I belong

We shared a dance we shared a kiss

The kiss was very nice

you called me back to break our date

but then you called me twice.

A brand new occupation

that fits me perfectly

there’s nothing wrong with me

nothing, major, wrong with me.

(Inspired by the standard “Everything happens to me”)

Parsing and Inversion of Control

Parsers are essential to the interface layers of an application. A message based system requires a socket listener that will convert the contents of the stream from the network into usable collection of objects. In an inversion of control container, these request scoped objects should be registered instances in the container in order to build/fetch more complex objects, potentially of longer lived scope. Parsed request scope objects should be of classes that enforce invariants, but often will be simple strings in language specific form; char * or std::string being the most common for C++.

Take the example of a userid passed in as part of the request. There really is no format that this string conforms to other than, perhaps, some constraints of the system. To create an immutable UserID class may really just force casts to char * or std::string when the UserID is to be used.

There are many objects, specifically request scoped objects, that need to be created based on the runtime values provided by the system. In a pure Inversion of COntrol (IofC) environment, the parser would create each, and then add them to the container. This may require a large amount of coding in a manner specific to the IofC container. One goal of IofC is to minimize the amount of work that is specific to the container.

Many API’s handle this by creating a map. In the Java HTTP Servlet API, the request object has two string to string maps, one for parameters and one for cookies. This may be a good middle ground between two APIs. A better approach is what Struts does using the Apache Jakarta PropertyUtils API. The Action field of a form specifies an URL that in turn starts with a java object of type Action. THe action is configured in an XML file (Ugh!) that specifies the subclass of ActionForm. The request parameters are bound to the properties of ActionForm using the Java Bean coding convention. Thus a parameter user.homePhone.areaCode =415 would force the reflection equivalent of:

action.getForm().getUser().getHome().setArea(“415”);

One problem with this implementation is that any exception thrown at any point of this binding would force halt to the entire setting of parameters. The net effect is lots of Struts specific coding. Personally, I am not a big fan of getter/setter dependency injection, as it tends to violate the precept that classes enforce invariants. It doesn’t have to, just that code written that way tends to be of the nature where an object can have an invalid state until the setter is called. However, the setter approach does work well with builders, if the set method can be called multiple times in the role of “BuildPart.”

When discussing the marshaling layer we can often think in terms of combing interpreters with builders. The interpreter is responsible from converting from the marshaled format to object format for simple data objects. Each of these objects is added to a larger complex object. In terms of the Builder pattern, the interpreter plays the role of the Director. Only once the entirety of the message is parsed will the director call GetResult. Exceptions thrown during the parsing of the message are collected up so that they can be reported in bulk.

One common objection to this style of programming is the cost of multiple exceptions thrown during the parsing stage. Reducing the number of exceptions thrown should be a performance tune performed after the system is operational. The general structure is to split the parse of a data object into a three stage process. First create builder that takes the object in string form. Second, ask the builder if the marshaled form is valid. Third, fetch the object from the builder. If stage two returns false, add an error to the collection of errors and short circuit the building process. Note the higher degree of complexity over performing the parsing in the constructor. The constructor has to validate the format it is given from the builder, or has to know about the builder object, creating a bidirectional dependency. The logic in calling the builder and the return code has to be coded by hand or has to fit into some larger framework.

The degenerate case also seems to be the most prevalent: confirm the format of the data objects, but then transfer them around as strings. The problem with this approach is that each layer of the application will be written not trusting the other layers, and the objects will be re-parsed, potentially following different rules. From the increase in code size, complexity, and potential for error, we can infer that we should avoid this approach.

Since the builder can be created with minimal dependencies, and most of these can be defined statically, it should be a request scoped component defined in the IofC container. We have to decide at what point in the parsing process do we switch from a general purpose parser to a specific class dedicated to the data coming off the socket. Ideally, the message format provides a way to specify the message type and version early in the stream. This can be the key used to fetch the specific parser. The stream coming off the socket should conform to one of the standard types of the language. In C++ this means something out of std::. The parser can depend on the builder. After the parsing process, one last call into the IofC container kicks off the business processing, that which takes the parsed message and does something with it. At this point we can use something as simple as a functor: Everything is in the IofC layer.

There is a lot here subject to interpretation. The stream may or may not be encoded according to a public protocol, a language specific feature, XML, UUEncoded, encrypted, compressed, and so on. A pipeline can handle the transformation. Converting from stream to objects may use this pipeline, or be a portion of the pipeline, converting from a character or binary based stream to a stream of objects. The issue here is always how to get the objects available to the container without too much container specific logic. If the value comes in key value pairs, the key needs to provide enough information to determine which instance of which class to create.

Since your inversion of control layer should be minimally invasive, you don’t want to have each call in the building of the input validation require knowledge of this layer.  Something about the network protocol is going to be unique enough to pull in the processor for your code.  This is going to be the  URL, the message type, or something unique to your protocol.  The should be enough to select the interpreter and the  builder objects, connect them, and let the parser become the pump from there on out.  The builder should registered  in the Inversion of COntrol container.  When something needs the end product of the build process, it should get this from the container, which will delegate to the builder.  This should strike the right balance between type safety and flexibility.

Blinded by the Light

Springsteen’s version of Blinded by the Light was never a hit, but he still plays it in concerts to this day. He’s changed the orchestration, end even done it as a Latin number. The obscure lyrics have long caused much discussion as to their meaning. Springsteen wrote this song when he was in his early 20s, and before he had any success as a recording artist. He has stated that it was based on his experiences as a young musician and was based on people he met. Many people have tried to show that this was a song about drugs, or about sex. Springsteen has often written about love and sex. He’s alluded to drugs, but never sold himself as primarily a druggie. I suspect that, while both sex and drugs are reflected in the song, the song is not primarily about either, but is instead a description of the adolescent life of a musician.
The inner rhymes of the song provide a great sound, but seriously constrained him as a lyricist. He often had to choose a series of words that sounded good together, not necessarily that were the most direct way to describe what he was feeling. The burden is on the free words, the ones that don’t rhyme, to apply the connotation of the line of the song. What is most telling is where he chose not to rhyme. These words we have to assume he chose more deliberately. Because the style of the song is so constrained, it actually frees him from having to mean one thing, and instead can paint a picture with words that have multiple meanings, no one of which has to be the true one, but instead just have to be true to the theme of the lyrics.
Madman drummers bummers. The word madman is telling here, as it doesn’t rhyme, it strains the rhythm, and it leads off the song. [Update: Vini “Mad Dog” Lopez was the Drummer of the E-Street Bad] There is a sense of insanity, of hopped the up emotion that would cause one teenager to call the other a Madman. Drummers is both a music reference and again that sense of rhythmic energy, the pulse of life. Bummers: not everything is going to go well, and already we have a warning that there are things going on that will bring you down, bum you out, cause you to crash. Indians in the summer. Here I suspect the Indian refers not to a Native American, but to the motorcycle. In the north, you can’t ride in the winter when it snows, so the bikes come out in summer. The motorcycle is the symbol of freedom, and the cause of many young men’s premature death. The motorcycle shows up dominant in another Springsteen classic: Born to Run, where it is referred to a “Suicide Machine.” It is the mode of escape, the tool of the young. Did Bruce mean this? Possibly. [Update: `The Indians` were Bruce’s Baseball Team] It is not a rhyming word, and so was chosen more deliberately for meaning. With a teenage diplomat. The diplomat is suave, sophisticated, a term of maturity. This is at odds with the teenage modifier. The juxtaposition gives a sense of awkwardness, of just coming of age that pervades the song. A diplomat is also a person responsible for representing one culture to another. As a musician, Springsteen is a representative to the cities and towns he visits, and to the people of the older generation.
Down in the dumps with the mumps. Since mumps is a rhyming word, I was at first tempted to pass it off as simple alliteration as opposed to any real meaning. I don’t think it means a literal sickness, unless it was one in the past that lead to missing out on opportunities, but a disease as serious as the mumps would put our hero our of commission. The mumps causes mumbling from swollen salivary glands and testicular swelling. Here the mumps make more sense as a metaphor for teenage awkwardness (mumbling) and sexual frustration. It is telling that the mumps is a disease that gets more serious as you get older, that it is less serious to have as a child. The adolescent pumps his way into his hat. Pumps is a sexual word, and at a first reading I thought this was a metaphor for masturbation, but no self respecting teenage guy would jack off into his hat if he had any other option. I suspect that the pump refers more to a combination of fidgeting and perfectionism exhibited by the teenager to get his appearance just right before going out into the public. He’s not just putting on his hat, but making multiple small adjustments that look like pumping. [Edit: A Hat could be a slang term for a Condom, leading to a sexual interpretation of this whole stanza. Bruce claims this line is self explanatory.]
With a boulder on my shoulder: Muscles. Our man has been working out, or has just started developing. It also is sounds like the expression “chip on his shoulder.” He doesn’t just have a chip, he has a boulder. So that he feels not only that he has something to prove, but that he has some thing huge to prove. [Edit: also seems like a reference to Sisyphus, the spirit in Hades serving an eternity pushing a boulder up the hill. Another relevant Greek reference is Atlas, the Titan that held the World on his shoulders] Feeling kind of older: He’s starting to feel more adult, but just kind of, he’s still part kid. I tripped the merry-go-round: We have here the first fairground reference, but it fits with the theme of summer, recreation locations, the kind of gig a young musician would get. It also might be the other job of a kid who gets to play in his band, but doesn’t make enough money that way to survive. So he runs the merry-go-round as well. The key word here is tripped. It harkens back to “trip the light fantastic” but also to tripping a circuit breaker. The question was whether the tripping was accidental or intentional: the result of it being his job, or of a childhood prank. The merry-go-round could also be a metaphor for starting off the music of the band, the lights,and the dancing that is the teenage equivalent of a ride on a merry-go-round. While any of these might be what he originally meant, I think it is the plausibility of multiple definitions that really makes the line work. They all connote the same theme, the same feel. With a very unpleasing wheezing and sneezing the calliope crashed to the ground. Here is the first bummer. If we go with the explanation that it was the young man’s job to run the merry-go-round, than this means that something went mechanically wrong. If it was a young prank, then he broke the machine. If it was the band, then something went wrong on stage. A Calliope is a musical instrument named after the Greek muse of epic poetry, fitting for the epic length of these lyrics. The instrument made sound using steam and pipes, much like an organ. Even if the merry-go-rounds music was not strictly speaking generated by a calliope, it was something similar enough that the word fits. The sneezing and wheezing would have described a malfunctioning steam organ as it was falling apart. Since the calliope was a keyboard instrument, it would have also been an acceptable metaphor for an organ or electric piano, or even the entire band in a stage performance. [Edit: If we go with the sexual interpretation, this implies an awkward first sexual experience, complete with being somewhat put-off out by the strange noises both he and his partner made during the act.]
Some all-hot half-shot was headin’ for the hot spot snappin’ his fingers clappin’ his hands. At first read this appears one of the more straightforward lines in the song. Half shot probably means that he got a hold of some alcohol before headed out, and was buzzed, but it could also mean that he was still a half kid. He knows the music is going to be playing, and he already is anticipating the experience. But hot spot is another word with multiple meanings. The connotation could also be sexual, he’s headed to a tryst. Considering the later lines of this stanza, that also makes sense. It is even possible that both meanings are intentional: going out with the possibility or likelihood of hooking up, dancing as a mating game, and barely contained and visible expressed excitement at all of the possibilities.
The object of the song switches from male to female. And some fleshpot mascot: A fleshpot is a strip tease cabaret. Men would be lured in with promises of sex, gotten to pay for booze, and kicked out without receiving any sexual favors. A girl that would be the mascot could either be the girl that stands in the door and tries to entice men in, or could be a younger girl, adopted as the mascot of the older, more jaded women that work inside. More likely it is a younger version of these girls, still young, but perhaps a little trashy already. Maybe more comfortable in the scene, but not by much.was tied into a lover’s knot: She’s involved with someone. This involvement has tied her in a knot. with a whatnot in her hand. Since whatnot is a rhyming word, and it makes the line work out well, It is a filler word: anything you can’t or don’t want to describe is a whatnot. It could be a condom, a joint, a crumpled up piece of paper with a love note on it, a bauble won at some stand at the fair. It has meaning to her, to the tryst, and is left to be filled in by the listener.
And now young Scott with a slingshot: It isn’t clear if were returned to the guy from two lines prior, the all-hot half shot. It does not matter. The experiences are in some ways universal, and are certainly spread over multiple people. The slingshot could be many things: an actual slingshot, which is both a child’s toy and a weapon. As a weapon, it could be euphemism for a gun. Since a slingshot has a rubber band, it could mean a condom. Again, the ambiguity reinforces the blurry line between childhood and adulthood, between play and serious actions. finally found a tender spot the tender spot could be that he sweet talked his girlfriend into having sex, or he found a place secluded enough to have sex, or just that he found a tender spot in a girl’s heart that he was allowed to progress to more intimacy.and throws his lover in the sand: the kind of rough move a young kid might do, unaware of his own strength, swept away in the action. The sand implies a beach, playing again on the theme of a recreation location. The theme park and beach combination would fit in well with the New Jersey shoreline, probably the most important summer spot in the Boss’ home state.
And some bloodshot forget-me-not, bloodshot could be a reference to bloodshot eyes from smoking pot, or the blood from first sex, or as a result of the roughhousing in the previous line. It could also imply blood engorged, as in one who is ready for sex. It seems to refer to a girl again, maybe the same one from earlier in the song or a different one, as the experiences, if not universal, were certainly common amongst a good number of the people in the song. A forget-me-not is a flower, which would reinforce that he is talking about a girl, a pattern he uses again later. That she’s called a forget-me-not can means either that the girl is unforgettable, or that she is worried about being taken advantage of, of being forgotten. It is this kind of dual possibility that loads this song with meaning. whispers daddy’s within earshot: once again we are reminded that these people are still half kids, worried about parents, and some even accompanied by them on these summer excursions. These actions are illicit, below the radar of the parents and older generation. Is it sex, drugs, or just sneaking out at night? save the buckshot: buckshot may be a euphemism for his ejaculation, but it could also refer to any explosive action, anything that would kick of like a bullet. turn up the band, perhaps they are listening to music and she wants the radio louder to cover their activities. The similarities of the situations in these four lines suggests that this is all about to one couple, hooking up secretly. The main thing that challenges this notion is the non-rhyming words, the simple ones that could have more easily connoted that young Scott was the half-shot or the two girls were the same girl. More importantly, the fact that he repeats the word some connotes different people: Some fleshpot mascot, some bloodshot forget-me-not. If he wanted us to believe that they were the same person, he could have just said and the bloodshot forget me not. If he wanted to signify that the girl getting thrown in the sand was the same girl from the last line, he could have used but the bloodshot forget-me-not. Instead, the word some implies that we know the type of person he is describing, there are more than one. Thus, this really seems to be a collection of personalities, probably an amalgam of experiences collected over time.
Blinded by the light. It is both the title of the song and the most repeated line in the song. I’ve been on stage, and been blinded by the spotlights shined on me. I suspect that Bruce knew that feeling all too well when he was inspired to write this song, and that he is describing both that physical disorientation and the emotional overload of being young and the center of so much attention. The original (not the Manfred Mann) lyrics follow with Cut Loose like Deuce. He has stated explicitly that a Deuce refers to a sports car. The Manfred Mann version (at least as it is printed in the lyric sheet) is revved up like a Deuce. They have slightly different connotations. The revved up means potential, wanting to cut loose. Cut loose here means that the car is already speeding down the road. A Deuce would have been an old car at this time, but possibly the kind of old car that a young kid would be able to get his hands on. Another runner in the night…As a musician, he was not only playing at night, but interacting with people in “go out and party” mode. As an adolescent, night was when you can get away with things. Runner: high energy, a kid full of hormones, young and dumb and full of come. But another runner: this is a common pattern, the person is joining the other runners out there, the other party goes, the other adolescents trying on adult life, love, drugs, rock and roll, and responsibility. I suspect the primary person cut loose is the Boss himself: touring with a band, just out of high school, the freedom must have been both exhilarating and bewildering.
She got down but she never got tight: Got down is an expression with many possible meanings: dancing, giving a blow job, depression, getting drunk. The key is the word “But” meaning that what ever she did, it wasn’t as serious as what comes next: Got tight. While it might be tempting to use the modern slang meaning of tight as a girl that is really attractive, this song came out about 25 years before that usage. Tight can mean drunk, but that is a little bit more British than Bruce would have used. Tight can also mean a virgin, but that seems at odds with the rest of the song about first experiences, and a virgin starts tight and then becomes less so, so one wouldn’t get tight. The only obvious slang meaning left is to be in tight with the crowd, and this may make the most sense. She got down, but she never got tight: she danced well enough to be well regarded, but wasn’t quite accepted into the the inner circle. This seems to be justified by the following “but she’ll make it alright.” The girl here is still looking for social acceptance, she hasn’t quite found it, but there will be other nights, other events, and the rest of her life. She’s alive, she’s healthy, she still in the game, if a little older and maybe wiser. [Edit: a sexual interpretation is that she had sex, but not with someone that she is going to be with for the long term. A fling.] Since this refrain is repeated but referring to other characters, both male and female, this seems to be the unifying theme. Early adulthood is hard, but the scars it leaves help define who you are. This theme jives well with the rest of Springsteen’s songs, especially those off of his first album.
The next verse is reserved for two characters, both authority figures of sorts. The first is described as Some brimstone baritone anti-cyclone rolling stone preacher from the east. Brimstone refers to fire and brimstone sermons, the baritone to a low, rumbling voice, implying an older man. An anti-cyclone is a high pressure system that brings fair weather…perhaps he’s full of hot air. As a rolling stone, he is a migrant. Maybe he’s a rolling stone in the nature of the other musicians, and as such he’s giving the younger musicians pointers. A Dictaphone is an old voice recording device. Dethrone the Dictaphone could be a hint as to what was happening in the recording industry: moving from records to tape. Hit them in their funny bone could mean stage presence, make them laugh, be larger than life. that’s where they expect it least. You have to do something when you perform to set yourself apart. The repeated one syllable in this couplet reinforce the baritone sound, giving a little weight of years to the preacher.
The other character is The new mown chaperone, someone young thrown into a position of authority, something he’s not yet comfortable being. He’s out of the action, in the corner all alone watching the young girls dance. He’s trying to keep aloof. Now comes a great line: some fresh sown moonstone was playing with his frozen zone to remind him of the feeling of romance. Perhaps this is a drug reference, but I suspect not. Moonstone was a song by Cat Stevens that came out in 1967, so Bruce would very likely have known it. In moonstone, the singer talks about something, likely some one that he caught just a glimpse of, that keeps coming back into his mind:
saw a flash, then a sparkle from a moonstone
Then the mist started, started to clear
I saw a face, a face in the moonstone
And then it started to disappear
Perhaps he saw someone that caught his eye, or maybe the band had just played the song, and it stuck in his mind as an ear-worm. Either way, it was messing with a portion of his spirit that had been frozen, most likely hurt by a romance earlier in life. He is not immune to the sexuality of the scene. It is possible that these two guys are one and the same, but they seem to be different for the same reasons listed above.
The refrain ends differently this time: He got down but she never got tight, but he’s gonna make it tonight. Again, suggesting that the couple got together, here it seems to refer to the chaperon above, hooked up, got shut down, but he’s going to make it…they are older, and sex is perhaps less formative for them. It isn’t their first time, so perhaps it is less important to be in love in order to have sex. Or perhaps just the experience of a near miss is enough to get his frozen feelings moving, to rejoin life, and start playing the game again.
Some Silicone Sister: This seems to be a pretty straight forward reference to a woman with a breast implants. I suspect that sister does not have a racial meaning, but it might. with her manager’s mister: She has a manager. A Boob job wasn’t cheap in 1973, and wasn’t that common either. A woman with implants was probably either rich or in show business. Since she has a manager, it implies the later. But she isn’t just with here manager, but her manager’s mister. Perhaps her manager is a woman, and she’s with the her manager’s husband. That seems like a stretch. It could refer to a device that sprays mist, either for perfume or something, but that seems weak, unless it was some form of drug paraphernalia, but again, it seems like a stretch. Mister implies something masculine. It may mean that she has her manager’s manhood tightly under control. Told me I got what it takes: if she is in the music business, she thinks Bruce has the potential be be big. I’ll turn you on sonny to something strong if you play the song with the funky break. She’s older, and hitting on him. She’s tried to turn the tables: I can make you big. She tries to be manipulative: she’s asking him to change his set list. She promises to turn him on to something strong: implying both sex and drugs. She is either a powerful woman and maybe just a little desperate for validation from a young rising star.
Go-kart Mozart repeats both the music and amusement park themes from earlier in the song. Either word could be the metaphor. If Go-Kart is supposed to be a metaphor, and Mozart implies that this character is a musician, than the Go Kart could refer to the sound of an electric guitar with a lot of distortion. If the Mozart part is the metaphor, than this could just be the guy that runs the Go Karts, [Edit: or is very gifted as a mechanic]. Was checking out the weather chart to see if it was safe to go outside. If Mozart here is a guitarist, then chart probably refers to sheet music. It is possible Weather chart refers to music from the group Weather report, a Jazz fusion group that was just starting on the scene in the early 70s. Go outside might mean playing outside the changes, getting funkier, getting more risky with the music. Of course, the great thing about this kind of poetry is that it supports a great degree of flexibility of interpretation it supports. The weather chart could be the paper, and looking at the weather for the rest of the night, a fairly banal interpretation. Or it could be the racing forms and Mozart is afraid of running into his bookie.
An Early Pearly is a type of white flower, and is also referred to as a she, another case of referring to a girl as a flower. In this case, a Pearl white flower, both implying virginity, and the term Pearly Whites, a big smile. Or perhaps her name is Pearl, and so she got the nickname Early Pearly. Or it could imply that she get physical early in a relationship. Little does imply that she is young, perhaps another adolescent. Came in by her curly-wurly A Curly Wurly is a candy bar. Curly hair, appearance, a girly look. Or a girly Car. Asked me if I needed a ride. She’s hitting on the singer. Hey, it is Bruce! But I just noticed that the lyric sheet says came in by her curly-wurly. This might be a typo, as I think Bruce sings it the other way around. A reference to pubic hair, and thus another sex reference seems a trifle crude, especially since it seems more that she is propositioning him.
There are a lot of lines still to go in this song, but I feel like they are not so impenetrable. [Some additions from from here to the end, providing my detailed analysis]
Oh, some hazard from Harvard was skunked on beer playin’ backyard bombardier
Harvard boy, drinking and doming something wild in the backyard. Sounds like a house party.
Yes and Scotland Yard was trying hard, they sent a dude with a calling card,
he said, do what you like, but don’t do it here
Well I jumped up, turned around, spit in the air, fell on the ground
Asked him which was the way back home
He said take a right at the light, keep goin’ straight until night, and then boy, you’re on your own
Scotland yard is the home of the British police, and so that stanza seems to refer to a run in with the authorities, getting run off, a house party broken up by the police. Bruce tries to impress, tries to sweet-talk, but gets told to head out of town. straight until night seems like a Peter Pan reference.
And now in Zanzibar a shootin’ star was ridin’ in a side car hummin’ a lunar tune
Zanzibar sounds like the name of a bar, a bad pun, trying to play on the exotic locale. I picture a dive with a Neon sign out front with a picture of a palm-tree and a martini glass. Lunar toon is both a reference to songs like Moonstone or Moon Dance, or just the addled moaning of someone that is high, but also Looney-tunes, Bugs Bunny and so on. Again, the crossover from child to adult. Sidecar is a motorcycle reference, but also to someone that plays a supporting role, that doesn’t get to drive, not in control of his own destiny.
Yes, and the avatar said blow the bar but first remove the cookie jar we’re gonna teach those boys to laugh too soon
Avatar is a leader, the person directing the action. Perhaps an older musician or manager. Remove the cookie jar is the cookie jar the tip jar or the stash of weed? Possibly, the venue owner decided not to pay them in response to some clownish behavior, to teach those boys to laugh too soon. Or is this payback for a bar owner that stiffed them?
And some kidnapped handicap was complainin’ that he caught the clap from some mousetrap he bought last night,
Well I unsnapped his skull cap and between his ears I saw
a gap but figured he’d be all right
Members of the band or friends experiment with beer, drugs, prostitutes–mousetrap seems to be an interesting euphemism–and yet they all survive. The kidnapped handicap sounds like a similar reference to the sidecar, someone that had to be taken out to the bars under duress of both the escort and the escorted. A wing-man that ruins chances. It may be that a degree of growth has happened to the band by these later stanzas.
Mama always told me not to look into the sights of the sun/Oh but mama that’s where the fun is: This is the ultimate line of the song, and seems to sum it up nicely. We’re old enough to make our own choices. We may knowingly choose to something dangerous, but we do so to live fully. This song is a youth anthem, not necessarily promoting sex, drugs, and rock and roll, but describing how alluring the lifestyle is to kids on the cusp, but also to reassure that many kids go through this and are OK. They’ll be singing “Glory Days” a decade later, just like Bruce Springsteen was, and he hadn’t even hit his prime.

Inventing a new scale

I’ve learned a lot about improvisation in the past few years.  One of the tricks of Bebop is that it extended the scale from 7 distinct notes to eight.  This is important since there are 8 beats  per measure.  The added note was typically one that made the chord tones fall on the downbeats of a run.  For instance, if the chord is C Major ( C E G B) the bebop scale adds the G#.  The run (from low to high) is C D E F G G# A B C.  For a C dominant 7 ( C E G Bb) the added note was the B natural and the run would be C D E F G A Bb B C.

I decided to take this a step further.  One other rule of Jazz is to avoid playing the root tone, to delay resolving the riff.  So let’s take the root out of the scale, and “define” the ninth as a good tone.

When playing over a major chord, you also want to avoid the fourth, as it clashes, and not in a good way.  A standard replacement is the #4.

Another rule:  Only the downbeats of the run have to be in the scale.  The upbeats can be any passing tone.

Add these together and a fairly simple pattern emerges.  Let’s start the run on the 3rd (since we are avoiding the root).

E

We skip the 4th and go to the #4. Then to then next chord tone.

E F# G

We next want to hit the major 7th.  We can chose either the 6th or the b7th, but it seems to make more sense to stay inside the scale than go outside.

E F# G A B

Skip the root, and try get the next beat on the ninth.  Only note left to chose is the b9.

E F# G A B C# D

Let’s get back to where we started.  Only transition note available is the #9.

E F# G A B C# D D# E.

Play it over a Cmaj7.  Start with any of the downbeat notes.  Doesn’t take too long to get used to the sound.

For a C dominant 7th I’d probably adjust it to this:

E F# G G# Bb C# D D# E.

But there is a lot more leway in a dominant 7th.

Even more musings

  • Being able to function with little sleep is an essential skill for an Army Officer.
  • You are never more aware of the style or quality of the pavement as when you are on Rollerblades.
  • It rarely saves time to go a longer route when trying to avoid traffic, but it makes you feel like you are making more progress since you keep moving.
  • It’s not that I wasn’t as big a geek as I thought I was, it is that fewer people knew it than I realized.
  • SQLWCHAR != wchar_t
  • The last exchange between Fezzik and Inigo (“Fezzik, you did something right for once.”  “I won’t let it go to my head.”  Should have been a rhyme.)
  • I’m way too aware of the chord changes when I listen to music.
  • Listen to Leo!
  • Hire smart people and then make them do menial tasks is the basis for too many companies.
  • Cygwin makes working on Windows merely distasteful.
  • Just because we elected a Black man President does not mean that racism is defeated in America.
  • You would have to go back before sliced bread to find an invention greater than the Thera Cane.
  • I here-by dub anger derived from problems while developing software “Code Rage”
  • Kind of Blue. The best Jazz starter drug I know.
  • Power putty is liquid, it just flows really slowly.
  • If you haven’t used your waffle iron to make grilled cheese sandwiches you are wasting its potential.
  • I have embraced my inner geek, since my outer geek is getting all of the attention and my inner geek was feeling neglected.
  • I swear I will learn how to type someday.
  • Looks like the answer wasn’t 42…it was 44.
  • When the build system takes too long, avoid the build system.
  • Puff the Magic Dragon still makes me tear up at the line “A Dragon lives forever, but not so little boys.”  If you have a kid, you’ll understand.
  • Few things are more fun to argue about than fascism in Starship Troopers.