Blog | Admin | Archives | Random | Recent | Thanks
    • A grand entrance. Ready for a fantastic night! #albakchan
    • #albakchan the main event
    • Commute
    • Meat, bread, and succotash.

Finals Finally Finished

In quarters past, I have often finished my finals by the Tuesday of finals week, effectively giving me a couple of extra days off. This time around, however, all of my finals were at the end of the week, with Security on Wednesday at 8:30am, and Game Theory and Programming Languages on Thurday, at 8:30am and 6:30pm, respectively. It was a very late way to end the quarter. Nevertheless, I felt that I did pretty well on all my finals.

As evidenced by the late hour of this post, I have already let my normal school schedule slip significantly. The primary culprit tonight was Concurr, the web-based space strategy game that I working on with several others. Tonight, it was Theo and Shai working with me to implement new features, fix bugs, and generally have a good time.

Caught In The Act

On Thursday, the Silicon Valley tech company Palantir came to the UW to give a “Tech Talk,” a self-promotional display of technology used to get CSE students interested in working for the company. The talk is usually accompanied by food and, sometimes, raffle prizes. I decided to attend because I figured I would be hungry around 5:30 (definitely true), and I had heard lots of good things about the people at Palantir and what they were doing.

The food, as it turns out, was pretty good — we got to make our own tacos, and I greatly appreciated it. However, I had a 6:30 class, and was unable to stay until the end of the talk, which I heard went until about 7:00. This is where it gets interesting.

At the beginning of the talk, the Palantir folks passed around a cup into which we were to drop our names to win a fabulous iPod touch. Being all about gaming the system, I decided to enter my name several times — six or seven times, that is — using varried sizes of paper. Furthermore, I went around with the cup, allowing other to place their names in it, before placing my own names into the cup, to give me a superior placement within the cup. Apparently my techniques were effective — very effective.

In fact, I won the raffle. Or at least, my name was drawn first. However, because I had to be present to win, and instead I was attending my 6:30-9:30 Programming Languages lecture, I did not actually win. So they placed my name aside and drew again. And then my name was drawn, again. I still was not present, so I still did not win. Finally, someone who was present did win, and the raffle ended.

It seems that my actions grated on at least a few people, although the student who reported the incident was “nice” (?) enough to omit my name, while nevertheless accusing me of having no integrity. I decided to thank him or her for the post, and take full responsibility for my actions in a comment to the post.

But, I would like to hear from my readers as well: Were my actions unethical? Am I a shmuck? Should I be ashamed of myself? (Right now I’m not.)

Hacking Concurr

Shai came over last night and he, along with Bobby and I, hacked away at Concurr, the web-based space strategy game based originally based on Konquest. The new features include a newly fixed multi-party combat model that once again produced messages (my contribution), a display of a planet’s current upkeep (Shai’s contribution), and a reintroduction of move cancellation (Bobby’s contribution).

After we each completed our task, we played a short game that Bobby won. I still find the game totally fascinating to play — in  games of more than two people, it is very difficult to tell who is going to win until late in the game, because the game is quite well balanced.  I guessed that bobby was going to win about half way through the game, but I wasn’t sure enough about it to conceed the point. The multi-party combat model makes the game much more strategically deep — you can now attack the same planet from multiple places effectively, as long as you ensure that all your ships arrive at the same time.

Key features still planned include an in-game chat interface, integration with Facebook, end-game detection, and an improved user interface.

Two Weekends of FIRSTs

Last Saturday, I refereed for the Edmonds, WA regional of the FIRST Lego League competition. The competition went smoothly and the regional sent six teams to the state championship, which took place at Bellevue High School yesterday. Once again, I refereed and once again the competition went smoothly. The overall level of play was higher, as all teams at the state championship had already been vetted at the regionals the previous week.

Today, I was once again a referee, but this time at the FIRST Tech Challenge, a new competition that evolved out of the Vex Robotics competition, which I refereed for last year. Unfortunately, this time the competition did not go smoothly. There were numerous technical glitches for hours, and in the end the tournament turned into a “scrimmage” and the real competition got rescheduled for February. After leaving the competition, I went to check out the new robot control system that will be used for the 2009 FIRST Robotics competition. It is an interesting conglameration of commodity and proprietary hardware — 802.11N wireless gear, Cat 5 cables, National Instruments processor and breakout boxes, new “Jaguar” and old “Victor” motor controllers, and misundry connectors and accessories. All told, it’s a major update of the robot controller package, and should make for an interesting start to next year’s competition.

Google App Engine: Too Many Bugs?

I know that Google App Engine is “Beta” and all that. I also know that there are ways to work around both of the egregious bugs I have run into so far. However, after spending a large amount of driving time and downtime during my recent visit to Glacier National Park to refactor a huge amount of code in Concurr in part to work around the first of these bugs, only to be thwarted by the second bug, it begins to feel like Google App Engine is too immature for the real world. I mean, for heaven’s sake, I’m working on a simplistic game and GAE seems too immature even for that.

The first bug, we seem to be the first to discover: sometimes, entities in the data store don’t actually get deleted when App Engine says that they are deleted. I was able to work around this bug by adding a “valid” field to fleets, and invalidating any fleets that should never be returned again. Since storing updates (“putting”) to the data store always seems to work, this workaround seems to be effective. But the fact that it is necessary is disturbing.

The second bug had been discovered before I ran in to it; it was first reported way back in May, but it remains unresolved.

Unfixed four months later, I have to question whether the bug will ever be fixed.

And with two bugs of this magnitude, I have to wonder what other problems lie out in the murky depths. Certainly, I would not trust a “real” application to GAE. At this point, I think going towards the traditional server/database model is the right move for Concurr, and again, it is just a silly game that I happen to love.

When In Eugene

I drove down to Eugene, Oregon today to visit my sister and nephew. In addition, I am helping to bring my sister’s computer back to life and set my nephew up with my Dad’s old laptop. Setting up the laptop with Windows XP was some kind of adventure. I needed to upgrade the BIOS, but that required a diskette, which I no longer have the ability to create easily. Fortunately, the laptop itself knows how to create diskettes — but it has to have an operating system installed to do so. So I ended up installing FreeDOS on the laptop in order to create the disk to update the laptop’s own BIOS. With that done, I was able to install Windows XP, which on a PII at 300 MHz with 128 MB of RAM, ended up being an all-night ordeal. However, he now has the computer and he’s enjoyoing it immensely, so I guess it was all worth it.

As for my sister’s computer, she or my nephew seems to have downloaded some sort of nasty virus or spyware that does a fairly good job of masquerading as an official Microsoft Windows antivirus program. As her computer is a Pentium III, this is also quite an adventure.

By “adventure” I mean of course a lot of watching progress bars and being patient.


With a little help from my friends, I was able to get Nexus into a new case last night, with some new hard drives, a new motherboard, processor, 1280 megs of RAM, etc. The process was remarkably smooth once we found a power supply that could reach the motherboard from the Antec Three Hundred’s power supply tray at the bottom of the case. The CPU fan is a little loud, but tucked under my desk I was unable to hear it last night. I may still even get a quieter fan for the CPU, and two quiet 120mm fans to help keep the hard drives extra ventilated. I probably need to throw in one more SATA adapter to allow a full compliment of hard drives, and then Nexus will be set for probably the next five years.

The major hiccup during the upgrading of Nexus was a dead graphics card; however, the Radeon 9700 Pro from the currently languishing Kaleidoscope fit the bill and got the project back on track. However, it got me to thinking about what Kaleidoscope’s future will be, and this morning I figured it out. Kaleidoscope will become a Media Center PC. All it needs is a suitable AGP card with Media support (component video + HDMI, perhaps?). Since AGP is so out of fashion, I should be able to find a decent card for cheap, and with a few cables It’ll be ready to go. The surround sound addition will also be nice. The weakest link will certainly be the size and picture quality of the TV.