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.

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.

Book Ends

The last two nonfiction books I’ve read are Black Hawk Down and  In a Time of War. The two nonfiction books have both dealt with wars that have happened since I became an adult.  In a Time of War chronicles some of the members of West Point’s class of 2002 as they progressed through the Wars in Afghanistan and Iraq, mostly Iraq.  Black Hawk Down retells the events of the Battle of Mogadishu in October of 1993.  Both these books strike close to home for me.  They present a set of delimiters around a pattern within the  U.S. military involvement overseas.

In October of 1993, I was in my final month of the Infantry Officer’s Basic Course at Fort Benning Georgia.  Within the year I would  arrive at my first Regular Army unit, the 25th Infantry Division.  The Ranger platoon leaders in Somalia were class of 1990 grads, the seniors when I was a Plebe.  The soldiers to my left and right at Rangers school, the ones from Ranger regiment, would go and serve with the men that fought in Somalia.

Mike Palaza, a 1991 West Point grad and fellow Alumnus of Stoughton High School stated that he wasn’t going to marry his girlfriend if he was headed to Somalia:  he was headed to the 10th Mountain and knew that he’d be deployed.  He was being melodramatic when he said that he wasn’t going to get married before going to Somalia. “I won’t make her a Widow.”  But they got married and he deployed there anyway.  He is still alive and well.

SSG Franklin was my senior squad leader when I got to my Platoon in Hawaii.  He had a Combat Infantryman’s Badge from his deployment to Somalia.  He claimed he hadn’t really earned it, just had done a lot of Cordon and Searches in houses looking for weapons.  When I went to Haiti, I had a team leader in my platoon who said comparable things.  It seems that for most of the deployment in Somalia, the US forces were considered a neutral force, just there to help distribute food.  It wasn’t until we decided that Aidid was the bad guy that things went south. It is hard to hear these two points of view and then read the chaos and hell that was Mogadishu during the events told Black Hawk Down.

If you look at the chain of events from the time I graduated High School up to the present situation in Iraq and Afghanistan, there is a continuing narrative.  With the fall of the Soviet Union, we stopped paying attention to the Mujhadeen in Afghanistan, and we lost interest in the Iran/Iraq war and it’s effect on those countries and the region.  Saddam Hussein didn’t get the message that we wouldn’t tolerate an invasion of Kuwait.  By responding, we put American troops on the Arabian Peninsula. The mujahideen fighters, trained and equipped by the United States, now turned their enmity against us.  We were already questionable allies due to our support of Israel, so it wasn’t too hard to make us the bad guys. Al Qaeda has claimed responsibility for inciting much of the violence in Mogadishu in 1993.  It was these actions that lead the US to drive Osama bin Laden out of the Sudan (a short jaunt away across Ethiopia) where he was then building the terrorist network that later attacked American 2001.  He claimed that they learned the US could be chased from a country by making it take casualties.

What was clear from reading the book and from what little I’ve studied is that we misread the situation.  Aidid was willing to let the United Nations help, but he was the real power in Mogadishu.  In the news they called him a “Warlord.”  He was the single most powerful leader to come out of the Somalia Civili war.  Not that he was undisputed, there were many such powerful men, but he had a larger power base than the others.  When the US decided that he was not to be allowed to participate in the future government, they turned a potential ally into an enemy.  Yes, he was a vicious man, but the country was known for brutality, he was just more successful.  Yes, he killed UN peace keepers.  But the story there is fairly murky, at least from what little I’ve seen. The facts of Somalia are such that no one with any degree of power got there without blood on their hands.

What is the difference between a warlord, a tribal leader, a sheik, a community leader, a mayor, a governor?  The power to rule must be granted at least in a portion by the people who are ruled, if only because they think the alternative is worse.  Here in the United States, we were unusual when we said that the military leadership you be subservient to the civilian leadership.  This new fangled idea is not the norm in much of the world:  it is still catching on.  I acknowledge the difference between a person who has seized power and one who has been selected by his community.  We in the United States often forget that places without traditions of elections have more primitive methods for selecting leaders that  nevertheless still have the support of the community.  We may not like these men:  we certainly decided that we didn’t like Aidid.

In a time of War shows a later next stage in the evolution of America’s foreign policy through force.  The West Point class of 2002 deploys to war zones in Iraq and Afghanistan and  suffers casualties. Nine years after I graduated from West Point, a year after I had removed myself from the roles of the Army Reserves, these kids were graduated into a very different Army than I had experienced.  But things don’t change much at West Point.: Their experiences had been similar enough to mine.  The soldiers upon which  the book focused were from company D-1, the Company next to mine for my final two years at the Academy.

I often wonder what would have happened if President Bush senior hadn’t listened to the advisors who told him to stop before heading the troops up to Baghdad.  If what happened in Iraq since 2003 is any indication, we would have certainly been involved in some serious fighting come 1993.  I suspect that my generation of classmates would have been placed in much the same situation as the class of 2002 and later classes.

I cried a couple of times during the book.  Both times it was during the notification scenes.  I can’t imagine a worse thing to do to someone you love than to make them suffer through the fear and dread of deployment to a war zone, except to die on them.

The war in Iraq was going poorly when the book was published.  Since that time, we have lived through “The Surge”, “The Anbar Awakening” and a change in the outlook for Iraq in the long term.  A big part of that change is that the American strategy changed.  Gen Petraus, the Armies chief counter-insurgency expert, gets a lot of credit for his role in getting Army commanders to understand the real situation on the ground, and to work with the people in their locales.  With his current position in CENTCOM, he will be able to affect the operations in the Iraq and Afghanistan, as well as monitor the evolving relationship between Iran and the United States.  I am cautiously optimistic that we will carve a decent situation out of these conflicts.

Returning to thinking about Somalia in the light of the current conflicts really drove home how lucky I have been personally, how much some of our soldiers have given, and how complex American foriegn policy really is.

Computers and Me

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.

Supe’s Briefing

During my reunion this weekend, we sat in a briefing by the Superintendent of the Military Academy, Lieutenant General Franklin L. Hagenbeck.  I liked his style, and I got the feeling that he was a good leadership presence for the Cadets.  He was able to pull of the “Vaguely Self Deprecating” air of someone in a position of authority that has confidence in his ability.  It looks like the military training is making excellent strides toward focusing the Cadets on both the likely deployment scenarios of Iraq and Afghanistan as well as being ready to act as diplomats anywhere on the world stage.

He did answer one question with a disturbing answer.  A grad asked him what was being done to protect the women of the corps from sexual assault and harassment.  The answer he gave detailed the story of four cadets, Two men from the First (Firsties, or Seniors) Class and two women from the Fourth (Plebes, or Freshman) Class.  According to West Point regulations, Plebes and upperclassmen cannot date.  The Seniors were expelled and the Plebes were severely castigated.  The following year, the women related there stories to the incoming Plebes, and he stated something to the effect that “Those plebes said it was the most important thing they heard.”

West Point has long had a zero tolerance policy for Sexual misconduct.  A friend of mine got caught having sex with her boyfriend during our Plebe year, and they both got expelled.  Contrast this with the expected behavior at any non-military school in the country, and you will see a severe divide in expectations.  College is a time of growth and learning.  A time when many people seek out new experiences.  People that are so inclined explore sexually.  There are a lot of problems from sex:  Unwanted Pregnancies, STDs and emotional traumas, and those are only counting the problems from consensual sex.  But these same problems exist throughout adult life, and the expectation is that, at 18, you are old enough to start making your own serious choices, and living with the consequences.  West Point, in contrast, propels the Victorian notion that Cadets should not have sex.  Doing so is wrong and will be punished.  I found that approach wrong then, and I feel it is wrong now.  But my problem with the Supe’s answer goes beyond disagreeing with a policy decision.

The question was not about consensual sex.  The question was about rape and other forms of sexual assault.  I wasn’t there when the two women spoke, and did not hear the details of the talk, but my understanding was that the trauma that those two women described in their talks to the Plebe women was inflicted by the Academies enforcement of the rules, not the relationships.  These women were willing participants in these relationships, not raped.  That the Superintendent would even confuse these two issues shows a fundamental misunderstanding of the problem.

Perhaps the Supe thought that the women were taken advantage of by their superiors,  Command rape as it is sometimes called.  If so, he did not make it clear.  But if so, making them stand in front of a group of women and describe it is probably not the right way to get these women counseling.  The  Plebe women were not the logical recipient:  if it is rape, then they are the potential victims.  The right group to focus on is the upperclassMEN who might be so inclined to take advantage of their subordinates.   But I suspect that these women entered into improper relations with men outside of their chain-of-command, most likely through an activity or club.  This conjecture on my part is based on numerous similar relationships I’ve heard of during my time as a cadet.

The right answer would have addressed actions taken to prevent Cadets from committing real sex crimes, not just violating Academy policy.  I am sure the the School does these things:  I remember much education when I was there, and locks on the doors for the Women’s rooms.  There are cameras in the hallways and patrols around base by Military Police, and a slew of other things.  I am sure that West Point is doing its damnedest to protect our Women Cadets.  I just wish the Supe had told us about those things, and not answered the wrong question.  Sexual misconduct as defined by the United States Corps of Cadets is not the same thing as sexual assault.

Incompleteness

Godel, Escher, Bach is one of those books I had heard about forever.  I am not sure if I would have had the tenacity to complete it if I hadn’t already had a grounding in Computer Science.  Having had courses in Computer Theory made the book go from a treatise on computer science, to a narrative that tied together many ideas into a more cohesive whole.

Continue reading

Initializing Dependencies in c++

Since the approach I described for initializing dependencies in C++ does not work in Visual Studio, and probably other C++ implementations as well, Shankar Unni suggested a more portable approach.  Granted it uses a Macro, but I think this one is justified.

#define DEPENDENCY_INITIALIZATION \
static bool initialization_function(); \
static bool is_module_initialized = initialization_function();\
static bool initialization_function()

This is composed of:

  1. A forward declaration of the initialization function.
  2. A static variable that will be initialized at load time (prior to calling main)
  3. The start of the definition for the initialization function.

This is mean to be called like this:

DEPENDENCY_INITIALIZATION
{
supply<A,1>::configure(destroy);
supply<B,1>::configure();
return true;
}

Where A and B are the classes to be registered for later initialization.

Not one cent

I’m as worried about an economic meltdown as the next person, but I don’t trust this administration to do things right.  I don’t think Congress should give the treasury anything just yet.  Instead, let the Treasury department submit a lits of deals it wants to make, and a line item for each company.  This can go through Congress and get signed by the President as law.  No more blank checks.

Is this too much oversight for ya?  Sorry, but if we are going to start spending taxpayer dollars on this, we the tax payers need to be informed.  I trust congress to do this a hell of a lot better than I trust  Our Executive Branch.  Not more Patriot Acts.  No more Blank Checks.  No more “Trust us.”

This country is a Republic, let’s keep it that way.  I’m from Brookline Mass.  My People in Congress are John Kerry, Ted Kennedy, and Barney Frank.  I feel OK in letting them oversee where my tax dollars are going to be spent.  The Treasury department is headed by an appointed official.  The executive branch doesn’t have power over the purse strings, the legislative branch does.  Let’s keep it that way.

I really didn’t want this to become a political blog.

[Edit]

OK, the oversight has made it into the bill.  I feel better.  Barney Farnk and John Kerry are both behind it, so that is a plus.

National Security

For years, our distance from other countries provided us with security.  We were an Island Nation.  Once our manifest destiny was completed, there was no significant threat left in our hemisphere, and we were too far from the nations of the old world for them to threaten us.  Even the attack on Pearl Harbor was far away:  Hawaii was not a state, just an island protectorate in the middle of the Pacific.  Since WWII, we have grown more and more used to the concept of global threat.  We were in a staring contest with Russia, half a world away.  The threat of ballistic missiles carrying nuclear warheads made the end of the world seem plausible, but it was abstract.  Mutually Assured Destruction was the word of the day:  If they try to take us out, they will take themselves out, and they are not going to do that.  We fought proxy wars and ran tank maneuvers at NTC and in Germany.

Continue reading

Ranger School (1993-4)

When discussing the Mobile Infantry Training in Starship Troopers, Robert Heinlein states that many people thought the training was made to difficult. He states that is wrong: it was intentionally made as hard as possible. This is the philosophy behind US Army Ranger School.

Ranger School will not make you a super soldier. You won’t learn technical skills that will directly translate to perform ultra-high importance missions and so on. The Patrols are carefully crafted situational training exercises that allow the Ranger Instructors to grade students on a small number of tasks. Simple familiarization training is given on knife fighting and hand to hand combat, rock climbing, and other tasks that have some tangential bearing on the realities of being a soldier. Ranger School does not teach you how to take care of soldiers. What Ranger school is designed to teach is how to continue to function once you have pushed your body past its natural limits.

Ranger School was designed around the warfare style of Southeast Asia and the Pacific. But every war is different, and technology keeps updating how we fight. As Cadets we were constantly reminded that the plan has to change according to the mission, the enemy, the time available, and the terrain. You can’t train for everything. But what you can do is train for things that will be there in all military situations: stress and sleep deprivation. Food deprivation is less likely, but has happened too many times in the past to be ignored.

I went to Ranger school in December of 1993. I had successfully passed the first phase at Fort Benning. I went through Desert Phase twice. After the second time around, I was kicked out. What happened? This was a school for which I had volunteered, which I knew was essential to the career I had chosen as an Infantry Officer. I picked Infantry when there were many other choices available, and I had a high enough class standing to get my choice of branches. Although I didn’t have the highest military grade at West Point, I did OK. I was in good enough physical shape that I had not problems with the first week: a screening out process that is designed to make you suffer, and weed out the week. I passed all of the basic skills tests. I had spent the previous four months in the Infantry Officer Basic Course at Fort Benning, so I knew the basics of the Infantry craft. For a long time I thought I had been beaten physically. By the end, I was falling asleep on my feet, felt like I had done long term damage to my knees, and was general beat up. What I have come to realize with many years of reflection was that the problem was mental, not physical.

Ranger School is graded on patrols. The patrols are pass/fail events. In the first phase, the patrols are planned as if they were Platoon Patrols, but executed at the squad level. This is to give more people a chance to participate in the planning process, and to get evaluated as the patrol leader. While many of the junior enlisted soldiers would get patrols as team leaders, as a new Lieutenant, I got a squad leader position to plan for a reconnaissance patrol.

I got a “No-go” on my patrol at Fort Benning. I had to plan a reconnaissance, and I did not give a detailed enough plan for actions on the objective. At Fort Benning, you did not need to have more than 50% to go on to the desert phase. Each time through the Desert, I got three patrols: one planning as a platoon leader, one squad leader in the patrol base patrol, and one other. Each time I passed one out of three. A 25% pass rate was not enough to go on to the next phase. Failing two many patrols twice through a single phase was sufficient grounds to drop me from the course.  Something happened after that first time through the desert. I got convinced that I was not going to make it through. I went into Ranger School scared of Ranger School. Dogged persistence got me through West Point, but Ranger School required (at least for me) something more: preparation.  I really feel that if I had drilled the Ranger School style OPORD I would have passed the planning patrols, and I got mostly planning patrols.

When I was a freshman at the Academy, I was discussing English class with my class mate Anne Marie Johnson and my parents. Anne Marie admonished me to “give them what they want.” Meaning to try and do things the way the instructors had designated. I’ve always had a problem with this. I really want to try and do things my own way, to think a difficult problem through. I am a bit a of a contrarian, a fact that lead to me going to West Point in the first place. What was true in Plebe English was even more true in Rangers School. Patrol planning at Ranger School is some of the most detailed planning I had even gone through. We were expected to brief every aspect of a patrol, including things like crossing linear danger areas and battle drills. Most of the guys out of IOBC had done these to death, so we thought it silly. Why put things in to your operations order that should be part of the Standard Operating Procedures (SOP)? The level of planning required for Actions on the Objective was even more detailed. You were expected to take roughly an hour to brief actions on the objective. The more detailed the plan, the better. This directly contradicts what we had been taught throughout West Point and IOBC. We had been told time and again to “provide guidance and trust your junior leaders” as well as “no plan survives contact with the enemy.”

One patrol sticks out most clearly.  In the desert, we had to perform a raid of a refueling site.  There was a hill that would be perfect for a support-by-fire (SBF) position.  Too perfect.  Instead of putting the SBF position there and coming up over the hill the way we were taught, I had us coming through the front door.  IT made sense to me:  if the position was that obvious, the enemy will know that too and will expect us to use it.  The front door would not require us climbing up and over the berm.   But it was a training mission, and designed to walk us through the paces, and I couldn’t accept that.  Yes, the concertina at the gate was light, but that was a resource constraint on the Ranger School, not what you would expect in the  “Real World.”

Another patrol, I was squad leader for patrol base operations.  We had no sleep the night before, and I put my squad into a rest plan out of the priorities of work.  I knew that without sleep, we would not be able to function that night and the patrol would be a disaster.  But it was up to me to rearrange the priorities of work.  The guy that had the patrol that evening had a much easier time thanks to me, but I go a no-go.

I think I understand now. The planning process was canned, yes, but it was also a process to be learned while under stress, to be recreated under stress. You may end up with a brand new unit, composed of people from numerous backgrounds. You may take over your platoon in the field, with no time to learn their SOP. They may not have an SOP for a particular situation. At least you have provided a starting point, and you have done it while you are in a relatively secure location, while no-one is shooting at you. You have thought through the situation and provided the best course of action you could. It gives you context to understand later situations, when the bullets are launched and the wire is breached. It is not a substitute for the ability to improvise, it is an aid to it. Even if it is canned. Part of the process, I am sure, was designed to take so long as to make sure you had to use your time wisely. Much of Ranger school was designed to make sure you stayed up all night.  I’ve often said that the primary skill necessary for success as an Army officer is the ability to function with little or no sleep.  The funny thing is that at WP, we had mandatory lights out at midnight, and they couldn’t come on until 5:20.  I always have believed in “well rested=well tested.” Now I  realize that this is for ideal circumstances. Ranger School was for the worst of circumstances.

When I joined the wrestling team in ninth grade, something amazing happened. I found a sport that I loved, that I had the potential to master. I worked with my strengths and minimized my weaknesses. I had never considered myself an athlete before. From that point on I considered myself a wrestler. A similar transition happened when I went to West Point. Most people that knew me thought it was a strange match. “How can YOU go to West Point?” But somehow I made it through. By the time graduation rolled around, my identity as a Cadet, as a member of the Army, and as a future officer fit me well. I had hit some rocky points, but many of my classmates dealt with worse.  This transition did not happen when I became an Infantry Officer. I think under other circumstances it could have. I don’t blame the Army, but I also don’t blame the 22 year old me for not seeing things that the 37 year old me can see with the benefit of hindsight. Not making it through Ranger School sealed the deal in some ways, as it proved to my young ego that I had made a wrong choice in going Infantry. I see now that was not necessarily the case.  I had some growing up to do.  I needed to commit to the Infantry to a level that I was not then mentally prepared to do.