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