Jump to content

  • Log In with Google      Sign In   
  • Create Account

The Bag of Holding

Day... Something.

Posted by , 06 February 2006 - - - - - - · 329 views

I was awakened early (read: before noon) this morning, about 9:30ish, and amazingly enough I've been running strong since then, with just a short hour nap sometime around 8PM. I'm sure my mother would kill me for doing this (she was always big on the early-to-bed, early-to-rise thing) but I definitely haven't felt more energetic, alert, or motivated in years. So far I'm giving this free-running sleep thing five out of five stars.

I sent in a proposal today for some new framework and rapid-development library code for missions in the X3 addon project. The ideas I've had are nothing new, just formalized so we as a team can finally get down to actually implementing them and benefiting.

Well, as it turns out, someone else has already been working on this for the past week... oops! I'm seriously going to have to find a solution to the out-of-office communication gap that I have right now. I basically blew two days of thought, planning, and prior-code analysis to build that document, and I was about to start implementing new code when I finally heard.

On the plus side, I'm starting to talk with the team lead and our resident web server guru/admin about implementing some new project coordination tools on our development intranet. I'm definitely going to be putting pressure on that now, since my first week of work got borked by precisely the lack of coordination that we need these tools to fix [rolleyes]

Currently it looks like my real actual project will be either in some code refactoring in preparation for Big Future Stuff (can't talk about it, use your imagination [wink]), developing a new tutorial system for the game (those who have followed my rampages in the Game Design forum probably know where I'm going to take that one), or both. Those are things I've also expressed a lot of interest in, and frankly they're more fun than building library routines anyways, so no big loss [smile]

For something not related to game development, I've been stockpiling books lately. One thing that I really hated about the Evil Day Job was being too drained to read (usually, if I tried to read, I'd fall asleep). Reading is one of my favorite activities, so I'm really happy to have a life arrangement that lets me get back to reading a lot.

I'm about 3/4 of the way through Gödel Escher Bach, which has been utterly fascinating thus far, even if I find some of Hofstaetder's beliefs a little questionable. I'm a sucker for mind-broadening literature, even if I think the author is a complete lunatic [grin]

Fiction-wise, I found a nice hardcover copy of Dune for $7 the other day. I'd intended to read Dune for quite a while, and a cheap hardcover book is just irresistable to me, so I bought it (I also had some plane flights in my future, which are always best spent with a good book.) Anyways, I just finished it the other night, and basically went out and ordered the rest of the canonical Frank Herbert Dune books (all used, and paperback, since I'm a cheap bastidge). All told I managed to get the entire set of 6 for about $22 out of pocket.

I also just picked up a copy of Zen and the Art of Motorcycle Maintenance on Sneftel's recommendation. I've heard about it previously and it sounds like the kind of stuff I'd enjoy.

It's all rather slightly expensive after a while, and I have a dangerous habit of getting a lot of books and reading them all 80% and never finishing, so this is a bit of a risk; but in any case it's great to be able to do some Real Life again.

Anyways... I'd best cut this off before I end up making one of my usual epic monolithic blobs of a post that nobody has the stamina to read [grin]

(Ooops, too late.)

Day Three

Posted by , 03 February 2006 - - - - - - · 154 views

Well, day three was supposed to be Friday. Friday morning I woke up sometime around 10 AM feeling utterly horrid, and promptly went back to sleep. I seem to be fighting some typical winter-type bug; nothing serious, but definitely a pain. It's amazing how a low fever and a little achiness can get in the way of sitting in a chair and typing all day.

Anyways, I mostly slept and read today. I've done a little brief thinking about developing a more robust mission framework for the next X project, but mostly I haven't had the energy.

The sleep thing seems to go nicely with being sick, though; I've been up since about 12:15 AM. I might taper off and get some more rest here soon, but so far I feel a lot more energized and alert than I used to on a fixed schedule - and that on top of fighting a mild illness. Definitely hopeful for the future.

Crystal Lite sure starts tasting foul when it's all you've had to drink for the past 20 hours.

Day Two

Posted by , 02 February 2006 - - - - - - · 272 views

So Day Two is coming and going. I slept in until about 1PM today, which frankly I don't really care about, because I know I'll work late to compensate for it tonight - and in my new work environment, nobody else minds, either.

It's a bit hard to stay disciplined and actually work, when nobody is holding the Axe of Firing above your head all day, but so far so good. I haven't yet succumbed to the temptation to play games at random times, but it's starting to occur to me that why the heck not? so maybe tomorrow I'll do some of that. For the first time in ages I've felt motivated to clean and organize my flat, which is utterly amazing, especially since I've felt that way for three days straight now. I think this schedule freedom thing is going to be very, very good for me.

I've gotten my build environment fully up to date and can now build working debug packages of X3 on demand, which means I'm in prime position to start code work. My big job of the day was to go through my backlog of personal emails and bug reports and put together a tasklist. I'm waiting on word from my lead on what my priorities will be for the near future. I'm hoping to get to work on improving our interal task coordination and bug tracking processes; I'd like to build a whole new system (the ones we have work fine, but are suboptimal).

Anyways, I'm waiting on word back on what I should be focusing on. In the meantime, I'm collecting some thoughts and concepts on all the various stuff that I might get assigned to, just so I'm prepared to dive right in as soon as I get my priority chart back. This month is something of a probationary period for me (my final payscale and job title will be determined by my performance this month) so I'm really itching for a chance to prove myself properly. Nobody has any doubt that I can get the job done; really we're just experimenting to find out what I'll be able to do with no other demands on my time (i.e. without an Evil Day Job). I honestly have no idea how I'll end up, so this is kind of an exploratory procedure for everyone concerned.

Getting back to the subject of sleep, I've decided I'm definitely going to say the hell with rigid sleep cycles. I'd done some looking at biphasic and even polyphasic sleep schedules, but it seems to me that the medical realities behind such schedules really aren't well understood enough yet. For instance, there seems to be some debate as to whether or not polyphasic cycles are actually healthy/possible. I've got total freedom to try anything I want, but frankly polyphase cycles seem to be even more unforgiving than a traditional monophase sleep-when-it's-dark schedule. Even worse, there seems to be doubt as to whether or not polyphase schedules allow you to recover from physical stress (i.e. hard exercise) properly. Since I'm wanting to give my Parkour interests a strong shove with this new schedule freedom I have, it would be pretty stupid to adopt a sleep cycle that doesn't let my body recover properly.

However, by direct contrast, it seems like everyone has good things to say about free-running sleep phases. I'm a firm believer that any medical "science" that tries to make strict generalizations about the good of every single human being is most likely full of crap; everyone is different. As a corollary, everyone is going to react to differing sleep patterns and cycles differently. The idea of free-running sleep is that you never actually force yourself to wake up or go to sleep; you sleep when tired, and wake when rested. Seems pretty darn good to me.

In fact, the only objection I've seen to adopting free-running sleep patterns (so far) is that it's virtually impossible to reconcile the habit with societal patterns. That's perfectly fine with me, frankly; I have no obligation to be in some building between some arbitrary hours of the day; I have no particular aversion to being asleep or awake at times people find "weird"; and in the modern world of 24-hour supermarkets, I don't have to worry about dying of hunger. Seems like this is definitely the way to go.

As a matter of fact, I've basically decided to go for it. I slept in a lot this morning, so I'll probably be up until 3 or 4 AM working/goofing off anyways. Seems like a fine time to start adopting a free-running cycle. I'm already very well adapted to living on weird sleep cycles (as evidenced by my previous journal blatherings, and the fact that I lived through the Crunch Mode period) so I'm thinking that I'll probably be fine. Every now and then I'll probably have to stretch my sleep schedule to fit someone else's convenience (meetings come to mind) but that's not a problem at all. Worst case I can just go back to sleep afterwards [grin]

Really the only genuine problem I can see is that it may be hard to resist the temptation to oversleep a lot. I'll have to develop some strict discipline in getting out of bed as soon as I wake up feeling refreshed, because I currently have a bad habit of just snoozing for another 3-4 hours and eventually getting up feeling like crap. I don't see that as a particularly insurmountable obstacle, though; just a little challenge.

My hope is that, over time, a free-running cycle will tend to keep me awake as much as needed. The idea is that I'll only be sleeping when I genuinely need rest, so I should always be near-optimum in my sleepness/awakeness ratio. I really can't see any physical health risks, either, since the whole idea is to be attentive to my body's needs. There might be some psychological stresses involved, but my mind's so screwed up, there's no way that'll cause any permanent issues [wink]

So, as usual, I came here with about three sentences worth of stuff to say, and ended up spouting for far too long. Maybe, with all this extra time, I'll figure out the magical art of concise communication.

Or maybe I'll just keep reading Dune.

Why 9-to-5 Jobs Suck

Posted by , 01 February 2006 - - - - - - · 277 views

I made a mention in a comment on my last entry that I've been thinking about doing a nice rant on why typical, American Dream, 9-to-5 jobs are the evil spawn of Satan. Actually, I'm really only going to rant about why my particular 9-to-5 was so terrible, but there should be plenty of ranting material there.

So, labouring under the foolish notion that someone will have the patience to sit through me griping for thirty pages, here goes nothing.

Some Background
Before The Job, I was basically a freelance contractor; I'd line up work, do the job, get a fat paycheck, say goodbye to the client, and with luck never talk to them again. If I did talk to them again, I could count on getting paid again, thanks to some nice maintenance clauses in my contracts. It worked pretty good. I could work from home, do my own thing, live some life in between all the code and such.

Now, that works fine when you're a self-taught high-school dropout. Problem is, being a self-taught high-school dropout doesn't impress many people. (It's fun to say, though.) Legally, I have no education. Sure, I went to a wide array of schools, but most of them were international and only marginally legal, let alone accredited and widely recognized as valid institutions of learning. That's the price to pay for growing up in another country, I suppose. Anyways, the bottom line is that I've got no diploma, no G.E.D., nothing - just a handful of credits from a community college and a fat portfolio of Real Projects.

When you're a contractor, you can get away with that. Real Projects impress Real People, and when Real People see that you've had Real Success on something that looks an awful lot like what they want you to do, they (usually) will trust that you can do it. So being "unedumacationaged" isn't a terrible handicap. It does tend to limit one's ability to work for Fortune 500 clients, but I don't like working with the suit types anyways. I spent awhile convinced that I could make a successful career of this, continue taking some classes, and eventually everything would work out great.

Somehow, and I honestly don't remember entirely how, I decided that wasn't going to cut it. I wanted some Real Jobs to pad my resume, something with heft and weight. Maybe it was the allure of the suits and their dollars, I'm not sure. Whatever it was, I abandoned my last scraps of rationality and took a decent job offer at The Client. The Client was someone I'd worked with before, on two separate projects, and one maintenance update of one project. I have some loose family ties (of the in-law nature) to some of the Big Names there at The Client, who'd given me the contract to begin with (us experience-free high-school dropouts are more than happy to take that kind of contract). We'd both been fairly happy with things, so I got an offer of a permanent position. I should have known that the in-law ties were a bad sign, but I was young, foolish, and needed the money. (That sounds like a really lame textbook excuse for getting roped into a life of prostitution... hmmm...)

Anyways, I should have known there was going to be trouble. I'd always had a sort of rough relationship with my related contact at The Client. The company itself was a startup and still fairly small. Money was tight. The office space was a small, cramped suite, shared with another software startup. The salary was going to be well under market rate. But hey, what the heck, right? I was going to have some stability, some certainty, some concrete under my feet to take away that awful feeling of never knowing when your next contract might come.

So I took the job.

The Excrement Intersects the Fan
In August of 2004, I moved to the Atlanta, Georgia area to start the job. The apartment I have is about an 8 minute drive on average from The Office, which is probably a good thing, because in the coming 16 months I definitely would have killed someone if I had been forced to deal with a long commute on top of everything else.

Things started out fine. Better than fine. I had stability, a steady paycheck, and to make it all even better, I was living my dream. In the evenings, I'd go home and moonlight at Egosoft, working on a space game. Things looked pretty much darned perfect.

Something vaguely rankled, though. I can remember as early as spring of 2005 thinking that I was ready to get out. I was doing shrinkwrap software, and a little bit of internal systems work, so there was always a new challenge or area of interest to keep things fresh - so it wasn't like I was bored... right? Despite the apparent continual interest, I quickly found myself totally unmotivated. The problems I had to solve were either boring or trivial. I didn't care about the product I was working on. I didn't care about the company, aside from the fact that letting the company tank meant I had no paycheck. Inevitably, I quit working because I liked programming, and started working merely because I felt like I had to.

It seems pretty obvious, looking back on it, what all was going on. At the time, though, I had no idea. I figured it was just a weird adjustment, that maybe I wasn't used to having a rigorous, tight schedule, and that I'd get acclimated and build up endurance over time. Maybe the Egosoft night job was a bit much, too. I started to cut back on it a bit to try and control my stress load.

Counting Up to the Last Straw
Over the summer, I started working on other projects: an embedded network appliance (nothing interesting - dead boring, in fact, aside from a little bit of fun pattern recognition logic built into a hacked Linux kernel), and a Mac platform port of our main shrinkwrap software. On both projects, I was cutting new ground; nobody else in the tiny company had any experience on the platforms, or coding, so it was all up to me. Neither product was remotely stimulating, so again I returned to work every morning just because I felt obligated.

One morning, I layed on the couch (where I'd taken to sleeping), and simply wondered what would happen if I didn't go in to work. So I called in sick. I spent a fitful day laying around, trying to figure out why I felt so horrible. I was eating at least vaguely healthy food, getting a token amount of exercise, and sleeping plenty. Had to be work.

Over time, release on X3 drew close, so I started putting in extra hours on the project at night again. Things started to get really feverish, up until Crunch Time in the fall of 2005. I found myself working 80 hour weeks as a matter of course, stumbling in to work and zombie-coding my way through each milestone, then coming home and doing game work. I found that I really liked the night work, even though I was tired, frustrated, and overtaxed. Something about it was just right.

That made me even more confused. How could all that be right? At work, I was making deadlines, plowing through milestones, getting a lot done. None of it was giving me trouble - everything was fairly easy to finish. Mostly stuff was just time-consuming. At Egosoft, by contrast, it was chaos. The deadline slipped a couple of times, and we fought for every last waking man-hour we could wring from the development and testing teams. The Great Feature Axe amputated a painful amount of content and code from the game. We all pushed one final sprint. My weeks stretched to 100, 105, 110 hours. I ran marathon weekends of coding for two days straight. Testing, debugging, everything was a jumbled nightmare. Without the coordination and direction of being physically with the rest of my team, I spent a lot of time fighting uphill against the rapid-fire changes that come with the final few weeks of coding on a tight-deadline game project.

By all indications, Egosoft was a bad work environment - we were behind schedule, cutting features like mad, cutting corners, wincing as we lined up content for patches that would have to be released post-gold. Finally, the final, unmovable deadlines came, and we hit code freeze. One last dose of testing, and then we shipped X3.

In the next few weeks, I did a lot of deep thinking. From a "professional" management standpoint, the Egosoft project had been risky business. Some of the more conservative managers out there would probably have called it a disaster. Certainly if we'd been looking at annual performance reviews any time after the close of the X3 project, we could have fully expected to get fired from any large company. And yet, despite all of this, the project was a phenomenal success of management and leadership. Our team lead was brilliant, and pulled us all into a solid win. Despite our fears, and some rough edges, X3 has been a successful and impactful game in its genre. As a suit-led business, we were a wreck; as a game development company, we were golden. Frankly, most small, niche-game teams can only dream of the kind of success we've been fortunate enough to enjoy at Egosoft.

Where's the Beef?
This was more than a little confusing. The Day Job was going good, on paper, but I hated it. Egosoft had been a heck of a roller-coaster, and I loved it. Was it just a youthful, naive, adrenaline-junkie urge to work on the edge of danger in a talented and wildly driven team? Was it just that I deeply enjoyed the challenge of the Egosoft job, and found it more fulfilling? Or was there more than that?

As it turns out, there was a lot more than just that. Those things are all true, I think, and all made up important parts of my decision to leave the Day Job. But more than anything else, I left because 9-to-5 jobs suck.

Why 9-to-5 Jobs Suck: Or, How to Make Your Software Company a Personal Hell for Your Programmers
I started looking around for articles and writings on software companies, and programmers. Specifically, I looked around for stuff on why it was I hated my job so much. My good friend and flatmate visited at work one day and was totally perplexed as to why I left drained, annoyed, irritable, and exhausted every day. It was time for some Answers. Sure, Egosoft was a more attractive job, but what exactly made the Day Job so darn crappy?

  • You're a Cog in the Machine
    Pink Floyd said it best: you're just another brick in the wall. More than anything else, this was the fact that bugged the ever-loving heck out of me. I was there to make money for The Man, and The Man had absolutely no reservations about reminding me of that fact at every available opportunity. I think that this attitude is, at the core, the big cause behind most of the other reasons why the job sucked.

  • You Are Not Worthy of Being Offended
    Part of this was the personality of the management, but I think it was also a "rank" issue. As a menial slave, I had no entitlement to my own feelings. If The Boss made a terrifically offensive joke at my expense, I was obligated to laugh and not respond. If I sniped back in kind, I was out of line. The severity of this kind of interplay varied quite a bit, and by no means was it a common thing, but there was, on a daily basis, some kind of indicator that I was a gear in the box. I didn't have the right to be pissed off that I was being treated like a galley slave. God forbid I say anything about it.

  • Do What I Mean
    My bosses (both of them, at the small company) shared a common and extremely annoying management style: Do What I Mean. Virtually every time I got a task, I'd be given a short blurb-like sentence or four on what I was supposed to do, and then be told to go do it. At first, I interpreted this as autonomy, or empowerment, or whatever stupid work managers like to use. Turns out I was wrong.

    I'd finish a task, carefully consider any questions I had, answer them to the best of my knowledge, and hand in the results. If I had any really big questions I'd ask before I committed to a course of action, presenting the alternatives, and suggesting what I felt was the best choice based on my analysis of the technical situation. In response, I'd often get told just to "finish it and we'll see how it looks," or something similar and equally annoying. Inevitably, I'd finish a task, and there would be a long line of reasons why it was "wrong." Usually, "fixing" most of those things meant heavy reworking of what I'd done.

    I tried asking for detailed specifications so I could avoid having to tear apart and redo my own work three times until the brass was happy with it. This was met with flat refusal; the brass didn't have time to do specs. It was my job to make it wrong once, then change it until they liked it. Tweaking and three-pixel-changes were one thing; but more often than not some pretty major aspects of a system would be affected by all of the changes. It'd driven me nuts while on contract, and it was no better as a day job.

    Maybe it would have been bearable if every time I had to make a change it was getting the thing closer to some final goal - but it wasn't. Usually, every iteration of changes would be because some fundamental aspect of the system was being reconsidered. Management would make a five second decision, off the cuff, without thinking about any consequences. I couldn't argue, because that wasn't my place. All I could do was go back and throw away hours (or even days) worth of work, based on careful analysis of the situation and lots of deep thought. My professional and informed planning would, in many cases, be thrown away in favor of a snap decision from someone who'd barely even considered the problem.

    Eventually, I quit seeking approval. I started doing things because I knew they were the right thing to do: a heavy code-base refactoring that, on paper, cost me a week and a half, but in reality saved the project literal months; a port of some internal logic from a badly written ASP monster to a well-factored PHP system; a rearrangement and rewording of some critical and very confusing interface elements; some subtle organization changes in the UI. In every case, I'd just do the Right Thing, then politely and firmly inform the brass that I'd done the Right Thing, and they were going to live with it. Shockingly, they inevitably ended up liking the Right Thing - but there's no way I would have been allowed to do it if I asked first. Fighting against authority like that, even when I know I'm doing what needs to be done, doesn't exactly give me warm fuzzy feelings.

  • You're Not Typing! Quit Slacking Off!
    Apparently, programmers are not productive if they are not typing constantly between 9 AM and 5 PM. I had a few "negative" comments on performance reviews and in private meetings about "all of the web surfing you do." I was, a few times, publicly mocked for "falling asleep instead of working."

    In reality, I'd do a lot of surfing, sure. Usually, it was to MSDN or similar reference sites to brush up on some API or to double-check an assumption about something. Even my "recreational surfing" was simply to clear my mind, to reset the stack, to get the juices flowing. In my working style, I sprint - lots of thinking/code, some testing to make sure it works, then relax and reset until ready to take on the next chunk. It works great for me, and as I started to find out from my reading of articles and blogs, a lot of "thought workers" use similar patterns.

    As far as management was concerned, though, I was lazy. It made no difference that I was getting things done ahead of schedule on average; the brass thought they could get even more out of me if I'd just quit all that darn goldbricking all day. I actually started feeling guilty about my work pattern at one point, which thankfully I later realized is just plain stupid. As usual, attempts to talk through this fell on deaf ears. "Yeah, sure, we understand that's how you work. Just stop doing it."

  • Here, Do This Other Job, Too
    The shrinkwrap product we worked on required a fair bit of customer support. Due to the small nature of the company, we had only one support worker. This meant that, in addition to being solely responsible for all of the code work done at the company, I'd regularly get pressed into service as technical support, too.

    Honestly, I'm thankful for it on the whole, but my parents did something to me that I absolutely resented during that job: they instilled in me a powerful desire to do a job right. So, when I got stuck with phone duty, I couldn't let myself suck at it. Being the programmer of the software, I was uniquely positioned to know a lot more about how to diagnose weird problems than the front-line staff guy was, despite his superb handling of the product in general. And, being a cog in the machine, it wasn't beneath me to talk to mere customers. Of course, that kind of customer interaction was far below the station of Management, who never dreamed of answering the phones or handling emails - they had more important stuff to do!

    That wouldn't have bugged me too much if things had been slightly different. At Egosoft, we're also a small team. There, when one part of the team is unavailable, needs vacation, maternity leave, lunch break, whatever, we can step in to pick up the slack. I understand that small teams need that kind of support and flexibility. The thing is, at Egosoft we do it because we care about each other, and like getting the work done right. At the Day Job, I did it because it was pick up the slack or get fired. That makes a huge difference.

    The worst part was that, in addition to being expected to do other people's jobs on a regular basis, I was still expected to do superhuman things on my main job. Schedules became increasingly short and utterly ridiculous. In the last project I worked on, the schedule was literally invented in less than five minutes my management; I wasn't even asked if it was reasonable. When I started to object, I was told that "yeah, we know it's an aggressive timeline, but we'll just have to buckle down and get it done." Apparently, management was incapable of realizing that there was no pressure at all on the next release, and that the schedule could have been ten times longer and not hurt a darn thing.

    As it was, the schedule ended up slipping beyond all control to nearly three times the original allotment - and still about 75% of what I would have liked to allocate myself. Several features got axed to make it fit in that amount of time. It was finished as soon as it was because, by then, I'd already made clear my intentions to get out of that company as soon as possible. The problem was, the slippage was universally agreed to be my fault, because I wasn't working hard enough on getting the project done.

  • No, You Can't Have an Office
    Cubicles are the most disgusting thing that any human being has ever been forced to endure. They are degrading, offensive, and belie a pervasive attitude that the common worker is not worthy of much more than a 5x5 square of carpet with some cheap prefab "walls."

    I had to buy my own mouse to replace the horribly inaccurate Dell ball-mouse that afflicted my workstation. It was a miracle that I even got a new workstation to replace the second-hand scrap heap I started out with. Requests for monitors that wouldn't give me eyestrain headaches on a daily basis were flatly ignored, if not outright mocked, while management upgraded themselves to dual LCD setups that they rarely used. Books and training materials were right out. To hell with you, you don't need Visual Studio 2003. VS6 compiles C++ just fine as far as any of us can tell, so take your C++98 standard and shove it. VS2003 costs money that you don't have in your budget. You can set up a source control server as long as you run it on your (highly underpowered) machine and don't use up network resources for it. [Needless to say, I gave up trying to get them to adopt source code control.]

    Office space, clearly, was not going to be granted to me, period. Forget the fact that I was cooped up with several people constantly on phone calls, and that across the low cubicle wall was another software startup that engaged in frequent and very loud arguments. I'm frankly shocked I could do anything productive there at all. It was a nightmare for concentration. I took to occasionally napping in my cube and working late just so I could get a couple of hours of actual quiet.

    With no way to clearly indicate to people that I needed some privacy to get my work done, I had to resort to being very short and terse, usually at the risk of alienating people that I liked (i.e. the phone support guy). Eventually, people learned to just piss off and send me an email when I was hunched over looking thoughtful, but it took some very regrettable outbursts to convey that point; calmly explaining that "now is not a good time, I need to solve X" never made any headway. You're a cog in the machine, dammit! My inane questions are more urgent than your thoughts, no matter what you're doing!

  • You Will Be Here At 9AM, and You Will Not Even Think About Setting Foot Outside This Building Until At Least 5PM
    Mandatory schedules are second only to cubicles in being utterly despicable inventions. Being expected to be at work, and typing in my IDE, on a rigid schedule, is just stupid. I only once succeeded in getting a day to work from home, and was told never to try for such a thing again, despite the fact that I got nearly a week's worth of work done in that one day.

    Every day is different. Some days I'm ready to work first thing in the morning. Some days I need a few hours to warm up and ease into things. Some days I just plain need to not think about work. Some days I can hop out to Wendy's and grab a burger and be back at my desk in 30 minutes, ready to keep solving a problem. Other days, I'd prefer a solid three or four hours to just clear my mind and relax, think about other stuff for a while. Do some light gaming. The 9-to-5 world (at least, the part of it I was punished with) does not tolerate such heretical notions. You will be here and typing at 9AM, you will continue to do so until no sooner than 5PM, and you will darn well show back up precisely one hour after leaving for lunch.

    Never mind the fact that management routinely kept loose schedules, took two or three hour lunch breaks, and worked on personal or external projects constantly. The Cogs in the Machine do not deserve such privileges. You will devote your every waking hour to making money for The Man, and you will like it.

Screw Everything!
After a while of this kind of crap, I found myself depressed. Not clinically, slit-my-wrists, take Prozac depressed, but pretty bummed out about life in general. Despite what my mother will try to tell you, I like things fairly clean and orderly (in my own weird "order"). During the job, I found myself not caring about that at all. My personal life, my flat, my work all started to decay under the weight of simple complacence.

I quit eating properly, gave up exercise, took to long hours of staring blankly into space instead of sleeping. Some of it was due to heavily limited time during the X3 crunch, but the laziness and lack of motivation continued well after release. I let myself slide in ways that I never would have imagined I could let myself go. Stuff got outright bad for a while in my personal life.

Eventually, the light turned on, and I figured out that I hated my job. I didn't just dislike it, or have frustrations, or have some niggling little peeve at work. I hated that job.

Moving On
Even during the sleep-deprived panic of working on a game in Crunch Mode as well as a day job, it was pretty clear to me that I liked the Egosoft job. For a while, I wondered if I wasn't just grasping at the greener grass on the other side of the fence. Soon enough, though, I realized that it was more than that.

At Egosoft, I'm finally with a good team, and I've got a great boss. After X3, I sent him a private postmortem outlining some concerns I had with the development processes and made some suggestions for improvement (some of which I've mentioned here before). At my day job, I would have expected (quite literally) to be fired over such insubordinate arrogance. For a while, I had a contingency plan of what I would do if I got fired from Egosoft for writing that document.

As it turned out, my document was welcomed; the problems were things that the team lead had seen and was interested in solving. We've even discussed some things (and plan to continue to do so) that help me see why certain decisions have been made. At the day job, when a decision is made by Management, you will darn well do it and not ask questions. At Egosoft, if there's a problem with a decision, you make your case, and everyone concerned gets together to find a better alternative.

Everyone on this team is a "thought worker." We do business and earn our living on abstract, digital concepts and products. There's a lot of real-world stuff that goes on (like producing and selling game units) but the essence of what we do is all very similar. Everyone understands wierd work habits and patterns; we all have our own quirks. Everyone is given everything they need to get their job done, as far as is practically possible. This team works together, on a shared goal, for a shared purpose, on a project we all care about doing - and doing well.

I've finally freed myself fully from the evils of contracting (never knowing where the next job will come from), and I'm now free of the evils of day jobs (being coerced into existing on someone else's agenda). I now have total freedom to live, clean my flat, go shopping, take a four hour lunch break, and/or sleep all day, provided the work gets done. I'm now working because the people I work with know I'm competent, know I know my stuff, trust me to do what I'm on this team to do. I value and appreciate the skills and input of everyone else on my team, and they reciprocate to me. Even those who are, formally, "In Charge" do not demand to be treated as if they are infallible or above reproach. We're not here to buy a Benz for The Man; we're here to all reinforce each other, and to contribute to a whole that is greater than the sum of any of us individual parts.

This team isn't just a bunch of people who happen to spend their day in the same building and get paychecks with the same letterhead. This is a team. And it feels damned good to be a part of it.

Day One

Posted by , 01 February 2006 - - - - - - · 243 views

Well, I am now officially a full-time industry professional. Today is my first day of work at Egosoft working on the X game series. Those of you who have been here before (and are masochistic enough to come back) know that I've already been working with Egosoft for over three years now, beginning as a volunteer, and then working part-time around my Evil Day Job.

Today I've started in exclusively at Egosoft, working from home over the Internet to the main company office in Germany. It's actually pretty much exactly like my part-time work, except there's more of it, and the paycheck is bigger. Time will tell whether or not I continue to enjoy the job when it's what I do all day [smile]

So far all I've really done is work on getting my build environment back in sync. I was basically "out of office" for the last two months while finishing up stuff at The Evil Day Job, so I had quite a bit of updating to do in terms of code repository synchronization and tools adjustment.

At this phase we're working primarily on updates and demos for X3. This is a relatively low-strain project (compared to the pre-gold-master rush) so there's been a lot of time to update the various tools and utilities we use for working on the games. We're in the late stages of arranging the next main project, so some preparatory work is being done for that as well. It's looking like we will be doing a content expansion for X3, with a heavy emphasis on missions, quests, and such - which just so happens to be one of my areas of responsibility.

One of the other big areas that I'm going to be involved in is project coordination. The main office has a great set of design plans, documents, bug/task tracking setups, and all the trimmings of good software creation. The problem is, part of our development team (including me) and all of our testing team is spread out across the world, and these resources are not really nicely connected to the Internet. So we'll be looking at a major internal overhaul of some of the development and testing processes. The main goal here is to help get design documentation and work coordination into a more usable and accessible format, so that we can spend less time trying to figure out whether or not Foo is really a bug, and more time actually getting work done.

My next task is to install the game and get a working test environment on my development workstation. During the engine work on X3, the engine only supported Shader Model 2.0 capable cards, which meant I had to run the game on my testing/gaming rig instead of my workstation. This translates to copying built binaries over to another machine and physically walking over to my couch to run the game itself.

The engine now supports SM1.3, which means my development box's Ti4800 can run the game (weakly). So for post-release work, I'll be doing most of my code testing on this machine, and reserve the other box for hardcore final playtesting. That should speed up things quite a bit, and let me get nice and fat since I can sit in the same chair all day instead of walking back and forth every time I recompile the code.

So there you have it. Enough drivel... time to get back to work [smile]


Posted by , 25 January 2006 - - - - - - · 283 views

Holy crap... I'm so tired that I completely forgot to mention that I finally installed my TVWonder Elite and got it running tonight. I also seem to have broken my sacred tradition and posted a journal entry that does not fill a browser window at 1280x960. My only excuse is that I've been writing for the last three hours, and my brain is at the point where it has given up coherency, and decided it is much more fond of producing splatters of linguistic gibberish (ever notice how "gibberish" sounds a lot like "giblets"? There, that's the kind of stuff I mean).

The installation was a breeze, as far as hardware installs go. All told it took about half an hour to set up and get running; most of that time was spent goofing with video drivers before I remembered that I'm on Windows Server 2003 and the software wants Windows XP. (As a side note, thank you Microsoft for compatibility emulation. I owe you my soul many times over for that feature.) After that it took a few minutes to figure out why I wasn't getting any audio. Turns out my sound card drivers decided to forget that I told them to output over SPDIF to my surround sound decoder, so they were outputting standard stereo analog to... nothing.

As many users have commented out on the Great Intarwebnets, the software bundled with the card is pretty craptacular. It's not downright bad (I've used much worse in my time) but it is a little annoying. The channel change speed is fairly slow, but I'm not much of a channel-surfer anyways, so I don't really care.

Picture quality is superb, and easily outdoes the $15 VCR I had from WalMart. No complaints there, although the filtering algorithm does seem to do weird things to text.

Next quest is to figure out how to get it to record shows on a schedule, so I can get my Adult Swim fix without having to wait until the TV station deems it appropriate to air the shows. Silly TV stations. I'll probably go hunting for some better TV software for that, as the bundled package makes me want to kick someone's cat.

So... now I'm really going to bed. For real this time. But really I'm going to stalk your cat. Read my article. Generic subliminal message.

Making Good on Threats

Posted by , 25 January 2006 - - - - - - · 199 views

The hour of dread is finally at hand! Draft one of Digging the Ultimate Sandbox is now posted for you to pick apart and violently disagree with. It's in Word format, partly because I am an evil Microsoft drone, and partly because the GDNet+ webspace won't let me upload RTF files, and the idea of ZIPping a 50KB document just to let you non-drones read it in a portable format makes every bone of my lazy body absolutely tingle with complacency. (In the interests of being nice, and fighting The Man, I plan to do a manual HTML conversion when the writing process is done. It's just far too much work to do that for a rough draft.)

This is the first of my iterations, so it is still very rough, disjointed, and verbose. If anyone has anything interesting to say about it (more importantly, if anyone can survive reading it) I'd enjoy the opportunity to factor your feedback into further revisions.

And now, being 2:40 AM and roughly three hours later than I would like it to be, I'm going to bed. Two more days of my evil job, and I'm home free!

Game Design

Posted by , 20 January 2006 - - - - - - · 351 views

Every few weeks, I find myself in a position where I'm lurking around on GameDev, and my "regular" forums aren't updating. Usually these are the times when I rediscover forums like Software Engineering and Game Design, which never fail to have some really interesting stuff (despite moving very slowly). These discussions usually get me thinking about all manner of things, which can be good or bad, depending on whether or not I'm supposed to be getting something done at the time. Anyways, I finally got off my lazy butt and started making use of the "my favorite forums" feature, so maybe I'll show up there a little more often. (Oh, quit your screaming. I'm not that bad!)

Today (or more correctly, over the last couple of days) I've seen some really great stuff in there. As I remarked in my last entry, I decided to shift my article-writing (stop chuckling!) over towards the issue of delivering fun, compelling, and motivating gameplay in sandbox-style games. Today, the Issue of Choice is depth of game content.

Now I'm not talking about depth in terms of feature richness here. I mean like the good old-fashioned, philosophical, "turn your brain back on" sort of depth. Admittedly my list of gaming exploits isn't nearly as long as some of the more hardcore players out there, but even still, I can't think of too many games that had truly deep content. Even games like Halo and Deus Ex that are routinely praised for having great stories still manage to barely scratch the surface of what is possible; they're fun games, but they're not deep in the sense of really getting one thinking about things larger than the game itself. RPGs seem (in my experience) to come the closest of all genres here, but usually the content is so watered down and teen-oriented that the opportunity to explore truly deep issues is lost. It seems that, as time goes on, games are becoming more and more mainstream-palatable and less willing to venture into truly thought-provoking issues.

There seems to be a backlash against this. It's still a very young and developing backlash; not nearly as potent as the backlash against cookie-cutter shooters and other such tripe that floods the market. (As a side note, I predict that said backlash will reach its peak in the next three years, and we'll see a radical shift away from war shooters and other recycled crap as the market finally gets tired of it on a large scale and quits funneling cash into dumb rehash games. The "games are too shallow" backlash is looking at at least a decade of brewing before I think it will really start to have a noticeable effect.) The "gamer generations" are starting to grow up. Soon we'll start seeing the first generation of retiree gamers who grew up on games, had to give them up for "Real Life" for a while, and are finally getting back the time and spare cash to play. A little while after that, the average gamer age is going to skew wildly towards the older end of the scale, and I think we'll see a lot stronger desire on the part of gamers for stuff with actual content.

I enjoy reading fiction, and watching movies. I tend towards science fiction and philosophically-heavy books, because I like the depth of content. I like independent, "brain movies" and don't really enjoy pure-action summer teen bilge. I like the content. I like being encouraged to think. I like having my opinions and assumptions challenged - nay, not merely challenged, but outright shredded. I like my entertainment to require me to be in Brain On mode.

Which, I think, is why I've started drifting away from playing games. It's not that I genuinely don't have time (at least, not usually; during the X3 crunch was a different matter, but I'm largely free these days). I just don't care. Every now and then, I'll get some nice brainless joy out of BF2 or Halo 2 or whatever. When I have the energy I'll play on the FF series or the X series. But I'm increasingly finding myself just totally bored with games; they can't stimulate my mind the way other media can.

I hadn't really recognized that until today, reading through the Game Design forum. The specific thread is here, and I'd recommend it as a good read for anyone who can identify with my statements above. It seems that there are two reasons that people are drifting out of gaming: time, and interest. Time I can't do much about (except recommend polyphasic sleep schedules) but I think the game industry as a whole needs to answer for the proliferation of utterly banal games. (Yes, I realize this is largely because the dominant publishers are money-grubbing selfish bastards an economic issue.)

I think there's really starting to become an opening, in the gaming market, for games that can really appeal to people like myself who want their minds stimulated. I hear all kinds of raving about how "we have to do more to capture the casual market" but I think that emphasizes time too much and forgets the other opportunities. We're missing a lot of potential out there, and if someone can start really delivering good, thought-provoking, content in games, I think they'd find themselves in extremely high demand among the "older" gaming crowd (read: people who aren't in high school).

I've had a game concept for a while now, which I think I've mentioned here before. It's still not nearly developed enough to share, but the basic idea is that the entire game is built around exploring some very dark and deep issues of morality and reality. Sure, we've got the usual "violence excused because it's For A Good Cause" and "the Good Guy gets haunted by his evil deeds forever" cliches; those are so overdone (in all media) that they've totally lost their message and are just annoying now. I'm looking at something that reframes some core human issues in a way that is so dark, so twisted, and so utterly alien to most people that it forces a lot of introspection among anyone remotely intellectually honest with themselves.

Of course, it'd be great if such a game could start to explore the casual side of gaming more deeply as well. I'm really feeling a void in the market for RPG-style games that don't require ridiculous amounts of time investment; something big that I can get lost in, and immerse myself in, but can still quit in time to make dinner. It's a challenge, to be sure, but the industry is full of a lot of really smart people - I'm sure that we can manage it.

In short, I'm feeling some inspiration here. I want to take this game and really make it into a powerful example of how content can truly be delivered in interactive media. I fully believe that it's possible - even easy to convey some really deep and provocative stuff through games, and I think it's high time the industry started taking advantage of that possibility.

Maybe then I could start being a hardcore gamer again.

Article Update (of sorts)

Posted by , 16 January 2006 - - - - - - · 318 views

So I was thinking of writing up the article that I threatened you all with. Actually, I've been thinking about it a lot. Originally, my intent was to do an analysis of abstraction methods and embedded languages in game development, and propose a mechanism for generating dialectic languages on-demand for generating rigid levels of abstraction arbitrarily for various tasks. The idea would be that the dialects would form enforced levels of arbitration and separation between disconnected architectural units in the engine itself; i.e. instead of a loose, code-level, likely-unwritten rule like "The FooBaz never interacts with Quux objects directly" you create an actual mini-language in which FooBaz objects have no syntactical way to interact with Quux objects at all.

Now, I'm aware of similar concepts like aspect-oriented programming and the general theory of language embedding. However, these things miss one element that I think would really make this whole abstraction notion powerful: interchangeability. Specifically, if I embed Foo in my application (or game) and add bindings for Bletch, I then have to redo the bindings in Bar when I want some of Bletch's functionality. Even worse, if Bletch depends on "engine-side" core elements of Foo to work, I have a nasty chain of dependencies.

Let me clarify with an example. At Egosoft, we do things in a custom-built bytecode language called KC. KC has a C-style syntax with deterministic garbage collection, native string and hash table objects, and some other goodies that make it extremely powerful and yet still very convenient for building stuff with. I've often wished I could use KC, and the extensive library functions it has, for stuff like web applications. (In fact, we do some of that, but in general it's more of a toy than a genuine web-ready technology.) The problem is, the functions I want (mostly hash tables) are bound directly to the X engine, and a large part of the library functions' implementations lies engine-side in the bytecode engine code. This means I can't just wholesale lift KC and make a standalone scripting shell with it, for instance. This is what most embedded, tightly-bound languages suffer from: they are too domain-specific.

Compare this with stuff like aspect-oriented programming, which is a lot less domain-specific, but is tightly bound to specific code. Aspect-oriented programming, to do genuinely useful work, has to be bound to very specific chunks of code, and that means it takes some work to move a block from one project to another, especially if the block has nontrivial interactions that have to be redefined in a new domain scope.

My concept here is to not actually generate new languages but instead dialects. We get the benefits of enforced encapsulation and very well-defined interfaces, but the syntax stays the same, and in fact we stay loosely decoupled from an actual execution methodology; that is, the dialects can be compiled, interpreted, etc. at will, and each layer can be relocated to a different execution method on the fly. Say we build a language, Baz, that we can use to generate C++ code, or KC code, or even compile direct to assembler and hand-tune. Now, we can define all of our game logic in Baz, and then manually relocate chunks of Baz to different systems as we need it. Performance-critical bits of Baz can be dropped into C++ and compiled, or shot straight to assembler. Pieces that we want to dynamically modify at runtime can be interpreted or bytecode compiled.

Even better, our programmers only have to learn one language: Baz. KC has vastly different semantics and "good style" than C, C++, Java, Python, PHP, or any other language I've ever worked with. It is very unique, and I've seen it throw very competent programmers for a complete loop. Yet it remains powerful precisely because it lets us define and enforce an abstraction layer that is distinct from the game engine. It is high level, but it can talk to very low-level code, and do very low-level things - and it can do it fast.

Anyways, I have this sort of nebulous ideal about building a Baz-style system, and making a project out of it to demonstrate the potential. Unfortunately, I have no real interest in writing formally about it. I've been meaning to do it for weeks, but every time I sit down to write, I end up not writing. Every time I think about sitting down to write I end up getting a burger or going to bed or shooting things in BF2. This is usually a sign that I've picked the wrong topic to write about.

So instead, I'm going to shift gears a bit. Earlier today I caught a thread on highly linear vs. sandbox style gaming, and it piqued my interests. In fact, it reminds me of a panel discussion at E3 last year, in which somebody (I think it was Peter Molyneaux) commented that sandbox gaming was going to either become really big or die depending on whether or not content creators figured out how to tell compelling stories in a sandbox environment.

At Egosoft, it's basically our stated and sworn duty to produce highly kick-ass sandbox games in space (although I think the official company mission statement uses slightly different vernacular...). I'm officially, by my paycheck, a programmer, but I do a lot of gameplay-level design as well; and the issue of delivering compelling, motivating content in a sandbox game is very much a major part of what I do.

Thusly, I think I'm going to write about that, as I've got some things to say that are a bit less dense and obscure than hypothetical language dialects and abstraction concepts. It also gives me an excuse to mention space aliens in my article, which is always good.

Grandpa Jim

Posted by , 05 January 2006 - - - - - - · 370 views

A week ago, on December 29th, my Grandpa Jim passed away. I found out by way of an email from my parents the next morning (well, it was technically afternoon, because I had that Friday off of work for the New Year's holiday, and there's no way in heck anyone is gonna catch me awake before noon on a day off).

Grandpa Jim wasn't technically my grandfather. He was, by way of a fairly convoluted chain of remarriages, essentially my great-grandfather. I'm still not entirely clear on how my dad's side of the family works, but I know that for as long as I can remember, Grandpa Jim was a big part of it. He always was a lot of fun to be around, and always had some cool picture book, story, National Geographic video documentary, or bit of wisdom to share.

He had an amazing personality and spirit. He was a tail gunner on a B-17 during WW2. He was a fantastically devoted, loyal, and dedicated worker. He was the kind of guy who, in his early eighties, volunteered for a county sherrif's posse in Arizona of all places, where, for a few years, he packed a Beretta and went on manhunts in the desert. I don't think there was ever a church function or a community gathering that he didn't contribute to in some direct way. The guy was amazing.

Almost all of my memories of him are from when I was fairly young. I remember that, even when under pressure and agitated, he always spoke slowly, quietly, and calmly. It made a big impression on me, for reasons I still don't really understand. He had a really cool stutter, and would often stammer the first sound of a word three or four times before getting the rest of it out. I have no idea why, but when I was a kid, that was the awesomest thing ever. I remember thinking that, when I was that old, I wanted to have that sort of kind, gentle stutter myself.

The last time I got to see him was in August. He'd had some pretty bad kidney problems, and ended up with a DNR living will and a sad but comfortable slot in an assisted living home. For a while, he went through the typical habits of old age, inventing wild stories of kidnappings and conspiracies to try and drum up attention. Then, he just kind of dropped off the radar. He seemed to be doing fine for so long. In a lot of ways, I think a lot of us just kind of forgot that he was getting on in life and took it for granted that he'd be around for a while still.

I was with my parents for Christmas, and on Christmas Eve my dad tried to call Grandpa. He got connected to an empty shell, a broken man who didn't remember much of anything. This poor man tried valiantly to explain to the lunatic on the other end of the line that he was 88 years old, darn it, and I don't know why you're so interested in telling me about this kid that's supposedly my newest great-grandson, but I'm going to go eat lunch now. It was tough to hear, but we all more or less let it slide in the face of Christmas.

I can't get over how bizarre it is to know, on many levels of conscious awareness, that you have a relative who is near death; and yet, when they finally move on to that which comes next, it's almost always some kind of shock. It's not nearly as much of a jolt as if you weren't expecting it, but somehow, we manage to tell ourselves that it isn't going to happen just yet. There'll always be one more lucid phone call, one last photo, one last time to hear the old stories.

I don't understand death, really. The literal, physiological bit is easy enough: stop enough of the body's processes, and natural decay catches up with you and wins the fight. There's some metaphysical, spiritual type stuff that's involved, too, but somehow that doesn't seem to really play that much of a role from the observer's viewpoint. All I know is, I've lost a few people that I care about. It's always the same, too; the initial news is weird, but sort of numbing. It always takes me more or less exactly a week to really comprehend what's happened. And even after that, for years later, I'll catch myself having fond memories, and suddenly, with a sickening shock, realize that I'll never see that person again.

My first jolt hit tonight, somewhere between drinking Gatorade out of a gallon jug and taking a shower before bed. There's so much more I wish I could have done. People are so easy to forget when they're still here, but there's always one last thing you wish you could have said, one more experience to share, one more au revoir before the real goodbye.

I'm finally at a point in my life where I feel like I could really have appreciated some of the years of gentle, quietly passionate wisdom and power that my Grandpa Jim had. I feel like we could have had some very deep bonds, and had some great times. It's hard to accept that I'll have to be content with the times that we did have. It's even harder to accept that, no matter how many times I do this, I'll probably never really learn to quit taking people for granted before it's too late. The immortal folly of being a selfish human being, I guess.

When we visited in August, I think all of us deep down knew it was going to be one of the last good visits we had together. We were very blessed to all be in relatively sane states of mind (as "sane" as any of my family ever gets), and it was a good time to write the last chapter. Leaving from a visit like that is always awkward, but this particular one hit me pretty hard. As we got up from our seats to head for the door, Grandpa Jim grabbed my arm and pulled me back. For a person facing death and, in essence, virtually immobile all day, he was frighteningly strong and steady. He didn't even stutter. In fact, that conversation that day was the only time in my entire life when I can remember him saying more than two consecutive words without stuttering.

He stared in my eyes, and in his quiet, gentle voice, said "Michael, thanks for coming." It is an enormous honor, and an enormous feeling of responsibility, to have a man with that kind of character and legacy look in your eyes and, in not so many words, tell you that you have brightened the final pages of his life.

Somewhere, our family has a five generation photo, with everyone from Grandpa Jim on down to my nephews. I know that I've had a rare privilege to even know someone that far back in my ancestry, and yet I can't help but wish that I could have known him just a little bit more.

More than that, I wish that someday, I will be able to sit in my chair, look at my own great-grandchildren, and tell them that they are the happy ending of my own long and fulfilled life. I've never really been too concerned about death (mostly just the pain and the suffering that usually precedes it), but I don't think I could handle looking back on my years and having any kind of regrets.

It always hurts to lose someone you love. Even still, though, I'm happy for Grandpa Jim. He got by with, by all accounts, a decent minimum of the unpleasantries of old age. He got to see things happen and change in his lifetime that I can't even begin to imagine. All in all, he checked out of the hotel just before booking time, and it worked out pretty good for all involved.

I know for sure he didn't have any regrets.

So long, Grandpa Jim. Sometime, when the rest of us finish up our dues here in this world, we'll have to meet up again, and make up for lost time.

Say hi to God for me.

January 2017 »

15161718 19 2021