Thursday, March 31

Boy on a Stick and Slither

Boy on a Stick and Slither is a once-or-twice-a-week webcomic about, well, a male child's head on a stick and a snake.

OK, that's not what it's about at all. Those are its characters. What it's about is surreal backgrounds, childlike (but not childish) art, and pithy comments that make me grin and nod knowingly. You see, I know what he's getting at. I'm catchin' his drift. It's all about ironic detachment, right?


Monday, March 28

John Carmack on Java

John Carmack, the guy who wrote the 3D engines for all three Dooms and all three Quakes, blogged today. About game coding for mobile phones, of all things. And he has this to say about Java as a development platform:
Write-once-run-anywhere. Ha. Hahahahaha.


A bit of background, for the people in the audience who aren't familiar with Java: essentially, one of Sun's early marketing promises about Java was that you could write code once and run it on every computer on the planet, with Sun taking care of the tricky parts of actually talking to hardware. (This technique's called a 'virtual machine', in case you care.)

The problem is, it doesn't work. The abstraction leaks.

Not that this is actually news or anything -- I just felt like pointing it out.

Tuesday, March 22

On Automated Imagination's 'On Brevity'

Jeremy wrote about brevity today. His comments resonate with me, a little; I find myself omitting qualifiers like 'somewhat' and 'I think' from my writing when I reread it. Mark Twain has advice to the same effect:
Everywhere you wish to write 'very', replace it with 'damned'; then, your editor will take it out, and all will be as it should be.

That said, I have an essay on the back burner about the effects of intended (and actual) audience on the quality of any particular piece of work, and I think a sidebar from there applies here, too. Graham's advice works well for the kind of essay he writes, but not all blog posts are essays. It's a matter of tone and of intent.

Monday, March 21

Confidence is an Asparagus Goat Cheese Tart.

On Saturday, I went grocery shopping to the local market and got, among other things, the ingredients for a Goat Cheese Tart. Now, one of the places I sometimes get lunch makes a goat cheese tart that's phenomenally good, and since the format of the restaurant is "we're not a restaurant we're a cooking school", sometimes you get to eat lunch while you watch someone put together the next guy's serving of what you're eating.

And the goat cheese tart didn't actually seem all that hard to make. So what the heck -- why not try to make one? The abovelinked recipe didn't seem impossible, and hey I'd just watched a consummate professional put one together like it wasn't no thang, so let's give it a whirl.

And it worked! Instructions were followed, a tart was baked, and some of it was eaten. It was different from the restaurant one, but not worse by any stretch. A few things I'll do differently next time, but once again nothing was bad about this tart.

And now I have another set of dishes -- savoury tarts -- in my repertoire.

Friday, March 18

CIO Magazine's recent article

Yesterday, I happened across BoingBoing's take on a CIO Magazine article about internet security and read the article. Well, half the article. You see, I was so angry at the boneheadedness of it that I didn't actually finish it.

I was going to write something about it here, but Ars echnica beat me to the punch. So yeah -- what they said.

Wednesday, March 16

Wormsign: procedural content for games

(brief aside: Some of my long posts carry the tag 'Wormsign', a nomenclature I thought of in this post to connotate a trend I think is just starting to emerge. The term comes from Frank Herbert's Dune series, which takes place in a desert inhabited by giant subterranean (subsandean?) worms that pounce up out of the ground and eat things sometimes. The warning for the impending approach of one of these worms is 'Wormsign'; if you hear it in time, you can prepare for the upcoming calamity.)

In retrospect, it seems obvious. All great ideas do.

By this point, you've probably read about Will Wright's new game, Spore. Quick precis: start off as a bacteria, advance through all the stages of evolution to become a galactic overlord. Now, as Ubiq points out, this is a five-bags-of-crack idea. Impossible to develop, as a game. Not because of the technology required, though; after all, computers can be made to do practically anything. The difficulty is in the content: how on earth are you going to get the budget required to hire the people to build compelling content on so many different scales?

Answer: don't hire them. Don't build the content. Instead, build the thing that builds the content. This technique is called 'procedural content', and it's been around for a while in the European Demoscene and in the most advanced graphics boards (think procedural textures and vertex programs). The idea is that rather than painting a scene, you instead describe the steps required to do so. This is how 3D models are constructed now; this is how simulations generate such complex behaviour.

Now, for the game developer procedural content is another layer of abstraction on top of the game's content, with all the pros and cons that come along with abstraction. Let's veer off into analogy-land and talk about cameras for a second.

Tasked with the problem of 'build a camera', the first thing an engineer will do is probably to build a camera. Duh. But then, the engineer's tendency to think in the abstract will lead her to think about the work that went into making that camera, and she'll start wondering how she can Make This System Better. And as I see it, there's a fork in the road here: either she'll focus on the verb ("build me a camera") or she'll focus on the noun ("build me a camera").

Focusing on the building leads toward making a camera-building kit. You've abstracted the camera out, and now you can sell the kit to people who can build exactly the camera they want! (Too bad they'll have to learn to use the camera kit before they learn the camera.) Focusing on the camera leads toward making a point-and-shoot. You've realized that the original problem statement was misfocused: "build me a camera" actually means "build me something I can sell to people who want to take pictures". Assuming (yeah, I know, it's a big assumption) that you're aiming at the mass market, you build in autofocus, and a doodad that makes the camera still work after it gets dropped the 6th time, and an easy loading mechanism, and auto-Fstop choosing, and auto-everything-else.

In both cases, there's more engineering effort involved; it's just focused differently. And you can probably build a point-and-shoot from thet camera-making kit, if you're smart enough. The relation here to Spore is that the rest of the industry has been focused on building games so complex they can't be built without kits, and then (in some cases) even providing those kits to customers so they can tweak the gaming experience (hello, modding community!). Spore takes the other tack: they've gone and built content-creation tools so complete, so full-featured, they almost don't need an operator. To use the industry lingo, the game creates its own assets.

One of the consequences of this mode of asset creation is that the stuff your operators *do* have to create -- the artistic part of content creation, so to speak -- can be captured pretty concisely as the inputs to the asset-creation routines. We go from needing many, many inputs whose values are closely constrained -- maps must have height and position data specified exactly so, character models must be in 3DS format (the specification for which runs to 400 pages), etc -- to needing few inputs each with a wide range of potential values. That leads to the possibility of transmitting many 'assets' very quickly, and to the potential for randomly-created assets to be aesthetically pleasing. A high potential for random content leads to high replayability in a game -- it's one of the oldest tricks in the arcade-game book, in fact. And easy transmission leads to another holy grail of modern game design: user-created content.

MMOGs like Ultima Online, Everquest, and World of Warcrackft have been promising user-created content since the dawn of the genre. "Come play in our world! Hold archery tournaments! Woo an e-spouse! You Can Do Anything You Want!". The problem with that expression of user-created content is that MMOGs either don't allow for a wide breadth of interaction between players. You can talk to people, or (maybe) hit them with a sword, or make your guy play a little animation that lasts maybe 4 seconds and has no effect on the world at all. Of course, you can also interact with other players indirectly, cooperating with them toward some short-term goal -- kill the dragon, rescue the princess, drive the villagers before you and hear the lamentation of their women, et cetera. But you can't really affect other people, or the world at large, in the long term.

Spore promises a different kind of user-created content. Rather than working with (or against) people in some artificial turf, players instead work with (or against) things other players have created. This solves the problems that MMOGs have by not promising player-to-player interaction (unless you want it, and start a multiplayer game) or a world on which players want to have a permanent effect. Instead, players use each other's assets. Potentially without even knowing they're doing so! That's a lot of power, and a lot of potential replayability.

Of course, prodedural assets don't solve all the problems game developers have. You still need incredibly talented people to build the engine that takes player input and turns it into aesthetically meaningful output, and you still need someone to build a fun game with the assets your procedural engine put together. But as a mechanism to reduce the busywork required to make a fantastic-looking game -- which is necessary, but not sufficient, for a game's financial success -- it's a fantastic idea.

Let's hope Spore has the gameplay it's going to need to be a success. The people holding the purse strings are sure to be watching this one.

Friday, March 11

My favourite kinds of blog entries

I just realized what my favourite kinds of blog entries are. They're ones that explain, in exhaustive detail, the technical aspects of a process or system. This link is a good example: It's an article on one aspect of judging Magic: The Gathering tournaments. Now, I've never played in an MTG tournament in my life, nor do I have any particular intention to. Nonetheless, I find this article fascinating; it's almost totally useless to me, but it demonnstrates that there's a craft to judging (and that some people who've learned the craft are willing to share their knowledge).

I'm trying to think of other good examples -- Joel's articles come to mind, as do some of the explanatory articles on Kuro5hin. Jeremy has the capacity to write those kinds of articles too, when he's not writing opinion pieces. Rands writes more pedagogically than descriptively, but still has that mastery-of-his-craft aspect to the articles.

"So, Fraxas, why don't you write articles like that?", I hear you ask. And the answer is this: they're really hard. And I'm lazy.

Wednesday, March 9


The trifecta is complete! Angus expounds on The Secrets of My Beautiful Hair:
"6. Its hard for me to go to the store and buy shampoo, 'cause that's downright gay, too, and I'm afraid to be gay, even though its gay to be afraid to be gay, I've sorta painted myself into a corner there."


Things that Don't Exist

Apparently, today is Shiny Things that Make Us Laugh day! HOORAY!

sock puppets singing incomprehensibly complex verses to simple tunes, describing things that don't exist:
Things That Don't Exist

The Onion hits one out of the park

Most of the time The Onion sucks, and is only "heh" funny. But this headline made me laugh out loud.

Bush Announces Iraq Exit Strategy: 'We'll Go Through Iran'

Monday, March 7

I really wish MTGO actually HAD a spit command.

I was mining for funny in the Penny Arcade Archives when I came across this cartoon. The associated newspost is pretty great too, especially since it's from oh, three years ago.

Three years ago. Wow. And I remember when it first came out.

Thursday, March 3

Hacking and Remixing Google Maps

This guy Has some time on his hands. That link probably won't make a lot of sense to you unless you're a pretty hardcore web coder (hohoho, you think, a challenge!) but basically some people have put together a set of bookmarklets -- JavaScript code you execute from your browser as a bookmark -- that do Fun Things with Google Maps.

Automated route following. Arbitrary image display. Coordinating Google Maps with realtime GPS data from elsewhere (the proof of concept is the Seattle realtime 911 registry). Loading map locations directly. Generally exploring the web app in immense detail.

I'm amazed. And not just at the technical sweetness of this set of hacks -- also at its presentation (the author releases early and often, and maintains page history) and at the simple fact that it's possible. If I were a clueless marketing dork, or a boneheaded oldschool software guy, I'd be crapping my pants at what it's possible for interested people to do, in public, to my wonderful client-side web creations.

Good thing I'm not either of those people.

This is one of those HOLY SHIT moments for me.

Tuesday, March 1

Totally random thoughts from San Francisco

So I'm back from SF. If you didn't know I went to SF, now you do. It was a work thing, and I'll talk about it with you in person if you want me to, but not here. This isn't a work blog, I think.


o Hana Zen, on Cyril Magnin, is rockin'good yakitori and sushi. No seriously. Go eat there.

o The Mini ad campaign going on in the valley is pretty intense. The best billboard I saw had one word on it: Smallzilla. Holy cow I wish I'd thought of that.

o Californians are spoiled by their weather.

o One weekend is not enough to do the city justice.