Sufficient quantities to afflict everyone.
I spent the past six work days in a courthouse as a juror. It was a civil case, involving a house repair after a burst pipe flooded it. Verdict went in at around 3 PM (Aug. 2)
There is so much you don’t know on a jury. You can only consider the evidence placed before you…and sometimes you have to forget something you learned before the witness reacts to the word “Objection.”
It was a construction case, and, despite having grown up as the son (and sometimes employee) of a construction contractor, they chose me anyway. I don’t think it colored my reasoning anyway.
Based on this incomplete information, we had to award money to one or the other; doing nothing was, in effect, awarding money to the client who had not paid.
While I did not agree with the other eleven people on the jury about all of the outcomes (there were several charges both ways) I was very thankful to have all of them share the burden of making the decision. I can only imaging the burden carried by a judge in arbitration.
On the other hand, in arbitration, the judge can do research. We couldn’t. We had to even forget things we know about construction (like you postpone work on the outside to get the people back inside) if it was not presented as evidence.
I was very thankful to have my dad to talk this over with afterwards as he has fifty plus years in the construction industry. He clarified some of my assumptions (based on the incomplete information I gave him) and I think I can let go of my doubts. I can sleep soundly tonight knowing I did the best I could, and that, most likely, justice was served.
The number one thing I took away from this experience is, with anything involving contracting, or money in general, is to get everything in writing, communicate as clearly as possible. Aside from covering you for a future lawsuit, it might help prevent that lawsuit by keeping the other person on track. Run your business such that someone else could step in and take over from you, and know exactly what you were doing…or you can hand over what you want to a brand new contractor and they could take over. Obviously, that is a high bar to clear, but the better you do, the better for all involved.
This post has been removed.
(to the tune of Jessie’s Girl. Yes, that old tune by Rick Springfield. I’m old and watched too much MTV back when it still played videos. Based on real events.)
The members of the team had rolled out the resilite mats in the back gym. The air was barely heated, so they had been hard to the touch as the boys rolled them in three straight sheets. The kinetic energy of a pair of teenage boys transferred to the friction of the shoes applied a sheering force that would separate untaped mats. That was acceptable during a normal practice, when the mats would be shared by a half dozen pairs at once. During a real match they would be taped together, to prevent them from separating during the bouts. The tape was an expense that the cash strapped athletic department wouldn’t waste on a practice. But there was no risk of separation during the opening half of this practice. The mats were rimmed with spectators, the members of the team focused on the two participants in the center. During a normal practice, the mats might be rolled out with either side up. The lesser used side had five circles, laid out like the dots on a die showing 5.
The Following post was written by my Mother.
To the best of my knowledge, my father was given the flag while he was still in the army. He was not discharged immediately after the war but spent many years in the reserves. I remember him packing to leave for Camp Drum, as it was called in those days. He was not called up for Korea, but I think he was still in then because I can remember him going to camp for two weeks every summer for several summers. I was too young to remember him going in Ohio, and we moved to Merrick in 1949. I would have been too young to remember many summers when Korea broke out in 1950.
I remember him saying that when the war ended in Europe, they were preparing to go to the Pacific. As they were about to depart, the war ended in Japan. He said they then sailed back to NY, instead, and upon entering NY Harbor, they all through their mess kits overboard.
He became active in some military organizations. In Merrick the more active group was the American Legion, vastly different from what it has become today, a drinking, non-tipping hangout. He was an officer in that post. I am not sure which group gave him the flag, the VFW or the Legion, or the government. I remember him marching in some parades in Merrick on Memorial Day and Veterans (Armistice) Day, and they were a big group. The VFW post was, I think, in Freeport.
He won several medals which we played with, broke, lost. We were children, and he didn’t mind.
He didn’t keep up with any of the men he served overseas with but did with some of his reserve buddies.
Although he is not buried with that rank, he had told us that he was Chief Master Sargeant. I don’t know what that rank actually is. Maybe it was honorary. The chevron on his arm had lots of stripes and something in the middle. I think he is buried as a First Sgt.
As you know, his name is engraved on the memorial at Silver Lake in Baldwin. His name is spelled wrong, two L’s instead of one.
Grandpa always flew the flag on holidays. I continue to fly his flag for him and for all the men and women who have served in defence of this country. That includes just about every male member of my family–except your father. I only fly his flag on special holidays like Memorial Day, Independence Day, and Veterans Day.
Uncle Gene has the flag that was presented to me at his funeral. I gave it to Uncle Gene because, like his father, he served. I would have loved to give it to you, but I thought Gene really deserved it. I will give you this 48 star flag. It is older and signifies much more. And, of course, it was definitely before Alaska and Hawaii became states in 1959. So, for whatever the story, it really is Grandpa’s army flag. And he was proud of it.
1. The mechanism in the brain is that is supposed to disengage the mouth doesn’t always work with me. When I remember an embarrassing episode from earlier in my life, I often yell at my self about it, out loud, usually something like “Stop think so much!” or “Quit it.” I have Programming induced Turrette’s Syndrome.
2. I read incredibly fast. I started reading in kindergarten and have always devoured books. I was reading the full length Alexandre Dumas books in third grade.
3. I wore braces while wrestling in high school. My lips were routinely turned into chopped liver by them.
4. Music has been an incredibly strong force in my life. I was singing before I spoke. I started piano lessons in first grade (Thanks Mrs. Stephanski!). My great Uncle Ben started teaching me Saxophone in second grade. I sing out loud whenever I am in the car alone. I contemplated going to Berklee school of music. As a Junior and Senior at West Point I conducted the Jewish Chapel Choir.
5. I read Zen and the Art of Motorcycle Maintenance while in High School. No other book I’ve read has had more of an effect of how I interpret the world.
6. As a Plebe at West Point, I got into big trouble twice. The first time was because I had a sword for the medieval studies club in my locker in the trunk room. The second time was for drinking. My roommate had snuck a bottle of Jack Daniels into the Barracks. I had to shots, and threw them up.
7. When I was a three years old I made up a Superhero named “Strong Running Man”
8. I was really into Archery when I was in boy scouts. I had a recurve bow. My cousin and I were shooting arrows up into the air in New Hampshire. One got stuck in the trees, and fell to earth right in front of my father, missing him by a few feet. He broke the bow over his knees.
9. My first crush was when I was in nursery school. Her name was Elizabeth Lubin. I still don’t know how to spell her last name.
10. I compose music. I’ve written a few jazz and folk songs. I have written about 70% of the book for “The Princes Bride, the Musical.” It is an Operatta.
11. I spent my first two and a half years as a professional programmer doing Microsoft programming. My focus on Linux and Open Source programming comes from having been burnt by MS too many times.
12. When I was Lieutenant in the Army, I lived in a beach house on the North Shore of Hawaii. On certain days, when I was allowed to do the morning exercises (PT) on my own, I would often go snorkeling right behind my own house.
13. My favorite hobby is Rock Climbing. I have done more damage to my body by climbing with out doing injury prevention exercises than any other way. My favorite type of climbing is climbing cracks by jamming my hands and feet into the wall and camming them.
14. I was incredibly nearsighted as a kid. It killed my depth perception. It is one reason I never liked sports like Baseball or Basketball. I had LASIK about ten years ago, and my eyes have continued to get worse to the point that I need glasses full time again.
15. I have a ridiculous memory for quotes. I can watch a movie or TV show once and pick up a quote that I remember for years.
16. I grew up wandering in the woods. The thing I love most about being back on the East Coast (aside from being near to family) is the woods here. There is something about the deciduous forests and terrain gentle enough to let you walk just about anywhere while out in the woods that I find really recharging. I’ve recently taken up snowshoeing because I love being able to wander through the snow covered woods and walk anywhere.
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.
The defining question of geek culture before the .com boom was, ‘What computer did you program on first.’ Before Microsoft became ubiquitous, there a period where many different systems, all incompatible, became available within the price range of the average family. Brian Graber worked on his Dad’s IBM PC, Cristin Herlihy had an Apple II, the O’Neil’s had an Atari computer (they had the game console, too). My cousins from New York lent us a Commodore VIC20 with a two volume set on teach yourself BASIC. My cousin Christopher came to visit for a week, and ended up staying for the summer. I read out loud out of the books and he typed. By the end of the summer, we were able to program our own text based adventure game.
Even more impressive, we could perform such amazing feats as turning the background and foreground color to black, making text entry difficult. This minor bit of wizardry was performed by using the the arcane command poke. The format was poke memory address, value. It allowed you to program at an incredibly simple level. Note I said simple, not easy. You could set any memory address on the machine to any value you wanted. Once you knew where the memory location was that controlled the text color, or the background, you could produce magic.
The VIC 20 returned to New York at the end of the Summer, but the Holidays brought along a Commodore 64 and a subscription to Computes’ Gazette. A month or two later, I talked my mom into subscribing for the Disk that accompanied the magazine. Now, you may accuse me of being lazy, but most of the programs they release were nothing more than a long string of poke instructions to be typed in. They even released a checksum program, to make sure that the numbers added up to the expected values, but I never go the Canyon Crawler program to run correctly. The Gazette, in addition to a word processing program and a slew of video games, published two tools that were very instructive. One was a font editor, and the other a sprite graphics editor. With these simple tools, you could make video games that were arcade quality (1985 arcade quality, that is). My first video game was a spy game, where you had to parachute down between two roving searchlights. If either touched you, you fell to your doom. Programming this required using the other most arcane of instructions, peek. Peek told you the value of a memory location. Armed with the peek command and the address of the joystick port, I could move the parachute left and right, while it drifted ever downward.
In retrospect I should have stayed with the Parachute idea. On the next screen you might have had to parachute onto a moving boat, or a bouncing trampoline, or perhaps avoid a flock of geese. However, I wanted to make a game that scrolled. I had a vague idea that maybe I could reset the CPU to look at any memory location for its character map, and coupled with a really cool font set you could wander through a maze of building looking to steal secret codes. What I didn’t know was that this type of machine was based on memory mapped IO. Certain fixed memory locations were actually just links for other processors, or input and output devices. There was no way to change where the CPU looked for the character map, as it was the result of the underlying electronics.
I was frustrated by the limitations of BASIC. I wanted to know what all those peeks and pokes were doing. Once I started reading about assembly language programming, I realized that the coders at Compute were distributing, not source code as they would for a program written in basic, but a sort of executable. The C64 only knew how to load and run basic programs. These long listings of pokes were actually copying instructions into memory. Not just color codes for the background or bitmaps for sprites, but instructions like, ‘Load the value from this memory location into the X register.’ I had no idea what a register was, but still, this was pretty cool. The only problem was that I never found an Assembler for the Commodore, so my hacking was limited to converting instructions into numeric codes, and loading them in by hand: my learning mostly theoretical.
I mentioned Cristin Herlihy had an Apple II. This became significant during my senior year of high school when I took a structured programming course in Pascal. I spent long hours over at the Herlihy’s debugging programs to do simple text based operations. The cool thing about Pascal over both Basic and Assembly was, get this, you didn’t need line numbers. GOTO, the standby command for BASIC programming, was forbidden by our teacher. I had learned subroutines and looping before, but you got to call everything by a friendly name like ‘do_something’ as opposed to calling with the cryptic GOSUB 65000. Also, we had floating point numbers. But where were the graphics? I never learned that, as it wasn’t on the AP exam. Programming became more practical, but more removed from the reality of the underlying hardware. It must have been a good course, though: I managed to get a 5 out of 5 on the Advanced Placement test.
After toying with the idea of going into music (I was a fairly serious Jazz Saxophone player in high school), I ended up going the opposite extreme: The United States Military Academy at West Point, or, as I tend to call it, Uncle Sam’s schools for delinquent children. The 5 on the AP test got me out of the first two levels of Computer Science, and into the Data Structures and Algorithms. Now instead of working with floats and strings, we were working with linked lists, arrays, stacks, and heaps. We learned how to sort and search, but more importantly, we learned how to analyze algorithms. I took the the standard set of courses: Language Theory, numerical analysis, discrete mathematics, operating systems, software engineering, and so forth. By having opted out of the first two classes, it opened up more electives at the latter part of the program. I got to take compilers, graphics, artificial intelligence, and databases. I was well armed to enter the workforce as a programmer.
Except that I entered the Army as an Infantry Officer. For the next several years my interaction with a computer was primarily via Calendar Creator and Microsoft Office. One time, I needed to copy a file from one computer to another, and it was too big to fit on a single floppy, so I wrote a short Pascal program that cut the file in half, byte by byte, and another that put it back together. I eventually got an America Online Account, as I hadn’t had email since graduation. Information systems at the lowest levels of the Army were still based on the time honored tradition of filling out a form and putting it in the inbox. The primitive systems worked, to a point. I learned what it really meant to be an end user. Using the applications at our disposal, we built better systems, planning training and tracking soldiers administrative needs in home built systems. We did unspeakable things with Excel spreadsheets and Powerpoint presentations. Division Headquarters had a scanner, and I showed out operations officer how we could scan in the maps and draw operational graphics on them electronically.
My first job out of the Army was at Walker Interactive Systems, a company that built accounting software that ran on IBM mainframes. The group I worked in built applications that ran on Windows machines that ran the transactions on the mainframe. My team supported the infrastructure that made communication between the two worlds possible. The mainframe stored its letters using a mapping called EPCIDIC, the Windows machines used ASCII. Even more confusing was the way the two systems stored numbers. Back on the Commodore 64, I only had to worry about a single byte of data. But Systems had grown so that a number was stored across four bytes. For historical reasons, Microsoft decided to store the least significant part of the number in the first byte, and the most significant part of the number in the last byte. IBM chose to store it the other way around. To avoid having to deal with these problems in the buffers we were sending, the architects had decided that all numbers would be sent in their string representations. While we might send a positive or negative sign, we never sent around decimal points. A certain field was just defined as 10 digits long, with the decimal point assumed to be between the eight and ninth digit. Dates had four different formats: Julian, Year Month Day, Day Month year, and that barbaric American format Month Day Year. The system was designed so that we would package up a large amount of data, write it into a buffer, and send it across the network to the mainframe. The Mainframe would plug and chug and send back the data in another buffer. This type of transaction mapped to another technology that was justing make inroads; the Hypertext Transport Protocol, the underlying workhorse of the World Wide Web.
One thing about developing code is that sometimes you are so busy you don’t know how you are going to get things done, while at other times you are just waiting for someone else to finish, or just waiting. During a long period of downtime, I got hooked on web comics. One of them, Userfriendly.org, touted the virtues of Open Source software and the Operating System built around the Linux Kernel. Intrigued, I found an old Pentium 100 and purchased a Copy of Red Hat 6. While the knowing out there might scoff at me paying for free software, it proved to be a great investment. This was my entry into the world of Free software. When I had booted that Commodore 64, instructions that had been burnt into read only memory would execute, making it impossible to tell the computer to do other things. With Linux, I had access to this same type of code, but now with the ability to look through it and change it. I learned how to compile my own Linux Kernel. Because the Ethernet Card that came with the machine was not supported by Red Hat, I had to get code from the source and compile it in myself.
In this case, the source was a guy named Don Becker, who worked for NASA. His project was making a Supercomputer by linking together lots of little computers. In a nod to his Nordic ancestry, he named it after one of the heros of Germanic legend: Beowulf. Because his Beowulf was built more like Frankenstein’s monster, sewn together from many different pieces of available hardware, he needed to be able to use all the various types of hardware he found. The Linux Kernel allowed him that flexibility. The price for the use of Linux was that, if he distributed the executable, he had to distribute the source code as well. Don became the Guru of Ethernet device drivers for Linux. This is what is known, in business speak as Win-Win. Linux and its community won because it got good drivers. Don won because he was able to build his supercomputers and spin them off into a company that specialized in Beowulf clusters. More on that in a bit.
Just before leaving Walker, I looked into rewriting the Client side of our code using a language that was really getting popular: Java. Java was yet another step away from the hardware. As a language, it was not designed to be compiled to the instruction set executed by the CPU of the machine it ran on. Instead, it was converted to a very simple set of instructions that were interpreted at runtime into the CPUs instruction set. This final step is what made Java so portable. Now your code, once compiled, could run on any machine that had a Java Virtual Machine installed. There were limitations, of course. It ran slower than code compiled for a specific CPU. The graphical user interface layer, called Swing, was especially slow. So it never really caught on for client applications (although right now I am using Open Office Writer, a Swing based word processor to type this). It was, however, a perfect fit for business logic processing, especially web site development.
So I, along with the rest of the San Francisco Bay Area, learned to develop websites. The first was Tavolo, the second incarnation of what was originally digital chef. Tavolo was a specialty food and cookware website developed by the Culinary Institute of America, or as they like to be called, the CIA. We wrote their new website using a product called Dynamo, from the Art Technology Group. Dynamo was an application server. It was a program designed to run other programs, and many of them at once. Dynamo had components for personalizing a website based on the person who used it, and a significant amount of support for ECommerce. Many of the solutions to these problems ATG put into Dynamo were parallel to, but different from, the solutions that eventually became the standards put out by Sun for Java enterprise computing. Since the marketing people at Sun decided that Java need a second version this became Java 2 Enterprise Edition, or J2EE. Maybe they thought is sounded better than JEE.
As these standards got better and better developed, various people started implementing them. Some were companies trying to sell their implementations. But many people who were doing Java programming released their code under various open source licenses. The most popular, the Tomcat Web Server was developed under the auspices of the Apache organization, the same folk who made the Apache web server. JBoss, (renamed from EJBoss due to Copyright Issues with Sun) was the transaction server and database wrapper. These performed the same job as Dynamo, but were free. Additional packages existed for various stages of website development, database access, document generatation and more. I now had open source code for an operating system, and for all the software I needed to build Enterprise Software. As the dot-com bubble burst, I headed to a small company that needed a website built. Using this stack of open source software, we brought up the website in a few weeks, and grew it over the course of the following year. All of my follow on projects have used this mix of Java and open source software.
The secret to Java’s success is also one of its shortcomings. Java comes from a long line of programming languages that try to make it hard for the programmer to do the Wrong Thing. In particular, Java allows you to use memory without having to clean up after yourself. Once an object is no longer referenced anywhere in the system, it is eligible for garbage collection. While there are numerous other features that make Java a good language in which to work, this is the one that most contributes to productivity. The drawback is that sometimes you need to know exactly where memory comes from, how long it can be used, and when it can be reclaimed. In Java, memory is difficult, if not impossible, to access directly. Probably most telling is the fact that Java is not programmed in Java, it is programmed in C and C++. Because something as critical as the Virtual Machine that Java runs on has to be fast, or all programs are slow. Where Java takes the position that programs should check for and report errors to speed development, C requires a much more dedicated quality assurance process to make sure the programs don’t have an unacceptable amount of bugs. Not that you can’t write fast code in Java, and not that you can’t quickly write bug free code in C, It is just that each language makes it easier to do its own thing.
So I made the effort to break out of the very successful track I was in, take a cut in pay, and get in to Linux Kernel development. In a sense, this was a return to my roots, being able to go right to the hardware. I spent quite a long while looking, when opportunity found me. A recruiter called me from Penguin Computing. Penguin is a hardware company, they sell Linux Servers. Cool. About a year ago, they bought Scyld. Scyld was the company spun off from Nasa’s Beowulf project, lead by Don Becker. Itold you there would be more later. The geek value was immense. I was hooked and convinced them to hire me.
Why was I drawn to computer science? I like patterns. I like being able to hear the chords of “Always look on the Bright Side of Life” and realizing they are the same as “I got Rhythm” just with the Chorus and verses reversed. I like trying to tell which of my nephew’s personality traits came from his mother and which came from his father. When it comes to programming, I like taking a solution, and extracting the generic part so I can extend it to solve a new problem. Design Patterns work for me. I’ve been interested in many portions of computer science, and enjoy learning the commonalities between tuples flowing through portions of a query, packets flowing through a network, and events flowing through a graphical interface.
The one topic in my course on Artificial Intelligence that really piqued my interest was neural networks. After several decades of trying to do it the hard way, scientists decided to try to build a processing model based on the brains of living organisms. Animal brains do two things really well. First, they process a huge amount of information in parallel. Second, they adapt. Traditional neural networks (funny to be calling such a young science traditional) are based on matrix algebra as a simplification of the model. One vector is the input set, multiplied times a matrix gives you an interim result, and then multiplied by a second matrix gives you an output set. The matrices represent the connections of neurons in the brain. At the start of the 1970s, scientists were convinced that Neural Networks were the big thing that was going to get us Artificial Intelligence. But traditional neural networks learn poorly and do little that can be called parallel processing. After a brief time in the sun, they were relegated to short chapters in books on AI. They are still used, but people no longer expect them to perform miracles.
If you believe that upstart Darwin, real intelligence is the result of millions (or some greater illion) years of evolution. Expecting a cheap imitation to learn to perform a difficult pattern analysis with a short amount if training is either a case of hubris or extreme optimisim. If I had to guess, I would say both. Around us are a vast (albeit dwindling) variety of animals that all have wonderful examples of neural networks. We are lucky in that we have such great models to work from, we should learn from them. I would like to use a neural network model as a starting point for a processor that learns and moves like a living creature. Recent work with hardware based neural networks have performed superbly at voice recognition. The focus on the timing between the neurons, an aspect not accounted for in the simplified model, was a key differentiator. The animal brain is superb at cycles such as the motion of the legs while running. Once the basic cycle is learned, the system will be taught to adjust for rough terrain, different speeds, and quick changes of direction. If the behavior of a single muscle is analyzed, we see it has a pattern of contracting and releasing timed with the activity it is performing. The brain controls all the muscles in parallel, as well as absorbing input from the various senses. This cycle can be seen as a continuously adapting system built out of: 1) a desired process (running), 2) the state of the muscles and other organ systems, 3) a prerecorded expectation of the flow odf the process, 4) and the inputs to the senses. In order for a cycle to progress, some aspect of the output must be fed back in as input. Additionally, a portion of the system must remain aloof and compare the actual end result with the desired end result, using that to tune the behavior of the system. The best result will come from an interdisciplinary approach: the system should be engineered as a mix of software and hardware, traditional engineering techniques and genetic algorithms, using everything learned from biology, especially animal physiology. The latest advancements in materials science will be needed for making motive systems that get maximal energy for minimal weight. Currently, we can program a robot that can walk. I want to develop a robot that can learn to run.
And to run it will take great advances in Operating Systems. An animal receives and processes a vast amount of information from all its senses at the same time. Layers upon layers of transformations turn this information into action. Future events are predicted in space-time with a high degree of accuracy and an even higher degree of fault tolerance. Some of this is reflected in the way that current robotic systems work, but we have much to learn. We need to develop systems where parallelism moves from being a difficult concept to handle to the primary tool of development.