Finger updates from hendersa@icculus.orghttp://icculus.org/icculus-org-now.pnghttp://icculus.org/cgi-bin/finger/finger.pl?user=hendersa&rss=1
.plan update from hendersa, 2008-09-25 11:25:47http://icculus.org/cgi-bin/finger/finger.pl?user=hendersa&date=2008-09-25&time=11-25-47
Thu, 25 Sep 2008 11:25:47 -0400
<pre>
If I knew that updating a .plan file was this entertaining, I would have
started doing semi-regular updates a long time ago. Oh well. My web space
is located at <a href="http://icculus.org/~hendersa">http://icculus.org/~hendersa</a> and I can be reached via e-mail
at <a href="mailto:hendersa@icculus.org">hendersa@icculus.org</a>.
Archived .plan entries can be seen at <a href="http://icculus.org/~hendersa/finger">http://icculus.org/~hendersa/finger</a>.
<b>**********************************************************
* 26 September 2008 - I Fought The Lawn and The Lawn Won *
**********************************************************</b>
I live in a house that is located in your typical suburban neighborhood. It's actually
a pretty nice neighborhood, which makes me wonder how I ended up here in the first
place. Make no mistake about it... my family is most certainly the "trailer trash" of
our street. That's not to say that we have domestic disputes in the driveway or have
cars up on blocks in the middle of the lawn. For this particular neighborhood, it just
means that we paid less than $50000 for our cars and that I don't measure each
individual blade of grass in the yard before trimming it to perfection with a pair of
scissors.
In other words, we place far less of a premium on "appearance" than most of our
neighbors do. Many of our neighbors are pretty nice folks, so it isn't like everyone
around us are all about perception and status. It's just that they prefer to spend
their money on cars and boats while we spend money on things like mortgages and
retirement investments. Why try to convince everyone around you that you are a
millionaire when you can actually be one?
In keeping with the general trailer trash motif, I have long since adopted a laissez-
faire approach to lawn care and maintenance. Our grass gets tall. Like "the housing
association is threatening to fine you" tall. While I find the whole concept of a
housing association to be rather distasteful, it does generally keep people like me
from moving into the neighborhood. I suppose that's a good thing. I certainly
wouldn't want to live next to me. If I did, I can tell you for a fact that I'd be
living next to someone who doesn't take care of his lawn.
At one point, one of the neighbors actually gave us a lawn edger. Yes, he gave it to
us. Was it a none-too-subtle hint to get with the program, or him just being
neighborly to the poor people with the unkept lawn? Perhaps it just unnerved him to
spend all that time measuring his grass and cutting it with scissors, and then looking
across the street to see the Amazon growing. Either way, hey... free lawn edger.
I generally am not so crotchety that I yell at kids to get off my lawn. I figure that
the fact that the kids have to wade through all the tall grass to get through it is
its own punishment. Occasionally, I'll use the hose to shoot at children that wander
across the property line and into my personal jungle. This seems to delight the
children, and water the lawn as well, so it is generally a completely counter-
productive process. Perhaps I should just plant landmines.
Earlier this summer, I was performing lawn triage. I had gotten another nastygram from
the homeowner's association telling me to either mow my lawn or pay a fine and then mow
my lawn. While I hated the concept of mowing an overgrown lawn in 95 degree weather in
95% humidity, I disliked the concept of paying a fine before doing the same thing quite
a bit more. I was attempting to figure out just how little I had to do with the lawn
to get by for now without getting fined.
As I swept the grass back and forth with my foot to get a good look, I noticed that
there was a small mound of fresh dirt in the middle of my yard. A brief inspection
uncovered perhaps a dozen more of these little mounds all over the place. I figured
that it had to be a mole digging up my backyard, so I decided to fix the critter's
little red wagon.
I stuck a water hose down one of the holes and started the water flowing. I had this
image in my mind of it being like Caddyshack with water blasting up out of a dozen
little holes all over the yard. Sadly, it just made the yard soggy. The grass looked
even greener after it watered it directly via the roots, so maybe I just discovered the
secret to maintaining a good yard. Not that the yard needed the help, of course...
all of the rain that we get makes the grass grow about an inch per day.
I briefly pondered adopting a "scortched earth" policy by dumping kerosene down all of
those offending mole holes. Once everything was good and flooded, I could just toss a
match out into the yard and wait for all of the soil launched into the air by the
explosion to fall back to Earth. I've found that fire can solve many problems if it is
applied to the situation correctly.
You know what they say... build a man a fire, and he'll be warm for one day. But
light a man on fire, and he'll be warm the rest of his life.
There is a patch of grass around the mailbox that requires weed whacking. My weed
whacker and I are not friends. I hate the little bastard. It takes well over 100
pulls on the cord to get it started, and the nylon string of the weed whacker breaks
and tangles with astonishing speed. I spend more time futzing around with getting it
working than actually using it for something productive.
In order to reduce the amount of weeds to be whacked, I made a command decision to
tear out the grass around the mailbox and replace it with gravel. This way, I could
avoid maintenance of that area while making an attempt at putting in landscaping.
Win-win.
I began tearing up the sod around the mailbox, which is quite a trick when you have a
well-established lawn. You need to chop up the sod and then get under it to tear it
loose from the soil beneath. The roots of the grass go down rather deep, so you have
to get a very good grip under the piece of sod to rip it up.
I poked my fingers under the sod and started pulling. I noted that my fingers were
itching, which I attributed to the dirt and grass. When the itching turned to burning,
I brushed the dirt off my hands and took a closer look.
Ants. Thousands of ants. There must have been a huge colony of them right around the
mailbox.
I was already all worn out from chopping up sod, and I was in no mood to deal with the
little jerks. I grabbed the garden hose, turned it on full blast, and dragged it over
to the mailbox. Then, we got the party started. I covered about 98% of the hose's
opening with my thumb and turned my simple garden hose into an ant-drilling beam of
doom. I pointed the water stream at the ants and went for broke.
While I was having a bad day, it was a complete birthday party compared to what the
ants had scheduled for them. They were flying everywhere, either drowning from the
water or getting mashed flatter than a pancake from the impact of the stream. I began
dancing around the mailbox while I blasted the ants into oblivion. I yelled "SHOW'S
OVER, SYNERGY!!" while I cackled and delighted at the agony of the ants.
Neighbors were beginning to peek through the blinds of their windows and wonder what
in the hell the neighborhood's resident lunatic was up to. No one came out and said
anything to me, though. I think that they were just relieved that I was actually
taking an interest in my lawn for a change, and they weren't going to do anything that
would interrupt the process.
Eventually, my wife and I gave up on the lawn and just hired a service to do it. I
leave for work and the grass is tall. I come home and it is short. Who does it? How
long does it take? I have no idea. I just know that I don't have to do it.
I still go out and shoot the ants with the garden hose, though. It's a very satisfying
part of the lawn ownership process.</pre>
.plan update from hendersa, 2008-09-03 16:03:49http://icculus.org/cgi-bin/finger/finger.pl?user=hendersa&date=2008-09-03&time=16-03-49
Wed, 3 Sep 2008 16:03:49 -0400
<pre>
If I knew that updating a .plan file was this entertaining, I would have
started doing semi-regular updates a long time ago. Oh well. My web space
is located at <a href="http://icculus.org/~hendersa">http://icculus.org/~hendersa</a> and I can be reached via e-mail
at <a href="mailto:hendersa@icculus.org">hendersa@icculus.org</a>.
Archived .plan entries can be seen at <a href="http://icculus.org/~hendersa/finger">http://icculus.org/~hendersa/finger</a>.
<b>*********************************************************
* 03 September 2008 - The True Cost of Higher Education *
*********************************************************</b>
The other day, I was working on my monthly budget. Pretty simple stuff, really.
Just figure out how much money is coming in, how much each monthly bill takes out,
and then see how much wiggle room is left over. Aside from the standard monthly
bills for things like electricity, I have a few loans in there that will,
theoretically, one day be paid off. These loans aren't so bad, I suppose, because
I enjoy the benefits of what the loans purchased every day. To simplify things,
those loans fall into two major categories: my home and my education.
The home part is a no-brainer. The mortgage and associated costs are just part of
having a home of your own. Anyone with real estate know-how will tell you that you
make most of your money in property when you buy, not when you sell. And we
certainly made out well when we bought. My sales woman was a little old lady that
probably ran out of retirement funds and then decided that she was either going to
have to sell houses or work at Walmart. I vaguely remember verbally berating this
woman until she knocked $10000 off of the cost of our house. Then I chewed on her
some more and got a bunch of extras thrown in free. Some aggressive loan payback
in the first two years of owning the place moves us six years ahead of schedule for
paying off the mortgage. All in all, it has worked out pretty well.
The education is a different story. I had a variety of student loans that I
consolidated a while back. My post-bac engineering studies, masters degree,
computer science doctoral studies, and business doctoral studies all came together
like Voltron to form a big, honkin' monthly payment that was due to Sallie Mae once
per month. Add in my wife's student loans on top of that and we're suddenly giving
the house a run for its money in the loan department.
But, it could have been much, much worse.
Back around sixth grade, I began working to put away money for college. In our
household, it wasn't a matter of IF you were going to college, it was a matter of
WHERE you were going. I started my first job at a small mom and pop tourist trap
on one of the Finger Lakes in upstate New York. I would spend six to eight hours
standing in the parking lot, directing traffic, handing out brochures, answering
questions, and spouting out rehearsed lines about how we had hourly sightseeing
cruises on the lake. Once the hourly cruise went out, I had about 15 to 20 minutes
to haul butt down the main street in town, putting flyers under the windshield
wipers of out-of-town cars and refilling the supply of brochures in the brochure
racks of the various other mom and pop tourist traps around town.
After a summer and a half of that, I started moving on up. No longer was I going
to fry like an egg out in the parking lot! I was relocated into the snack bar to
begin my next phase in tourist services. On the downside, burning yourself on the
grill making burgers and accidentally freezing your hands to the metal
milkshake-maker cups wasn't a whole lot of fun. But it was air-conditioned and
didn't involve running around to tackle innocent tourists that made the mistake of
wandering too close to you and your stack of brochures.
I learned quite a few tricks from my position in the refreshment area. Burgers
cook approximately four times as fast if you squeeze the bejeezus out of them while
they cook. They end up tasting like cardboard after you do that, but eh... who
cares? When you have to make twenty burgers as quickly as possible, you get what
you get. I also learned that hot dogs burst into flame if you put them in the
microwave for about 10 minutes, the flatter ice cubes are a better choice when
betting on the ice cube grill races, and that heating a dime on the grill before
tossing it out of the window where tourists scoop them up never really stops being
funny.
After I did several years in the refreshment stand, I moved on to the Holy Grail...
the dinner cruise boat. Normally, you work out front, then move into the
refreshment stand, work out on the hourly cruise ship as a deck hand, and maybe do
a stint in the gift shop. Once you put in your time doing all of that, you had a
shot at working on the dinner cruise boat. Somehow or another, they needed another
person out on the boat, I had been working there for ages, and the new crew member
had to be a guy to round out the mostly-female crew.
Working on that boat had its ups and downs. It was a pretty routine deal, usually
consisting of three-hour cruises that included a four course meal that was chosen
by the patrons ahead of time. I was, in essence, a waiter. As least, that is how
it first appeared. I certainly acted like one most of the time. I was assigned a
group of tables, took drink orders, brought food, cleared dishes, made sure
everyone was doing OK, and did general waiter-like things.
This was the "normal" part of the job.
Being one of the guys onboard, I also handled some of the other tasks that our boss
deemed too dangerous for the female crew members. This involved hanging off the
side of the boat to open and close windows, wrangling drunks, trying to snag
mooring lines with a hook on the end of a long, long stick, carrying soda premix
tanks up from under the bar, and anything else that happened to come up.
Aside from the normal dinner cruises, we had a few extra cruises that happened
throughout the week. They repeated each week through the summer, so if you dodged
the bullet this week, you'd probably catch the bullet in the next one.
There was a cocktail cruise that was just awful. The biggest problem with it was
that it fell immediately after a dinner cruise. After spending four hours
preparing the boat and serving a crowd of people dinner, we only had 15 minutes to
clean the boat and get ready for the next crowd of people to roll in. After
spending hours working, the last thing you want to do is be energetic and happy to
drunks at one in the morning. And these people misbehaved. We'd typically get a
few types of groups in to these things.
There would be the husband and wife that would just enjoy a few drinks for the
evening. They usually weren't too bad. Some variants on this were the "just
married" couple, a dating couple, the one night stand in the making that had
started in a local bar prior to the cruise, and even the occasional 80-year old
couple that took the cruise decades ago. They usually were pretty quiet, weren't
too demanding, and generally pretty nice.
Then we'd get the "girls night out" crowd. After loading up on strawberry daquiris
and pina coladas, these divorced soccer moms were out for entertainment.
Unfortunately for me, the entertainment they were seeking was usually the male
staff of the boat. More than once I had to run the gauntlet of grasping hands as I
used my drink tray for cover. They'd corner me and ask me questions about whether
I knew of motels in town that rented rooms by the hour. They would spank me as I
passed by, stuff money down their bras and tell me to come get my tip, and hand me
napkins with phone numbers. For anyone who thinks that this sounds like a pretty
sweet deal, let me tell you here and now that these women were not in the least
attractive. They were more like the bags that an attractive women came in a few
decades prior. Gravel-like voices from chain smoking, frizzy permed hair created
through a lifetime of abuse, and missing teeth all around. My ninja senses of
posterior preservation were honed to the highest level as I swung my tiny drink
tray around to protect myself.
One time, I had this really squirrely-looking woman come up to me and grab my
shirt. She got about two inches from my face and said that she couldn't feel her
hands anymore. Then she promptly vomited on me and keeled over. Classy!
Turns out she had taken a bunch of motion-sickness pills and then drank like
prohibition was coming back. We had to radio to the sheriff to send out a boat,
and they were kind enough to send out a medical response craft to pick her up and
take her to shore. I was left to ponder why she had to have drunk so much red wine
when I was wearing a white uniform shirt. Oh well.
I also found out that your tips go down exponentially when compared to the amount
of vomit that you have on you. FYI.
I had to get this one woman down off of a table when she started dancing on it.
She kept trying to flash me by hiking up her skirt, and I was busy trying to avoid
having her crack her noggin' open by falling off the table. I managed to coax her
down, but I didn't get away from her before she gave my crotch a squeeze and
smeared lipstick all over the side of my face in a very uncoordinated attempt at
giving me some lovin'.
One time, this couple ordered a bottle of champagne on the cocktail cruise, which
was a bit odd. Most people that celebrate events with champagne are on the dinner
cruise, not the cocktail one. I was opening the bottle for them at their table,
and I was doing it by the book the way you should when opening any pressurized,
corked bottle: remove the basket on the top of the cork, grasp the cork in your
hand with a towel, and gently work the bottle back and forth until the cork comes
out with a little pop. This particular bottle had other plans, however, and that
cork decided to go for a cruise of its own. The whole towel leapt from my hand as
the cork rocketed out of the bottle, and it sailed out of the window into the lake
with a quiet *plunk*. It was a good thing that I remembered that we're always
supposed to point those things away from people when we open them. I've heard
stories of corks firing into the ceiling above the bar, and even champagne bottles
exploding at the neck. The two shocked diners just stared at the bottle as I set
it down on their table and gave an "eh, what are you going to do?" shrug and left.
The teen cruise was another weekly event that most of the staff hated. I didn't
mind it so much, myself. Instead of wearing slacks and ties and such, we were
allowed to wear khaki shorts and sneakers. About a dozen sheet pizzas were cut up
for the kids, and they got all of the soda that they wanted. I usually stayed
behind the bar, handing out pizza and soda all night. Behind the bar with me was
one of the DJs from the local radio station. While there were a few different DJs
that I worked with, they were all really nice guys that saw doing the teen cruise
as something akin to jury duty. They'd tell me about how much they detested kids,
but would cheerfully handle the song requests with the kids with a very nice
"sorry, no way in hell" response. Well, there was one DJ that didn't even go that
far. I watched him hand out responses like "maybe if you were 5 years older, hon",
"come back when your voice changes", and "go away before I kill you" to any song
requests that came in.
One of the reasons why everyone hated the teen cruise is because there were no
tips. You could usually clean up on tips during most of the other cruises, though.
Tips were split evenly among the staff onboard, so even if a tip went to the
waiter directly, he was obligated to cough it up at the end of the night. The
bartender, captain, first officer, and bow officer all got a cut, meaning that
almost one-third of the staff was soaking up tips, rather than generating them. I
worked as the bow officer a few times (one step above waiter, kind of a combination
bartender and crewman), so this policy wasn't so bad on those particular nights.
But overall, I got royally shafted. I usually cleaned up on tips, bringing in $60
to $100 per cruise, but would only leave with about $30 to $40.
The first officer, which is a combination of a host, bartender, crewman, and backup
captain, would usually assign the wait staff to their tables. He did this with
pure tip maximization in mind. Three balding European guys with gold chains? They
get the pretty blonde waitress. Older couple? They get the oldest guy that we
had. I usually got assigned one of three types of customers: packs of middle-aged
women, French-speaking tourists, and gay men. I used to speak fairly fluent
French, so having French tourists wasn't much of a shock. The middle-aged women
were given to me because I was one of the few wait staff that they would listen to
while wasted. I could also do a decent job of holding them off with my tray-fu
skills. The gay guys just tipped well for probably the same reasons the
middle-aged drunk women would listen to me.
The posterior-protecting drink tray was in full action many, many nights.
First thing in the morning each morning was cleaning duty. It took about two
hours, and it involved cleaning the bar, vacuuming and mopping floors, wiping down
tables, cleaning windows, and getting everything ship-shape for the next round of
cruises. May mercy be upon you if you had to clean up the morning after a cocktail
cruise. I've walked across the dance floor area and nearly lost a shoe to the
stickyness of the floor because of all of the drinks spilled on it the night
before.
I have had the unpleasant experience of cleaning, working three cruises, cleaning
the next day, and then working two more cruises right after that. If nothing will
convince you to go to college, I ask you to ponder this particular experience. It
sure kept me focused.
We were scheduled in shifts of two for cleaning, so you could usually swap tasks
around until everyone was happy. I preferred to mop upstairs and do the bar, but
the windows were usually the dealbreaker. No one wanted to do those because it
involved hanging off the side of the boat while docked. That meant the waves were
slapping the hull, and the ship was swaying back and forth. I lost many a roll of
paper towels to the lake while on window duty. Luckily, I never fell in myself.
One morning, my cleaning partner came in royally hung over. He had been having
some girlfriend trouble the previous night, and had decided to make the most of the
occasion. The waves were a bit rough that morning, so the boat was really swaying
a decent amount. I could see him standing out on the dock staring at the boat with
a look of dread in his eye.
"Look, just vacuum downstairs and then take off," I told him. No need to make the
guy suffer. He nodded his agreement and then started drinking some orange juice
behind the bar to stave off his pounding headache. After chugging down some juice,
he went to work. I could see him stumbling back and forth, and he would
occasionally grab onto a chair to steady himself. Things were not well within, and
I could tell pretty clearly that he wasn't going to make it.
Maybe five minutes later, he looked like a man with a mission. And that mission
was to unload whatever was in his stomach. The bar was too far away, and the floor
where he was standing had carpet. He took about one second to size up the
situation before he hurled himself towards the nearest window. This one was going
to be a photo finish, and it was definitely not going to be a picture to hang up
in the living room. He whipped open the window and let 'er rip.
Out and out it came. Bright orange juice erupted from his body as he hung his head
out of the swaying window and prayed for his own death. I put down the mop for a
second as a heard him empty his stomach into the lake. I poked my head around the
pillar to see what was going on, and gingerly walked over to the window he was
using as a porthole. Fish began to circle his contribution to the ecosystem.
I took this opportunity to look out the window and see the hourly sight-seeing
cruise pull up to the dock. Thirty-some old people were just staring at us as the
never-ending fountain of orange juice continued to flow. These people were perhaps
twenty feet away from us, on the other side of the dock. The captain of the other
boat just looked at us, with mouth agape. I just shrugged and offered a sheepish
smile. Old women were pointing and gasping with horror, while the old guys were
generally chuckling and swapping stories of when they were drunk back in the day.
To his credit, my cleaning partner picked his head up, surveyed the situation, and
offered a raspy "please enjoy the giftshop, and thanks for sailing with us today"
before hanging his head back down. I pulled him back in and walked him over to the
bar, where he swished out his mouth and then left the boat to head home. In
addition to doing all of the cleaning myself, I also had to track down a hose to
wash the layer of used orange juice off of the side of the boat. Swell.
All of that work for all of those years... all that time spent working my way up
the foodchain to where I was making the big money on the dinner cruise boat. I
stashed away every dollar that I could to put towards college expenses. I sighed
as I watched all of that hard-earned money go towards $150 calculus textbooks and
living expenses.
I worked so hard for so long. Now, I sit in an office in the air conditioning. I
work on a computer all day, optimizing algorithms on embedded systems and running
database queries through profilers. After 40 hours of work each week, I head
home and relax. And I look at those student loan payments each month and think
"man, I got off easy!"
Stay in school. Don't be stupid about paying way too much for tuition and such,
but don't let the cost of tuition be a dealbreaker for you, either. Oh, and keep
your drink tray handy for defense.
And please don't drink the night before you have cleaning duty.</pre>
.plan update from hendersa, 2008-07-11 16:32:41http://icculus.org/cgi-bin/finger/finger.pl?user=hendersa&date=2008-07-11&time=16-32-41
Fri, 11 Jul 2008 16:32:41 -0400
<pre>
If I knew that updating a .plan file was this entertaining, I would have
started doing semi-regular updates a long time ago. Oh well. My web space
is located at <a href="http://icculus.org/~hendersa">http://icculus.org/~hendersa</a> and I can be reached via e-mail
at <a href="mailto:hendersa@icculus.org">hendersa@icculus.org</a>.
Archived .plan entries can be seen at <a href="http://icculus.org/~hendersa/finger">http://icculus.org/~hendersa/finger</a>.
<b>***********************************
* 11 July 2008 - Out with the old *
***********************************</b>
A few months back, I changed jobs. My old company was purchased by a competitor,
and I was one of only two people designated as "key personnel" in the acquisition
agreement. That meant that aside from the president of the company and myself,
everyone else "moved on to new opportunities at other companies". It also meant
that I was now on the hook to maintain all of my old company's products. By
myself. Sadly, my new company didn't seem to want to learn about our processes,
procedures, codebases, toolchains, and general technological trickery that had
made us such a strong competitor in the first place.
This was all a very great disappointment to me because our competitor had
something that my old company did not: manpower. They easily outnumbered us ten
to one, yet we were able to take over half of their marketshare. But they
couldn't produce anyone capable of taking over the general maintenance of all of
our software products. If I were them, I would have taken a few of my high-end
engineers and sat them down with the newly acquired assets and, oh, I don't know...
learned the skills needed to actually build them and understand how they all
worked. Maybe learned how to leverage that technology to make them a stronger
company. Used some of our ideas about marketing methods and product
differentiation.
You know. Get their money's worth.
Nope. Not any interest at all. Or not enough interest to put any resources into
it. It's disappointing that maybe 20 man-years of high-end embedded software
development is getting tossed because its new owners lack the skills to understand
how it works. We're talking about getting e-mails with stuff like "I can't find
the Visual Studio project file for XXXXXX, so I can't build it for customer XXXXXX.
The delivery must be done tomorrow. Please advise." Or "I can't find the module
with WinMain(). Please advise." Always with the "Please advise", and also CC'd
to everyone and their dog. I wouldn't be too shocked by this usually, except that
these were all Unixware and Linux applications built using make!
You know that whole concept about having one excellent developer outperforming
a whole bunch of mediocre ones? That's not just some theory. It's a fact. And
when you are outnumbered by mediocre programmers who are managed by mediocre
technical managers, those superstar developers are going to get shot down whenever
they make a suggestion. "Why don't we put the Unix software under subversion or
CVS for source control?" gets shot down with "Because we currently have everything
under VSS, we understand VSS, and we can just check stuff out under Windows and
then copy it to a SMB mount that we then copy to an ext3 partition which is
available to that Linux machine over there via NFS."
Right. Very efficient. I understand this approach if you have support for
multiple OSes within a single codebase. In fact, good for you if you have cross-
platform functionality within your code. But I don't care if you are married to
VSS or not... start thinking of the big picture. That Windows 3.11 crap is hitting
end-of-life. I KNOW this. Their CTO SHOULD know this. They should ACT on this.
They should grow as a company, continually learning and improving their processes.
Also, you might consider the fact that subversion has a Visual Studio plugin, and
SVN also works under Linux! Just a little tip, there.
I have no doubt that ten years ago, this was the right way to do things. But a
funny thing happens when your technical management sits in the same place and does
the same thing with the same technology that whole time... they become entrenched
in their thinking. Procedures don't change because the current ones are too
familiar and convienient. Your competitors start sneaking up on you and snatching
your customers because they adapt and move quicker than you can. You can do a
few different things to combat these competitors, with "buy them" or "talk smack
about them in front of your customers" being real high on this particular
company's list.
So, we were bought. Then we were thrown into the meat grinder over and over. I'd
do deliveries with 40 pieces of software. Twenty of those items were developed
by my old company, so I'd be on the hook for those. The other twenty would be
items developed by the company that bought us. The new company would have a team
similar to the following: two QA, one or two artists, a project manager, three
developers, maybe two or three people doing integration on the hardware, and
and someone pulling double-duty as a translator to make sure we had proper
Chinese, Japanese, French, etc. translations. So you're looking at around ten
people who were working on getting twenty software components out the door.
I would do the other twenty. The project manager would call me every few hours
to ask if it was done yet, and one of the QA would take my software, not be able
to figure out how to execute the launch script that I provided, and then send a
mail out to everyone and their dog saying "The a.out file was not provided with
your upload so I am unable to test. Please advise." When I would try to
explain that the software would not run if it was executed on the fileserver,
rather than the embedded hardware it was supposed to run on ("I get an error
about no framebuffer device being found. I believe your libraries are broken.
Please advise."), I'd get a whole lot of frantic handwaving with an explanation
like "I am not a coder! I can't do all of these 'telnet' and 'cd' commands of
which you speak!"
Some of the stuff that I've seen so far:
"Your software breaks the entire system. 'ls' no longer works. Please advise."
(They copied glibc into the applications directory because they couldn't figure
out how a chroot jail environment works, and all the libraries were freaking out.)
"There is no audio. Please advise."
(The tester had the headset plugged into the wrong piece of hardware.)
"Our guy that speaks some Japanese here feels that your professional native-
speaking Japanese translator did some stuff wrong."
(I'll put my yen on the Japanese guy with the PhD in English literature.)
"Your input mechanisms vary from application to application. This is too complex.
Please advise."
(Our software is not the same thing reskinned over and over and resold as
different products. Does every game on the Wii have exactly the same input methods?
Oh, it doesn't? Better notify Nintendo that they are doing it all wrong, then.)
"Airline X says that game Y needs to be completely redesigned because it is not
intuitive. How quickly can you do this?"
(Seeing as how that title is damn-near identical to the XBLA version, I'm thinking
that the answer is going to be "Never". Sorry Chinese airline... I don't care
what you think. I'm going to trust in Microsoft's ability to make user interfaces.
The project manager should have enough guts to push back on them for something
like this.)
"You don't understand! This needs to be done today!"
(Right. Which is why you told me at 1100 this morning. The world will not end if
someone in the Middle East doesn't get his movie on an airplane. I don't really
care if the Arab world believes that the world is their Burger King where they call
the shots on every detail of everything. They still aren't getting their embedded
version of Bejeweled 2 on such short notice. Your team takes a week to do this and
you want one guy to do it in 4 hours? Right.)
"I don't have gcc on my system. Where do I get it?"
"What is gdb?"
"We don't use profilers here. They aren't needed for what we do."
"I can't debug on the actual hardware because I can't see the output of the printf
calls on the terminal because the framebuffer is up."
"When I do that 'ps' thing you told me about, I see ten or so processes with the
same name. But I only launched it once. Your launch script is broken."
(Holy smokes.)
Aside from all that nonsense, I was frequently a victim of "the bus". The core
embedded system software (kernel, drivers, system libraries, etc.) was maintained
by the hardware manufacturer. The hardware manufacturer had this bad habit of
making some change to the system at the last minute before a delivery in a ham-fisted
attempt to address some problem. This attempt would inevitably both fail to fix their
problem and also break all of our software as well. This made their day, because
they would immediately tell the customer that our stuff was broken and that that alone
would delay the delivery and that it was all our fault. This fun game of "throw the
vendor under the bus" occured on a weekly basis, at least. Someone would threaten
to tell the customer that the software would not be released and that we needed to
fly someone across the country to be onsite to fix the problem. They would do this
to deflect blame and also to force us into diagnosing their problems and sometimes
even providing fixes for them. After all, if their stuff is screwed up, then our
stuff doesn't get shipped, and we don't get paid.
I used to look forward to the challenge of flying out at 0500, getting onsite around
lunch, working all night, finding the fix, and then saying "Geeze you guys are dumb"
in an e-mail that everyone was copied on before flying back home on a red-eye flight.
It was fun roughly twice. After that, it became one of the worst parts of the job.
And I did it dozens of times over the years.
I started flying out there, sticking lots of workarounds in our stuff so that OUR
software worked, and then pointing the finger at the hardware vendor and saying, "No,
see, your stuff is broken. Fix it." Then the delivery would fail because the main
bugs still remained and we still didn't get paid.
After five years, I left the inflight entertainment industry. I'd like to think that
I learned some things about how not to treat people and how not to run a business.
I developed some great software, but all of that will be buried now that no one has
the know-how to maintain it. All of the wiki documentation that I wrote will rust
away and be ignored. The clever techniques that we developed will be ignored by
entrenched technical management that can't understand them and who refuses to learn
about them.
Some of the most fun I had at the job was reverse engineering the hardware. The
hardware manufacturer would be very secretive about their device drivers and such.
So much so that they wouldn't provide the vendors with the information that they
needed to write software with any kind of performance. I wasn't about to get put
off so easily, so I grabbed a screwdriver and got to work. We'd examine the
silkscreening on the chips and then google up chipset documentation to get register
information. We'd check out the PCI bus enumerations and then begin memory mapping
the pages of memory that held the memory-mapped registers. An mprotect() call would
unlock the pages for writing, and then we'd go to town. We were getting the hardware
to do all sorts of things that the hardware vendor did not have support for in their
device drivers. And we'd do it all in userspace! Video settings, audio
configuration, system monitoring... we'd do all of these and more and gain
performance benefits that made the other software on the system look like it was
standing still.
Brutual jobs like that one really take a toll on your health and family life. It
was getting to the point where I really needed to move on. I was letting far too
much of my life pass me by because I was too busy working. I think that everyone
should experience that grind once. Your skills improve dramatically in the right
environment because you are learning quickly in a pressure-cooker environment.
That was my third "big grind" job. Two of those jobs taught me a lot. The third
just gave me ulcers and a lot of frustration. Not surprisingly, that third job
was when I was working for the hardware manufacturer that tosses vendors under the
bus.
I guess there's something to be said for those 9-5 jobs writing SQL queries and
spending all day building MFC interfaces in Visual Studio. They are good jobs to
have AFTER you've learned your skills and want to do well in a stable environment.
As for the stubborn "I only want to do Linux jobs that give me creative freedom"
crowd, well... prepare for the big grind that is coming your way. Your employer
is going to take that desire and use it against you. Please, please feel free to
prove me wrong on this point.
Work hard. Learn from those better than you, learn to ignore those that aren't
that will mislead you, and learn to distinguish the difference between the two.</pre>
.plan update from hendersa, 2007-07-20 12:39:06http://icculus.org/cgi-bin/finger/finger.pl?user=hendersa&date=2007-07-20&time=12-39-06
Fri, 20 Jul 2007 12:39:06 -0400
<pre>
If I knew that updating a .plan file was this entertaining, I would have
started doing semi-regular updates a long time ago. Oh well. My web space
is located at <a href="http://icculus.org/~hendersa">http://icculus.org/~hendersa</a> and I can be reached via e-mail
at <a href="mailto:hendersa@icculus.org">hendersa@icculus.org</a>.
Archived .plan entries can be seen at <a href="http://icculus.org/~hendersa/finger">http://icculus.org/~hendersa/finger</a>.
<b>**************************
* 20 July 2007 - I'm Old *
**************************</b>
I finally turned 30 today.
Not much feels different, though. This is more like being 29++.
Hey! You kids! Get off my lawn!</pre>
.plan update from hendersa, 2005-10-02 13:01:01http://icculus.org/cgi-bin/finger/finger.pl?user=hendersa&date=2005-10-02&time=13-01-01
Sun, 2 Oct 2005 13:01:01 -0400
<pre>
If I knew that updating a .plan file was this entertaining, I would have
started doing semi-regular updates a long time ago. Oh well. My web space
is located at <a href="http://icculus.org/~hendersa">http://icculus.org/~hendersa</a> and I can be reached via e-mail
at <a href="mailto:hendersa@icculus.org">hendersa@icculus.org</a>.
Archived .plan entries can be seen at <a href="http://icculus.org/~hendersa/finger">http://icculus.org/~hendersa/finger</a>.
<b>**********************************************
* 01 October 2005 - Fly those friendly skies *
**********************************************</b>
It's been about a year since I updated this thing, so I guess just about any
news is better than letting it sit quiet any longer. There have been a lot of
major things going on, but there's one thing in particular I wanted to mention.
Partly because it's been keeping me busy, but partly because this is the right
crowd to talk with about this.
The company I work for, <a href="http://www.eflyte.com">eFlyte, Inc.</a>, is in the inflight entertainment
industry. I've been working with the company for a bit over two years now as
its product development manager. A quick explanation of what we do is "we put
games on airplanes". A slightly longer explanation of what we do is that we
develop and port software to embedded Linux-based platforms for use in the
in-seat entertainment systems of airlines all over the world. It's just about
the perfect spot for someone who wants to work with embedded systems, Linux,
porting games, R&D, cutting-edge hardware, trailing-edge hardware, and
squeezing just about every single cycle out of software.
A little while ago, the Jacksonville Financial News and Daily Record stopped by
eFlyte's Jacksonville office to take a look at what we do. You can check out
the article they wrote on us <a href="http://www.jaxdailyrecord.com/showstory.php?Story_id=43446">here</a>, in case you want to see their perspective on
what it is we do. The poor reporter seemed rather overwhelmed when she walked
into our office and was shown all sorts of example software running on the
actual embedded systems within our test lab. Still, she got to play <a href="http://www.popcap.com/launchpage.php?theGame=bejeweled&src=gamestack">Bejeweled</a>
for a little bit, so it had to be some of the more entertaining research she had
to do for an article.
eFlyte is growing. We've been steadily expanding our staff for some time now,
but we've got big stuff cooking. So, I'm always on the lookout for new
engineers that have the know-how and interest to work with us and help us get
to where we want to be. I've got Win32 source code here for game titles from
PopCap, Mumbo Jumbo, GameHouse, and a handful of other publishers and
developers. These games need to be ported to Linux and put on some airplanes.
I'm not talking about deals being worked and "maybe we'll have source code"...
I'm talking about source code sitting right here, looking for a better life on
a Linux system. The red tape is gone. We have license to port these guys.
We just need to port them!
So, if you'd like to work with source code from publishers and developers like
PopCap, Mumbo Jumbo, and GarageGames, and work with hardware manufacturers like
Panasonic, National Semiconductor, and nVidia, you need to send me your resume.
Right now. Send it to my icculus.org e-mail.
Professional game porting isn't a job for the weak of heart, though. If STL
makes you cringe and gdb is a mystery to you, you'll want to buff up your skills
a bit before you even consider trying a game development position. But, if
you've done some open source development for kicks and can easily dig through
newsgroups and google for answers to weird problems, you're on the right track.
Aside from our games software team, we also have teams working in the following
areas:
- Communications: Our Inflight Communicator software allows SMS and e-mail
messages to be sent from the aircraft to the ground and back. Our primary area
of expertise in this area is researching and inmplementing input mechanisms for
non-Latin character sets.
- Technical Services: We act as advisors and contractors to other organizations
seeking to place their products in the inflight market. We also serve as
advisors on software issues to the manufacturers of inflight entertainment
hardware. Custom application development for airlines also falls under this
area.
- Inflight Gambling: eFlyte provides software for inflight low-stakes gambling
for airlines whose routes fall within legal jurisdictions where gambling is
allowed. This is poised to be our fastest-growing segment of the company, and
the interest from airlines all over the world in our gambling product has been
nothing short of phenomenal.
eFlyte has been around since 1999, has established business relationships with
nearly three dozen airlines all over the world, is a privately-held company, and
has never been funded by venture capital. Its expenses as an ongoing concern
are paid for by the cash flows from operations. Our software is licensed to the
airlines in such a way that we receive recurring monthly cashflows for the
software that is installed. This is a bit different than the traditional
shrink-wrapped software model that involves selling a software title once and
then providing support to the customer from that point onward at the
developer's expense.
Think you'd be interested in working with us? Want to port some games? Send
me an e-mail at my icculus.org mail address and I'll fill you in on the details
and answer what questions I can. All positions are currently at our office in
Jacksonville, Florida, and we can sponsor H1B visas. We offer very competitive
salaries in an area of the country that has a very low cost of living, medical
benefits, a 401k plan, flexible work hours, and (if you are the travelling type)
opportunities to travel to both domestic and international destinations to work
with other eFlyte office locations, partners, and customers.
So send those resumes. You know you want to.</pre>