<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:doctorcomputer</id>
  <title>Adventures in time and space...transcribed in future tense!</title>
  <subtitle>Let me tell you of the days of high adventure!</subtitle>
  <author>
    <name>doctorcomputer</name>
  </author>
  <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom"/>
  <updated>2009-06-01T21:31:52Z</updated>
  <lj:journal userid="10446600" username="doctorcomputer" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://doctorcomputer.livejournal.com/data/atom" title="Adventures in time and space...transcribed in future tense!"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:37880</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/37880.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=37880"/>
    <title>Behold: Project V!</title>
    <published>2009-06-01T21:31:52Z</published>
    <updated>2009-06-01T21:31:52Z</updated>
    <category term="projectv"/>
    <content type="html">&lt;a href="http://dijkstracula.net/projects/mud/mud3.png"&gt;Who says Tom is the only one allowed to have a secret project of super secretness?&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:37593</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/37593.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=37593"/>
    <title>doctorcomputer @ 2009-02-26T16:08:00</title>
    <published>2009-02-26T23:08:28Z</published>
    <updated>2009-02-26T23:08:28Z</updated>
    <content type="html">"Dear Mr. Taylor:&lt;br /&gt;&lt;br /&gt;Congratulations and welcome to the Department of Computer Science at the&lt;br /&gt;University of British Columbia!  I am pleased to advise that subject to the&lt;br /&gt;approval of the Faculty of Graduate Studies, you will be admitted to the&lt;br /&gt;M.Sc. program beginning September 1, 2009."</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:37252</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/37252.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=37252"/>
    <title>1 for 5!</title>
    <published>2008-08-14T19:04:35Z</published>
    <updated>2008-08-14T19:05:17Z</updated>
    <content type="html">&lt;i&gt;&lt;br /&gt;Dear Mr Nathan Taylor,&lt;br /&gt;&lt;br /&gt;Congratulations on your admission to the BSc with Specialization program for the Fall Term 2008! For more information on your admission please review the Admission Application Status page in Bear Tracks, &lt;a href="https://www.beartracks.ualberta.ca"&gt;https://www.beartracks.ualberta.ca&lt;/a&gt;. You must also ensure any outstanding items are received by the deadlines.  SVP appuyez ici pour une traduction française/For a french translation of this e-mail, please click on the following link: &lt;a href="https://www.csj.ualberta.ca/registraire/admission.htm"&gt;https://www.csj.ualberta.ca/registraire/admission.htm&lt;/a&gt;&lt;br /&gt;&lt;/i&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:36998</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/36998.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=36998"/>
    <title>doctorcomputer @ 2008-08-04T12:24:00</title>
    <published>2008-08-04T18:57:16Z</published>
    <updated>2008-08-04T18:57:16Z</updated>
    <content type="html">Aah, thank goodness for long weekends, especially when the weather is just warm enough to be pleasant but not so hot as to drive me downstairs to the comfort of my &lt;s&gt;fortress of solitude&lt;/s&gt; basement!&lt;br /&gt;&lt;br /&gt;So I spoke to Hoover and Sharon about my admission, and the said the reason I keep getting turned down is because I had a year with a GPA lower than the minimum admission requirement (never mind that this was at McGill, in 2003, when I was in the faculty of Music, but yeah...if it's arbitrary and something that will screw me over, it's something the Faculty will do!)  They've written me a letter to get me admitted to specialization; apparently Honours is out because I supposedly only have one year with an honours GPA (something that the astute reader will recall is &lt;a href="http://doctorcomputer.livejournal.com/16002.html"&gt;incorrect&lt;/a&gt;), but I'm free to take the honours seminar and reapply right before I convocate.&lt;br /&gt;&lt;br /&gt;Apparently, I only have three remaining classes to take before I can graduate!  I need one generic class and two 400-level CS classes for specialization; one generic class and four 400-level CS classes for honours.  Part of me just wants to take it easy and only take a few classes to wrap up this year nicely, but another part of me knows that I'll regret not taking [random CMPUT class] down the road.&lt;br /&gt;&lt;br /&gt;For the fall, I'm thinking MATH 217, CMPUT 340, and CMPUT 415, in addition to orchestra, TAing, side projects, and the cluster challenge (have I mentioned that yet?  I'm on Paul Lu's cluster team this year, where we set up several scientific computing applications as best we can, fly to Austin, and complete against other schools.  I'm the primary on a &lt;a href="http://www.msg.ameslab.gov/GAMESS/"&gt;quantum chemistry&lt;/a&gt; program and am one of the sysadmins.)  The winter will depend on whether I want to try to squeeze in three 400-level CS classes in a term; or, more precisely, whether I can find three 400-level CS classes offered in the winter that I want to take.  Currently, I'm thinking 474, and 497 (a new course of Paul Lu's, which I think is to the cluster challenge what Piotr's problem solving class is to ACM-ICPC), and I'm currently enrolled in 401 as well, but I'm not expecting to stay in that class.  If the new chair actually manages to get &lt;a href="http://www.cs.ualberta.ca/~pawel/COURSES/485/cmput485.html"&gt;CMPUT 485&lt;/a&gt; resurrected, then I'll definitely take that as well.  So we'll see.  Lots of options. :-)&lt;br /&gt;&lt;br /&gt;So two of my three summer camps have finished - mercifully, interest in the second robotics camp was so low that it got cancelled, so I get the week off to do random office administrivia and write reports and whatnot.  I'll probably write about it after they're all done, but let's just say that my fears about C#/XNA being too advanced for most people, and that people would take the "programming experience recommended" prerequsiste not seriously at all was &lt;i&gt;completly correct, wonder of wonders&lt;/i&gt;.  Seriously, out of 18 students, &lt;b&gt;three&lt;/b&gt; had programmed before.  Basically James and I had to run around the room, pretty much just writing people's games for them, and while we were helping others, the rest of them would generally be playing Flash games on newgrounds or whatever.  When we offer the camp again in two weeks, I'm going to say that we pretty much spend the first day doing basic programming and OOP tutorials, whether they find it "fun" or not.  &lt;br /&gt;&lt;br /&gt;It's been interesting to see how these camps have been run; even though I did Discover-E one year, basically my entire summer camp experience was at MusiCamrose (band camp woop woop).  Now, see, the thing about MusicCamrose was that it was intense; you couldn't help but become a better musician after spending as much time rehearsing and practicing as one did at that camp.  Now, that's not to say that you didn't get time off to goof around and whatnot, but by and large you where there to &lt;i&gt;work&amp;gt;&lt;/i&gt;.  And it was &lt;i&gt;awesome&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;The U of A summer band plays a concert at the music camp every year (which has since moved to Red Deer and renamed itself MusicCamp Alberta), and before the concert I chatted a bit with the trombone teacher, who is an old friend of mine, and also teaching at the camp for the first time.  I asked him what he hoped to guide his students towards, and he replied that he wanted them to get it into their heads that they're not in their band class anymore; rather, they're at music camp, so you've got to step up.  What a wonderful idea this is!  There's no pandering to this notion that "the kids have to be having fun, even if their idea of fun is to be screwing around".  I guess I expected a bit more of that and a bit less babysitting / explaining for the seventh time how a loop works.  It's sad, because I think that if we made them step up to the challenge, the camps would get a reputation as the place for the most advanced kids to go to, and would form a cache of sorts.  As it stands now, pandering to the lowest common denominator doesn't help out anybody.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:36677</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/36677.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=36677"/>
    <title>0 for 4.</title>
    <published>2008-07-17T22:30:36Z</published>
    <updated>2008-07-18T04:55:18Z</updated>
    <content type="html">&lt;i&gt;&lt;br /&gt;This application is: Complete&lt;br /&gt;Admission Decision: Ineligible&lt;br /&gt;	&lt;br /&gt;Your application for admission has been carefully considered.  We regret to inform you that we are unable to offer you admission.  Details will be sent by regular post.&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So either I, in the distant past, accidentally hit on the Dean of Science's daughter, or the problem isn't so much a lack of qualified computing science applicants so much as a lack of willingness to accept qualified computing science applicants.  Anyway, Sharon is on the case, getting my file from Science (it never even reached her desk.)  She says she'll talk to Hoover after she figures out what's going on.&lt;br /&gt;&lt;br /&gt;Now I think I'm going to steal some cars and run over some virtual prostitutes.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:36576</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/36576.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=36576"/>
    <title>Oh no.  Oh no no no no no.</title>
    <published>2008-07-15T20:53:06Z</published>
    <updated>2008-07-15T20:53:36Z</updated>
    <content type="html">Can somebody please explain to me why on Earth the version of the .NET framework that is running on the Xbox 360 does not contain a [plain old datatype].TryParse() method?!  Additionally, the overloaded method signature for Delegate.CreateDelegate does not exist either.  Now to slog through these dozens of "decimal does not contain a definition for TryParse()" and "We hate ntaylor" and so on....&lt;br /&gt;&lt;br /&gt;Seriously, now.  I would like to say that this is a simple oversight on Microsoft's part while porting .NET/XNA, but, really, now.  I just &lt;i&gt;assumed&lt;/i&gt; that there'd be an isomorphism between the two implementations, and if I run out of time fixing all my code before the camps start, I'll be annoyed. :/&lt;br /&gt;&lt;br /&gt;I &lt;i&gt;knew&lt;/i&gt; I should have tested this stuff sooner.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:36238</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/36238.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=36238"/>
    <title>"And I need you to recover / Because I can't make it on my own..."</title>
    <published>2008-07-13T02:18:38Z</published>
    <updated>2008-07-13T02:22:56Z</updated>
    <content type="html">Just beat Mass Effect!  Overall, a fantastic game - certainly the best I've played in recent memory.  It didn't end up replicating the &lt;i&gt;je ne sais quoi&lt;/i&gt; of KOTOR (partially -- no, probably -- because I didn't spend a lot of my childhood pretending to be a &lt;i&gt;Spectre&lt;/i&gt;), so I don't think it'll unseat that in my top 3 all-time favourite games.  But it's damned close.&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;First off, that "twist" barely qualified as one.  I mean, sure, so the Citadel was built by the &lt;s&gt;Reavers&lt;/s&gt; Reapers.  Cool, but not "Revan is your father"-level.  Why was it hyped so much?  It might have been cooler if I hadn't been expecting a "humanity is actually the Profions" or "it was aaaaaaaaaall a dream!".&lt;br /&gt;&lt;br /&gt;If memory serves, I spent close to 60 hours on my first KOTOR playthrough, so I'm kind of disappointed that I barely clocked 30 hours on KOTOR, with all but three subplots finished (one I couldn't complete as I couldn't return to the Citadel to finish it; two were too renegadey for this playthrough).  Basically, I'd expected you escaping the Citadel to be the mid-point of the game, and certainly not a hop, skip, and a jump away from the closing credits!  I mean, they could have done so much there!  I'd expected them to have the Council try to paint you as a rogue Spectre like Saren, and have you be running from the Alliance fleet, so you'd have to sneak around [insert other major planet here] as you complete more plot-based quests to close in on Saren.  Sadly, none of this happened; hell, I thought the Admiral was going to get charged with treason for helping me escape, but that didn't stop him from congratulating me on what a fine job I'm doing with the subplots over the subspace communicator or whatever.&lt;br /&gt;&lt;br /&gt;And speaking of the subplots: Now,  don't get me wrong, as I mentioned in my earlier post, galivanting around planets envoked wonderful memories of Starflight, but driving the Mako around desolate planet after desolate planet only to enter the same mine or outpost or whatever over and over again felt...lonely.  Since the sidequests definitely took up the bulk of my playtime, it was always startling to go back to the plot, which had actual cutscenes and level design that I hadn't seen a hundred times before, and what have you.  I mean, sidequests basically boiled down to "receive orders from the Admiral, go on run-and-gun mission, maybe play "hunt the hotspot in the asteroid belt", receive congratulary note from Admiral, rince, lather, repeat".  Relative to KOTOR's sidequests, everything felt very...tacked on or last minute.  I mean, the Citadel, and, to a lesser extent, the beginning of Vermire, was the only real place you had the opportunity and interact with NPCs like in an RPG.&lt;br /&gt;&lt;br /&gt;Don't get me wrong, I loved the combat in the game.  The hybrid of RPG and FPS was very well executed and &lt;i&gt;incredibly&lt;/i&gt; satisfying, especially in the wake of Jade Empire's quasi fighting game controls, which didn't work at all for me.  It's just that having more unique places to explore, sidequest or plot-related would have been wonderful.  All in all, it was far too short, which I guess is a compliament.  It's clear they're gearing up for a sequel, and I can't wait for it.&lt;br /&gt;&lt;br /&gt;(Also, regarding the sex scene: I've seen more skin on network television during the middle of the day.  What the heck was all the controversy over?!)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now back to fiddling with the XNA 3.0 preview.  Sadly all my XNA 2.0 projects are not compatable, so I'm taking this opportunity to learn about how it handles the 3D side of things since a lot has changed since the days of MDX.  I'm reading that it's like DX10 in that all the rendering is shader-driven, which handles all lighting and rendering, which seems counterintuitive for basic stuff, but is perhaps indespensible for more advanced things.  We'll see.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:36071</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/36071.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=36071"/>
    <title>When object.this does not reference this object!</title>
    <published>2008-07-08T22:05:19Z</published>
    <updated>2008-07-08T22:10:44Z</updated>
    <content type="html">So I want to do a few writeups about my CSSC sidescroller engine, mainly as a warning to those who want to rely too heavily on the "magic" of XML, but also because it's probably the largest piece of software I've written by myself, and I'd like to have a record of the silly things it does so I can laugh at myself in the future when I'm so much wiser.  However, I discovered something about .NET delegates last Friday that is too good to not describe in its own right.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt; First off, a bit of background is in order.  Every object in the game world, be it players, enemies, etc, extends from the abstract Actor class.  A particular kind of actor, say, the basic soldier enemy, is defined from one of the XML data files, thusly:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
  &amp;#60;!--The soldiers that throw themselves at the player robot!!--&amp;gt;
  &amp;#60;Actor type="GruntEnemy" name="Basic Soldier"#62;
    &amp;#60;Life&amp;gt;3&amp;#60;/Life#62;
    &amp;#60;Velocity&amp;gt;0.10, 0&amp;#60;/Velocity&amp;gt;
    &amp;#60;!--Animation sequences - the first one listed is the "default" one.--&amp;gt;
    &amp;#60;AnimationSequences spritesheet="Textures/enemy_spritesheet"&amp;gt;

      &amp;#60;Sequence name ="Idle" frames="5"&amp;gt;
        &amp;#60;StartingRectangle&amp;gt;0, 192, 64, 64&amp;#60;/StartingRectangle&amp;gt;
        &amp;#60;FrameIncrement&amp;gt;64, 0&amp;#60;/FrameIncrement&amp;gt;
      &amp;#60;/Sequence&amp;gt;
      &amp;#60;Sequence name ="Moving" frames="11"&amp;gt;
        &amp;#60;StartingRectangle&amp;gt;0, 0, 64, 64&amp;#60;/StartingRectangle&amp;gt;
        &amp;#60;FrameIncrement&amp;gt;64, 0&amp;#60;/FrameIncrement&amp;gt;
      &amp;#60;/Sequence&amp;gt;
      &amp;#60;Sequence name ="Changing Direction" frames="6"&amp;gt;
        &amp;#60;StartingRectangle&amp;gt;384, 192, 64, 64&amp;#60;/StartingRectangle&amp;gt;
        &amp;#60;FrameIncrement&amp;gt;64, 0&amp;#60;/FrameIncrement&amp;gt;
        &amp;#60;onAnimationFinished&amp;gt;ChangeActorDirection&amp;#60;/onAnimationFinished&amp;gt;
        &amp;#60;onAnimationFinished&amp;gt;SwitchTo:Moving&amp;#60;/onAnimationFinished&amp;gt;
      &amp;#60;/Sequence&amp;gt;
      &amp;#60;Sequence name ="Firing" frames="14"&amp;gt;
        &amp;#60;StartingRectangle&amp;gt;0, 64, 64, 64&amp;#60;/StartingRectangle&amp;gt;
        &amp;#60;FrameIncrement&amp;gt;64, 0&amp;#60;/FrameIncrement&amp;gt;
        &amp;#60;onAnimationFinished&amp;gt;SpawnNewBullet&amp;#60;/onAnimationFinished&amp;gt;
      &amp;#60;/Sequence&amp;gt;
      &amp;#60;Sequence name ="Dying" frames="7"&amp;gt;
        &amp;#60;StartingRectangle&amp;gt;0, 128, 64, 64&amp;#60;/StartingRectangle&amp;gt;
        &amp;#60;FrameIncrement&amp;gt;64, 0&amp;#60;/FrameIncrement&amp;gt;
        &amp;#60;onAnimationFinished&amp;gt;StopAndHoldAnimation&amp;#60;/onAnimationFinished&amp;gt;
      &amp;#60;/Sequence&amp;gt;
    &amp;#60;/AnimationSequences&amp;gt;
  &amp;#60;/Actor&amp;gt;
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So here, we can see that the basic enemy is a meta-instance of a GruntEnemy type.  Other kinds of enemies, with different attributes, could also extend from the GruntEnemy class (this was done so that if the kids want to edit the game to make a new enemy, this could be done without programming).  The biggest part of this XML file is, clearly, the Animation Sequences.  These describe the offsets into the spritesheet for various behaviours.  Also, they acts as a sort of behaviour state machine, since we can describe what sequence to go to next: so the line&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#60;onAnimationFinished&amp;gt;SwitchTo:Moving&amp;#60;/onAnimationFinished&amp;gt;&lt;/pre&gt;&lt;br /&gt;should have the Actor that finishes the "change direction" animation sequence drop immediately into the "moving" sequence.  How is this happening?  Quite simply, for each "onAnimationSequence" tag, we add another method to the Animation Sequence class' end-of-animation event.  Specifically, we use an anonymous to describe the "switch to next sequence" part. In the XML reader code, it looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
            foreach (string s in onAnimationFinishedMethods)
            {
                //First, check if the string is of the form "SwitchTo:Foo".  if it
                //is, this indicates that we would like to switch out the animation
                //sequence in favour of another.
                char[] delimiters = {':'};
                String[] parsedStrings = s.Split(delimiters);
                if (parsedStrings[0].Equals("SwitchTo"))&lt;/pre&gt;&lt;b&gt;&lt;pre&gt;
                    aniseq.onAnimationFinished +=
                        delegate() { source.CurrentAnimSeq = source.Sequences[parsedStrings[1]]; };&lt;/pre&gt;&lt;/b&gt;&lt;pre&gt;

                else aniseq.onAnimationFinished +=
                    (AnimationSequence.AnimationHandler)XMLManager.GetEventDelegate(aniseq, "onAnimationFinished", aniseq, s);
            }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In other words, it either uses the anonymous method, or it creates a new delegate by my GetEventDelegate method (which basically goes into the class by System.Reflection and finds a void method with the XML value passed...so "&lt;onanimationfinished&gt;SpawnNewBullet&lt;/onanimationfinished&gt;" would actaully make the event call an instance method called "SpawnNewBullet()"!!) Since the event takes delegates of a fixed signature, i can't pass any parameters to it (a bad design decision on my part; but I didn't think things would ever come to this in the initial design), hence the reason for the anonymous method as opposed to an instance method that takes a string parameter.  Horrible?  Yes.  Sorry, Cunningham. :(&lt;br /&gt;&lt;br /&gt;Now, for each instance of an Actor, we don't continually parse the XML file, of course.  Instead, we dig down into the bowels of CMPUT 301 and use an Actor Factory (or Actory as I like to call it).  Every time we want a new Actor of a certain type on the screen, we ask the Actory to deep clone the "prototype" instance that was created from the XML reader, and return that.&lt;br /&gt;&lt;br /&gt;Now this is where things get fun:  Of course, we're cloning the Animation Sequence objects that the Actor object contains.  This is because each AnimationSequence instance has a reference to its owner (admittedly a case of tight coupling within the system, but it sort of needed to be done, sadly.), and so in cases where a sequence might change attributes of its owner (say, in the "set animation sequence to foo" case), we need a reference to a specific Actor.  So when we clone ourselves, we have to set the source of the new sequence manually:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
            //Make a shallow copy of ourselves.
            Actor newActor = (Actor)this.MemberwiseClone();

            ...

            IEnumerator&amp;#60;KeyValuePair&amp;#60;String, AnimationSequence&amp;gt;&amp;gt; enumerator = this.sequences.GetEnumerator();
            while (enumerator.MoveNext())
            {
                AnimationSequence newSeq = (AnimationSequence)enumerator.Current.Value.Clone();
                newSeq.Source = newActor;
                newActor.Sequences.Add(enumerator.Current.Key, newSeq);
            }
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So all AnimationSequences are distinct between Actor instances.  However, we have a terrible bug!  It turns out that the methods in the onAnimationFinished event, while all referring to this.Source, are actually referring to instances in the prototype instance of the class, not the calling class!  If you think about it in terms of a function pointer, it makes perfect sense, but completely falls flat on its face in this context.&lt;br /&gt;&lt;br /&gt;Now, each delegate has a Target property, which, sadly, is read-only, so I'm at an impasse.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have no idea how I'm going to fix this guy....</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:35585</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/35585.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=35585"/>
    <title>My gForce brings all the nerds to the yard</title>
    <published>2008-06-29T00:59:52Z</published>
    <updated>2008-06-29T00:59:52Z</updated>
    <content type="html">At long last, my new machine has been built!  The specs are more or less what I posted a few weeks back, but I ended up going the dual-core route rather than quad, since I've read it's better bang for your buck for the sort of things I'll be doing (random dev work, video watchings, and games that are not Crysis).  However, I made a few changes to the design: two hard drives: one, a conventional 650GB 7200RPM for media storage, but the other is a 300GB 10,000 RPM Velociraptor for extra boot-fastness.  Right now it's paritioned 225gb/75gb for Vista 64 (which I just installed), and Ubuntu (to be installed after Steam finishes grabbing TF2), respectively.  I expect to spend most of my time in the latter OS, but since games these days are pretty enormous, I felt I should give the bulk of the drive to Windows.&lt;br /&gt;&lt;br /&gt;Also, I originally ordered a passively-cooled 8600; however, after ordering, ncix put my order on backorder, so I said "forget it" and looked at what else they had in stock.  As it happens, there was a 1gb 9800 GX2 for almost $100 off that day only, so I snatched that puppy up!  So my setup is, offically, "balls to the wall".&lt;br /&gt;&lt;br /&gt;Played a few minutes of COD4...it's not my kind of shooter (feels too much like it's on rails), but it's very pretty and very well executed.  Installed Company of Heroes, which never ran on my old machine, and got &amp;gt;40fps at 1680x1050 and maxed video settings, which thrills me.  Who says money can't buy happiness?!?&lt;br /&gt;&lt;br /&gt;I did, however, have a bsod right after starting up for the first time, but it hasn't happened since and so I'm tempted to chalk it up to installing some sort of Intel driver while installing COD4 at the same time...or something.  If it happens again, well, then I'll be worried.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;edit: Dammitall, why does ^W not do what I want it to do in Windows!?  If LJ hadn't saved my draft I'd have lost far more than the most recent word typed. :/ &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Man, so building this machine has been such a pain!  The Antec P182 came really highly recommended, but getting all the components stuffed in the case took absolutely forever!  The main problem was with the graphics card; it's a really long bugger, and so the hard drives &lt;a href="http://dijkstracula.net/pub/comp1.jpg"&gt;almost wouldn't fit in the upper 3.5" chassis&lt;/a&gt;, so they had to be moved to the bottom one, but then &lt;a href="http://dijkstracula.net/pub/comp5.jpg"&gt;the cables would keep touching the fan&lt;/a&gt;, so everything had to be unplugged and rerouted, then it turns out the SATA ports were &lt;i&gt;underneath&lt;/i&gt; the video card (since, again, it's so long) so it had to be moved to the other pci-e port on the motherboard, which then meant that I couldn't get at the DVD-ROM drive, so everything has to come out, and WHATD'YA MEAN THE FANS AREN'T SPINNING!? and so on, all while trying to make the &lt;a href="http://dijkstracula.net/pub/comp2.jpg"&gt;hibernaculum&lt;/a&gt; of PSU cables not in the way at all times...  Thankfully, some UACS friends were helpful with getting all the pieces in place, and in the end the inside of the case &lt;a href="http://dijkstracula.net/pub/comp6.jpg"&gt; wasn't too horrible-looking&lt;/a&gt;, but surely not up to the standards of many who might read this ;)&lt;br /&gt;&lt;br /&gt;Tom Tom Tom, we must partake in UT3, now that I have a hope of playing it!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:35514</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/35514.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=35514"/>
    <title>Work update, and stuff.</title>
    <published>2008-06-12T10:50:19Z</published>
    <updated>2008-06-12T10:54:26Z</updated>
    <lj:music>Fifty case fans whirring, all alone in the night</lj:music>
    <content type="html">Wow, I'm really bad with this whole blogging thing.&lt;br /&gt;&lt;br /&gt;So I'm six weeks into the job.  I really have struck gold with it - I mean, really, I was planning on spending my summer doing random XNA stuff anyway, but now I get to get paid to do it!  Of course, the work can't be entirely pet projects; as I mentioned before, we're trying to get a few sample games with a common framework of classes written for students to build their own games off of.  For those kids without a lot of programming knowledge (the camp writeup says "previous programming experience required", but that's vague enough to mean _anything, really, now.  HTML is "programming"? sure, right???), if they don't feel up to learning OOP and C#, they can just muck about with the XML data files, adding new monsters, powerups, quests, etc, etc, to games that already exist.  Microsoft also has a few (far more glitzy and larger) samples, too, so we'll be including them as well.  I'll probably be writing a few more games in the weeks ahead (gonna do a Mass Effect-style dialogue wheel example, mainly so I can realize my dream of having a &lt;a href="http://www.youtube.com/watch?v=qRnUbEJueus"&gt;My Dinner With Andre&lt;/a&gt; video game :V&lt;br /&gt;&lt;br /&gt;As much as I hate XML, I think abstracting as much game data into datafiles is probably the best way to handle the cases when students feel overwhelmed with XNA.  It's not a beginner's tool at all, and sometimes I kind of wish that they'd taken my suggestion and used PyGame or something better suited for an introduction to programming instead.  But not all is lost: for this bizzaro datafile stuff means I get to play around with fun .NET reflection and contort the language into ways that the designers probably didn't want.  For instance, all game actors and  are defined at runtime in these files, so in order to describe, say, behaviour for background images transitioning on and off the screen, the XML schema contains places to give the name of class methods which are treated as delegates and added to appropriate class events.  Sometimes I feel it borders on kludgy, but at least I'm not somehow passing anonymous methods in by XML!  (I'm not even sure that's possible with .NET reflection anyway...you'd need to dynamically fill out fields in an MethodInfo instance or something, taking the form of meta-meta-data, which is getting into Hofstadterian-levels of abstraction.  Too much for me, to say nothing of 15 year olds :) )&lt;br /&gt;&lt;br /&gt;I gotta say, I'm surprised with how much I enjoyed writing the &lt;a href="http://dijkstracula.net/projects/raycasterv1.png"&gt;ray casting&lt;/a&gt; example, which I was furiously debugging when I went out for lunch with Tom last week; it's enough to make me think about doing some sort of graphics research after I graduate.  (To back up: because of the lack of linear algebra that most ninth graders have, we can't really do any modern 3D stuff, so all the projects up to this point have been sprite-based.  I'd written a Metal Slug-style sidescroller, a Tetris clone, an Ikaruga-style schmup, and so on.  However, in my perverted mind, it occurred to me that advanced students who actually enjoy trig might be interested in learning a bit about how 3D stuff works, so I wrote a simple raycaster a la Wolf3D, which is almost entirely linear algebra-free.  All ray manipulations are done with angles and trig functions.  Slow as heck relative to how it really should be implemented, and lacks such fancy features as non-orthogonal walls at non-right angles, ceiling/floor texture mapping, etc, etc, but it's meant to be a teaching example, no?)  Obviously, by any standards the ray caster is not that interesting, but it's really rewarding to be able to &lt;i&gt;see&lt;/i&gt; the fruit of your work appear on the screen like that.  When work settles down, I think I'm going to reimplement it with a sector/polygonal wall approach, like Doom.&lt;br /&gt;&lt;br /&gt;Fun fact: there's a bug in my engine that you can see in that screenshot...a gold star to s/he who can point it out!&lt;br /&gt;&lt;br /&gt;So here's some big news: I'm TAing next fall!  For those of you who don't know, Science 100 (an experimental 27-credit science class, basically all of your first year science classes melted together to form a solid blob of potential awesome) has a computing science component, and Paul Lu is teaching it, which is totally rad.  He knows me from the cluster computing class of his that I took, and he specifically wants an undergraduate student TAing, and my name came up.  By the end of the year, they'll have covered the entire 174 curriculum, so this means I have to brush up on my Perl.  Been doing that off and on, but really need to make it more 'on'...  So as a result, I'm cutting my courses down for the fall: I'll still be in CMPUT 340 and CMPUT 415 (which Bob is teaching...more on that below), and I'm trying to get into a &lt;a href="http://www.ece.ualberta.ca/~cmpe401/fall2007/index.html"&gt;CompE class as well&lt;/a&gt;, but apart from those and $MUSIC_ENSEMBLE, that'll be it.  Heck, 415 counts for two classes in the workload department anyway, or so I'm told.&lt;br /&gt;&lt;br /&gt;Last week I ran into Bob in the hallway (for those who don't know &lt;a href="http://www.ualberta.ca/~beck/"&gt;Bob Beck&lt;/a&gt;, he's an AICT head honcho, the 'emacs' to Paul Lu's 'vim' in the &lt;a href="http://www.cs.ualberta.ca/events/podcasts/department_event/20080228-914-vim_vs-bob_beck.mp3"&gt;UACS ediTitans competition&lt;/a&gt;, and a sessional lecturer in the department (he taught the other 379 section this winter, and is taking over Schaeffer's 415 in the fall.)  He's generally referred to as "Bob Beck Colon Internet Superstar" among the undergrads since his name tends to appear on high-profile &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=sshd"&gt;manpages&lt;/a&gt;), and I was queried as to whether I would be interested in "exchanging sleep for money" - the OpenBSD hackathon is being held in Lister this year, and they need people to watch over the room while people sleep to make sure nobody walks off with laptops and stuff.  So since I'm all about exchanging sleep for money, I happily agreed, so I code XNA during the day and play bouncer at night, which is why I'm blogging at 4:30 AM (not a cron job I swear!).  In the last 48 hours I've slept...hmm, four hours?  Thank god for stimpacks^W Red Rave and coffee, but even that is no substitute for a nice warm bed.  Perhaps I shall look into such an idea for tomorrow night.&lt;br /&gt;&lt;br /&gt;Today's full-day First Aid training course will be two tonnes of fun.  Hoo boy. :V</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:35226</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/35226.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=35226"/>
    <title>...and this is how we say goodbye in Russian, Doctor Jones.</title>
    <published>2008-05-23T05:43:28Z</published>
    <updated>2008-05-23T05:43:28Z</updated>
    <lj:music>Genius of the res-tor-ation!</lj:music>
    <content type="html">Just got back from Indy 4, and wanted to get some thoughts down before going to bed.  &lt;br /&gt;&lt;br /&gt;First off, I should say that I really, really liked it.  There will probably be a fair bit of complaining in this post, but by and large the negatives don't even come close to outweighing the positives.  In my partial ordering of the movies, it would go Last Crusade &amp;gt; Raiders &amp;gt; Crystal Skull &amp;gt; Temple.  It sort of makes sense to group Indy 4 and Temple of Doom together, as they're actually quite similar.  &lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;To be honest, it really felt like the first 20 minutes were missing from the movie.  I found it weird that we're given the backstory about Indy helping with the Rosswell UFO excavation (one of the less belivable parts of the movie) was given entirely in dialogue.  I think that if they'd opened the movie with a flashback to 1947, a la the "Young Indy" opening to Last Crusade, and showed this actually happening (and along the way, setting up some of the recurring alien elements to appear later on in the movie), that would have not only made the plot point stronger, but would have potentially been a better introduction to the movie as a whole.  As it stands now, we're trying to savour the return of Indy while Spielberg and Lucas are clipping through the first act at a breakneck pace.&lt;br /&gt;&lt;br /&gt;I should mention at this point that when I was a kid, I basically wanted to be &lt;a href="http://www.youtube.com/watch?v=yH3Oim9dYyQ"&gt;Marcus Brody&lt;/a&gt;.  Yes, the actor who played Marcus passed away, and there's nothing we can do about that (short of Jar-Jaring him in or something ridiculous like that).  However, John-Rhys Davies is still alive, and so is Sean Connery, so where's our Sallah and Henry Sr. cameos?  Having Marian back was cool and all (more on her in a bit), but an Indy movie just isn't an Indy movie without Sallah.  Maybe this is why this one feels so much like Temple.  I should mention, though, that the "statue scene" mays such great homage to him that I couldn't help but tear up.  Yes I'm a nerd.&lt;br /&gt;&lt;br /&gt;I'm not convinced the supporting cast was that awesome --they were fine, don't get me wrong, but not really standout--, with the exception of Karen Allen as Marian.  It was obvious she was having a blast revisiting the character, and all the spunk we saw in '81 comes through again here.  Cate Blanchett as "the Soviet Dr. Schneider" was fine - again, it was clear she was having fun, so who am I to complain?&lt;br /&gt;&lt;br /&gt;This could just be due to my fatal flaw of not being able to avoid reading spoilers, but the overall arc of the story seemed really paint-by-numbers and predictable.  You'd have to be five years old to not make the alien/crystal skull connection 30 minutes into the movie, and they do this big reveal towards the end that just had me going "yeaaaah, we know...was this supposed to be news by this point?"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyway, I'm tired and will trot off to bed now, but suffice it to say that it's really good and you all should see it.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:34944</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/34944.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=34944"/>
    <title>doctorcomputer @ 2008-05-20T20:04:00</title>
    <published>2008-05-21T02:05:59Z</published>
    <updated>2008-05-21T02:05:59Z</updated>
    <content type="html">Random epiphany of the day: the Citadel procenium in Mass Effect bears a striking resemblance to the Coast Terrace Inn's central garden/restaurant.  Coincidence?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:34650</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/34650.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=34650"/>
    <title>Naturally, Bioware would get snow effects in a video game right.</title>
    <published>2008-05-11T05:38:51Z</published>
    <updated>2008-05-11T05:38:51Z</updated>
    <content type="html">So even though I was supposed to write about GTA4, to be honest, I've been spending all my 360 time playing Mass Effect, actually.  Of course, as Tom says, it indeed rocks, but I'm not into it quite as much as I was into KOTOR...at least, not yet.  I think it's possible I'll get there, though; after doing some thinking about this, I've concluded that it embodies things I love about my favourite three games, so by the end, I should be loving it.&lt;br /&gt;&lt;br /&gt;For the uninitiated, my top-3 list goes thusly: 1) &lt;a href="http://www.mobygames.com/game/macintosh/starflight"&gt;Starflight&lt;/a&gt;, 2)&lt;a href="http://www.mobygames.com/game/windows/deus-ex"&gt;Deux Ex&lt;/a&gt;, and 3)&lt;a href="http://www.mobygames.com/game/xbox/star-wars-knights-of-the-old-republic"&gt;KOTOR&lt;/a&gt;.  The resemblance to the third game in the list should be obvious.  Even at a superficial level, it's clear to see that Mass Effect follows in KOTOR's footsteps: basic story structure is very similar (that is, "oh look it's a bioware game...here's the Towers of Hanoi puzzle, here's the twist*, etc), with streamlined gameplay.  I wasn't sure how the quasi-FPS combat would hold up relative to KOTOR's turn-based combat, as I've seen it done badly so many times before, but it's actaully a blast.  It feels like a sloppy Gears of War, actually (not "sloppy" as in "badly executed", but "sloppy" as in "my character can't aim because he's at level 1 and there's still a stat/character component to the gameplay").  &lt;br /&gt;&lt;br /&gt;It's not all sunshine and roses, though.  The non-combat control scheme took a step backwards in my opinion.  In KOTOR, you used the triggers to switch between points of interest on the screen (characters, items, etc), whereas here, you basically have to orient the camera straight at what you want.  This becomes a little bit frustrating when you can't see precisely where the item of interest is (a surprisingly common problem, especially when you're looking for, say, a switch on a column or something, and it turns out to be hidden behind another column).  Also, the driving sequences (which I'll talk about in a bit in terms of Starflight) are a bit frustrating to control; the vehicle moves in the direction that the camera is facing, rather having a GTA (or really, _anything else_)-style "left analog stick controls direction relative to the camera's direction-control scheme, making defensive maneuvers in the heat of battle a royal pain in the neck.  (Just try to do a 3-point-turn while under attack from half a dozen Geth!)&lt;br /&gt;&lt;br /&gt;It's also not hard to see Starlight's influence on the game.  One of the things that I really didn't like about KOTOR was the economy of planets; there were only enough systems to visit that were required to finish the main plot.  On the flip side, Starflight was almost GTA-esque in its freedom to visit random planets, land and drive around on the rover, maybe discover some ruins of a long-lost civilization, etc, etc.  Mass Effect, while not nearly as nonlinear as Starflight, moved in that direction, and I love it.  Love it love it love it.    And not just in terms of "hay there's a planet that I don't have to visit here".  Going from the Normandy in orbit to the Rover on the ground, to getting out of the rover and exploring on foot, does wonders to settle me in the game world.&lt;br /&gt;&lt;br /&gt;The comparison to Deus Ex is a subtle, and admittedly, iffy one, but I think it's worthmentioning.  One of my main criticisms of semi-recent Bioware games is that they tout multiple paths to solve quests, but by and large, the only difference occurs in which dialogue tree you choose (ie. the Light Side/Open Palm/Paragon path where you're a total goody-goody, or the Dark Side/Closed Fist/Renegade path where you're a jerk to everyone you meet).  There's a liiiitle bit more variety here - just tonight, for instance, I had the option of storming a corporate office with the security system ablazing, or sneaking around to disable the security system, making the combat a bit more manageable.  Now, it's not really Deus Ex-ey, since I didn't know that I could even disconnect said security system until I went along hacking every machine I could find in another part of the complex and I got a message saying that I just made my life easier.  If they'd taken this idea one step further and made it more like Deus Ex, then I'd surely be in love.&lt;br /&gt;&lt;br /&gt;Wow, them's a lot of works about a video game.&lt;br /&gt;&lt;br /&gt;* I actually don't know if there's a twist in Mass Effect, but I'll be damned if there isn't.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:34479</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/34479.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=34479"/>
    <title>All's well that ends.</title>
    <published>2008-05-06T16:53:37Z</published>
    <updated>2008-05-06T16:53:37Z</updated>
    <content type="html">&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;...but it makes me super angry that group theory ended as badly as it did.&lt;br /&gt;&lt;br /&gt;CMPUT 299 Grade: B+   &lt;br /&gt;&lt;br /&gt;CMPUT 379 Grade: A&lt;br /&gt;	&lt;br /&gt;CMPUT 399 Grade: A&lt;br /&gt;	&lt;br /&gt;MATH 429 Grade: B&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Started the summer job this week.  Been doing a lot of C#/XNA fun stuff.  Hopefully the framework that the kids will be building off of will be finished this week so we can start writing some sample games with it.  I think, overall, I'll enjoy this summer a lot more than last year - it's far less stressful so far...I don't feel the need to impress everyone, which means I'm way more relaxed, and, ironically, in a far better mindspace to code well!&lt;br /&gt;&lt;br /&gt;Also, since I'm now gainfully employed, I have now joined the wonderful world of next(read: current)-gen console gaming!  Picked up a 360 with GTA4, Mass Effect, and Gears of War.  Gamertag is "Safeway Sushi" for those of you with Xbox Live, since I figured Dijkstracula is rather unpronounceable if you don't know who Dijkstra is.&lt;br /&gt;&lt;br /&gt;Hokay, back to writing this GameScreenManager class.  Be back later with some thoughts about GTA4.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:34091</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/34091.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=34091"/>
    <title>Yet another year down, one to go.</title>
    <published>2008-04-23T17:08:08Z</published>
    <updated>2008-04-23T17:08:08Z</updated>
    <content type="html">So I finished the last of my exams on Monday.  At the moment, I only have one mark back - I completely botched my group theory final, worth 60%, so that dropped me almost full letter grade to a B.  I went to see the prof to find out my mark and he was really annoyed with me.  I'm annoyed with myself too.&lt;br /&gt;&lt;br /&gt;I &lt;i&gt;think&lt;/i&gt; everything else went semi-decently, though.  My c399 project -- benchmarking the HPC software used at the Supercomputing 07 challenge -- didn't go spectacularly well, since GAMESS (a quantum chemistry simulator) is an enormous kludge of FORTRAN and csh scripts and refused to not ask for 2^63 bytes of memory to be allocated to it, regardless of compiler/compiler settings.  What's even stranger, I traced the call stack from where the software terminates, slogging through wrapper functions-within-wrapper-functions, and I reach a function that never gets called.  Ever.  As in, grepping for the function name yields the function prototype and two commented-out preprocessor directives.  So either it's a shared library issue and had something to do with how the cluster I was testing it on was set up (unlikely since it's a production server running in Nanotech), or at least one of me and the software is on crack.  &lt;br /&gt;&lt;br /&gt;c299, the network security class, in general, didn't really go well for anybody.  It was the first time the class was offered and there were a lot of problems with this first dry run.  Next year it's going to be a 300-level class with actual prereqs, which I think is a wise idea.  Now, hopefully Yannis will be generous with the scaling, all things considered...&lt;br /&gt;&lt;br /&gt;c379, I think, will be okay.  I completely botched the third assignment (it was the page replacement simulator, and I basically broke my implementation to try and track down some strange bugs, only to find that the lab machine I was sshed into was dying and introducing a certain amount of ... non-determinism, shall we say, into my results), dropping me from 2nd to 7th, but with any luck I'll annihilate the final like I did the midterm.&lt;br /&gt;&lt;br /&gt;Of course, nothing stays static with regards to what I'm taking next fall.  It turns out 415 conflicts with honours calculus, so I've decided against doing an afterdegree in Math.  Instead, I'll just apply to grad school straight out of CS, or just find a job if I'm truly that sick of school, or whatever.  So next fall, it looks like I'll be taking 411 and 415, Math 322 (graph theory - a cakewalk after 304), and probably Symphonic Wind Ensemble for credit, just so I can keep my credit requirements up for Honours, assuming I get in &lt;i&gt;this time&lt;/i&gt;.  Next winter is still up in the air.  &lt;a href="http://www.ualberta.ca/~beck/"&gt;Bob Beck&lt;/a&gt;, one of the lead OpenBSD developers, sessional instructors in the department (he taught the other 379 section this term that I sat in on), and all-round awesome guy, may or may not be reviving Pawel's &lt;a href="http://www.cs.ualberta.ca/~pawel/COURSES/485/cmput485.html"&gt;c485&lt;/a&gt; class, and if this happens, I don't care what I have to swap out in order to make room for this, so we'll see.&lt;br /&gt;&lt;br /&gt;I've already started prepping for my summer job.  I can't remember if I've mentioned it yet, but another undergrad (James, from my c301 group, and who posted below about my upgrade) and I are developing and teaching the CS department summer camp's Build-Your-Own-Video-Game camp.  Since XNA is sort of the sexy thing these days, we'll be teaching the kids C#.  I think the big thing will be cutting down the scope of what we'll be teaching them, since we can only "recommend" that they have programming experience before coming in, and usually with this ageset, "programming" is "HTML", so yeah...  3D stuff is right out, but I'd like to spend some time talking about AI opponents or networking, if nothing else.  So yeah, I'm gonna spend today reminding myself how C# delegates work, start prepping for the programming club meeting on Friday, and maybe get a bit of TF2 in.  &lt;br /&gt;&lt;br /&gt;Aahh, summer!  (for some &lt;a href="http://ccis.cs.ualberta.ca/CAB/index.html"&gt;epsilon&lt;/a&gt; of summer - I mean, come on now, it's like January in Montreal out there)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:33810</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/33810.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=33810"/>
    <title>Upgrade time!</title>
    <published>2008-04-19T18:49:37Z</published>
    <updated>2008-04-19T18:49:37Z</updated>
    <content type="html">So I'm tired of not being able to play games on my 3+ year old machine.  It's clandestine massive upgrade-under-the-noses-of-the-parental-units-time!&lt;br /&gt;&lt;br /&gt;&lt;img src="http://ugweb.cs.ualberta.ca/~ntaylor/parts.png"&gt;&lt;br /&gt;&lt;br /&gt;Any thoughts, computer-people?  The reason I want to go for a quad-core is mainly for any HPC-related stuff I might find myself doing, and less because it's the only way to get SupCom running reliably.  (Additionally, there will be 4GB of RAM in there, but Memory Express was sold out of the 2x2GB stick bundle I wanted so it's not in my shopping cart yet.)  I figure SLI is too decadent, so I didn't go for that.&lt;br /&gt;&lt;br /&gt;Now it's back to 379-cramming time.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:33763</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/33763.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=33763"/>
    <title>Coming up for air, if only for a second</title>
    <published>2008-03-04T01:11:06Z</published>
    <updated>2008-03-04T01:11:59Z</updated>
    <content type="html">I may have spent close to 24 hours on this blasted 379 project, but at last &lt;a href="http://ugweb.cs.ualberta.ca/~ntaylor/379server.png"&gt;it's working!&lt;/a&gt;  Now to redo it with pthreads...&lt;br /&gt;&lt;br /&gt;I'm overdue for a big honkin' update, I know.  It'll come after this is handed in, I swear!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:33497</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/33497.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=33497"/>
    <title>Two year plan</title>
    <published>2008-02-20T02:34:24Z</published>
    <updated>2008-02-20T02:34:24Z</updated>
    <content type="html">I just received permission to switch into the Honours calc stream.  So &lt;a href="http://ugweb.cs.ualberta.ca/~ntaylor/nexttwoyears.png"&gt;this&lt;/a&gt; is what my life is going to look like for the next 30 months, until I'm finished my afterdegree.  &lt;br /&gt;&lt;br /&gt;Oh Jesus.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:33209</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/33209.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=33209"/>
    <title>At last, a break!</title>
    <published>2008-02-20T00:52:14Z</published>
    <updated>2008-02-20T00:52:14Z</updated>
    <content type="html">Three cheers for reading week!  Even though I have an enormous amount of work to do before next Monday (three midterms to study for, a paper to write about distributed programming using Erlang, the big honkin' 379 assignment, etc, etc) it feels great to not have to get up at 7:30 every morning.&lt;br /&gt;&lt;br /&gt;So I've had a week or so to play around with the MacBook Air, and so I've probably had enough experience with it to write down a few thoughts.  First and foremost: wow, OSX is a great operating system.  Granted, I've fiddled with it on the UACS iMac and didn't care much for it, but once you learn a few idioms it becomes super comfortable to use.  I haven't used a MacOS since OS9 (arguably the WinME of the Apple world) so it's nice to see how much things have improved.&lt;br /&gt;&lt;br /&gt;Yes, it's light.  No, it doesn't feel particularily breakable.  The number one comment I get from people is "oh no, are you worried about damaging it?", which strikes me as odd given how sturdy it feels.  I think that if it was made out of the same plastic as the MacBooks, then they'd have a point, but the MacBook Pro's brushed steel-ish material feels just fine.  Having said that, I don't want to ever drop it to find out just how much punishment it can take.  A lot of people made fun of me for buying a machine without ethernet, optical media, and only one USB drive.  It hasn't been an issue for me so far.  I mean, I've got a desktop for keeping my printer and 24/7 torrenting operational, so the fact that I don't have a wired network option isn't a dealbreaker.&lt;br /&gt;&lt;br /&gt;The only problem I have with it is that Escape Velocity: Nova has some strange blitting issue D:&lt;br /&gt;&lt;br /&gt;So I got a job for this summer.  It's a total change from last year's research position; I'll be an instructor in the CS Department's summer camp!  I think it'll be good to see if I'm any good at the whole pedagogy thing.  The interview didn't go that well until they asked if I'd ever done any XNA-type stuff (I haven't, but I spent a lot of time fiddling with MDX a few summers ago, which was good enough).  I'm not sure how wise a choice XNA is, especially if the kids have never done any programming at all.  As much as it pains me to suggest another language, I've heard good things about pyGame, and Python should be far easier for them to pick up.  Failing that, I guess I'll be spending the first few weeks of summer feverishly writing some sort of framework that will hide all the backend stuff from the students...too bad, since that'll be useless to them once they leave the camp.&lt;br /&gt;&lt;br /&gt;Oops, I'm due to meet someone in Van Vilet to work out in -2 minutes.  Gotta run.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:32977</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/32977.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=32977"/>
    <title>doctorcomputer @ 2008-02-08T20:27:00</title>
    <published>2008-02-09T03:40:36Z</published>
    <updated>2008-02-09T03:40:36Z</updated>
    <content type="html">I never need to come up with another pun again!&lt;br /&gt;&lt;br /&gt;ntaylor@ohaton:~&amp;gt;grep ^p[eu]n /usr/share/dict/words &amp;gt; awesome.txt&lt;br /&gt;ntaylor@ohaton:~&amp;gt;grep ^p[eu]n /usr/share/dict/words | wc   &lt;br /&gt;    585     585    6234&lt;br /&gt;&lt;br /&gt;Yes, this will surely get me sent to the &lt;i&gt;pun&lt;/i&gt;itentiary for some &lt;i&gt;pun&lt;/i&gt;ishment, along with the rest of the &lt;i&gt;pun&lt;/i&gt;ks.  And, uh, something about &lt;i&gt;pun&lt;/i&gt;ctiliomongers, whatever that is. (/usr/share/dict/words has some really obscure words!  I guess that's what you get when you use an out-of-copyright dictionary from like 1913 or whatever.)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:32518</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/32518.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=32518"/>
    <title>Guess who jumped the shark?</title>
    <published>2008-02-06T03:55:47Z</published>
    <updated>2008-02-06T03:55:47Z</updated>
    <lj:music>Bringing the rainbow to you: Apple II, forever!</lj:music>
    <content type="html">&lt;a href="http://nathan.gramophone.ca/macbookawesome.jpg"&gt;This guy, that's who.&lt;/a&gt;  3.3 lbs of pure joy.&lt;br /&gt;&lt;br /&gt;If you'll excuse me, I have agnsty poetry to write in a hipster coffee shop*.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*poetry will probably be written in vi.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:32491</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/32491.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=32491"/>
    <title>Thank god THAT's over.</title>
    <published>2008-02-04T00:26:39Z</published>
    <updated>2008-02-04T00:35:50Z</updated>
    <lj:music>Kb - Extreme bostelfalling</lj:music>
    <content type="html">Well, if this wasn't the week from Hell, I don't know what is.&lt;br /&gt;&lt;br /&gt;I had to be out of my mom's apartment by the end of the month, so last Saturday was spent frantically packing, and on Sunday, with the help of Dave and Henry and my mom's partner (ex-partner?  I don't know what the nonclementure is), we moved all the remaining junk to my dad's.  If you look at my previous post, you will know just how blasted cold it was that day.  Now, unfortunately, three assignments were due this week, so I found myself with 24 hours allocated to research and write a paper on parallel UCT gametree search, start and finish a group theory assignment, and do the bulk of the first 379 assignment.  Got it all done, but only for some value of "done", and at the expense of not sleeping for more than a few hours each day and not bathing for a few days longer than I generally like to.&lt;br /&gt;&lt;br /&gt;Certain individuals, in what I assume is part of the grieving process, have repeatedly informed me that I'm very bad at juggling a hojillion things (usually in the context of administrivia with regard to my mom's estate).  This is something I'm already rather aware of.&lt;br /&gt;&lt;br /&gt;Last night, my dad told me how proud he was that despite everything that's been going on, I didn't let those assignments slide.  Direct compliments don't come very often (that is, they're usually a preamble to a "...however,...") so I was certainly happy to hear that coming from him.  He also said something rather interesting: I'm, like him, rather self-centered.  At first, I was sorta taken aback, like "pfft, no you, mister, who gave up moving in with friends to stay with his dying mother this year?!", but the more I thought about it, the more I think I understand what he's saying.  For him, work always comes first.  Always.  I can remember as a kid, sitting in the car for three hours as he dashes into his store just to "check up on things".  He's hardly ever home, and when he is home, all he talks about is work.  But really, am I that different?  School is my job.  It's my reason to be.  Forget the state of family, friends, relationships; if I'm not doing well in school, I'm miserable.  And even though it drives me nuts when my dad puts the business before others, I'm not sure I could -- or even, if I would want to -- put others before my work, either.&lt;br /&gt;&lt;br /&gt;The basement is slowing coagulating into some sort of living space.  I built my bed last night and set up two of the three computrons today (expect info about the third one...mmm, probably tomorrow?).  Bender, the Windows box, and Farnsworth, my ancient laptop-turned-IRC proxy and SVN repo are already set up, and after a great deal of fiddling with a new router and Tomato, got it working as a wireless bridge, so despite being two floors down from the modem, I still have interweb access!  Perhaps tonight I'll look at getting my bookshelves set up so I can get some more boxes out of the front hallway.  Or maybe I should delve back into my 429 text for awhile longer.  Decisions, decisions.  Either way, I'll post some pictures of the basement (denoted "the grotto" by the household males, which I assume isn't meant to be in the slightest bit ironic) when everything's unpacked.  And when that happens, you better believe we're going to do yet another bad (but not as bad as Battlefield Earth) moviethon.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:32251</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/32251.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=32251"/>
    <title>By the hammer of Thor, what is the meaning of this?!</title>
    <published>2008-01-28T05:33:45Z</published>
    <updated>2008-01-28T05:33:45Z</updated>
    <content type="html">&lt;img src="http://nathan.gramophone.ca/brrr.png"&gt;&lt;br /&gt;&lt;br /&gt;That's like integer wraparound cold.  I'm thinking I get to school tomorrow and don't leave CSC until March.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:31935</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/31935.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=31935"/>
    <title>Hmm!</title>
    <published>2008-01-23T04:34:42Z</published>
    <updated>2008-01-23T04:34:42Z</updated>
    <content type="html">Even though I'm 18 months away from applying, I found myself randomly looking at grad schools and &lt;a href="http://www.math.sfu.ca/grad/prospective.shtml#appliedProgram"&gt;this program at Simon Fraser&lt;/a&gt; caught my eye.  Since I've been waffling between continuing to grad school in CS or in math, a hybrid program like this might be right up my alley.  And that SFU has a computer algebra group is certainly awesome.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:doctorcomputer:31601</id>
    <link rel="alternate" type="text/html" href="http://doctorcomputer.livejournal.com/31601.html"/>
    <link rel="self" type="text/xml" href="http://doctorcomputer.livejournal.com/data/atom/?itemid=31601"/>
    <title>I can has laptop that won't throw my back out?</title>
    <published>2008-01-15T23:08:29Z</published>
    <updated>2008-01-15T23:08:29Z</updated>
    <content type="html">&lt;a href="http://www.apple.com/ca/macbookair/"&gt;Yes, Nathan.  Yes, you can has.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I got my preorder in before Jobs could finish the keynote.  Sadly it's still two weeks away. :(</content>
  </entry>
</feed>
