Tags: computers


syllabus: the ensmartening

I am fed up with being constrained by the limits of my understanding, on a non-technical level, of the fields in which I work. Being able to write and code has ceased to be sufficient--how can I create anything new if I do not really understand what it is I am creating? What role it will play, what purpose it serves? So the next step in my education has begun.

Aided by reading lists graciously compiled by technology historian kezinge and media theorist virtualstar, today I set out to the local branch of the Brooklyn Public Library to acquire some Real Fucking Knowledge to replace my current set of Pretentious Undergraduate Bullshit Cleverly Pretending To Be Real Fucking Knowledge. It's not enough to be familiar with ideas like "the medium is the message" and "the signifier and the signifier are one." If I am going to be working with these ideas, I need to understand them, explore them, contest them, discuss them, not just toss them around like beanbags to see if someone better read than me will catch them. It's not just about getting into Media Lab. It's about knowing the big picture about what the hell I am doing, and finding inspiration in it. My CS degree taught me the what and the how, but it frustrates me how little I know about the when or why. And I'm tired of being one of those name-dropping, walking-Wikipedia, hedge-scholar intellectual poseurs who knows everything he knows only in broad summary. I want to actually know what I'm talking about.

The first step to knowledge is acknowledging your own ignorance. In this case that meant looking for it in the wrong fucking place.

Collapse )

These are the books I obtained today. The very incomplete syllabus for a graduate-level course in New Ways To Think About Video Games. They are not decorative. They will not sit on a bookshelf until I get around to them, like the ones yuppies purchase to display in their TV cabinets as conversation pieces. Their ideas are going straight into my head, where they shall careen like brakeless bumper cars crashing about in the dark until I discover something new about them to talk or write or code about. Someday, hopefully, all this research will help me achieve my lifelong goal of telling a story in a way that's never been tried before, a story that would suffer if it was told any other way.

Titles in red are ones I am still looking for. If you just happen to have a used copy you'd like to give or sell me, I'd be immensely grateful. Suggestions for addition to the reading list are also welcome!


  • Brathwaite, Brenda; Schreiber, Ian. Challenges for Game Designers.
  • Crawford, Chris. The Art of Game Design. A classic from the legendarily batshit founder of GDC. It's been out of print so long you could get engaged for less than it'd cost to get a copy. But YAAAAAY IT'S ONLINE. "For truth! For beauty! For art! Charge!"
  • Crawford, Chris. Chris Crawford on Game Design. Chris Crawford is a Lunatic Genius: Electric Boogaloo. (Or, rather, Chris Crawford Has Been Designing Games Longer Than I've Been Alive: A Retrospective.)
  • Dille, Flint; Platten, John Zuur. The Ultimate Guide to Video Game Writing and Design. Possibly the only game writing textbook in existence, much less the ultimate.
  • Salen, Katie. Rules of Play: Game Design Fundamentals. The theoretical grounding to Schell's practical knowledge. Coined virtually all the current academic terminology on the subject, and is worth a purchase for that alone. Let's face it, I don't have any real business talking about "ludology" until I've read about it from the source.
  • Schell, Jesse. The Art of Game Design: A Book of Lenses. Fat. The mother lode of applied game design theory, apparently. Praise for this book transcends the hyperbolic.

(Thanks to kezinge and retch)

  • Campbell-Kelly, Martin; Aspray, William. Computer: A History of the Information Machine, 2nd ed.
  • Campbell-Kelly, Martin. From Airline Reservations to Sonic the Hedgehog: A History of the Software Industry.
  • Douglas, Susan. Inventing American Broadcasting: 1899-1922. About the early history of radio. How is this relevant to video games? Well, it provides a useful reference point in understanding how new technology is invented, improved, and adopted relative to the zeitgeist of the era in which it is created, which will help me contextualize future readings on that subject. Also talks briefly about the beginnings of geek culture, apparently!
  • Kent, Stephen. The Ultimate History of Video Games--The Story Behind The Craze That Touched Our Lives And Changed The World. I'm told it's like David Sheff's better-known Game Over, except broader. And 500 pages long.
  • Kushner, David. Masters of Doom: How Two Guys Created an Empire and Transformed Pop Culture. If Sheff and Kent's massive flyswatters are the macro, this book is the micro--the tale of the young game company that came to define every stereotype of game developers in the '90s, and ultimately subvert them. I especially want to read this one because I've heard it is told from a game designer's angle, focusing on new technologies and experimentation with gameplay elements instead of the more typical business and historical-cultural perspectives.
  • Levy, Stephen. Hackers: Heroes of the Computer Revolution.
  • Montefort, Nicholas. Twisty Little Passages. Already read this one! Simultaneously an unprecedentedly thorough history of text adventure and a groundbreaking exploration of interactive narrative's unique place as a medium of expression. Montefort's bibliography is a major source for this reading list.
  • Sheff, David. Game Over: How Nintendo Zapped An American Industry, Captured Your Dollars, And Enslaved Your Children. Despite the absurdly sensationalist tagline, this is a pretty well-regarded history of the video game industry from the 1960s to the early 1990s. I read some of this book at retch's place and it was pretty fascinating.

(Thanks to kezinge and virtualstar)

  • Bogost, Ian. Persuasive Games: The Expressive Power of Videogames. I am already a fan of Bogost's criticism and essays, so I'd read pretty much anything he writes. He is also the world's foremost only authority on newsgames and the potential of games as agents for political and social change, and a good reason to consider applying to Georgia Tech's Digital Media M.S. program as well.
  • Koster, Raph. A Theory of Fun for Game Design.Misleading title: this is apparently not a standard game design book but a set of personal and ethical reflections on the nature of gaming by the senior creative officer of Sony. Appears to be very widely read in the industry for some reason.
  • McLuhan, Marshall. Understanding Media: The Extensions of Man. If you've ever been asked "Is the medium the message?" and bullshitted an answer, you really need to be thwacked over the head with this book. And then you need to read it.
  • Mitnick, Kevin D. The Art of Deception. Seminal text on information security by the world's most infamous hacker, particularly because it has very little to do with defeating technical security measures and everything to do with exploiting human interactions with technology.
  • Postman, Neil. Amusing Ourselves to Death: Public Discourse in the Age of Show Business. According to kezinge this book is the main reason why parents used to tell their kids that TV rots their brains. "Go read a book!" they'd say, not realizing that reading is an equally sedentary activity. When I grew up, it was, "Kevin, stop playing video games and come watch TV." It's about time I understood why.
  • Kidder, Tracy. The Soul of a New Machine.
  • Murray, Janet H. Hamlet on the Holodeck: The Future of Narrative in Cyberspace. Eeeeeee so excited to begin reading this one. A forward-looking evolutionary history of prose, as written by a senior research scientist at Georgia Tech with an academic background in literary theory. This book is kind of a big deal right now.
  • Turkle, Sherry. Life on the Screen: Identity in the Age of the Internet.
  • Turkle, Sherry. “The Subjective Computer: A Study in the Psychology of Personal Computation,” Social Studies of Science 12 (1982): 173–205.
  • Turkle, Sherry. The Second Self: Computers and the Human Spirit, 2nd ed.

(Thanks to virtualstar)

  • Barthes, Roland. The Pleasure of the Text. Awkward yet influential postmodern philosophy essay comparing the experience of reading to the experience of having sex. Cited relentlessly in papers about interactive narrative, as it provides a useful and well-known model against which the experience of playing a video game may be compared. Montefort all but fetishizes on citing this work. Which I guess is appropriate, given that The Pleasure of the Text is reportedly pretty fetishistic in itself.
  • Barthes, Roland. Elements of Semiology. Ever hear art and literary theorists argue about the distinction between signifier and the signified? This book is where those terms were first defined. I am told that digital media breaks a lot of traditional assumptions about how media is perceived, so I should learn what they are. (It's amazing how the human brain interprets out of the many layers of abstraction, a series of electromagnetic pulses representing a sequence of numbers representing a set of instructions representing movement vectors for a three-dimensional ordered set of points representing a series of polygons projected into a two-dimensional space represented by a rectangular grid of rapidly flashing lights, sixty times a second, as a single continuous experience. And to think cinema blew the semioticists away.)
  • Baudrillard, Jean. Simulacra and Simulation.
  • Eco, Umberto. Theory of Semiotics.
  • Foucault, Michel. Archaeology of Knowledge.
  • Foucault, Michel. Order of Things.
  • Saussure, Ferdinand. Course in General Linguistics.


  • Barkan, Seth Flynn. Blue Wizard Is About To Die! Self-proclaimed first published anthology of poems about video games. Expensive.

palib is dead


Well, shit.

I knew the Nintendo DS homebrew scene was already beginning to slow down (DSi hacking notwithstanding), but...yeah, it might be time to move on to something else. I could just move over to pure libnds, but...life's too short. I'll continue working on Lasers! Pew! Pew! but the future of the project is now unclear.

$99 a year for an iPhone SDK, and a couple more Benjamins for an actual iPhone, might be a practical investment right around now.

(edit) $200 for a development iPhone (which becomes locked in "test" mode and can no longer be used as a normal iPhone), plus another $700 for a Mac Mini since (doy) Apple's development suite only runs on OS X...wow, this got real expensive fast. Good thing I already have a DVI monitor, a USB mouse, and a PS2-to-USB keyboard adapter. DREAMS ARE MADE OF DEBT
caonima, censorship

why i am not buying an iphone

So, Foxconn. Taiwanese company, Chinese manufacturer. Makes a large proportion of the world's iPhones and PlayStation 3s.

Folks at the Foxconn plant in China, many of them around my age, are offing themselves like lemmings. Yesterday's was the 15th (of 17 attempted). It was bound to happen, really--Taiwan's corporate culture of overachievement, China's wanton disrespect for human life, and the global market's obsession with the bottom line cut both down the street and across the road like a three-bladed Gillette.

It's been happening so often, it turns out, that folks are beginning to suspect that at least some of them aren't really suicides, but deaths from overwork. Which might explain why a 20% pay raise, a bizarre "stress room", a suicide hotline, and the installation of bouncy safety nets have done little to stem the rising tide of reported jumpers. An undercover reporter sent by China Weekly to work in the plant found an unending purgatory in which there was no solace in anything but death.

And you thought your tech job was hell.

Official state sources, of course, are fraught with anecdotal evidence, pseudo-academic bullshit, and blaming the victim. (Not that there'll be much more word from state sources, considering that the Chinese government has recently put in a gag order.)

It's funny how Western bloggers try to peg this tragedy on American neocolonialism, calling Steve Jobs a murderer and whatnot. Oh, white guilt, you so silly. Apple has no fucking clue what their suppliers are doing. (Though they really should, you know, switch to a less evil supplier.)

Last time I visited my father, he said to me, "Kevin, no matter what you do, I respect your decision, but I think there are good opportunities for you in China. The tech sector over there is growing. Maybe you should come and work on the mainland and I can find you a job." What, so I can be a slave driver like the rest of the Taiwanese technocracy? Our family tree already has enough tyrants in it, thank you.

Mao promised his followers a China for the workers--workers like these people. What a fucking joke that dream has become.

(edit) Taiwanese news coverage on the suicides is ridiculous, as well, but for entirely different reasons. Way to let Foxconn's PR department dictate your investigative journalism, Taiwanese cable news stations. Just like Taiwanese PR hounds to try and convince people that newly built swimming pools and Internet cafes are somehow going to mitigate 70 hour workweeks for China's national minimum wage (sorry, minimum wage plus 20%), plus copious mandatory overtime...

(second edit) Thank God, at least some Taiwanese people still remember how to do the right thing and exert pressure via protests. Love that 成語 on the bottom sign, which reads, rather elegantly, "At what price flesh and blood?" And, of course, the Hong Kongers, who never forgot, are burning paper iPhones. +200 public relations damage!

fuck you, lucid lynx (ubuntu 10.04)

From a programming test I just finished for a mobile games studio in Boston:

Video game consoles--especially portables--often do not have as much addressable general memory as PCs, so the amount of memory available to the heap may be very limited. Furthermore, there is typically no operating system to handle thrown exceptions or paging or segmentation faults, so if the game requests more memory than is addressable, the game may simply hang and the console will have to be restaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

While it was amusing to watch the number of a's increase ever-steadily without me laying a finger on the keyboard, not getting any response from the keyboard at all was not fun. Not only would Ctrl+Alt+Backspace and Ctrl+SysRq+REISUB not work, the caps lock and num lock lights wouldn't even toggle. I had to do a hard reboot.

This has been happening a lot.

Hey, Ubuntu! Whatever happened to your mantra of "It should just work"?

mode +v erf_

Last night I lay in bed sweating (it's been warm out here), thinking, "Please don't let it be something serious, like pieces melting off the motherboard. Please, please let it just be stupid shit. Something I can laugh at and smack myself in the face for, and then continue working."

Thank God, it was really was just stupid shit. For whatever reason--expansion due to warmer weather, me jostling against the towercase moving a suitcase into storage, I don't know--the plastic faceplate over the motherboard hole in the back of the towercase had come loose. Consequently, ethernet cables plugged into the ethernet port would click to indicate they were plugged in, but then the foam inside the faceplate would expand and the head of the cable would no longer be in all the way. (that's what she said, hurrrrr) Pushing the faceplate deeper into the hole resolved the problem, and now the live connection light on my router is blinking merrily. Hooray!

Now if only Ubuntu would stop hanging so I could actually get some more work done on Lasers. I might as well just bite the bullet and set up a development environment on my Windows partition. Sigh...

no route to peer

Last night I suddenly lost connection to the Internet. Windows 7 said the ethernet cable going into my desktop was not plugged in. I checked the ethernet cable and it was indeed plugged in. I plugged the ethernet cable directly into the cable modem (instead of the router) and Windows said it was still not plugged in. I replaced the ethernet cable with another one and it still said the cable was not plugged in. I rebooted into Ubuntu, and Ubuntu agreed that the cable was not plugged in. Even though the cable was, on both ends, as I confirmed with my eyes and fingers, very much plugged in.

My housemates reported that, for them, the Internet was working just fine. Indeed, on our router, all of the lights for the cables going into each of their rooms were blinking--all but mine.


So it looks like my network card is not transmitting or receiving signals at all. Hardware problem. Seven or eight years ago this wouldn't have been a big deal; network cards are cheap and I could just buy another one. The problem is that, since this is a newer machine, there is no network card. Ethernet is built into the motherboard.

Which is fairly new, and otherwise working fine, and is the most expensive part of the computer.


Fortunately I still have a rickety old PC from college, which I have awakened from near-death to use temporarily while I look for a fix. It runs slow as molasses and is perpetually on the verge of falling over dead, but, lo and behold, if I plug any of the cables I tested before into the router the blinkenlights blinken, the packets flow, and I have Internet again. (I should at least be able to complete and send out a programming test I got for a job opportunity in Boston.) Considering how dependent I am on an Internet connection on a stable machine for my work, my social life, and pretty much everything I want to do with my life, though, this is not an acceptable permanent solution.

Guys, I am not a hardware expert, and I am baffled. There are electrical engineers among you--help me out! Does anyone have any idea why my motherboard isn't sending data to the router? If you have any solutions that don't require replacing an otherwise perfectly fine eight-month-old motherboard, I'd be very grateful.
  • Current Music
    Homestar Runner / Rammstein -The System is Du
  • Tags

8-bit tankbusters!!

Brief flash-forward to New York before I continue writing about Cupertino.

Last month, when by amazing dumb luck I met Tob, the guy who did NitroTracker and the DS MIDI Interface, he told me about a little chiptune concert series in the city that he was planning to stop by the next day before he returned to Germany. "It's called Pulsewave," he explained. "I am interested to see what you Americans are doing with chiptune music. I hear you guys have done amazing things using Game Boy and Game Boy Advance sound chips as instruments."

"Sounds cool," I said. "Where is it?"

He scratched his head a bit. "It's not a large venue, very small, I hear," he said. "A little theater off a side alley in Times Square called the Tank..."


You're shitting me. That Tank? The little off-Broadway theater where my Oberlin friends Josh Luxenbourg and Jon Levin do Puppet Playlist, where I've heard Jon Good and Anna and all the others perform? Goodness. The bigger this city gets, the smaller this city gets.

Alas, I couldn't make it that Saturday due to prior commitments. But when I heard there was going to be another one last night, I couldn't pass up the chance.
Collapse )

all i see now is blonde, brunette, redhead

Growth of the source code for popular meme spawning pool YTMND, as depicted by gource, a visualizer for version control repositories, set to that Carl Sagan autotune song. Nodes (tree crotches) are directories, leaves are files. Remarkably pretty.

Possibly the only thing I miss about my financial news job (aside from the paycheck) is being able to work on projects of this scale. It's often hard to explain to non-programmers what working on large code projects is like; snippets of code don't adequately capture the enormous spiderweb of data abstractions that blooms in the mind of a developer over the course of a workday. I wonder if gource could be extended to do that? Instead of just displaying source files as leaves, it could parse the code and attempt to depict its execution visually. Imagine spiderweb maps and chessboard hash tables, double-ended queues creeping along like caterpillars, elements in lists and arrays leaping like gnats as they're sorted (or flashing in sequence as they're iterated), all wrapped up in translucent gel-filled vacuoles, gently penetrating one other with method tendrils in enormous, neuron-like object models...

It would be the first true visual representation for laypeople--far more comprehensible to a non-programmer than incantations of arcane code poetry--of what a coder actually does.

(aaaargh I wish I had done that for honors in senior year of college)

Bonus link: pictures of the Mandelbulb, a three-dimensional version of the Mandelbrot. Many surreal, captivating alienscapes to be found here. I'd advise against watching this video while high, as it will probably fuck you up...

And yes, I am posting this at six in the morning. Hooray, insomnia.
  • Current Music
  • Tags

in which the grasshopper remembers his training

So this was the heisenbug that kept me home on Monday (with all but the relevant parts taken out). I didn't realize where the mistake was until this morning, after replicating it in three different places, having it happen again, thinking about it all day yesterday, and having three pairs of eyes pass over it and see nothing.

for (list<Explosion*>::iterator it=explosions.begin();
     it != explosions.end();
  if ((*it)->isFinished())
      it = explosions.erase(it);

In the imagined voice of dadamson (David Adamson), the upperclassman code rabbi who guided me through my data structure frustrations back when I was a wee freshman at Oberlin:
So you choose to venture forth where your fellow labmates would not dare, and invoke the Standard Template Library--an unwieldy artifact of great power. Very well.

Look closely. The second last line of code. The erase() function. What does it do?

(It truncates items from a list.) Very good. And why do you wish to use it?

(To safely remove items from a list during iteration.) And what type does erase() return?

(List::Iterator.) Indeed. Now. The statement is nested within a for loop. What statement is implicitly executed at the end of each iteration through the loop?

(The third argument, it++.) Suppose, then, that the iterator is at the very last element, and thereby points to end(). What, then, is the value of it?

(end()...plus one? Oh, I get it!) Stay your hand. Be at peace with the keyboard--the fix is apparent, but there is still much to learn. Let us consider the for loop once again. What is executed at the beginning of every iteration of the for loop after the first?

(The second argument, it != explosions.end().) Does this condition fail?

(No, because explosions.end()+1 is not explosions.end().) And what happens when (*it)->isFinished() is evaluated?


(dadamson leans back in his chair, his scraggly hippie beard dangling like a sock down his chin, and puts his fingertips together. He stares at you for an uncomfortable eight seconds.)


I wonder how dadamson is doing? Last I heard he was teaching computer science to high school students--a job he is rather well suited for.