Hit My Goal Today!

| No Comments | No TrackBacks
I think I just have to give up the pretension of ever hoping to get anything written on a weekday.

I'll see you all tomorrow, or more likely Saturday.

In the meantime, though, I've been doing a teensy bit of work.  It's all in C# and so not really usable, but I hope to play around with the interface and some actual gameplay.  I'm hoping to get something that resembles fun without any narrative or anything.  I'm sort of doubting my ability to do that, but we'll see.  I'll go into more detail when it isn't post-1AM and I have to be up in a few hours.

Here's some proof:

A Slow Start

| No Comments | No TrackBacks
Since Washington State and King County have abandoned the sacred institution of the secret ballot in favor of saving some change and forcing everyone to go buy a stamp and mail in their votes, I had to spend much of this Nov. 1 doing my democratic duty with a pen.  Other duties performed today, include, but are not limited to: fatherly, husbandly, and juggle-ly.

Anyway, I had like 20 minutes left in the day to work on it.  I decided since it was only a small amount of time, prototyping would be a good idea!  I fired up the ol' Visual Studio and created a new C# program--my prototyping language of choice, due to its rapid compile and coding times, without giving up such niceties as a familiar syntax and strict compile-time typing--and realized, staring at a WinForm, that it would be sort of a pain to get sprites on it moving around and doing things.  In retrospect, it probably wouldn't really be that bad.  But it seemed pretty unpalatable to me at the time.

So I went and (spent quite a lot of time) downloading XNA Game Studio 4.0, having used the 2.0 carnation to create a game rather successfully and enjoyably in the past.  The goal here is still to target mobile devices with code mostly in C++ (and XGS4 actually targets Windows Phone 7 (aliass WP7, WinMo7), though I probably won't be using that--I hear there's no native code at all!)

Anyway - the goal, as I said - is a quick prototype on the PC.  Hopefully I'll be able to mimic finger gestures to some extent with a mouse (laptop track pad may prove helpful here).

Speaking of XNA Game Studio 4 - if you just want that package, and not all of the other crap (like a free version of VS 2010 that won't install if you're still on XP--nevermind that the paid version installed fine on XP), then you can grab it here:  http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9ac86eca-206f-4274-97f2-ef6c8b1f478f

Tomorrow:  Some actual progress (I hope), plus I talk about games on the Kindle! Though only briefly and tangentially, so don't get your hopes too up or down.

Quick Note

| No Comments | No TrackBacks
I was planning to get this out yesterday, but it appears the clock has just rolled over.

Anyway - November is, of course, NaNoWriMo.  I will be picking up the game thing again.  There will be no StarCraft 2 to distract me half-way through though!  (Although Rock Band 3 did just come out, I think I can restrain myself).

So, the goal:  1.5+ hours per day working on the game.  Either design thoughts, coding, prototyping, etc.

I'm sort of scared about prototyping here.  I have a feeling I'll get something workable in a nice easy-to-code-in language that is fun and then have no desire to write it again "for real this time" in a more-phone-friendly language.

I guess it'd run on WinPhone7, though.

(I suck at Quick Notes.  Anyway, see you guys with an update in about 23 hours.)

Phone!

| No Comments | No TrackBacks
I received, about a week early, my Droid Incredible in the mail today!  That was cool.  I plugged it in, promptly rooted it and made a restore backup image to NAND.  I'm considering doing the overclocking/custom ROM thing, although I'm mostly interested in an early copy of FroYo (rather than waiting for the Sense-UI OTA version).  Since I'm still getting used to things, I probably won't miss Sense if I do that.

I also synched contacts with my Gmail account -- I'm not so sure that was a good idea.  Now I've got a phone contact for every last person I've e-mailed (it feels like).  support@paypal.com?  Ugg, why is that there.  I've got some pruning to do.  I found an option to trim it down to just those I had phone numbers for, but my contact book was pretty sparse on that.  Guess I'll have to rectify it.

Game-wise:  I've done a bit more thinking about how things should work, and it's not exactly TDD worthy but at least I have some solid thoughts on the matter.  No plan survives the enemy and all that, so I think my next big coding step (after fixing the snafu I'm about to describe) will be to figure out how to Profile this stuff.  Whether I wrote my own code (probably necessary), or can somehow use the Android tools.  I'll also try debugging on my device, since I have that now.  Should be fun!

So, as things currently stand, about a few hours into making the document I got bored and wanted to write some code.  I coded up a C++ test rig and wrote a few test cases for my reals class.  Ideally, I want the reals to work like any other built-in type, so this means I've got some operator-overloaded muck to deal with.

The usual stuff wasn't that big of a deal:  arithmetic and arithmetic-assignment operators are all done, as well as logical comparisons--inequalities (and equalities, I suppose). I had also coded up some constructors, assignment operators, and some cast operators, but they were causing me no end of grief with the equality operators.  Briefly, it couldn't decide how to handle equality, so in a case like this:
  real r = 32.2f; float f = 32.2f;
  if( r == f ) { // ...
it would call real(32.2f) to convert that number to a real type, but then when it got to the second line, it didn't know whether to call real(float) with f to convert f to a float, or to call real::operator float() to convert r down to a float before it could compare them.  And then there was some ugly template mess thrown into the mix.  (The fixed-point version of real uses an int template to determine where exactly the point is.)

Anyway, I solved that problem by getting rid of the constructors, but through some sequence of events that eludes me unless I sit and think really hard (like, with pencil and paper) about it, it managed to break my list class (and my vector class).  Something about how my list was expecting <T>'s (just any old type), but I guess it was trying to construct them and that didn't work, and so I tried to change it to take pointer-to-<T>'s, but that doesn't work in the simple value-case where I don't mind if it gets copied around.  That is, I can't just have a list of ints (or vectors) anymore, I have to specifically allocate each one somewhere and then keep track of it.  It's sort of a mess.

I've downloaded a few STL implementations and if I can manage to decipher the typedef/macro insanity that all STL implementors feel is necessary, I'll try to do something similar in my own class.  I suspect I may have to create my own allocator for the case where I want to store simple value-types that are larger than a native pointer.  This isn't a huge problem, though, since I was planning on creating a couple fixed-size allocators to use for such a purpose.  I'll just cordon off a smallish chunks of memory near the end for 4, 8, 16, and 32 byte allocations and be happy (well, maybe not 4 bytes, that's a bit small).

Goals for the immediate future include: figuring out what chain of events fixing my real type causes lists to explode, documenting it, and fixing all of that so that it compiles.

Oh, I should manage that I have like three working directories now.  My trunk, which I've sort of given up on because it's in all sort of non-compile state:  I was trying to port some things around and it's been a while since I looked at it so all I know right now is that it doesn't compile.  I spawned a new repository from the latest commit in that (which compiled), and used that to fix some of the issues I discovered while writing the test cases.  I was able to commit those changes, push them back into the trunk repo, pull and (seemlessly!) merge those changes down into the test repo, and then push a bit of the test rig setup back to the main repo.  It was all so smooth.  It's amazing!  SVN has nothing on this.  (I hear Perforce might be okay, but I have to wonder how much the cost of it helps indoctrinate its users into thinking it's so great.  While that can be had for free for individual users, I can't imagine it being as painless to use as Mercurial is.)



Weekdays are so short

| No Comments | No TrackBacks
I realized I was going to talk about my goals, but I didn't really set them.  Or well, I probably did, but I forgot about them once they were achieved.  I'll write them down next time.

I spent a pretty amazing time this weekend hammering out some things on the game.  First, I had fixed some pernicious bugs that were plaguing my graphics system.  I can now appropriately texture things (with different! gasp textures).  The issue seemed wholly unrelated, and I think is another problem with the OpenGL implementation (which is a software renderer, I discovered.  Although I'm not sure why that's surprising, since I'm running on an emulator anyway).  It turns out that the GLES spec specifies that the GL State should remain completely unchanged if an error occurs in a function, as if the call was never called at all (there's an exception for out of memory errors, which are allowed to totally break everything completely).  Well, turns out one of my calls was producing an error, and fixing that was a necessary, though not sufficient, part of the solution.  It turns out that two of the parameters you pass to the function to glTexImage2D (the function to configure 2D Textures) need to be the same, and I was accidentally passing in different values - I had written some code to derive the second value based on the texture as loaded from the file, but the first value was old code from where I was assuming everything was the same.  I don't really remember what else I had to do to get it fixed, but it did eventually happen.  Here's Proof:  


By Sunday, I was growing pretty tired of working with C++, so I dove into the much friendlier C# and whipped up a pretty awesome tool.  I now have a nice command-line utility and a bash script (I was apparently not content to go completely without suffering) that will take a directory, compress it to a new file with zlib, and then combine those files into a custom file format.  It's essentially gzip + tar (or just a .zip archive, on Windows), but less general, and probably better compression since I throw away directory information.  Also I didn't have to look up the tar format and could roll my own pretty easily.  The tool also outputs a header file for inclusion in C/C++ that creates identifiers for the assets based on where they are in the filesystem.  So, after running bpack on /assets, I can refer to the file at /assets/foo/bar.tga as BPKID_FOO_BAR_TGA.  You didn't think I was completely throwing away the directory structure, did you?  In the header it's just #defined to a unique integer.  The idea being I can write a module (some of which I've written today) that will associate the number with an offset in the archive, and then read it, un-zlib it, and return the data when it's requested, and that throughout the rest of the game, I can just ask for assets by their BPKIDs.

Speaking of the amount of work I've gotten done today, it feels like virtually nothing.  And I keep running up across questions I've been putting off.  Things l like "where should the memory for this be allocated?" or "Which module should be responsible for x" or "On an error, should I halt here?  Throw up a return code?  Keep going if I'm in a relatively recoverable state?"  I should really whip up a technical design document which begins to address these things.

I started on something like that once, but it got hard to think about and so turned into a Coding style document.  I don't need a coding style document, it's just me!  (Although it probably wouldn't hurt, since I do tend to change my style slightly from day to day because I think something seems a little better or worse for the situation at hand--e.g. sometimes int Value() feels nicer to me than int GetValue().  It would definitely behoove me to stick to something logical).

So, there you have it - my goal for tomorrow is to come up with a draft of the document which will describe what I'm trying to accomplish with each module at nice medium-depth level, so that I won't have to worry too hard about making those decisions while I'm coding, which will hopefully let me just code, and not have to pull my head out and start thinking about the big picture.  I'll have a postcard of the big picture next to me so I can just do what it says :)


Progress!

| 1 Comment | No TrackBacks
I've been scolded for not having written lately.  It was a combination of factors, but largely the fault is mine.  I am now amending the situation, hopefully.

An interesting thing happened, which is that it got a bit harder to keep doing work as the month wore on.  This feels very much like the mid-week demotivation that also occurs in NaNoWriMo, which I thought was interesting.  Combined that with one day forgetting to bring home the power to my laptop, a growing desire to play some games, a house to myself all evening, and Mass Effect 2 already installed, and sitting with just a few hours in it yet, and I missed a day of work, and the next day it was also hard to pick myself back up again.  I think that after today, though, I probably caught up with most of what I missed.

I ran CLOC on my project and was surprised by the results:  only about 2000 lines of code, maybe another 1000 of whitespace and comments.  I would've thought it would have been much more than that, but that shows what I know.  (And a bunch of that is stuff I #included, like hundreds of lines of GL declarations).

There's been a few things that have cropped up over the last few days that I wanted to highlight.  Here goes:

  • Old Spice has won advertising by creating TV-quality short YouTube responses to about two hundred people who posted on the internet (sometimes not even to them).  These are absolutely hilarious.  Everyone else go home and try harder.  How they did it is pretty interesting, too.
  • I ran across Cliffski's blog again yesterday, and stumbled across this list for staying motivated on the game you're working on.  It was a nice read, since I was struggling with that.  I seem to have overcome it, though.
  • I managed to fix the doorbell - turns out there were a few jumpers on the inside of the ringer and the speaker.  I was able to find the instructions online and change it so that it didn't interfere with our neighbors, and it now plays a nice normal 2-chime "ding dong."  It holds the last note a little obnoxiously long, but I can deal with it.
  • The 12th has come and gone and I didn't get a call from any of the 3 or 4 Verizon retailers I asked to call me when the Incredible got back in stock.  I'm guessing they have them and they're just lazy, but who knows.  Gives me more time to double-check to make sure that paying extra for the phone and buying pay-as-you-go minutes isn't a better deal (for my usage habits) than signing up for another 2 year contract.
  • C++ syntax is a terrible terrible thing.  Also, I'm weirded out by the sorts of things that the compiler doesn't catch because they're legitimate syntax (apparently?) but then the linker barfs because it's not quite what you meant and so something is undefined.  For example, consider this code:
// header file:
class Foo {
static Foo * blargh;
static Foo * GetFoo();
}

// cpp file:
#include "foo.h"

Foo::Foo * blargh = NULL; // WHY WAS THIS COMPILING.  Should be Foo * Foo::blargh;
Foo * Foo::GetFoo() { return blargh; }


So, the game!  I've got things refactored well enough and objects back on the screen and doing their happy dance.  I've spawned some threads and have input and a gameloop (well, almost--input isn't really there yet) going.  I made a video, but really it's pretty dull.

I've got Mercurial up and running on my website and have been committing code to my local repository and pushing it up there today; so that's cool.  I keep forgetting, though, and I'm treating it more like SVN where I want to commit as infrequently as possible.  My goal here is to basically commit whenever I've got something decent and compiling.

I should maybe look at getting some type of debugger up and running, though, because printf() debugging is getting a little old.

Also, I just need to figure out a whole bunch of boring underlying stuff that isn't done yet.  I need to decide how I'm loading things from [ROM, the FileSystem, whatever], as well as what I'm going to do about memory allocation.  I've been avoiding templates, too, because someone who's opinion I trust was vehemently opposed to them for the bloat in the size of the code they produced.  When you've only got so much memory, having your executable take up too much of it can be a problem.  Also, larger code tends to be slower, since you'll have to suffer through more cache fetches (pulling the instructions from RAM into the processor's working storage (i.e. cache) so that they can be executed) to get the same amount of work done as smaller code.

I need to write up a bunch of these utility functions and proper test suites for them.  I've been avoiding that, but I was bit by a bug today where a float was being cast to an integer for some reason and so nothing was happening (the value was <1, so it became 0, and then when it got multiplied into the rest of the equation a whole lot of nothing happened).

Also, just now, I seem to have discovered a Texturing bug.  I'm not sure if it's my fault or just another bug with glDrawTex_OES() on the emulator, but calls to glBindTexture() don't seem to change the texture that it's going to be drawing with.  I don't get it.

I'll talk to you all tomorrow, and let you know what my goals were for the day, and what got accomplished.  For real!

Bad Programmer

| No Comments | No TrackBacks
I have to admit, I've been a little delinquent on my work so far today.  I poked around at the code for a few minutes, and then spent some time diving into Replica Island to see how they a few different things.  Pretty much a lot of nothing happened today.  My goal is to make up for some missed time by doing an extreme coding weekend, since I did that the first week and I felt really productive and happy about it.

But that's okay, because I found this:  http://tinyurl.com/chrome-stayfocusd--a quite configurable extension for Chrome that helps you stay on task by limiting the amount of time you can spend daily on a list of blocked websites.  I found it looking for a way to block google reader for free, without having to block all of google.com along with it (the HOSTS trick failed when I discovered google.com/reader in addition to reader.google.com.  Alas.)

Anyway.  This thing looks super-amazing!  I'm so psyched.  I struggle pretty hard with procrastination, and I can use this to take out my largest outlets (particular websites) where I tend to waste my time.  I mostly only use chrome now, so while it's still possible for me to fire up FireFox or IE to go waste time, I can't really see myself doing that.  Both of those browsers feel so slow and bloated now that I've continued to drink Google's Kool-Aid.

Also, Summer is apparently over.  I hope you all enjoyed it as much as I did.  Most of today was spent in the 50's, with a 6pm high of 68 degrees.  When I got home the windows were open and before it even got dark I had to put on a sweater.  A SWEATER.

Here are some depressing graphs, courtesy wolframalpha:

graph showing the temperature every hour from mid-June to mid-July.  There are five peaks that go higher than the rest, indicating that the five days previous were over 70 degrees farenheit
Note the precipitous decline to the pre-summer period of Jun 14 - Jul 4.  This is even worse:

graph showing the median daily temperature for every day from 2009 July to 2010 July.  The summer of '09 is warm, but the temperature remains relatively constant for most of the Fall, Winter, and Spring.  There are some cold weeks in Winter, and a very gradual upward slope, the mean changing from about 45 degrees Farenheit in January to about 55 degrees in May and June.
Note that today apparently isn't on that chart, or else it would be back down there with the rest of the temperatures between September and June, excluding the week or so in December it dropped below freezing.

Oh, so, I didn't really mention this, but I'm not going to stay up (too) late killing myself working on the project.  Instead, I'm going to work out a little in the morning!  The ! is because I'm scared.  I've never really had to or tried very hard to take care of a body before.  I wonder what it will be like.  I also bought some multi-vitamins, that's how you can tell I mean business.  Workout courtesy myfitstream.com, which actually looks a lot different back when I was beta-testing it I confused with fitstream.com (understandably, I hope you'll agree).  The site's still in beta, I suppose, but the initial pitch is this:  free accounts get a new work-out every week of some pre-recorded VODs (think youtube) of exercise routines that target the areas they want to work on, and use the equipment they have indicated they have available at home.  Premium accounts get access to that, plus they get custom-made VODs (basically, a virtual personal-trainer), and maybe something else.  I'll try it out and report back whether the exercise kills me.

[Update]:  My wife is drinking hot chocolate.

Sunday Update - Social Games Edition

| No Comments | No TrackBacks
Unlike last week, I didn't really totally grill myself this weekend working on the game.  I sort of feel like I got a lot less accomplished, though I felt like there was more time for other things (or that other things happened at all).

Going to the park with the family yesterday was definitely a good thing, but I don't really know what all I accomplished today.  In fact, I'm pretty sure there wasn't much at all.

Well, I know what I accomplished - I (almost completely) explored a new area and completed the quest in it with some online acquaintances in a game.  I've had some sort of thing brewing against what I'm calling Social Games--the kind of games that leverage the (in my experience, in-game) community that they build up to keep you coming back to them and playing them.  I feel that they're dangerous because you can sink a ton of time (and I mean a ton) into these things without really anything to show for it.  You have some great experiences and neat stories to tell, but they don't really transfer that well to others who don't have a similar basis for understanding it.  That is, nobody wants to hear about your raid.  I don't want to say that they're unrewarding, just that I'm not sure the rewards merit the rest.

I feel like it's unnecessarily focusing your time spent playing games (consuming game media) on one narrow aspect.  This is a terrible analogy, but it strikes me as similar to listening to only one style of music, or only watching tragedies on stage or something.  As I write this though, I'm growing to see it more in the light of a depth vs. breadth of experiences question and considering that choosing depth may be acceptable choice to some.  But I've been really turned off to it, lately.  Between Wives of WoW, and my own experiences playing on a MUD as well as the revelation I had when I quit these sort of games completely coming off of Evony/Civony, I've got a pretty bad taste in my mouth for what these games have to offer in relation to what they demand.

I don't really want to come out and say they destroy your social life, but I think it's easy to see the feedback loop wherein 1) you establish very real relationships with online friends and 2) you spend time with your online friends, preventing you from doing so with your real life friends and 3) each time you play, you're making a decision to join one group of friends over another, and the more you make it the harder it is to break.  Not a problem for everyone, of course, but I spent a ton of my time playing a trash game I wish I hadn't because I had forged friendships with some folks and enjoyed exploring and exploiting the game mechanics with them, and the general camaraderie that developed from doing that.

Now, that's just in the case where your real life friends don't also game.  I guess that could also be good, but I imagine the case where one player gets more into it than the rest and surpasses everyone else, causing them to lose interest because they can't keep up is a common one.

Anyway, I've gotten back into my MUD a bit because I'm getting really excited for Guild Wars 2.  They seem to be addressing a lot of the problems I have with MMOs.  The two biggest things I want to highlight are these:
  • No need to waste time looking for a particular type of player - everyone can control, support, or damage (that is: tank, heal, and blast)
  • Events affect the world.  Actually.  I see the potential for stories and world involvement to be much more.  Your story and experience is now not just the cool thing you did, but also all the knock-on effects that it might have, and how the world has changed because of your success or failure.
But there is a ton of things in general that look really good and really fun.  Check out some of their talk about game design choices at their adver-blog-site-thing:


[Disclaimer: I have friends who work at ArenaNet, the developers of Guild Wars and Guild Wars 2.  I have received discounts on their products in the past. I'm not getting anything out of writing this, though.  I hate that the FCC have decided I need to write this.]

Oh, right, the game!

Well, I got it compiling again and things organized much nicer.  Not much more progress than that, though I have discovered that the GL_VERSION strings aren't consistent across GLES version! Can you believe that?  Total madness!  So, like, there might be some future version of OpenGLES that my game just totally barfs on because they have decided to change the string around again.  Insanity!

cf the 1.x version and the 2.0 version!  1.x looks like "OpenGL ES-CX M.m" and the 2.x looks like "OpenGL ES M <V>".

X is one of M or L, to indicate Common or Light
M is the major release number
m is the minor release number
<V> is vendor-specific-information, whatever that means.

Now that I know that, I can figure out the version pretty easily, but of course there's no reliable pattern for knowing what future versions will look like (let's hope they stick with the 2.0 pattern, but I don't know what to expect).

Tempting Fate

| No Comments | No TrackBacks
So this whole "write after I'm done each day's work" thing isn't working out too well, as you may have noticed from the lack of a post yesterday.

So now I'm going to commit to just sitting down at 11 and pounding one out.  Shouldn't be too hard to do.

I tempted fate yesterday at lunch by mentioning to my coworkers how there had been 3 clear days in a row, with bright blue skies and a nice view of Mt. Rainer.  By the time I left work for the day, the entire thing was back to the usual overcast.  Although it was a nice sort of orange-ish pink, as if the sun were shining through somewhere.

Today, though, I felt properly chastised and nature relented and let it be bright out again.  We went to the beach (I use the term loosely) where my daughter did not like the waves, did like the ducks, and sat still playing with rocks long enough for me to build a sand castle (again, loosely) around her.

As far as programming goes, I spent a few hours last evening and some time today on it.  It certainly feels less productive when I'm not necessarily producing more builds or adding features or anything.  Mostly, I've been re-arranging and rewriting the code I do have.  I had been being really lazy and dumping most everything I needed to get it to work all into one file, which was getting pretty monstrous and disgusting.  It was also getting hard to add new code without proper function definitions/header files.  I'm refactoring quite a lot, with the focus on separating different functions into different files appropriately and separating out the interfacing-with-SDK-specific things from the core engine to ease the whole cross-development thing I've got going.  I'm still struggling with how I want to declare things, and what's going in which header files and all that.  I've got to just go with a 'what-works' approach for now, and worry about making it nicer later.  I don't want to spend too much time on stuff that isn't really going to be important.

I promised Programming Potpourri yesterday but didn't deliver.  I apologize.
  • Whenever someone rings the doorbell our neighbor's house across the street, ours rings to.  It played Westminster.  I have since removed the batteries.  We need a new doorbell.
  • After googling for long enough, I found the OpenGLES 1.1 and 2.0 man pages.  Yay!
    • http://www.khronos.org/opengles/sdk/1.1/docs/man/
    • http://www.khronos.org/opengles/sdk/docs/man/
  • If you're using Chrome, this plug-in will render the MathML on those pages (or anywhere, really).  It's sweet:  https://chrome.google.com/extensions/detail/elbbpgnifnallkilnkofjcgjeallfcfa
  • Speaking of Chrome, it has totally spoiled me.  Whenever I use an application which doesn't automatically adjust tab-widths so that the next tab's close button is immediately under my mouse cursor after i click to close one tab I get frustrated at having to mouse around.  It's like Fitts' Law 101.  You can resize them to an appropriate width after I move my mouse away, thanks.

Another Beautiful Day, Another Late Night

| 2 Comments | No TrackBacks
We've had two days in a row of bright blue sky and sunny hot weather!  It's been like 11 months at least since this last happened!  I've never really considered myself much of a summer person, instead preferring to stay huddled inside around my Air Conditioner, but Seattle is really turning me into one.  I ate lunch quickly today, then spent a half an hour or so chucking a frisbee around.

Also, had friends over and I played Carcassone tonight.  Hadn't played before, but I won, barely.  I had one point more than the next guy, although I did get to take one more move then everyone else (netting me like 5 or 6 points), and also after we were done there were claims of finding a few extra tiles my daughter had hidden under the table.  Oh well!

Got started with the game pretty late, but I accomplished a few things:  Got my Mercurial Repo set up at my website, managed to determine that GoDaddy won't let me install a certificate I didn't buy from them on their cheapo-hosting-plan, and fixed a pernicious bug I had introduced into my code (turns out things don't get constructed if you declare them as static or just malloc them and cast the pointer! Whoops.  -- Also, I can't believe it's been so long since I've used objects correctly that I've forgotten about this.  I guess I am much more of a C programmer now than C++... weird).  How could I have forgotten the new.

Also - holy crap I have an optometrist appointment early tomorrow.  Yay new glasses, eep still being up this late.

Looking forward to the potpourri tomorrow.  I hope I haven't forgotten too much of it - I should really write this down next week.

Find recent content on the main index or look in the archives to find all content.

Recent Comments

  • phantomflute: Hooray! You're back! I enjoyed the Old Spice commercials; after read more
  • clayton.hughes: Absolutely! I played frisbee again today, we attempted a little read more
  • phantomflute: Yes. This is what Seattle does. It beats you down read more
  • phantomflute: I still have no idea what you're talking about, but read more

Recent Assets

  • yeartemp.png
  • monthtemp.png

Tag Cloud

Categories

OpenID accepted here Learn more about OpenID
Powered by Movable Type 4.3-en