2006/12/21

Happy Holidays

Tomorrow I'll be driving back to my parents' place in Kalamazoo Michigan. Yes, it's a real place. My holidays are typefied by eating far too much, seeking refuge from an overblaring TV, suffering my two hefty siblings for extended periods of time, and almost invariably getting sick from overexposure to allergens. Ah yes, the holidays.

Despite the fact that I've unilaterally failed to get anything done in the time I've spent at my parents' place, I'm bringing my laptop in order to get some serious work done on this month's game. Given that this month I've been overworked and sick as heck, I haven't gotten much of anything done. So if it's going to get done within the allotted amount of time, some serious work is going to need doing in the next week. Barring any unfortunate mishaps I'll be back home a couple days before New Year's so that the remainder of my sanity might, er, remain.

Here's wishing everyone out there a happy holidays.

2006/12/12

Security and Firewalls

For the last few weeks, someone has been trying to break into my firewall machine. The obvious clues that I've been left are that this guy is trying to log in unsuccessfully through SSH as "root", "spam", and "webadmin" which is more than a little concerning. So far as I know, they've been unsuccessful but I'm not enough of a hacker to be certain. My firewall machine is pretty good--it's an obscure operating system that's pretty secure on its lonesome and out of the box it will foil most attempts. Even then, it's low power, isn't connected to anything remotely interesting, and exists on a consumer line. Still, it bothers me that anyone would even attempt to break in for any reason, nefarious or otherwise.

I tightened things up a bit yesterday but I doubt that will deter them. I'll probably buy the latest version of that OS and get that all prettied up. It makes me glad that I had the presence of mind to use a real operating system for a firewall.

2006/12/10

A New Tack

Tacking is a maneuver that sailing vessels do to put the wind on the other side of the boat. This is often used to move against the direction of the wind.

My new tack then, is to build a bunch of simple games and then release them for free in an attempt to improve my skills. This obviously isn't ideal since I'd still lose out on learning about all the marketing things and project->product transformations. This does, however, seem to be OK in the light of the corporate copyright law under which I toil.

This guy tries to do a game a month. Gamasutra has some info on how to prototype in under a week (with additional bonus track commentary at Lost Garden). These guys make a game in a day. Kloonigames in that top link has a couple great posts with links to other rapid prototyping resources.

I'm going to try to prototype something each month and post it somewhere for free. I hope that this will get me some of what I'm looking for. It might not be pretty and almost certainly won't be polished but it'll be something which is better than slacking off.

So for my first game, I'm going to rebuild this:GWAGL
This is GWAGL, the example game I built when exploring the info in
Scott Bilas's GDC Talk in 2002 about data driven game objects. It's even a rebuild of the arcade game I did in college for the one games class I took (I can't post a screenshot of that because it doesn't run anymore). I'm going to pretty it up some, make it a single player game, and bang it out before the end of this year barring any unforseen badness. I might even post updates on how it's going here (but don't hold your breath).

So here we go.

2006/11/29

The World In Crisis!

DHMO is something that most of us are in contact with on a daily basis, but we often don't consider the dangers. It has now come to my attention that there exists one UEAC DHMO Research Division, a group of upstanding citizens looking out for our best interests. Just as a snippet of the data within, did you know that...
- DHMO can cause death even in small quantities when inhaled
- Prolonged exposure to DHMO can cause severe tissue damage and burns
- DHMO is a major component of acid rain
- DHMO leads to corrosion and oxidation of many metals
- DHMO is often associated with disasters such as hurricanes and other disasters
- DHMO is present in the vast majority of beverages
- DHMO is found in substantial quantity wherever people live

But here at Ruminations of a Wanderer, we're not all about sensationalism and scare tactics. Well, ok, maybe just a little. We prefer you to Make Up Your Own Damn Mind (TM). For those who don't like clicky text links, the upstanding citizens at dhmo.org have provided us ith the following banner:


DHMO.org

2006/11/28

Programming Evil #143

I hope everyone had a good holiday weekend but that's not why we're here. Oh no. We're here to talk about programming evils and in true rant style I'm going to number these but not in any rational way.

I've found a simple piece of code that seems benign enough (details hidden to protect the guilty):

byte buffer[ BUFFER_SIZE ];
sprintf( buffer, "map_path/%s", szGetMapName() );

Astute readers might note that if szGetMapName() happens to return a really big name or a NULL, that bad things might happen to the game. Me, in an attempt to be a good worker bee and concerned with security, decided I'd change it thusly:

byte buffer[ BUFFER_SIZE ];
snprintf( buffer, sizeof(buffer), "map_path/%s", szGetMapName() );

except that this now errors out on every overrun rather than crashing. Better, but still not what I was going for. Note that standard C snprintf does not error out or anything weird. It is, in fact, quite a well-behaved function. We've overridden snprintf to our own crazy version of snprintf that errors on buffer overflow. Our version is not quite so well-behaved.

I hereby christen this as Programming Evil #143: If you override standard functions, don't change the functionality!

In this particular case, the chance of buffer overrun is almost nil and the function played by szGetMapName() can't return NULL and the define played by BUFFER_SIZE is pretty big making it exceptionally hard to overrun it. Regardless, I wanted to make it more bulletproof--an attempt that has been quite thwarted.

2006/11/18

I Suck At Colors

I used to play WoW--a lot of WoW. I got better. My first character was a paladin who I took to 60 followed by a 60 mage and a 60 priest, the latter two hordeside. Alena was my paladin, retired around August of 2005 after 10 months of nearly constant play.

Yeah, I played a girl and no, I don't have a problem with that. I'm in fact stunned and amazed at how many people do. Go here if you really need an explanation.

Paladin-ey!

People don't believe that I was an artist once. It was a long time ago, but still. I'm way out of practice and there's a mess of things I never learned to do correctly (like colors) and I figured it was time. My art tends to go in spurts much like my other hobbies. This is a doodle I did in a margin of some other piece that I liked. It took far too long to clean and color and, sadly, most of the interesting details seem to be missing after resizing.

2006/11/14

I *HATE* the Fine Print

I don't care about street cred. I don't care about particularly making any money off of anything I publish myself from now until I'm no longer gainfully employed. What I do care about is learning about my craft. In particular, I want to know what it takes to bring a personal project to market as a product and I'm certainly not going to learn that at my day job. There is a tremendous amount of effort involved there. Beyond my college comic book misadventures, I haven't ever seen that. I'd bet that most people haven't and that's a damned shame. I think that if more people had experienced shipping a product--their product--that we'd see a lot more consideration from the general populous. All too often we assume that things we don't understand are trivial and that is very often not the case.

For those not intimately familiar with my past job decisions, the last time I changed jobs I chose this one over the other largely due to issues with their non-compete clause. It basically read "you can't work in the games industry for two years after you leave our employ" which was not at all acceptable (this is why I read everything). They gave me every assurance that this wasn't something they'd ever do except in very particular circumstances and that the chances of my ever being held to that were exceptionally slim. If it was such a statistical improbability, I wanted it out. They wouldn't budge. I now work elsewhere. I was informed that this policy was changed to only apply to a small geographic area as a direct result of the stink I made. I'd like to think I did the others in my chosen field a good deed but, honestly, few people read or really understand the legal and binding contracts they sign when they take a new job.

Today I learned that any programming work I do is owned by my corporate overlords including those done outside the scope of my employment. The legalities of this are sadly unarguable even if they are imprecise and likely unenforceable. At the end of the day, if they want to put legal pressure on me they sure can and there's no way that I'd be able to survive that financially.

Given that my current employer can fire me at any time with or without reason, I don't particulary see a strong need for them to also be able to take anything I do outside of work. That just seems...wrong--especially when you consider mandatory overtime and a stagnation of professional skillsets that myself and my co-workers tend to suffer. I do on the other hand, understand what it is that these policies are trying to protect, it's just that I think they a) aren't really true to the intent, b) are a little intrusive and thus disrespectful to employees, and c) kind of do a crappy job anyway.

Learning that all programming work I do is owned by my employer comes as news to me--I thought I understood that part of the law. It all hinges, I suppose, on what the "scope of my work" really is. If that includes my hobby work at home then I think I might be entitled to more than I currently make (I write a *LOT* of code at home). I don't think that this was the intent of the law but I'm also not a laywer. I think it's silly that I'd need to be to answer the question: "who owns the work I do outside of work".

Next time around (if there is one) I'm going to be a lot more careful. But I suppose that's how we learn: screw something up bad enough and you'll know to watch for it next time.

2006/11/12

Broken Tools Redux

So...

I'm not a fan of Visual Studio 2005 by any means. Before I started this recent round of home programming, I had about a week when I thought that maybe just maybe I should finally upgrade past VC6. So amongst other options, I downloaded VC2K5 Express, the C++ version and was almost instantly disappointed. It doesn't do plugins. It doesn't do source control integration. I'm pretty attached to VisualAssist and no plugins kind of kills that, but no source control is where I draw the goddamn line. I realize that VC2K5 is free but come ON. No source control? So that was pretty much the end of that.

Fast forward to today, now about 2.5 months later...

I'm trying to do some sound stuff. I have the DX9 SDK installed. All of its samples have 2K3 and 2K5 solutions and not a dsw in sight. "Aha!" I say. "I've got 2K5 Express installed! I knew I didn't uninstall that crap for a reason!" Yeah. As it turns out, the express edition also doesn't come default with some important headers that you just might need like, say, <windows.h>. I'm dumbfounded even more than I was.

As it turns out, I totally missed the part in the installation instructions to install the Platform SDK. I dunno how I managed that but hey, I'm not good at following instructions. They even have a page with instructions on how to do this but it does involve hacking up files in the Express install. No clue why they don't install the basic stuff with it but then again I may be insane and the cab download is 400 megs.

Don't want to burn a disc (my burners are flaky) so I download the 17 cab files conveniently in 25 meg chunks and then the extractor which doesn't work. You need to give it a parameter which the extractor doesn't have, oh, and you have to rename it if you want to run it from the command line because it's got a - in it which isn't kosher. And forget trying to put it on your desktop--the extractor can't handle spaces (thank god it spews paths so I could find the extracted installer). And insult to injury: the 2K5 solutions for the samples I was trying to compile were missing libraries.

As it turned out, it took longer to make my dev environment do what I need than it was to write the code to load WAVs and play sounds.

2006/11/09

Broken Tools

Nothin' in the world like a good rant...or a bad one. If you're squeamish, you might want to look away.

To go with the 360 we use VS2K5 as is required by Microsoft. Since then I've noticed the following things that are broken which annoy the bejeezus out of me:
  • Bookmarks will sometimes persist even when I remove them even through reloads/reboots, often in completely incorrect places.
  • Go To Definition often does not function properly. Going to the declaration of the pure virtual method is not what I want! It used to give a list to resolve ambiguities; I'm not sure why that's not proper now.
  • It will randomly reset all my keyboard settings. I'm very particular about these and rather than reset them (sometimes every 10 minutes) I've accepted the loss in productivity vs. using the annoyingly user-hostile keyboard configuration dialogs to reset them yet again. The annoyance is especially apparent when I go home and work there where VC6 suffers no such issues!
  • It will randomly reset my toolbars. This would not be such a problem if my custom one was saved. I gladly heralded the return of the Pop Context widget but I end up having to hunt for it in the mess of other widgets to rebuild that toolbar on a semi-weekly basis.
  • Breakpoints will often be randomly added, sometimes in illegal places. I can't get these to go away except by removing all breakpoints in the project--some of which I actually need. Merely disabling them does not work reliably. This is especially irritating when it halts program execution or crashes because the bookmark is in a Bad Place (TM).
  • If I ever stop compilation to fix an error (can't save a file in the project during compilation and our project can take up to 10 minutes) I have to do a full build--it will corrupt the intermediate build files in non-obvious ways and I'll end up trying to track down an obscure bug that doesn't really exist.
  • I have a dual head system at work and I put some of my windows on a different monitor. The program will sometimes randomly move those windows around between runs, between starts, and sometimes even when I get back to work in the morning. I spend a ridiculous amount of time re-positioning and re-adding tabs.
  • It is extremely unstable. It will often take 10-30 minutes to crash even if I kill it from the task manager. My days tend to not be productive anyway because of poor workflow and environmental concerns but this is clearly not helping.

    Some of these may have solutions but I sure as all hell can't find them (and yes, I've looked quite extensively). The IDE is a tool that I rely on to do my job. Developers tend to be NOT HAPPY when it doesn't work a lot of the time.

    Along the same lines, we recently upgraded to IE7 for security reasons. IE7 is far less mission critical for what I do but still has the annoying habit of completely losing some of my bookmarks! They're not 100% lost--oh no, that would be far too easy. They're still there in my favorites list with the correct name and everything. They just have completely lost the URL they were charged with safeguarding.

    I've got dozens of places that I go to look for stuff and I often can't remember all the URLs--I'm old, it happens. If only we had the tools and technology to keep a proper list of URLs inside our browsers!
  • 2006/10/29

    Adventures in Homebrewing Take 2

    My first batch may or may not have turned out very well. I've had 4ish bottles of it so far that weren't very good much earlier this week, and a taste today of a bottle that was really good this afternoon, so there might yet be hope (it was sacrificed to the chili gods, more on that later). So yesterday I endeavored to take another crack at it in the hopes of salvaging my brewing self-esteem. Also, due to the number of questions I've received as to what's involved with homebrewing, I've hired a shoddy camera man to document the process! Shoddy camera man played by, erm, me.

    Steeping the Grains
    It's like boiling only not.Steeping grains is exactly what it sounds like--you get a bag, stick some grains in it, and stick them in hot water much like you would tea or coffee. This step gives the finished beer more flavor and complexity, or so say the gurus of homebrewing that I listen to. I may in fact try to do an all-extract beer just to find out if it's true or not.

    I'm not cool enough to do all-grain brewing but that's an awful lot more involved and I'm both broke and lazy.

    Adding Extract
    The camera desperately wanted to take a dive.So this would be the lazy step--I get all the malt extract sugary goodness without mashing or needing weird sounding tools like "lauter tuns". If it looks like a syrup, that's probably not a coincidence since it is a syrup--not that I'd stick it on my pancakes.

    The other bonus about using malt extract is that you don't have to worry about screwing it up and not getting enough fermentable sugars in the solution (brewers call this a "wort"). Believe me, if there were a way to screw up using malt extract, I'm certain I'd find it.

    Hops
    Ewww....I am the first to admit that I had no clue what "hops" were before I started brewing. I am also the first to admit that prior to brewing, I was blissfully unaware of how completely and unbelievably nauseating their smell is. Seriously, I can't remember the last time a smell so wretched came out of my kitchen. See, I'm used to cooking where you take a buncha stuff that's probably pretty good by themselves and stick them together in a way that is cool. Typically, you don't go more than a few minutes without something that seems good to eat. Hops, on the other hand, take weeks to get the edge off at which point it's a good balance between the malty sweetness that you'd be left with otherwise. It's still sort of mystifying and exciting to me that you take this liquid...stuff...and stick it all by itself with some yeast to munch on it and you end up with something as awesome as beer.

    Cooling the Wort
    This is nowhere as fun as it looks.Next, to avoid yeasticide, you need to chill your wort to a reasonable temperature. I was able to take this pot of about 2.5 gallons from 209 degrees where it was at a rolling boil to about 80 degrees in about 20-25 minutes in the sink. This is not to say that it's either easy or fun but I haven't dumped the $40 on a wort chiller that hooks up to the sink yet (I may actually build one if I get crazier). A proper wort chiller is sposed to work in 8-10 minutes so really, other than the extreme inconvenience of sink-chilling, I don't see a huge need.

    For those out in the "Real World" who might be trying this at home, here are two tips that will make this far easier for you: 1) keep the wort moving in the pot, and 2) keep the water moving in the sink. I cheated though and used bottled water to top off the wort which I cleverly fridged beforehand hovering around 30 degrees which brought the entire thing down to just under 65 degrees all told. Hopefully bottled water doesn't have any nasties.

    Primary Fermentation
    Bubble...bubble...damnit, when do I get beer?This would be the first stage of waiting, typically one week as the yeast do their crazy thing. I opted for the plastic bottle this time instead of the plastic bucket because I've been reading posts about how cool it is to watch yeast work. I have no idea what they're talking about. I can't see anything in there through the murk and I wrap the bottle in a towel most of the time anyway to keep the light out. I'm probably going to go back to the bucket next try since it's far more convenient to move.

    Astute readers might wonder why the bottle is only partially full. The bottle therein is a 6 gallon bottle and most batches of beer are only 5 gallons. In this phase, if the yeast are particularly lively, the foam head can apparently be quite large and it'll spew all over the place through the bubbler on top. Also not helping matters, because my last beer was on the weak side, I opted to only go with 4.5 or so gallons instead of 5 to increase the alcohol content (same amount of fermentables...less water...seems good to me).

    One more thing...
    It's a dirty job...Five gallons of beer requires around 50 12oz bottles. Most people (myself included) don't really think about bottles much.

    Welp, it's a dirty job, but someone's got to do it.

    Yeah, you can buy bottles at $10 for a set of 24. At $35 for a set of 24 with BEER in them...well...you figure it out.

    The chili gods are restless
    Don't try this at home.I ran out of chile powder about a month ago. I make my own. These would be chile shreds in preparation for cooking, roughly 100 pods worth of various types. It takes some effort, some dedication, and more than a little bit of pain but it appeases the chili gods.

    In fact, they're looking for worshippers now. I, their humble servant, best not keep them waiting.

    2006/10/25

    Agile or Not?

    I'm a real big fan of one Alistair Cockburn because he's in the past said a lot of things I think are insightful. He's also a proponent of Agile Development which has had some bad press lately. Googlisms of those links aside, I've always been skepitcal (like many) about "Agile" and what it really means. On the other hand, I think there are some really good ideas therein and can't dismiss it out of hand like many do.

    My disclaimer for the discussion that follows is that video game development is crazygonuts different than "normal" software development if there even is such a thing. It seems that as an industry that we've been pretty good about completely ignoring the rest of the software industry--even about ignoring those things that might help us. Though not dedicated to the software part of the industry, there's a lot of good stuff at IGDA's site of which I am now officially a member.

    Then I read this piece which I found from here. As is typical of the works therein, it was interesting and insightful with the one exception of point #3 where he's listing "outdated and inefficient process conventions". Specifically:
    * People work better in private offices.


    This seems in complete disagreement with sources that I've quoted here before. This invariably lead me down the path of trying to figure out what I'm missing which is what I usually do when faced with such contradictions. On the one hand, I respect Alistair Cockburn and don't think he'd lead me wrong intentionally. On the other hand, his statement just plain seemed wrong given the bulk of software culture I know of and even the bulk of my, ableit short, professional exeprience.

    I've ranted about my current workspace before. Others have undoubtedly done the same (and no, I don't have any links handy, sorry). I can also point out that during my last two jobs I had very similar experiences where, in the company of many people, both the quality and quantity of my work has declined dramatically. What I can't point out about my current job that I can about previous jobs, is that when moved back to private workspaces that I got all of that quality/quantity back. I don't think this is particular to me, nor do I think that it was particular to these three companies.

    The essence of what I do on a regular basis is private. I debug code, I read code, and I write code. Timewise, secondarily I also have to track down requirements and read through a pile of emails (typically 100 on a slow day to up to 500 nearing a build) and context switch to fight some fire or another while someone is standing on my desk waving their hands around in a panic. Ok, so the standing on my desk part is exaggeration, but they tend to be very panicky. As a lowly grunt I really don't have a lot of design time nor do I spend time with clients who, in this case I suppose would be management. This has not changed in 6 years.

    Debugging code, reading code, and writing code tend to not require outside assistance. Occasionally I will ask for assistance when debugging someone else's code but that's fairly rare and even then, in the search for info to be able to ask good questions, I usually figure it out without intervention. I don't know if it's just me (I suspect it isn't) but I find that I'm able to get more done by focusing and not being interrupted on all of these tasks than I am with, say, between five and fifty people in the same room.

    Business software as I understand it, is a totally different beast where there's a lot more interactive design between people on a team. I imagine that in those types of situations that you could get a lot more done if you could talk stuff over with the people making the decision especially if you were one of the people responsible for said decision. It probably also helps if everyone within earshot is at least tangentially involved in whatever it is you're discussing.

    None of these are true for me right now in the vastness of the 2000s wing. To my right is an artist. Across the row from him is an artist. Across the row from me is an artist. On my left is the audio tech programmer. Across the row from him is a performance 360 tech programmer, probably the only person in my near vicinity that I have any technical business with. So when the two artists talk about UI graphics and stuff like that, which I have almost no input into, I don't particuarly get anything out of it and it can be incredibly distracting. Don't even get me started about when they start talking about WoW, loudly.

    My conclusion at the moment is that this is a largely cultural difference in opinion where both sides are right in their own context. I'm not entirely happy with that explanation but I'm also at a loss for anything further. I think that if you want your programmers to program, debug, and generally be assigned those tasks that are best handled individually, that sticking them into a huge bullpen with others not of the same department is probably not a good thing. I won't comment on the appropriateness of such decisions on task assignment, but that seems to be what happens more often than not in places I've worked.

    Either way, I'm going to let this one soak for a while; I think I may be missing something here.

    2006/10/21

    Memory Escapes Me

    I've spent a day coming up with ideas to jot down here and yet right now none of them come to mind. Addled though it might be, this happens to be the only mind I'm currently in posession of (though I do change it from time to time).

    And in an attempt to create the worst segue evar: this evening I've watched three extremely fascinating programs on the brain, the most interesting, about Savant Syndrome and the real life inspiration for Rainman Kim Peek. This, sadly, resulted in the completion of only one of my four tasks for the day but that's just one of the many costs of having too eager a curiosity.

    In one of these programs, one particularly clever researcher had a nifty tool that would send crazy magnetic something or others through the subject's head and scramble their noggin to try to recreate some of what some savants' brains do with some very encouraging results. And no, that last sentence wasn't run-on. Assuming there are no long-ranging health problems and the ever-advancing march of technology and our own understanding of the brain continues, this raises some very interesting ethical questions. "Who will be allowed to use the happy brain device?"

    I expect that within my lifetime that we'll be bombarded with many of these which I suspect we may be ill-prepared to deal with. As science procedes, one can only hope that society will also proced, preferrably at an accelerated pace, in order that such questions be answered satisfactorily.

    2006/10/15

    Weekend Cooking

    In a feeble attempt to steer this blog away from how much I hate my job, I present to you, A Weekend In Cooking. I'm also going to try to use the image upload doohickey.

    Adventures in Homebrewing
    mmm...homebrew
    For those not familiar with the brewing process, it typically goes a little something like this:
  • brew a proper wort and pitch your yeast
  • wait 1 week
  • rack (transfer) to secondary fermenter
  • wait 2 weeks
  • bottle the beer into, um, bottles
  • wait 3 weeks
  • get really drunk
    Astute readers might notice that there's an awful lot of waiting around. I'd be on that last one right now one week in. Technically I bottled last weekend, not this one, but I also hadn't gotten to update here either.

    Bottling went OK if a little long and messier than anticipated EXCEPT that my triple scale hydrometer decided to make a bid for freedom. Now I get to randomly pick shards of glass out of my feet in my kitchen which is nowhere near as much fun as it sounds (ow).

    (For those wondering why the glass is mostly empty...I'll leave that to your imagination.)

    Things You Shouldn't Do While Watching Tivo
    OMGWTFBurned!
    That, on the right there, is a very burned yet still somehow very tasty pancake. I make these occasionally when I'm not trying to diet like right now. The Tivo, sadly, isn't even hooked up. These would be the 40 odd episodes I've had recorded since I moved here in February of 2005. The Tivo is very not happy with me but I don't have a phone line to hook it up to. (For the nit pickers out there: I also don't have a wireless network nor do I have an Ethernet cable long enough to reach from the den to the TV even discounting the fact that I'd trip on it every time I went downstairs.)

    Right about here is a better one.
    Better...
    I make these from scratch and, minus the inevitable burning part, they are the tastiest pancakes I've ever had. Yesterday I even splurged on a gut-busting bottle of Grade A Amber maple syrup--a taste from my ever-so-blocked-out-of-memory childhood. If you haven't had maple syrup--real maple syrup--you're totally missing out. Seriously. I'm not just saying that because I grew up in a place where we put spigots in trees.


    Ok, one more.
    Cheesecakes 4tw!
    Probably the first real dessert I could ever make and oddly enough, probably the only thing I can bake consistently and effectively is cheesecake. Those would be attempt #48,123 (roughly) of mocha cheesecakes. I had previously given up on these thinking them to be a culinary oxymoron of some sort but then on Friday night at one
    Hubbard Avenue Diner where I tend to frequent, I had a slice of mocha cheesecake. Oddly enough, it wasn't even that good, but it did convince me to try again. So there on your right is attempt #48,124.

    No clue how it tastes since they're still cooling, but the batter was pretty tasty with just a tiny bit of coffee and a whole huge amount of dark chocolate (Hershey's Special Dark in this case). Two of the bricks of cream cheese was played by a similar amount of Ricotta which I'm told they use in Italy for their cheesecakes--so I figured, what the hell.

    I didn't get to the granola mostly due to laziness. I might just survive this distubring lack of oat-snack, just maybe.
  • 2006/10/01

    Sick

    Yesterday I headed down to Rockford for dinner and games to Erik's place (otherwise known as martiank9 to the right there) with a bunch of friends. Had pizza, played some terribly amusing games including this one, then I went home late, went to bed, and got ridiculously sick.

    They have two cats and two dogs and I am deathly allergic to both. I also recently found out (recently as in about five months ago) that I had outgrown most of my allergy to cut grass which means I no longer have an excuse to pay a ridiculous sum of money to have someone else mow my lawn for me. So I figure "hey, maybe my dog & cat allergies are also better." Yeah. Smooth. NOT ONE BIT.

    So I feel a bit like death warmed over right now and I can't honestly think of when I've been sicker in the last like three years. I also can't get to the things I need to do today on account of not being able to see straight over the throbbing pain in my place where thinking happens. Mowing this week will just have to wait I'm afraid.

    Even more terrifying is that I'm without game at the moment. Sword of the Stars might be an awesome game (I'll know more in about a week) but it is about as incredibly obtuse an interface as I can recall encountering in quite some time. I'm sure I'll rant about that here when I'm closer to coherent. So I'm stuck with Galciv 2 which I've played the hell out of and am quite bored with (though they do have a new patch that I didn't get), Sword of the Stars which requires me to read the manual (um, yeah), and...well...not a lot else. I was dismayed that I could not play one of my favorite games of all time because my machine is somehow incompatible. I know I got an old 486 around here somewhere...

    EDIT: worst part yet? No beer. I'm convinced that the universe hates me.

    2006/09/29

    Friday Wanderings

    Goal: buy an external hard drive, some badly needed beer, and if I'm lucky, score a copy of Sword of the Stars since CompUSA couldn't hook me up. So I ended up at Gamespot. It was on the way, honest.

    This particular Gamespot is near a highly recommended liquor store (notably named "Steve's Liquor" which really couldn't be better but indeed I did not buy my beer there). What I didn't know was that it was almost solely dedicated to console games and Sword of the Stars is most notably NOT a console game. Live and learn.

    They did, however, have ONE SHELF of PC games. Now I'm a sucker for PC games--it's how I grew up. In fact, I'd say that video games have shaped my life more than anything else so to see this entire store devoted to games and only maybe 2% of its entire shelf space holding the PC games which I knew and loved, I was, well, feeling a lot like a gaming coelacanth. Old doesn't come naturally to geeks, IT SNEAKS THE FUCK UP ON YOU WHEN YOU'RE TRYING TO BUY GAMES. Ahem.

    The game I was looking for did not, sadly, exist on that one mere shelf. What I did find, though, was that no less than three of the games I worked on did exist there which was pretty cool. Background bit of this post: enter stage left.

    I am a professional video game developer. I'm a software engineer by trade but most places I've worked have dumbed this down to "programmer" which is only part of what I do. "I went to school to be a software engineer" is partially true. I went to school to get out of Kalamazoo, the software thing happened 5 major changes later. Seven years and a pair of engineering degrees later I landed my first game dev gig and boy howdy, the things they never teach you in college. It's been six years and three companies now and I've somehow outgrown "kid" but am not yet respectable enough to be "senior" which I expect to continue indefinitely. Regardless of age or quality labels, I assure you I'm 100% USDA prime geek.

    Programming is not all I do. Other things that I'm fond of that will show up from time to time: composing, sketching, 3D modelling, cooking, home brewing, gaming, Buddhism and eastern thought and a bunch of other stuff that aren't coming immediately to me. I don't claim to be any good at anything really, but I do claim as many do that I have a somewhat unique perspective and a few pretty words to express it with.

    I dislike talking about myself so that'll do it for now.

    (For those wondering, I did find Sword of the Stars but did NOT buy an external hard drive because I didn't find one I liked. The beers in question would be New Glarus Copper Kettle and Capital Brewery Brown Ale.)

    2006/09/25

    Homebrewing is Like Pipelining

    In an attempt to convince you of my not-saneness, I offer the following. This transcript somewhat modified to protect your hardworking bandwidth.

    [16:16] ktorrek0: somehow i've managed to find $60 worth of brewing supplies THAT I CAN'T LIVE WITHOUT
    [16:19] ktorrek0: it took all my willpower to not buy another recipe kit too, let me tell ya
    [16:19] ktorrek0: but i did buy another secondary fermenter so i can dangerously have two batches going at the same time
    [16:19] martiank9: that can't end well
    [16:19] ktorrek0: considering i barely have enough bottles for the one batch, it sure can't
    [16:20] martiank9: i think that means you have to buy more bottles
    [16:20] ktorrek0: or drink more beer
    [16:20] martiank9: and really, can't you be content with one batch at a time?
    [16:20] ktorrek0: um, no
    [16:25] martiank9: I don't think this is a good hobby for you
    [16:25] martiank9: there's too much waiting
    [16:25] ktorrek0: this is why i need more bottles
    [16:25] martiank9: how will more bottles help? Do they accelerate time?
    [16:26] ktorrek0: no but you can keep more beer going so that you get a new batch every week
    [16:26] ktorrek0: think of it like pipelining
    [16:26] ktorrek0: which is probably not something that anyone's ever done
    [16:27] martiank9: you can't be the only home brewer who has wanted to stagger batches so they get new beer every week
    [16:27] ktorrek0: yeah but i'm probably the only one who's ever tried to explain by using an obscure microprocessor reference

    For those who are unfamiliar with the term, Pipelining is roughly defined as breaking up a big instruction into multiple baby-steps so you can keep every unit of the processor doing something rather than hanging out waiting for the next instruction. No, that sentence wasn't run-on. Bear with me here.

    In the bad old days CPUs did an entire instruction from start to finish in one clock cycle. This worked pretty well except that, hrm, those math units are sitting around doing nothing most of the time, and arg, that memory subsystem is just hangin' out there and...well you get the idea. So we can make this thing better, stronger, faster by chopping up our instructions into smaller bits that can all be done in parallel putting those lazy units to work! Hence pipelining.

    Your old instruction took N microseconds to complete for pretty much every instruction. NOW you get N microseconds for the first to complete then N/pipeline depth microseconds for every additional one...in the ideal case of course. So now in your ideal case you can get more work done per unit time. Woot.

    Enter Homebrewing
    Now, I'm a total homebrewing n00b (I've had my first batch going right now for about a week). The basic phases of brewing beer defined as "me having to do any work", are primary fermentation, secondary fermentation, and bottling. In places where I read about such things, the generally accepted rule of thumb is 1 week in primary fermenter, 2 weeks in secondary fermenter, and 3 weeks in bottle before consumption. Basically. So we're talking six weeks per batch here...and jeez if I'm not killing myself just waiting around...*lightbulb*.

    So enter a couple pipeline registers (gigantic bottles to hold not-quite-ready-beer) and I can now have multiple batches going at the same time. Granted, 5 gallons of beer in a week is a bit excessive even for me so I'm probably going to wait another 2 before starting the second batch.

    So there you have it: Homebrewing is Like Pipelining.

    2006/09/20

    Blogging, yeah

    *stab*
    I am barely sane. Go ahead, ask anyone who knows me. You won't be disappointed.

    randomness
    I often come up with crazygonuts things that sane people wouldn't consider but that's kind of what I do. And just when you think you figured out my craziness....*BAM* I'm somewhat normal (or sober). I might even stick to a crazy "middle of the road thanks much" stance for random things. I defy your feeble attempts at prediction!

    barely coherent
    I tend to be very wordy. I can't help it! I also switch styles a lot from common vernacular to research-like-whitepaper-makes-people-want-to-shoot-themselves form. It's because I learned to write in Grad school. You're still here reading my ramblings so try not to make a mess; exit wounds tend to be very sloppy.

    ...back in my day....
    I've been around a while, done a lot of things, and did this blogging thing before we had a word for it. Seriously. My original blog was started in 1995 and you can see where it used to be here (no, I can't actually fix the mimezine link to point here because I can't remember my umich password). I knew HTML (like raw HTML) back when that meant something.

    I have an eclectic memory that occasionally acts up. Sometimes I point out weird shit like the fact that a one pound lobster is about 7 years old. Sometimes I forget what I ordered at lunch.

    so what?
    Sometimes I might have a point. Most times not. Sometimes you gotta dig for it to figure it out but I'm probably not going to tell you I have a point unless it's about to smack you with the subtlety bat.

    this is my gun
    And this is my blog. Again.