Outside of the set

Leibniz's belief in a universal digital coding embodied his principle of maximum diversity: infinite complexity from finite rules. "Nothing is a better analogy to , or even demonstration of such creation than the origin of numbers as here represented , using only unity and zero or nothing," he wrote to the Duke of Brunswick in 1697, urging that a silver medallion be struck (with a portrait of the duke on the reverse) to help bring the powers of binary arithmetic, and "the creation of all thing out of nothing through God's omnipotence," to the attention of the world.

Where does this meaning come in? If everything is assigned a number, does this diminish the meaning in the world? What Gödel (and Turing) proved is that formal systems will, sooner or later, produce meaningful statements whose truth can be proven only outside the system itself. This limitation does not confine us to a world with any less meaning. It proves, on the contrary, that we live in a world where higher meaning exists.

Turing's Cathedral, George Dyson

My FPS Engine and Masters of Doom

I really thought there'd be more to it. But running through a quick raycasting coding demo (something new to me, but always wanted to know how it work), I was soon able, after a couple of duh bugs, to get a running Java application spitting out a random wall grouping. 

Reminiscent of my first FPS game I played, Wolfenstein 3D, and the same idea that powered the raycasting technology that's the cornerstone of the book Masters of Doom.

I had thought that doing the coding would provide some insight into the book - like loads of Pernot while reading A Farewell to Arms. In both cases, it doesn't really help. There's plenty of summaries out there in the world of this book, so I wont' waste time summarizing except to tell the uninitiated that it's a history of id Software and its rise and collapse under the watchful and egotistical eyes of John Romero and John Carmack. 

This isn't to disparage either thing. I had a great time and learned a lot about modeling vision within an FPS raycasting system that was not altogether evident just reading through the code (my own Ahaa's found in the commented code). The book itself is well-written and is an adventurous story. Particularly one of young people who have discovered something incredibly powerful and are not sure what to do with themselves. I'm sure I would have been even less mature and more vindictive at their age. While, I'm still obviously less intelligent. 

Consider this - I collect a lot of cookbooks, and there's a moment of discovery in making a recipe you never have or even in making a recipe that puts better flavor into what you already know. There's a connection there too, between the cookbook writer and yourself (except if you're watching Julie and Julia, that is bullshit!). However, in there is labor in that process. You have to earn the work, and, well, sacrifices must literally be made. 

One of my favorite books on computers is The Elements of Computing Systems. I loved discovering how a processor actually works, how memory gets used, and how to build an OS from scratch (yes, yes, start with the universe, ha ha). But I know in reading it that I'm at an elementary school level. It doesn't sap my enjoyment of learning, but I won't be there with the chef as in my cookbook example sharing the same thing. 

Likewise in coding a raycasting FPS engine, I am so far behind, even within the narrative of the book which covers the development of Quake, that while I love the learning, I don't feel empowered. True, I don't need to fuss around with OS/2 memory management anymore, but more importantly, I can make a game like it if I want to using Unity. However, with cooking you can't substitute - you need to learn the recipes, otherwise, you won't be able to cook like the chef ultimately. 

So does the same thing hold true for coding in the steps of the greats? Are we able to say, "Look, learn this, skip Unity for now, and then go ahead." ? Do we respect that type of thinking as coders anymore, particularly within game development?


Setting up Rails on Digital Ocean with Dploy.io

Lately, I've been having a good time with Dploy.io. I've also been enjoying Digital Ocean. Combining the two has caused a couple of problems when it came to Digital Ocean's one-click Rails VPS. Following Digital Ocean's tutorial on how to quickly setup a Rails application, I ran into a few details that weren't mentioned therein that I thought it would be best to share in case someone else has the trouble. 

Nothing that came up was really Dploy's problem, so most of these are on Digital Ocean, but there's a couple additional actions that are useful for updating a Digital Ocean Rails VPS.

Okay - now the problem that started it all: My site just didn't work and hung.

This was an out of the box, totally clean rails installation. I put together one controller to make sure I had routing functioning, but aside from that it was as fresh as it gets. Replacing the default Digital Ocean rails application with mine is where my problems began. Here's how I went about fixing it:

  1. You'll need to make sure you have a secrets.yml file and have generated a key for the production environment. My basic 'rails new' didn't do this on my desktop, but this was present in the default DO installation. You can generate a key using 'rake secret' if you like. In this case, I placed this file as a static file for dploy.io to override my local file so that the real key wasn't left in source control. 
  2. Your Gemfile needs to include 'mysql2' and 'unicorn' gems. I was having a little trouble locally with the former gem, and so I created a production gemfile that dploy.io also overwrote after pulling from git. Mysql2 was mentioned in the tutorial, but activating the unicorn gem was not.
  3. Production.log needs to be created with permissions 0666. This does require a unicorn restart. 
  4. As described in the tutorial, you'll also need to set the correct database credentials in your database.yml file. 
  5. Finally, I also added "service unicorn restart" and "RAILS_ENV=production rake db:reset" as post build commands. 

Not end-of-the-world type stuff, but the secrets and missing unicorn gem details were annoying, as was unicorn hanging on a missing production.log file. However, once it's all hooked up, I've got automated deployment, custom config files and hook events running after every commit, which sure does feel nice. 

Writing about games is hard

This last week (sometime in July of 2014) I finished the fourth release from Boss Fight Books - Galaga by Michael Kimball. My intent with this book was honestly to wash the taste out of my mouth from reading their second publication Chrono Trigger (by Micahel P. Williams), but unforunately this recent book didn't help much. 

Writing about video games as a serious medium is no longer in its infancy, but it is, to some degree, a stumbling toddler who has a tendency to hit their head against table ends. There are great books on games (and everying surrounding them), such as Masters of Doom, The Platform Series, and, shit, even Ready Player One for all its plot ridiculousness still makes playing with gaming concepts and literature fun. Boss Fight upholds my analogy and they commit one key failure that makes it so - they want gaming and gaming literature to be taken seriously without actually writing content that would make it so. 

I'm going to look at both these books as a group because they share a lot of the same critical problems. 

The biggest issue is both authors associate their respective games with something that on human level that is emotionally jarring and has nothing at all to do with their games. Williams talks at length about the Fukashima disaster (if the unnecessary amount of Japanese text in his footnotes wasn't an indication, he spent some time in Japan); Kimball intercuts stories of his abusive father.

I have no problem with trying to connect large ideas, themes, however you want to put it with games. What I do have a problem with is putting things physically next to each other in paragraphs and assuming that the reader will associate meaning with your argument with something obviously meaningful. Abuse and disaster make us feel things automatically. These books' main threads do not. 

Take Williams summation of the Fukashima disaster within a chapter titled "The Day of Lavos." He draws a comparison with your first quest in the post-apocalyptic 2300 AD to retrieve some seeds for survivors of doomsday and the 2011 tsunami: "We [Williams was a resident of Fukashima for a period] are the people of Chrono Trigger's 2300 AD. All we can do is plant our seeds, work to nourish and encourage them and how they will grow into something beautiful, useful, alive." As much as I love Chrono Trigger, this is a ridiculously dull comparison and flat insulting to the people of Japan. 

Think I'm just being harsh? Let's try another example off the top of my head: "We sacrifice part of ourselves, like Mario, every time we hit the question blocks with our heads. Will it be a 1-Up, or a just a single coin we risked our lives to obtain. Either way, it's chance we always take. A chance to grow, to gain new abilities, and to take one further step forward to the goals of our hearts, and those we take responsibility for." See how much that sounds like bullshit? The symbolism and the activity is not equivalent to what I'm trying to associate it with. 

Earlier in the chapter "Life by the Book", Williams equivocates his game's strategy guide and "strategy guides for life." Stating earlier that games teach us "No matter how high your station in life, you can always be knocked down", he sets up "well-highlighted Christian devotionals" and "the book version of a bowl of chicken soup" as examples of these aforementioned guides. First, games are meant to be balanced, and Chrono Trigger especially is.

While games do sometimes make twists that reset us to lower position part way through the game (Chrono Cross is a great example), we nonetheless come out on top. Second, Christian devotionals, self-help guides, and so on are not akin to a guide that just flat says "the power tab" is here. It's a glib way of looking at life if you think the Bible and Chrono Cross Strategy Guide are peers. Maybe he meant A Purpose-Driven Life or something, but the point still stands. Life is unbalanced, life can knock you down, and life doesn't have definite answers. Strategy guides in fact are antithetical to these guides for life. Instead of just going out into something as small as a video game and trusting you can win, you cheat. Warren's Purpose-Driven is trying, in his own way, to give people the tools that he believes will do exactly the trusting and exploration guides remove from games. 

Everything about both ideas are wrong and don't connect. 

Kimball is more forgivable. He weaves a story of his growth as a Galaga player and growing up more generally, which, as I mentioned, does involve abuse. He rightly states that video games were an escape, were a safe place, and were one of the few places where he felt he could express himself and feel strong. I don't think any of this is disagreeable and I don't doubt that most kids, especially those from bad homes, would agree its what they really got out of games. Kimball unfortunately draws these simple and fairly obvious points out for the entire book (albeit a small one) and is somewhat vague about his abuse. Not to say that an author should draw out painful memories to up the emotional connection, but it gets redundant and I'm also at a distance from the discussion of abuse because of the nebulous descriptions ("wrestling"). 

Second problem shared by both books, a bit less serious, is both the authors spend time more time simply describing the gameplay, Kimball more than Williams. If the attempt is to bring in an audience who may not be familiar with the game, it fails as the game play descriptions are incredibly boring and don't really serve as good descriptions in the first place. For folks who are familiar, it's already a waste of their time. It'd be one thing if the gameplay descriptions were actually related to some point being made, but they're aren't. Want to know what Galaga looks like when reading a book from an independent publisher that just publishes books on games? I'd suggest spending 2 seconds searching on YouTube:

Finally, Williams and Kimball, despite devoting what I imagine is a decent chunk of their personal life to these books, don't actually appear to take their subject seriously.

A small beginning of this is how neither author appears to make any effort towards speaking with the games creators (Kimball does have second hand interviews, Williams a few spatterings of quotes). Neither of these guys claim their books are journalism, but the few bits of sources are actually interesting, and provide valuable background to why the game is the form that it is. As I said, that may not be the point, but don't tease us with interesting quotes and then waste time on gameplay descriptions. 

The larger missing seriousness is both author's lack of respect for their readers's interest in their topics

Kimball's book is a disjointed mess of one paragraph sections called "stages" that go for the entire book. I get it - it's stylish. However, I can't get engaged as a reader if every 15 seconds, I'm forced to jump to a new section. Furthermore, he never keeps his sections consistent. He goes from abuse, to gameplay, to friends he played with, game history, to abuse. I can't get emotionally engaged in any of it, and even if I tried, I would be immediately pulled away. I get it - this is stylish, but it's also annoying, because I actually want to care, but Kimball won't let the readers, because, you know, style. On top of this, Kimball makes several things up and then pages later reveals they weren't true. These are pointless things as well, mainly fan tributes to the game. I, and perhaps others, are interested in reading about games, we take a it seriously, so can we just get on with it?

While I've already criticized Williams for what I think are at best grasping at straws, his most troublesome statement comes at the end of the book:

"I've tried to make this book a Gate Key, but in doing so I have become the gatekeeper, opeing some doors to you and obscuring others behind false walls. I do not apologize for this."

What the fuck is this guy talking about? Honestly, I'm willing to believe I missed something here, something went over my head, so please tell me at corey@ckplusplus.com. This sentence in the penultimate paragraph makes no sense at all. At no point was there any revelation or feel of his control as a gatekeeper to any level. I can only guess the doors he obscured were the ones leading to better and more interesting thoughts about the game. But not apologizing? What does that have to do with anything written? When do author's apologize for the entirity of the thing you just read? What level of arrogance is required to speak to your reader's in this way? Just write a book, state your opinions, draw connections and walk away. Don't create an illusion about yourself in the last paragraph to some personal ends. No one cares

These books are frustrating and in the end, Boss Fight maybe doesn't need stronger writers, but better editors. I don't doubt that Kimball and Williams could have written fairly enjoyable and enriching books had they been pushed by a proper editor to cut the bullshit parts, focus on real deliverable insights and acted like what I believe Boss Fight hopes to be - a publisher that shows how games can touch us deeply and emotionally, make us better people, and open us to new worlds.

Le Petite Chien's Night Out

I met a little dog one night in Paris at a bar. This is what I imagine his night out as like: 

Getting Ready


At the bar


Too drunk to drive

3 Game Books I Just Finished

The Platform Series from MIT Press is something that I've dreamt about but never had the specific description to really define what I was looking for nor the expertise to deliver it myself. As the name implies, each book in the series covers a particular platform, as of the time of this post: Atari VCS (the 2600), Nintendo Wii and the Commodore Amiga. Considering the nature of the publisher, the books are not maudlin non-sensical nostalgia-gasms that some other companies (BOSS FIGHT BOOKS) have published on video games. 

See, unlike most of what's written about video games, which seems to center on the idea that "video games are popular and have gained credibility", the platform series treats the individual platforms, their games and social cultures adjacent as distinct subjects that they genuinely believe have something to reveal about the nature of play, simulation, technology, economics, and all the rest of those academic subjects. 

Generics on the series as a whole aside, each book, which I loved each of them, has their own gems and rather than summarize in their entirety, and they should be read as such, I'd like to hit on what stood out to me for each one


Racing the Beam 

I have a fascination with the Atari 2600 that a lot of my generation shares. I didn't grow up playing it exclusively (that was the NES), but I did have one in my home for a short while, and I've always loved the charming simplicity of its games, its hellish sound and the legacy as a business Atari laid (by the way, if you haven't seen Once Upon Atari, please do). I'm a collector of Atari stuff, and if my income and wife were a bit more open, I'd probably have near a full collection at this point. 

Needless to say, it's why I bought the book. The best section, and most important to the rest of the arguments in the book, is the long and thorough discussion of the different processors and memory locations of the VCS's hardware. Here you learn about how racing the beam actually worked (the beam that drew the CRT TV images), hardcoded sprites, memory for sprites, and the 6507 all worked together. For one, it's nice to have a set of hardware that you can really wrap your head around. Again, charming simplicity. But more importantly, as the book progresses through the games "Adventure" and "Pac-Man", it delivers detailed discussion of how these games were crafted using the chipset available. 

You can't understand why "Pac-Man" on Atari sucked unless you know its chipset, and you can't appreciated how clever "Adventure" was without understand how sprites were kept in memory. The book accomplishes in this long section and subsequent chapters what it sets out to do in the introduction - show how creativity intersected with hardware, and how hardware formed games. It's really something we'd rather ignore now with such an obscene amount of memory and power, but the material does affect the medium and knowing its strengths and weakness helps creative professionals know where to cut and what to push. 

The Future Was Here

I found this book to be by far the most fascinating. However, I don't think there's anything revolutionary in the author's discussion of the Amiga and its software. It's simply the best book I've ever read on a single computer and its history. Well researched, covering every aspect of the system the author's could find including The Bard's Tale, the boing demo, the Demoscene, digital music / video, and the multitasking operating system. 

Putting this book down, you walk away with such an appreciation for the folks who built the Amiga, and those who used what would now be considered, pretty humble hardware, to build unheard of digital expressions. It's one of those moments of understanding - yes computers are about automation, but truly, and particularly in the demoscene, they are really about expression and hard fought at that. 

Codename: Revolution

I am not a Wii player. I don't own one, I've played it some and for the most part, I've found it interesting, but never enough to purchase one. Similar to Racing the Beam, the book's author target the intersection of the technology of the platform including its all important peripherals in order to draw a point about how expression changes with a reduced processing capacity, the sensitivity of the controller, and the player's physical game space. 

I enjoyed the discussion on the design of Mii characters, which led to a tangent on the design of Nintendo's early character designs (Mouths are hard to draw, cool give Mario a mustache), but it's not really the power of the book, which comes in the final chapter. After chapters on how the different aspects of the Wii had impacted game creators and player interaction with the system, the author's took on the follow-up competitors to the Wii, namely the Kinect. 

Not to say they are outright bias, but it's apparent the authors are definitely not fans. They back it up - while the Kinect was supposed to submerge the player into the gaming environment, the author's point out that players generally don't want to be completely subsumed by the gaming environment. Instead, they want a cybernetic environment. Case in point - Wii Bowling. While it may be more "freeing" to not have a controller with the Kinect, having a button, the player could more accurately control release of the ball. 

Having personally had to do non-game programming with the Kinect, I found that trying to do accurate things other than jump and lean, were outside of its capabilities and prevented the user from receiving good feedback as to whether their actions were received. Keys at the very least click. 

As I said, I'm not a Wii fanboy by any means, but its an excellent defense of where the Wii succeeded and the Kinect failed. Yes, Wii needed a better library and wasn't as powerful, but when it used the motion, it used it right - the motion gave you the control you wanted rather than forcing you to substitute physically jumping for pressing the "A" button (not true for all the titles to be fair).

While I don't have a stake in either camp, the final chapters made me actually care about how 3D motion was used in games and that is demonstrative of where the Platform series excels - they teach you and carry you through history and technology to help you understand game expression to the point where, even if you aren't playing said platforms, you're still enjoying that they're out there. 

3 Game Programming Books I Will Never Use

I so wanted these books as a teenager. Unfortunately, my parent's computer wouldn't have run either Java or DirectX to the requirements, but I guess I figured if I had them, I could figure out a way. Still they filled my head with the games I would've created had, which were mainly slight variations on other popular games, ideas I had no materials for whatsoever (such as the popular CD-ROM games of the time), or things that were the video game equivalent of a screenplay about "two friends go on a road trip", usually RPGs in some dystopia (thanks Final Fantasy VII) or something that the computer wouldn't have the memory for.

Either way, it was worth the $4.00 total to purchase for the memories. Also, gotta love those covers.

Verifying Non-Risk Status

I'm very interested in trying to find ways to distribute helping people. Not in micro-donations, but more that if there's someone in my neighborhood that is in need - the elderly, someone going through some home issues, lacking food - I'd love to be able to pull that up on my phone, see the needs and help where I could. Likewise, with enough scale, I think that a lot of simple acts of kindness could occur using the Internet for people to send alerts and then people to volunteer for quick jobs. Sort of like how you already most likely help your friends and family. 

However, it only takes one runaway to be assaulted or one soup kitchen to have massive amounts of food poisoning, and the whole things comes crashing down. While my original thoughts in this matter were toward the latter - how can I get it so in-home prepared food is safe for distribution - the former is much more serious than getting around the legal pains of the health department. 

There are a couple options to verify that we're working with people that have the best intentions and we can make sure they execute their help correctly.

First, is the system we have now, which is essentially people vouch for other people. This is what friends do, and friends of friends when you need help after your car breaks down. But how much vouch is needed and who provides it. Essentially, a seller rating system like on eBay, this doesn't mean that the vouchers don't also have a low bar of responsibility such that the quality of folks is inflated. This isn't necessarily meaning that anyone is doing anything malicious after all - it's just they may not know how to cook good meals for the elderly. 

The second is another system we have now, which I'll casually call the "church" system. We have some central authority that is essentially responsible for the activities of its members and they have to be added and approved by those members. I like this system a bit more, but if we're using say a cloud service to support these communities, how do we then go and vet those communities. This solutions seems to lean itself towards a more distributed service, where, if a "church" wanted to get this up and running they could, but whoever was writing the software would just sorta put it out there and hope for the best.

I'm okay with this idea, and it is making giving communities more efficient, but it's not doing what I hoped the system could do, which is to get folks everywhere to find small ways they could help their community with immediacy and in a less bounded context. Even if you're in a giving community, they may not be aware that someone 1 block from your house is in need, so there's some pre-/self-selection in those activities, which goes back to the point above, that's it's really about efficiency then. 

At this point I really don't have an answer, but I hope putting it out there, may, for the non-existent readers of this website inspire some things towards a safer and more assured way to help those in need.  

Making Everything Public

This week I decide to open source all my software on my github account. It's not much, and it's not all there yet. Still cleaning up a few projects. Most of the projcts on there were an hour of goofing off or so more than anything serious, but they will be shortly.

I decided to do this for a couple reasons.

First, as I reviewed candidates at my company, I spent a fair amount of time critiquing their GitHub projects. This gives me an insight into their skill on a couple points - I can see how they code and I can see what they're into. But I felt it was a little unfair that I would also deny that accessibility for the candidates scrutinizing myself. What kind of coder is their future employer? What does he like to release?

Second is the issue of release. By putting software out into the world, you are actually committing to some level of imperative and quality. You start to look at your software differently knowing that other people could critique it, judge it, mock it, reuse it, whatever. 

Third, sharing is just a flat good habit to get into. Even if no one ever looks at your code, most likely the case in my situation, it's going to make it a little easier when you don't want to share code with people. You'll be less shy, you'll be more open, and you'll expect feedback regardless. 

Likewise, connected to most of the projects is a public Kanban board on Pivotal. This might be a bit of overkill, but it provides a further level of sharing and exposure to the world. Call me crazy, but someone might actually want to participate in one of my projects at some point, and to look over an organized board of all the issues, shows them you're on top of the state of the software and ready to share development. For candidates, applying to jobs, I'd just simply be super impressed if they did so since it mirrors a professional production environment. If they can run that and motivate themselves on their own, I'd have no trouble knowing they could do so at my company. 


Code Fetishism is Bad

I hate this shit:

This shit:

Oh and this shit:

Granted - I get why these scenes are in television and movies. It takes a dry subject and makes it look a little more interesting than not at all. Furthermore, technology always carries a little bit of mystique with it. That's fair, and I don't think movies should stop doing it. I'd hate to have to watch some hacker character run Linux updates when they could have cool graphs and code moving on screen. 

But I can't get past it. There's three main issues I have with them and all of them undermine actually people becoming awesome superhackers: 

Confusion about knowledge to action. There is a lot of stuff you need to do to make code work, even hacked together code. There's a lot of support programs, technical manuals and such that you have to slog through. Hey, but we got a goal so it's worth the sacrifice. Sure, movies set up false expectations about the work involved in everything, but there's not even a training montage in computer movies. 

Focus on self satisfaction. It's like watching the Food Network - chopping potatoes is an exquisite experience, but satisfaction in the actual cooking, at least for me, doesn't come from softly smelling rosemary fresh cut, but from the assemblage of everything. In The Social Network in particular, the slow and overly dramatic drawing of the algorithm, while very cool, is not the point of what Zuckerberg is even doing in the scene. It's pointlessly indulgent, and therefore a waster of any decent coder's time to revel in such things. 

Confusion between what's in great use vs what's in actually reflective or meaningful. Maybe this is just a hole in the market for movies where people actually withdraw meaning from interacting with computers and code, but all of this flash, unrealistic flash at that, ego focused flash, visualizes excellence within computing and even hacking, it such a false and bullshit way, that it distorts what's substantive. 

Each one of those issues, ultimately deters people from computing, as they completely misdirect its value and confuse where you find meaning therein. It's a false advertisement. 

I suppose people can look past it, and perhaps these are entry points, but the fetishism is ultimately abandoned nonetheless.