January 18, 2002

Crossover: WSDL to Gamma-Ray Telescopes

In this month's article I continue the thread of the transfigured programmer who has decided it's time to stop screwing around and actually learn the trade. The last project using WSDL left reality receding in the rear view mirror at a frightening pace. The Java app server, markup language, SOAP, XML, WSDL, DOM vs SAX, wireless, e-commerce, pocket palm-PC, CGI, SQL, HTTP . Everything was moving too fast.

So I hopped off the train.

I quit.

Resigned, from the startup -- poof went all my "equity". A little less than two years after the madness had begun it was suddenly over. All I had left were 500 now-useless business cards.

But I had a plan, of course.

"Hey, I can do some consulting work... Work for myself... yeah. I just might do that... Yeah.. That's what I'm going to do... YEAH."

Being unemployed did not worry me at all... At least it didn't until I actually started looking for work.

Then it worried me a bit. No work for consultants -- economic downturn -- the big boys were having layoffs and weren't renewing contracts with the people they had. No consulting jobs for you, Mr. SmartGuy.com .

Luckily for me I had a very understanding fianc�e (we're married now) at the time. "I can support us while you look for work", she said. She is the BEST, without whom I would be a complete mess. It felt weird to be supported by someone else, like being out of control -- assuming you are in control is one of the biggest mistakes you can make.

While being unemployed is spooky it has its perks as well.

I spent a lot of time reading: technical articles, well known "Art of Programming Vol. 1", newsgroups, mailing lists and some fiction too (read LOTR in preparation for it's release in 12/01). I cannot over emphasize how important reading for pleasure is -- it's absolutely amazing how fun it is to read a good book. Turn off your televisions and read something you enjoy ( BTW never, ever torture yourself by finishing a book you don't enjoy).

Being between jobs also forces you to ponder the troublesome questions, "What do I want to do?" More of the same? Something different? Both? Neither? Move? Stay?"

At the startup I co-founded I was the VP of Engineering, managing a team of about 20 people including development, ops and QA -- and managing not to grieviously maime some of my fellow founders and executives. Effectively managing people is an art requiring vision, organization, patience and flexibility -- I've had good manager/mentors and I've had horrible schedule-centric dolts with no personality. I tried to "do my best".

Managing people reminded me of teaching physics to bio-sci majors while studying particle physics in graduate school -- sure the students wanted to learn, but the current subject was of little interest. At UCSB ( U Can Study Buzzed ) most students would rather not be in an electronics lab on the 4th floor of the Physics building on a Friday afternoon.

As a manager I tried to challenge people, to push them slightly beyond their current comfort zone and in the direction where I needed work done. I found providing people with a method/process as an approach to problem solving is very valuable, especially when I did not know exactly what to -- I relied on the employee's expertise and let them reason it out.

employee: But I don't see how I'm going to balance the load of
spawning user logins across the server farm. How do we
figure out where to spawn the next login session?

me: Well, what are our precious resources consumed by logins?
What can we monitor about the farm?

emp: Memory usage, CPU usage, open file handles, number of processes,
uptime, current sessions.

me: Derive a load function using those variables and minimize it.

emp: uh, uh. (unsure)

me: The machine is "loaded" whenever those variables are high. Low
values mean the machine is not so busy, right?

emp: OK. (nodding)

me: Consider a load function as a linear combination of those system
variables. Query all the machines in the farm and spawn
the new login on the machine with the minimum load
function.

emp: Linear what? I'm just going to add them together with different
scaling factors for each term. (Beaming as comprehension
washes over)

me: That's an even better idea.

emp: It also seems if the load function is too high for every
machine we should post a message saying all machines are
busy.

me: That sounds like an excellent idea to me.

An so it goes... Managing people had its rewarding moments. It also
has it tough times too: firing a problematic employee and laying off a
good employee and friend.

But I digress, this article is about programming. I wanted to get
back to programming, real programming. I wished to be a linux kernel
hacker, but I knew little about it. There was something appealing
about getting closer to the iron, but I could not quite put my finger
on it.

Whenever I wanted to learn a new programming language (like python) it
always took me a project to really get an understanding. I could read
the book, but I didn't know what it was like until I actually did
something -- typing in the examples didn't not count. It takes some
problem, some "itch" to stratch to really get into something.

I knew my programming quest and getting closer to the iron would be
like that too.

__Job_Hunting__

I applied to various jobs and head hunters. The head hunters did an
excellent job of finding me jobs doing what I had done previously --
they said I'd do well in executive engineering positions, which did
not interest me in the slightest. A recurring theme in my life --
being good at something, but not really wanting to do it for a living.

I wanted to code.

I wanted to code for real. I wanted the end result to have some
significance, some kind of purpose. I wanted to care -- I was tired
of not giving a shit.

I went to one job interview for a wireless handheld company that was
making sync-stations in the car. The sync-stations wirelessly
communicated with their backend servers delivering "content" to the
handhelds (that is if you consider stock quotes and sport scores
content -- why do wireless companies always advertise stock quotes? ).

Their "technology" seemed like YAWS to me -- Yet Another Web Server.
I was getting bored with web serveres, connected to app servers,
connected to database servers. After a while they all look the same
with no real innovation happening.

The kiss of death for my employment at said company came when I asked
them my favourite interview question "How do you keep Micro$oft from
eating your lunch?" The answer was "Mumble, mumble, we have partners
... broad support for our platform.... mumble, mumble, partners..."

Yeah right and I'm the Easter Bunny. Be afraid, be very afraid when a
company leads with its "partnerships" as a selling point. It's
double-speak for "These companies agreed to let us tell others they're
our partners if we give them our software for free. We have no real
revenue, but hope to seed the market with our partners." Run -- don't
walk -- away.

The answers you want to hear involve the word "customer", not
"partner". Having customers implies someone, somewhere is willing to
exchange ca$h for something the company has. While that seems simple,
it was an excruciating lesson I will never, ever forget.

__Job_Fair__

I went to a job fair in San Jose and was suprised to see some
companys' booths with signs reading "No Recent Graduates", "Minimum 2
years experience" -- tough times, glad I had experience. Too bad what
I had experience in didn't interest me that much any more. I headed
straight for the hardware companies.

company: Do you have any experience writing device drivers?

me: Sort of. Does writing a linux kernel module count?

company: That depends. What did the module do?

me: Printed "Hello World" in /var/log/syslog using printk(). (grin)

compnay: I don't think so.

After trolling the isles of the job fair for a while I went to the
booth of a company that makes energy effecient microprocessors and
also employs the creator of a well known open source UNIX-like kernel.

company: What kind of experience do you have?

me: I have two degrees in physics and I've been programming for
over 10 years.

company: What can you tell me about pipe lining in microprocessors?

me: Well, an instruction enters the pipeline and starts to be decoded,
as it moves through part of the instruction is fetched from
memory, while other units prepare for branching and and
and.... Something like that.

company: good luck.

The crossover was going to be harder that I thought.

__In_Between_Jobs__

My unemployment was going on three months when an old friend of mine
named Jim called asking what I was up to. Jim is an interesting guy,
a seasoned programmer and a quick thinking smooth talker -- just the
kind of guy to have an interesting business proposition.

Just what I needed.

As usual Jim had lots of ideas and "prospects", but little money.
Would I help him pull together YAWS(see above) for a suite of projects
he had brewing? I had nothing going on either -- "What do I have to
lose?", I thought. At best I earn a little spending money, at the
worst I keep my brain busy while I keep looking for something
permanent.

Plus it was Jim. It was like helping family. I was not expecting
compensation at $100/hr for my time. The point was to stay active,
stay in the race.

Later I realized I cared more about that job I did for Jim than I had
about anything during the past six months. It's weird, but the less
money was involved the more pride I took in the work. I was doing it
because I wanted to.

That and $950,000.00 can buy you a house in Palo Alto, CA. I
obviously could not work for free, but my salary expectations
definitely changed for the betterment of my state of mind.

__Ultimate_Frisbee__

Since my youth I have lived an active lifestyle -- basketball,
running, softball, hiking and ultimate frisbee. For those uninitiated
ultimate frisbee is "sort of like football only with a frisbee",
played on a grass field slightly larger than a soccer field. With
seven people on a team the idea is to catch the "disc" in the end zone
for a point. It has some similarities with basketball regarding
defense and getting open -- it's an incredible cardiovascular workout
do to the size of the playing field and amount of ground you have to
cover.

The fundamental rule in ultimate is "no bodily contact", none. This
is very unlike basketball (no boxing out) and soccer (no slide
tackles). No contact, means no contact. It's an incredibly simple
rule and easy to "call" -- at the "lunch time pickup" level very few
arguments ever occur regarding fouls. Almost none.

This keeps the games very civil for the most part (note: the national
and world tournments are very competitive and the contestants are not
always so nice, I'm talking about noon-time pickup games in the park).
This is in stark constrast to noon-time basketball and soccer games
I've been in where people think the world championship is on the line
and argue all the time.

People play ultimate because they enjoy running and jumping around
outside on a grassy field in the sunshine. The people who play
ultimate tend to be genuinely nice people, interesting people from all
walks of life: musicians, teachers, bankers, engineers, acocuntants,
students, translators, business people, doctors, scientists, mothers
and fathers.

Deals of many natures (business or otherwise) are known to occur on
the fields of Ultimate.

One fortuitous sunny day in May I was tossing some warm-up throws with
Ron, a guy who works for the major university in Palo Alto, California
whose mascot is a shade of red -- at the high energy physics
accelerator center.

Lacing up my cleats I querried, "What are you working on these days?
I studied physics for a while in grad school."

Whizzz went the disc.

"We're doing something new in high energy physics. We're launching a
satelite based gamma-ray observatory. We know about building atom
smashers, but the space environment is something altogether
different." as Ron tossed a high arcing outside-in forehand throw.

Catching the disc I thought to myself, "Why the hell not?". "Hey, are
you guys hiring people?", I asked as I threw the disc with a quick
snap of my wirst.

"I'm not, but the guy two doors down the hall from me is. He's in
charge of the embedded system software that runs on the instrument
when it's in orbit. I don't know too much about it, as my job in the
experiment is dealing with the data once it gets down to earth -- his
job is to capture the data and get it to the ground. If you're
interested I can get your resume in front of him."

When you least expect it history comes up and bites you on the ass. I
thought I was done with Physics for good.

It turned out the position was for a programmer to be part of the
"flight software" team -- software which would fly on aboard the
satelite. It was all about embedded programming: hard real-time,
multi-processor programming on Motorola PowerPCs driving custom
particle detector flight electronics.

Cool, I could get into this. Instead of programming up from the
operating system and to applications, it would be programming down
from the OS through device drivers -- interrupts, semaphores, ring
buffers, spin locks, all manner of techniques I knew very little
about.

I was concerned it was going to be the same old story again -- no
experience, no job. To my suprise after the interview I had a job
offer two weeks later. The fact that I knew computers and some
physics (as opposed to knowing physics and some computers like all the
physicists) was just what they were looking for. That I was not a
embedded guru, but wanted to get into it was fine with them.

It also did not hurt that I was willing to take a 20% pay cut going
from industry to a scientific research lab. It was like when I worked
for my friend Jim -- it's not completely about the money, I want to do
something I care about. I wanted to do something I was proud of.

Besides it sounded totally cool -- it's every boy's dream to have
something to do with a gigantic rocket's firey blast off.

to be continued...

The next installment

"Back to School"

email me and I'll send you next month's installment -- curt@acm.org

Posted by curt at January 18, 2002 11:54 PM | TrackBack
Comments

arf arf
whatcha up to

Posted by: bruce on November 4, 2003 12:15 AM

Funny I have a degree in physics and I 'm a s/w engineer for the past two years and I 've been programming for the last ten. I really miss physics but I also really like programming. I envy anyone who manages to combine the above two and you certainly did. How cool is that?

Posted by: yop on June 17, 2006 04:38 AM
Post a comment