FTL

I finally got around to playing FTL during the downtime here at SXSW, and good lord, it’s as good as I’ve heard. There’s some annoyances to it, but it’s one hell of a roguelike.

Figured I’d take the time to actually post about it now that I’ve had my first win. Engi Cruiser Type A, focused on drones and ion cannons, with a small bomb to take out some specific parts of the boss. I had it set up with a level 3 shield and high engines for evasion, and just barely skirted by.

I can’t think of a game since Binding of Isaac that had my heart pumping like this at the last second.

The Walking Dead

Quick note: I’m talking about the game here, not the show or the comics.

So I just finished the final episode of the first season, and holy shit. Telltale Games knocked this one straight out of the park. I almost hesitate to call it a game as such, because it really feels like an interactive television series. It has some old point-and-click adventure characteristics, but it has more in common with a Choose Your Own Adventure book than any game. This is not in any way meant to be a negative. In fact, I’d say it’s much to the advantage because the style allowed them to focus heavily on the characters in a way that is uncommon in a more typical game.

Speaking of the characters, I was invested in them at a higher level than any other game I can think of. I’m a sucker for a good character-driven drama, and this delivered in spades. Every decision was agonizing because of this character investment, and Telltale did a great job of setting it up so that there is no right answer to a situation. Every choice is going to suck, so you just need to go with your gut and try to figure the best way out of terrible situation after terrible situation.

It’s on sale right now for less than the price of a decent dinner. Buy it if you haven’t already.

Election Night

So I don’t often (if ever) get political here, but tonight matters too much to just let it slide by. Obama’s victory is huge, but there’s tons of smaller victories across the board that might get lost in the presidential shuffle.

  1. Todd Akin lost.
  2. Richard Mourdock lost.
  3. Elizabeth Warren won.
  4. Tammy Baldwin won.
  5. Gay marriage legalized in Maine.
  6. Gay marriage legalized in Maryland.
  7. Recreational marijuana legalized in Colorado.
  8. Recreational marijuana legalized in Washington.

Obama isn’t my ideal candidate. He’s not bad, but he’s definitely not ideal. However, everything else on that list, and plenty of other things that I missed or neglected, came out on the right side of progress.

Oh, and I’ve said it before, but just to put it down on the proverbial paper: I want to vote for Elizabeth Warren for president in 2016.

Liars and Outliers

I got Liars and Outliers signed, for cheap, direct from Bruce Schneier on the condition that I write a review of it. He sold 100 of them this way as a pretty clever way to stir up some publicity. It also worked as a motivator for me to actually write about it.

The basic gist of it is that while I enjoyed the book, it felt like he was preaching to the choir. I didn’t find very much new information (though size-weight misperception was new to me and seems pretty interesting), and my guess would be the type of person that’s likely to pick up this book and read it is in the same boat. There are countless people who absolutely need to understand the concepts it contains, but I’m unconvinced they are a likely audience.

I have to admit that I sort of hated the logistical aspects of this printing. There was an abundance of tables that largely seemed unnecessary, the top and bottom margins seemed to vary without a whole lot of rhyme or reason, and all of the notes were endnotes. Why would anyone publish a book with all of the interesting side bits shoved to the end (along with this one, see Before the Lights Go Out)? Have these publishers never read anything by Mary Roach? Footnotes that are interspersed throughout the work rather than being relegated to 37 pages at the back a) are going to actually be read, and b) exponentially increase the quality of the work. I’m sorry, but keeping two bookmarks and constantly flipping back and forth just isn’t worthwhile when I’m actively reading, and as a result I’m missing out on context and content. From briefly talking to Maggie Koerth-Baker about this, it seems that it’s something on the publisher or printer or other non-author end, but seriously, for research-based writing footnotes are leaps and bounds above endnotes.

Anyway, back to the content, Schneier does an excellent job of presenting the research, but he almost comes off timid. There seems to be a reluctance to really call out those making unrealistic and/or harmful security tradeoffs. Yes, many of the decisions can be rationalized and explained, but they are still bad tradeoffs. In his more informal writing, Schneier is blunt about security theater and all that it entails, and I felt like that bluntness was sorely lacking in much of this book.

As someone who is familiar with a lot of the research in this area, I have to believe I am not the target audience, no matter how much I may have wanted to be. I think that’s probably my mistake in expecting something far more in depth, but the reality is that the audience for that level of research is considerably smaller than the audience for which it feels like this book was written. For someone ignorant to the field looking for an overview introduction to security in all its forms, I don’t know of a better book.

Who Fears Death?

Who Fears Death, like so many of my newer sci-fi or fantasy novels, came to me via Boing Boing. It almost pains me to admit it, but I kept pushing it back on my to-read pile for the same reasons it turned out to be fantastic: I wasn’t sure how much I would enjoy or relate to an African-centric light fantasy/sci-fi novel. It turns out the answer is a lot, to both.

Despite being clearly written for Western audiences, it does very little to Westernize the characters or culture. Topically, the story doesn’t pull any punches, dealing with everything from brutal racism to female genital mutilation to weaponized rape. There were parts that were physically uncomfortable for me to read, and that’s fantastic. The characters are complex and believable, and very little is depicted as stark black or white.

We need more books like this.

The Binding of Isaac and Difficulty Curves

The Binding of Isaac is one of the best games that I’ve played in years. It takes some good things from roguelikes, some good things from action role-playing games, and some good things from twin-stick shooters, throws them in a blender, and delivers an absolutely amazing experience from start to finish. With over 200 hours into it (and all the achievements), I think it’s safe to say that I liked the game. I’m not going to go into detail about the game itself, as by this point plenty of other people have done that.

About a month and a half ago, an expansion was released. Wrath of the Lamb details were leaked here and there, and I was getting more and more excited to see what would be added and expanded. There were some really interesting mechanics that were added to encourage riskier play (some great commentary from Edmund McMillen here), but unfortunately it came at the cost of the beauty of the original’s structure and difficulty curve. The guys at Extra Credits did a great piece on power creep recently, so I’ll simply direct you to them and mention that this is almost a textbook example of power creep destroying a carefully balanced system.

Difficulty curves like the one below are standard, and tend to be ideal in most cases. The challenge grows, then a bit of relaxation, then it grows again, and continually brings the player through the game advancing their skills while continuing to challenge them. This, in a nutshell, was the original Binding of Isaac. Sometimes a specific item early on would make the peaks in the curve much lower, but the game always followed the general progression.

Ideal Difficulty Curve
Power creep, as mentioned, was a problem with Wrath of the Lamb. While a large number of items weren’t necessarily stronger but encouraged different gameplay, a few were game-breakingly powerful, either individually or in pairs. I can only assume that this was known, because the expansion boosted the difficulty quite a few notches — and here’s the issue — randomly and unevenly.

Now, one of the best things about roguelikes that was stolen by Binding of Isaac is random level generation. This allows a game to always feel fresh and new, no matter how often you play it. They did a great job of having designed rooms organized in a random fashion deliver a different experience from game to game. Each level you progressed would be slightly larger and more difficult on average, but every now and then you’d get a level that was a tiny bit harder than the one to follow it which kept the player on their toes.

Wrath of the Lamb, however, throws some interesting new twists into the random generation formula. Two are interesting and valid twists, but the third wrecks the curve, especially when combined with either of the first two. First, there is “Curse of the Lost” which results in the level you’re on being generated as if it were one level further. This is a valid tweak, and can be compared to things like out-of-depths monsters in other roguelikes. The second is “Curse of the Labyrinth,” which combines your current level and the one below it into one massive level. This is also interesting, as it changes the style of play due to the potential for more exploration or a quick run through two bosses, depending on the player and setup. However, that brings us to the third.

Each level has an easy or a hard mode,  and which one a player lands in is random. These are not subtle differences either, especially at the early levels. For example, a “Curse of the Lost” hard opening level may very well be more difficult than the next three levels the player sees. This breaks the difficulty curve, and in my case, results in scumming if I received as poor first level. Even without either of the “Curse” addition, these hard-mode levels break up the smooth curve, resulting in jarring leaps from hard to easy and vice versa at random intervals. If the player had a choice upon moving to the next level, the easy vs. hard setup would be fantastic. It would allow an over-powered (or challenge-minded) player to take a harder path and roll the dice for better items, while at the same time allowing a luck-deprived player the ability to skate through a couple easier levels in hopes of gaining strength and moving on to the harder side. This option is already present at what was the original end of the game, but nowhere before. It would be trivial to add more interesting temptations to the harder path as well, since the game already has a multitude of ending possibilities and “final” bosses.

The Wrath of the Lamb expansion didn’t destroy The Binding of Isaac. It’s still a good game, even with the expansion. The problem is that the original was a damn near perfect game, and the fiddling and tweaking just upset the precarious balance that had been achieved.

Then again, Edmund’s games have sold millions of copies, whereas I’ve never even finished developing a game…

* Image stolen from an interesting post on difficulty curves and their relation to narratives.

Icebound

So I’ve clearly fallen off the wagon of “write something about every book I read,” but I feel like this one requires a small brain dump.

For a little backstory, when I was first getting into actual literature, I couldn’t get enough Stephen King books. This was middle-school era, sometime around 1993. When one of the women I bowled with found out, she highly recommended that I try Dean Koontz. I picked up a few on her recommendation and I loved them. They actually helped me get through some pretty rough times, so I’ll always have a bit of a soft spot for his works. However, as my tastes evolved, I moved on to different genres and authors. I haven’t read anything of his in years, but I one leftover book has been sitting on my to-read pile for literally fifteen years. Something in my head thought it would be a good diversion from some of the more serious literature I’ve been reading as of late (Khaled Hosseini’s works, some old classics, etc.), so I decided to finally pick up Icebound.

Icebound is one of Koontz’s earliest works (originally published in 1976 under a pen name), and while reading it I was really trying to keep that in mind. He tells a decent story if you’re looking at it from the entertainment perspective, but good lord, it feels like amateur hour in terms of language and structure. It left me wondering if all of his books are written this way and my middle-school self just didn’t notice it, or if it really is because of how early in his career it was written. Every character was introduced by name, then immediately and ham-handedly described. No character development was ever left to subtext, or even basic observation. It completely failed at the concept of show, don’t tell.

The plot was supposed to be tense, but instead it felt like a soap opera and an action movie got together and had an awkward lovechild. The story was basically enjoyable, but it just radiated melodramatic camp. There’s the son (or grandson?) of an assassinated president who hates the corrupt world of politics and goes off to seek his thrills, the brilliant and gorgeous female scientist with a fear of ice (…on the Greenland ice sheet…) along with her German ex-lover and her current quietly heroic husband, the stoic Russian who is driven by the guilt of his lost child, the black football player turned multi-degree research scientist, and more. Some of these characters might be compelling if they were allowed to develop into actual characters, but the way their biographies are just dumped on the reader feels like a “Previously, on Days of Our Lives” voiceover. Others, well, there’s only so much suspension of disbelief.

I’m half-tempted to go back and reread some of his older works to see if they’re as ridiculous as this one, but I already have dozens of books left on my to-read pile. Maybe in another fifteen years.

Bad Data and Bad Science

It’s been almost a year since I last posted, so I figured I’d take something I’m passionate about to work back into the whole writing thing. It helps that this topic has been spurred on courtesy of Twitter debates and a book I recently finished.

People who know me know that I’m pretty easy going. It takes a lot to get me worked up, in either a positive or a negative direction. However, as I’ve gotten older, I’ve realized that there is one really easy way to get me fired up: bad data and/or bad science. It’s quite often that one of these follows from the other, but every now and then they show up individually. It doesn’t even matter if I agree with the conclusions. If the path to get there is littered with bad data or bad science, I can’t help but feel the urge to tear it apart.

I’ve been feeling these pangs for a couple years now, but the first place I really noticed thetm was when I stopped reading Respectful Insolence. It was always a bit of a chore to read because of the length of the articles and the occasional jargon, but what pushed me over the edge to remove it from my RSS feeds was that I just couldn’t handle his rantings against the anti-vaccine movement. Don’t misunderstand me; I agree wholeheartedly. The problem was that just reading the refutation of anti-vaccine garbage was enough to get my blood boiling.

It doesn’t matter if the topic is Medicare fraud, chiropractic medicine, or just how to perform some action in a video game. When someone presents an argument with incorrect or unsubstantiated data, I simply cannot ignore it. If I see anything that even looks suspect, I will gladly spend the next chunk of time researching it to find out if it’s valid. Unfortunately, this will often lead me to feel like the character presented below:

Duty Calls

As I mentioned in the beginning, a book that I read recently helped bring this post together. How Risky Is It, Really? is a book that I should have been able to enjoy with ease. I completely agree that today’s society has overblown most risks and basically ignored some of the ones that actually are important. However, I found myself shaking my head and beginning to skim through it because of how loosely the author plays with the data. I can mostly forgive things like rounding for effect, but every time, to quote Tim Minchin, “a small crack appears in my diplomacy dike.” By halfway through the book my diplomacy dike was nothing but rubble.

Above and beyond that, the author was a reporter for most of his career, and despite all of his attempts to warn against the way the media plays on the fears, he falls into old patterns. It’s written with an eye for the “Gotcha!” reveal, and while I can certainly appreciate that in certain contexts, this is not one of them. As mentioned, he plays loose with the data, and has a tendency to only scratch the surface of what I would consider the factual content of the book. I finished it, because I (almost) always finish books that I start, but if I’m being honest, I started skimming for the last 30 pages.

The Screwtape Letters

So far, I’m somewhat iffy on The Screwtape Letters.  Lewis continues to put Christianity in the position of absolutely logically coherent, and claims that disbelief is based solely on emotion. That is a hard hurdle to jump if I am the audience, but he manages at points to at least be interesting.

In particular, when talking about the war effort, Lewis says the following from the perspective of a devil’s spirit attempting to lure a man away from God:

Let him begin by treating the Patriotism or the Pacifism as a part of his religion.  Then let him, under the influence of partisan spirit, come to regard it as the most important part.  Then quietly and gradually nurse him on to the stage at which the religion becomes merely part of the ’cause’, in which Christianity is valued chiefly because of the excellent arguments it can produce in favour of the British war-effort or of Pacifism.

Once you have made the World an end, and faith a means, you have almost won your man, and it makes very little difference what kind of worldly end he is pursuing.  Provided that meetings, pamphlets, policies, movements, causes, and crusades, matter more to him than prayers and sacraments and charity, he is ours — and the more ‘religious’ (on those terms) the more securely ours.

Certainly seems to me that is something many of the more vocally “‘religious’”* people of today could stand to hear.

Honestly though, while I respect the man’s literary prowess, I simply do not enjoy reading his work.  I used to look upon him as one of the best religious authors, but now he just strikes me as presumptuous.  I’m not sure if I’m more cynical now or if I’m reading it with a more honest eye; I would have to put the odds at 50/50.

I’ll finish the book (hopefully soon), but it is definitely taking effort at this point.  Probably not the best choice for trying to keep up my reading habits after moving back to York.

* Quoting a quoted word is weird.

Comp 175 Final Project

I’ve always been intrigued by fractal geometry, and basically anything that can be created algorithmically. The creation of 3D fractals seemed like a natural fit, and since my focus is in HCI, I decided to play with the user input as well. Both of these decisions opened up interesting complications.

Originally, the plan was to deal with a fractal that expands from a central point, exploding off a face of the previous iteration. However, after a proof of concept, this seemed less than optimal since the user could only focus on one arm of the fractal at a time. At that point, I decided to switch to reductive fractals, starting with the 3D version of the Sierpinski Triangle.  Since time allowed, I also added in a 3D version of the Box Fractal.

Very early on, it became obvious that the GLUT implementation for user input was a spectacular failure.  It seems as if it’s polled rather than interrupt-driven, and the polling interval is awful for realtime interactions, in particular with the mouse.  After tinkering and doing some research, SDL was continually referenced as a standard and reliable library.  Getting it to compile properly under a terminal in OSX was a little quirky, but once all the kinks were worked out it performed (almost) flawlessly.

I decided to run the program in a tight loop, and this makes the user input very dependent on the frame rate.  This is the cause of the “almost” in the prior paragraph.  It results in some jerky movement at high levels of recursion, and can result in lost inputs on occasion.  It is, without question, leaps and bounds above the standard GLUT options, but it still isn’t quite perfect.  I debated rate limiting it so there is a consistent frame rate, but as it is, gross repositioning is fast and easy when the recursion level is low.  However, if I were continuing the project, smoothing out the input is one of the first places I would start.

Since the performance is inconsistent, I decided to run with a bounding box style collision detection.  It’s a little hackish, but it’s quite cheap.  This seemed to be quite important at the higher levels of recursion.  In a bounding box setup, boxes are drawn at the extremities of an object and collisions are based off those faces (which align with the XYZ planes), and camera movement is refused if it would be placed inside one of the boxes.  I decided not to implement it on the Sierpinski version because the box drawn around the tetrahedron would severely limit movement inside the fractal.  With the box fractal the bounding box lines up exactly on the cubes, so this wasn’t an issue.  Though functional, this is another place that I would make adjustments if I were continuing it further.

The camera controls of the program follow the standard first-person shooter controls:  WASD for movement (forward, left strafe, backwards, right strafe) and the mouse for looking.  Note that it is standard view, with mouse movement up adjusting the view up.

The fractal controls are fairly basic.  “-” switches to the Sierpinski fractal, and “=” switches to the box fractal.  When viewing a fractal, the number keys control the level of recursion.  Note that the maximum recursion for the Sierpinski fractal is 6, and the maximum recursion for the box fractal is 4.  They are controlled independently, so setting one recursion level will not affect the other fractal at all.

Screenshots:

Code and Instructions:

Since OpenGL and SDL are cross platform, building this on something other than OSX 10.5.8 should hopefully require minimal changes.  However, that has not been tested.

Assuming 10.5.8 with the proper frameworks installed, building and running it should be as simple as “tar xzvf project.tar.gz”, “make”, “./project”.

Download Project