Saturday, March 27, 2010

Saying It Better Than I Ever Could: Malcolm Gladwell on Writing

One of the things I have wanted to do with this blog is to highlight particular moments of clarity by writers, filmakers, artists, scientists, or really anybody who captures an idea/notion/belief that I've had/have, but could never express nearly that well. Today, I turn my attention to Malcolm Gladwell.

Today, I have demonstrated my incredible capacity for procrastination. In order to avoid my work, I have instead done the following: washed the dishes, knee stretches/exercises (which is usually something I procrastinate from and haven't done in months even if I am supposed to do them weekly if not more often), general web surfing, and hey, looky here, a blog post. Any way, in my continuing attempts to avoid "coding" (actually Mizar for those in the know), I picked up a book of essays by Malcolm Gladwell that, let's go with a somewhat obscure reference and call her Lula Mae (at least for now), lent to me. So far, I have only read the preface. In it, Mr. Gladwell drops the following piece of brilliance on us:

"The trick to finding ideas is to convince yourself that everyone and everything has a story to tell. I say trick but what I really mean is challenge, because it's a very hard thing to do. Our instinct as humans, after all, is to assume that most things are not interesting... We filter and rank and judge. We have to. There's just so much out there. But if you want to be a writer, you have to fight that instinct every day. Shampoo doesn't seem interesting? Well, dammit, it must be, and if it isn't, I have to believe that it will ultimately lead me to something that is."

--- Malcolm Gladwell. "What the Dog Saw and other Adventures." Little Brown and Company. 2009.

Gladwell made this remark in a discussion about where his ideas come from. I am obviously not a professional writer, but this is certainly something that I have found has plagued me when trying to come up with ideas for pieces for this blog. When it comes down to it, I don't believe that I am a particularly interesting person. And I don't necessarily mean that in a negative way (well ... maybe slightly). But simply put, I am not James Bond, nor a swash-buckling pirate, nor a jet-setting world-famous explorer. However, this does not mean I cannot write interesting things. Not that I do (or at least, that is up to you), but it is theoretically possible.

I have always aspired to be a better storyteller than I am. Since I am not a professional writer, the opportunities I have to research the lives of others and write about them is limited. But my ability to write about my own experiences is not. The challenge is to take my relatively straightforward existence, and make it interesting to my audience. Discussing the work that I do in a way that is both accessible, and, almost more importantly, exciting to those without the same background as me, is another challenge.

Sometimes I have succeeded in spite of this challenge, but more often I have not. Certainly practice helps in finding ways to make the seemingly unexciting into something interesting. Luckily, I have no shortage of things to procrastinate from.

Friday, March 5, 2010

Back on the Horse or The Continuing Misadventures of Rick

I've kind of neglected this space for awhile. But with this post, I am back with a vengeance! By which I actually mean I will probably continue to write things poorly, sporadically, and not very often.

It's been a very busy week, and in amidst all of my work, I forgot to pay my rent. This occurred for a few reasons. First of all, my memory is comparable to that of an ant. Secondly, February is a short month. Thirdly ... well, I don't have any more. And that second one is weak. When it comes right down to it, I'm just an idiot.

I eventually did remember, but it was not because of any inspired moment of responsibility. No, it was because I needed a 10 minute break from work, and so I picked up the ole guitar. I started to play a few tunes, and somehow picked out "Don't Worry, Be Happy" as a nice place to start. And when I got to the line that said "The landlord say the rent is late," I froze in recognition of my own stupidity.

All I know is that without Bobby McFerrin, my late fee probably would have been even higher than $25 I had to fork over today as I wondered exactly how it was that I function in normal society.

Wednesday, November 11, 2009

So ... Who Wants to Read About My Research?

I haven't been particularly active in this space lately, and I'll try to rectify that in the near future. In the meantime, I thought I'd post the introduction to my Master's thesis so that anybody who is curious as to my area of research can have a look.

As it is only the introduction it is mainly non-technical. I've also made some additional alterations in an effort to make it as accessible as possible for a non-computer science audience. Anyways, here goes:



Consider the problem of finding a route from one location in a city to another when navigating with a map. Before any travel can begin, a route for travel (or at least a partial route) must be found. Unfortunately, there may be a large number of candidate partial paths that must be considered before a complete route is found.

In this example, a single agent has the task of path finding. In general, all agents — whether they be living or artificial — are faced with some number of tasks to perform. In order to complete these tasks, agents must develop plans for action.
  
The effectiveness with which an agent plans is evaluated in terms of two different measures. The first is the time required to find a plan that will complete the given tasks. The second is the cost of the plan, the value of which will depend on the agent’s objectives. In the case of navigation, the possibilities for plan cost include distance travelled --- if the agent is to find a short path --- or the expected travel time --- if the agent is to find a quick path (ie. when navigating in a map, such an agent would prefer the use of highways over city streets).

In many domains, there is additional information that can be used to inform and thereby speed up planning. For example, when navigating between locations in Edmonton, Canada, it is reasonable to initially disregard routes through distant locations such as Madagascar. Moreover, if the desired destination is east of the starting location, the first routes to consider are naturally those that initially proceed eastward (if such paths exist).

Such information can be used to build heuristics which estimate the cost of the remaining path to the goal from any area in the domain. The field concerned with the development of heuristics and the construction of algorithms that use heuristics for planning is called single-agent search. In this field, planning is performed by building complete plans from some partial plans by a process which is guided by the given heuristic.

Single-agent search remains an important field for research due to the large number of real-world applications in which search algorithms have proven to be effective problem-solving techniques. These applications include autonomous robot navigation, in which heuristics are used to
guide pathfinding [6]; DNA sequence alignment [5]; and, computer games [7].

There is a class of single-agent search algorithms that will provably find the lowest cost solution provided that the heuristic satisfies certain conditions. Unfortunately, as problem domains grow larger, these optimal algorithms will often take too long to find a solution. To address this issue, suboptimal single-agent search algorithms have been developed. These algorithms sacrifice solution quality for a decrease in search time and are ideal when a solution (often near optimal) is needed quickly.

When constructing a single-agent search system, it must first be determined if suboptimal solutions will suffice or if optimal solutions are desired. Another consideration is if planning will precede execution or if the system is to work in real-time, with planning and plan execution being interleaved. The system designer is then faced with decisions regarding the proper selection of an algorithm and a heuristic function for the given domain(s). There are also often subtle choices such as tie-breaking (the order in which equally promising candidate paths are considered) that can significantly affect the planning speed. With all of these possible choices, properly recognizing and evaluating all of the necessary design decisions is a vital aspect of building an effective search system.

In the case of suboptimal problem solving, additional options arise as almost all applicable algorithms involve some kind of parameterization (where a parameter refers to some sort of numerical setting that can affect algorithm performance). For example, in the weighted variants of A*, IDA*[3], and RBFS [4], the value of the weight parameter must be set. Similarly, beam-search variants like BULB [2] and Beam-stack search [8] require the selection of a value for the beam width parameter.

Any adjustment of these parameter values can change both the solution quality and the search speed. In a few cases, there are theoretical results that indicate how changing a parameter will affect the search (such as the bounds on solution quality in weighted A*, weighted IDA*, and weighted RBFS [4]). Unfortunately, it is much more common that a significant amount of pre-computation is needed so as to determine how different parameter settings affect the search. In practice, parameter values are tested on a set of training examples through a process commonly referred to as parameter tuning. The single parameter setting that satisfies any given constraints on solution quality and exhibits the best average performance is then used in all future runs of the algorithm.

One drawback of parameter tuning is that it generally customizes the search algorithm for a specific problem domain (ie. an algorithm used for navigation may be tuned specifically for city-driving as opposed to for highway driving). As such, the results of this expensive process cannot effectively be transferred across domains — a fact that is of particular concern when designing general search systems such as automated heuristic search planners. In these systems, general heuristics are used to guide a suboptimal search algorithm over many domains. In practice, planners such as HSP [1] commit to a single parameter value that will hopefully be effective over a diverse class of problems.

Parameter tuning also suffers from another deficiency: there is no guarantee that a tuned value will perform well on each individual problem. Tuning only finds the setting that has the best average performance. On a per problem basis, there can be other parameter values which significantly outperform the tuned setting. In this thesis, we will demonstrate that it is often the case that if a search system could properly select the correct parameter setting for each problem, the planning speed over a number of problems can be greatly improved.

In this end, we will consider the dovetailing procedure as an approach to this problem. Dovetailing involves running several independent instances of an algorithm — each of which has a different set of parameter settings — at the same time by interleaving the execution of the instances. The
procedure can also be trivially extended so as to work with multi-processor computers. This aspect of the algorithm is important due to the increasing availability of such machines. As such, we will also analyze the performance of the algorithm when used in this fashion.

The main contributions of this thesis can be summarized as follows:
  1. The single-agent search algorithms of WA*, WIDA*, WRBFS, and BULB are described, and the weaknesses of WA*, WIDA*, and WRBFS as suboptimal search algorithms are demonstrated. The behaviour of these algorithms in the sliding tile and pancake puzzles as a function of the weight parameter will also be shown. Similarly, the behaviour of BULB in these domains as a function of the beam width will be demonstrated.
  2. Dovetailing is explored as an approach to proper parameter selection. Dovetailing is shown to significantly enhance WIDA* in the domains of the sliding tile puzzle and the pancake puzzle. The parallel version of dovetailing is also shown to exhibit massive improvements in search time when used with this algorithm. In the case of WRBFS, dovetailing without any pre-computation is shown to improve the speed of the algorithm in the sliding tile puzzle domain, and offer comparable performance in the pancake puzzle domain. Dovetailing with WRBFS over different tie-breaking schemes will also improve the quality of the solutions. We will also demonstrate that parallel dovetailing offers an effective parallelization of this algorithm.
  3. The sequential version of dovetailing will be shown to decrease the search speed of BULB and WA*, but improve the quality of the solutions when considered over different tie-breaking schemes. The reasons for this behaviour are discussed. The parallel version of dovetailing will also be shown to offer the best performance of all known parallelizations of WA* when higher weights are used in the sliding tile puzzle domain.
Works Cited

[1] Blai Bonet and Hector Geffner. Planning as heuristic search. Artif. Intell., 129(1-2):5–33, 2001.
[2] David Furcy and Sven Koenig. Limited Discrepancy Beam Search. In IJCAI, pages 125–131, 2005.
[3] Richard E. Korf. Iterative-Deepening-A*: An Optimal Admissible Tree Search. In IJCAI, pages 1034–1036, 1985.
[4] Richard E. Korf. Linear-Space Best-First Search. Artif. Intell., 62(1):41–78, 1993.
[5] Matthew McNaughton, Paul Lu, Jonathan Schaeffer, and Duane Szafron. Memory-Efficient A* Heuristics for Multiple Sequence Alignment. In AAAI/IAAI, pages 737–743, 2002.
[6] Anthony Stentz. The Focussed D* Algorithm for Real-Time Replanning. In IJCAI, pages 1652–1659, 1995.
[7] Bryan Stout. Smart moves: Intelligent Pathfinding. Game Developer Magazine, October:28–35, 1995.
[8] Rong Zhou and Eric A. Hansen. Beam-Stack Search: Integrating Backtracking with Beam Search. In Susanne Biundo, Karen L. Myers, and Kanna Rajan, editors, ICAPS, pages 90–98. AAAI, 2005.

By the way, if you'd like to read the whole thing, send me an email and I can pass it along.

Monday, October 26, 2009

ALERT: Blue Jays Rant Coming!

Today's been something of an annoying day. I had to wake up at a reasonable hour as if I have a real job. Then I found out that my move to another apartment is being bumped back to a much more inconvenient date. And all day I have been working on an assignment and it ain't going well.

Long story short, I am in a ranting move. So here goes ...

A few days ago, Keith Law mentioned that when he was with the Blue Jays, JP Ricciardi turned down a trade of Jose Cruz Jr. (retired centre-fielder) for David Wright (current perennial all-star and MVP candidate). Now, in hindsight this was an abysmal decision, but it was at least kind of defensible at the time when Jose Cruz was viewed as being a strong defensive player who might develop his plethora of tools.

I'm not here to apologize or pile on JP; I'll leave that to others. But I do want to know why Keith Law had to confirm this rumour. Does he just hate Jays fans? I mean, the rational side of me (small as it may be) is trying to argue that these non-trades happen all the time, and prospects are always a bit of a gamble.

Unfortunately, the sports fan in me wants to go on table-flipping rampage (which has been shown by science to be the second best kind of rampage after the Rambo-like rampage). DAVID WRIGHT!? REALLY?! Keith Law, why must you taunt me? It's bad enough that the team this year was terrible, but you just had to poor the salt that is David Wright on those wounds? Next, you'll remind me about the Lincecum for Rios non-trade and that Roy Halladay is probably leaving. Or that the Leafs are 1-7-1, Toronto FC just got embarassed in a do-or-die game, the Argos are a disaster, and the Raptors may go games without getting a single rebound. I really don't need this right now, Keith Law, I really don't.

I also don't want to kick Steve Phillips while he is down, but this is just more evidence that he was a terrible GM. At least JP can say he wasn't familiar with Wright --- Phillips doesn't have that luxury. And yet, when he goes on television as a baseball analyst, I'm supposed to take his opinion seriously?

But let this be a lesson for new Blue Jays GM Alex Anthopoulos. Alex, do yourself a favour. Determine who are the worst GM's in the game (I suggest starting with that fella in San Francisco), and get on their good side. Then call them weekly with ridiculous trade offers. Particularly, offer aging players whose skills are degrading for shiny young prospects. Somehow these trades happen far more often than they should, and its about time the Blue Jays benefitted from the stupidity of other teams.

Friday, October 9, 2009

In this episode of "The Good, the Bad, and the Rick," our intrepid hero admits to being thoroughly confused by Michael Haneke

I apologize to all of my readers who were anxiously waiting with baited breath for the next word to burst forth from the deep recesses of my cold and forgotten heart. Fear no more, for I have returned from whence I came!

By which I mean the last few weeks have been quite eventful and I have not had the opportunity to write anything. Not that I have any real excuse. I was only defending my thesis, and then celebrating the successful defense of my thesis, and then concurrently looking for an apartment. And in the midst of all this, I also managed to watch 5 movies in the last two weeks. I'm not sure if I will have a post on each, but I will certainly address a few of them. Today, I thought I'd tackle "The White Ribbon" and my opinion of the three Michael Haneke films that I've seen over the last year.

I am not sure where I first heard of the film "Funny Games" (specifically "Funny Games US"), but however that was, something about the description stuck with me. So when I stumbled across a copy of it in the used bin at the local Rogers Video about 8-12 months ago, I decided it was worth a purchase.

And I was right. The basic story of the film follows the home invasion of an upper-middle class family's cabin. But instead of hitting your regular horror movie plot points, this film basically subverts all your expectations about the genre and points out the viewers sadism for even wanting to watch such a film.

"Funny Games" also represents one of the most uncomfortable viewing experiences of my life. Not because it is overly violent --- there is little actual on-screen violence --- but because Haneke builds the tension to levels that I am not used to. My stomach was essentially squirming the entire time, and even when there is a brief respite, Haneke quickly pulls it away. It is a beautifully filmed movie, but it is a painful experience, particularly considering what Haneke suggests my interest in watching such a film says about me.

Even if it was a difficult film to watch, its brilliance made me eager check out Haneke's other work. So when a local theatre was showing Haneke films for an entire week, I rounded up some friends --- Zee German, Minnesota, The Greatest TA of All Time (you sir, are a brilliant and talented man, and I don't only say so because you might be marking my assignment at this very moment), and Soul-Patch* --- and we headed over to watch "The Seventh Continent." As we left the theatre, Zee German and Minnesota claimed it was the worst movie they had ever seen. I tried playing the contrarian (I'm a bit of a jerk that way), but I have to admit, I also hated it.

The film follows a middle-class family living a regular, and what Haneke suggests is a boring and unfulfilling life. So they, well let us say, change their situation.

"The Seventh Continent" is also difficult to watch, but that is mostly because ever scene goes on about 10 times longer than it should. It's one thing to have long scenes that build tension --- and to be fair, there are some tense/heart-breaking scenes. But is is another to show 5 straight minutes of someone literally flushing money down the toilet from a single camera angle

And so it was with trepidation that I went to watch Haneke's "The White Ribbon" during the Edmonton Film Festival last week.  The movie had won the Palme D'Or at Cannes and so a bunch of us were interested. But I was so disappointed in "The Seventh Continent" that I expected the worst.

"The White Ribbon" follows some weird and tragic events that happen in a small village in Germany in 1913.
But in the end, I didn't connect with film at all. I found the story to not be particularly interesting, and I came out not having any idea what Haneke was trying to say.

I did enjoy his stark black-and-white cinematography. In particular, Haneke seems to love to allow the camera to linger on shot in which all characters have left, only to allow them to re-enter the frame from where they came. I also appreciate that all characters are given heaps of depth. But I really have no idea know what it was all building to.

I suspect a European audience will get much more out of it than I did, just because of the cultural background and history that the film assumes. I had no idea until about halfway through the movie that the year was 1913 (my guess was about 15 years off), and I wonder if this would have been immediately obvious to someone from that continent.

I do appreciate that Haneke doesn't spoon-feed his audience with this film, but it feels like he goes too far the other way. It is almost like the film is deliberately frustrating. For that reason, I am less than impressed. It is certainly hard for me to recommend a movie that I did not get, or even really enjoy.

In the end, I am left with an odd opinion of Haneke. I remain staunchly in favour of "Funny Games" and staunchly in opposition to "The Seventh Continent." "The White Ribbon" simply left me cold (perhaps by flying right over my head). But after seeing all three films, I can't say I have nearly as much interest in seeking out any further Haneke films as I once did.

Note: Some internet chatter I have seen suggests "The White Ribbon" is about how the seeds of fascism and Nazism were sown in the young generation. I suppose I can kind of see that if I cross my eyes and squint.  However, I maintain that even if this is indeed Haneke's message, he has obfuscated it far too much. Again, maybe this was all obvious for a European audience, but I completely missed it when I saw the film, and I would be lying if I didn't admit that I am having a hard time seeing it now.

* Soul-Patch is a pretty cool nickname (it makes him sound like a cop in a 70's blaxpoitation film), but it isn't accurate, and I'm pretty sure I can do better. Next time, I promise will.

Monday, September 21, 2009

Pump Up the Jam

Today, I did a departmental talk on the research I did for my Master's thesis. In the hour before the talk, instead of fiddling with my slides, I prefer to watch videos on the internet to both clear my head and pump me up. For your own inspirational needs, I include a list of similar movies below:

Our first entry comes from Jackie Chan in the movie Miracles. Let me begin by saying that until this scene, this film is terrible. Just atrocious. The plot is nonsensical even for a Jackie Chan film, which generally only act as vehicles for his action/comedy scenes. But then he starts fighting seemingly a 100 men in a rope factory, and the film totally redeems itself. This may be the quintessential Jackie Chan scene. He is constantly being beaten up, but you know he is never going to get seriously hurt - or at least his movie character doesn't - and there are plenty of great physical gags along the way. For some reason, the dubbing is just terrible in all the clips I can find. Don't worry, there is very little talking in this clip. But that music is just awful!



Keep in mind, Jackie Chan famously does his own stunts, as do all the other characters in this film. Just incredible.

The second instalment on our list comes from the late great Warren Zevon. While this song may not pump you up, its a great tale about a hockey goon who just wants to score a goal. Unfortunately, he just isn't very good at the sport. It is kind of like Rudy - just with a puck.

Below is a live version of the song. I love the reactions from the crowd as they slowly get sucked into the song.



If you don't smile when Buddy scores and the crowd goes wild, I am pretty sure you are dead inside.

Finally, we have the cream of the crop. It is a montage of Wendel Clark highlights set to Metallica. You really can't ask for much more to pump you up, although it obviously helps that I grew up a Leafs fan.



I didn't appreciate Wendel Clark as much as I should have. I have never liked goons, even if Warren Zevon has made me reconsider my position, and I think that as a kid, I misunderstood Wendel's role on the team. I think this was mostly because I was young, impressionable, and he seemed to get a similar adulation from the crowd as did Tie Domi (who I really didn't like). In retrospect, that wasn't fair to Wendel, but not Domi - I still hate that guy. Wendel was never sent on the ice with the express purpose of fighting. Sure, it happened - a lot actually - but it was never a sideshow. It was always borne out the natural emotion of the game. And being tough certainly wasn't his only talent, as he was a hell of a hockey player. This last point is the key for me. I hate goons clogging up roster spots. But if you are tough and can play, I am plenty happy.

So thank you Wendel for all your years of service to the Leafs. And also for inspiring this video which can any Leaf fan raring to go - even if it is for an academic talk.

Friday, September 11, 2009

The Remnants of a Tall Man

A little over a month ago, a good friend of mine - we'll call him Minnesota, although I was very tempted to go with Al Franken - left Edmonton for greener (or at the very least warmer) pastures. While he was gathering his possessions for the move, he collected a bag of random things that he didn't want to bother taking with him. He gave this bag to me as a parting gift under the condition that I catalogue its contents and post it on the internet. I do so below:
  • A stack of 8.5x11 lined paper
  • A fancy pad of paper. When I say fancy, I mean it has an insignia on every page. The insignia involves a set of scales and a book. There is also a website address, but the site is written in German. As this is one of the many languages I cannot read, I am going to assume that our departed American friend was a member of the German equivalent of the Free Masons.
  • Regular and Large Envelopes
  • Stamps. Which are convenient given the above combination of envelopes and paper.
  • Skat score sheets. Skat is a three-player German card game that is horribly complicated but still a lot of fun to play. Many a night ended with a several hour session of playing this game with Minnesota and Zee German (another good friend and Minnesota's roommate). Since these score sheets generally reflect poorly on me - although I at least had a positive score on this last one - let's move on.
  • A bag from IJCAI. This was the main component of the conference swag they handed out. I now have two, and I use them for carrying groceries. I like that the bags identify me as a scientist and give me some much needed hippie cred as they allow me to avoid using plastic bags.
  • A cribbage set. I have no idea how this game works aside from the fact that it involves playing cards and a horse-track looking thing. 
  • A half-used bag of balloons. When Zee German moved out of our apartment building early in the summer, we felt it would be hilarious to fill Minnesota's room with balloons (well, Zee German thought it would be hilarious - I thought it would be kinda funny and am perpetually a sidekick). Any way, this was before it took a painful hour of blowing up about 100 balloons by hand. At that point we decided to stop with only half of the bag of balloons being gone, not because more balloons wouldn't be funnier (they most definitely would), but because the additional funny was not worth any more of that excrutiatingly tedious job. I hoped Minnesota would make our effort worthwhile and respond by angrily flipping tables, but he mostly took it in stride. Although it was great to hear that for several weeks thereafter (I may have my timeline wrong, but this is my story dammit), he was occasionally awoken by a balloon popping when the sun got to it.
  • Sunscreen. I appreciate gifts that help prevent cancer.
  • Two Books for Online Poker. What can I say, I hang out with degenerate gamblers. Well, to be fair, these books aren't really indicative of this. For these gentlemen, online poker does not really count as gambling considering how well-prepared they are (as many do poker-related research) and consequently how often they win. No, what makes these people degenerate gamblers is their willingness to bet money on flips of a coin, Mario Kart, or Bomberman.
  • A Picture Frame. In which, I should have put the money I won playing Bomberman. I remain the only person who has won money off Minnesota in this game. And I plan on lording over this tiny victory for a long time. However, instead of framing my winnings, this gambling debt was wiped free in exchange for:
  • A Deep Fryer. Technically, this wasn't in the bag, but I am including it anyways. I like to call it the Minnesota Memorial Deep Fryer. In this end, our tall friend signed it before he left. It became quite notorious at parties during which eventually something silly would end up being deep fried. During occasions like these, I enjoy remembering how much education the lot of us have.
  • Rolls for coins.
  • Skin Moisturizer.
  • Half a bottle of olive oil. The cook in me was very happy about this.
  • Poker Chips. Did I mention I hang out with degenerate gamblers? I am pretty sure I could get people betting on a game involving that cribbage horse-track in which I use dice to advance the "horses." On that note, I don't see anything morally offensive about running an illegal gambling parlour as a way to supplement my research funding. It is for the benefit of science after all. And perhaps an HDTV.
  • A 3 1/2" floppy disc drive. When Minnesota arrived in Edmonton, he brought along his desktop computer. In order to save space, he pulled all the components out of the casing. He didn't bother buying a new case in Edmonton, and instead just had his computer innards strewn (carefully) on the floor beside his desk. He then brought the computer back to into the US the same way it came in. But I guess the floppy disc drive didn't make the cut.
  • 2 window blinds. 
  • CFL towels. They gave these away for free at an Eskimos game. This may have been the game in which we saw a drunken fellow flip off a cop and then fall 4 flights of stairs directly into a concrete railing. This resulted in an audible gasp from the crowd which eventually erupted into laughter when it became clear the man did not seriously injure anything but his dignity. Sometimes, I just love karma.
I was also given a fake sword that was used as part of a Halloween costume. I also accidentally stole Minnesota's XBox by neglecting to remind him that he had left it at my apartment for nearly a year. I swear that was a mistake and that I am not playing it right this instant.

Anyway, thanks for the grab bag and good luck with your new job in that much warmer climate.

Update: In some not-so-private correspondence, Zee German made an excellent point. I forgot to mention Minnesota's philanthropic efforts. Along with the bag I was given,  Minnesota gave me two garbage bags of items to give to the poor. I did not go through those bags carefully except to throw the contents in a bin for a particular charity. I noticed some clothes and bedding, but nothing particularly exciting. Regardless, I salute Minnesota for this act in the name of the betterment of society. You truly are a king among men.