<M <Y
Y> M>

: Whew, writing group story semi-finished. Now: sleep.

Reaping The Dungeon: The Reapening: That story tired me out and I decided to do something nonproductive. I pulled out Reaping the Dungeon, a 1993 DOS game that tormented me with its mix of interesting gameplay and unfairness. It's kind of rare now (well, it was always rare), but you can download it from the "Sysop's Picks" directory from my old BBS.

RtD, later renamed "Dungeon Rogue" in a bizarre decision, is a science fantasy roguelike game. I say science fantasy because, although my definition of science fiction is pretty broad, it does not encompass games that take place below the surface of Jupiter. Like I say, you go down into Jupiter and you have to get down to level 65 to shut down The Machine. Let me tell all you young engineers something I learned in college: don't call one of your projects "The Machine". It's just asking for trouble.

When I played this in the nineties I think I got down to level four, once. This game's difficulty structure is totally different from any roguelike I've played. There are two numbers you've got to watch: "oxygen cells" and "health cells". Both are being constantly depleted and the best you can do is slow down their depletion slightly. They're replenished by the aforementioned reaping.

You see, growing in the caverns beneath Jupiter's surface are plants that operate on a life cycle of several hundred turns. If you find a plant that's in one of the flowering stages, you can cut it down and harvest 30-300 cells of one type or another (in addition to oxygen and health cells, there are also "energy cells" which power your devices and weapons). Otherwise you need to wait around, or come back to the plant later. But I'm not sure if it's worth it because the amount of oxygen you expend waiting around is likely to be pretty close to the oxygen you get by harvesting the plant.

There are some other annoyances, like shops selling things there's no way you can afford, but all the annoyances are dependencies on this one: you die before you can do anything. To balance this out there are awesome weapons and equipment. This is the only non-fantasy roguelike whose equipment feels like it works on technology instead of magic, except maybe Alphaman. But again, you die before you can afford any of the weapons and equipment, because your starting weapon is so poor and there's no such thing as armor.

But now, there's hope. Reaping the Dungeon now runs in a window in a GUI environment rather than on a singletasking DOS box, which means we can cheat. RtD has orbs that do the magic mapping/object detection/monster detection duty for this particular Roguelike. The problem is that you only get to look at the map once and then it disappears. But thanks to multitasking, it's possible to display a map using whatever orbs you have handy, take a screenshot of the map, and consult it as you play the level.

When you cheat this way, the game is almost fair. You know where to go to get treasure, and what dead-ends to avoid to save oxygen. I got down to level 9 before dying, which is pretty good given that the levels are large (like Angband) but the stairs are one-way (like Rogue).

With that in mind I invite you to play Reaping the Dungeon with your game design hat on, take everything that's good about the game (the atmosphere, the reaping, the equipment, the player enhancement), and make a new game with all the good stuff and none of the waiting 200 turns to get 250 oxygen or dying before anything interesting happens. Again, my top suggestion: armor. And actually the microwave from Alphaman, which speeds up the maturation of plants, would be useful too.

[Comments] (1) Misreadings: So now I've written two stories ("John Versus the Sreps" and the new one) where I write an ending where something happens (a radical concept, I know), and someone reads it and thinks I wrote an ending where the exact opposite thing happened. This is called dramatic irony, but it usually happens to the characters, not the person writing the story.

It often happens that a misreading is more interesting than what I wrote originally and I end up changing the story. I wrote a whole song based on a mondegreen I heard in a Weezer song ("Disco Noose"). And as long as I'm on the topic of Weezer songs, Sumana and I agree that "Beverly Hills" is a much more interesting song if you replace the line "Rolling like a celebrity" with our mondegreen "Ordering the soup of the day".

Update: Kind of a simple one, but I just referred to Burn After Reading as Burn Before Reading. There are at least two ways that's a better title.

[Comments] (2) : It's been a while since I just posted a link to a weblog for you, so here's Back of the Cereal Box, with all the video game minutiae you've come to expect from News You Can Bruise (if you know of a third weblog that's discussed Birdo's shifting sexuality, please send me the link--to the weblog, I mean; I don't want to read another entry on that topic), except delightfully written by not me. I discovered this weblog a while back because the author linked to the Eater of Meaning, which is undergoing one of its periodic rediscoveries by the Internet.

[Comments] (2) The Soul of a New Machine: The second of the books I was compelled to read by an anonymous commenter who I don't know--the IP address is from Wisconsin, and the only person I know from Wisconsin is Courtenay Teska, and it's probably not her, and that's not even her name anymore because she got married. Anyway.

I would have liked this book a lot more if I'd read it before spending eight years working in the computer industry. It's archetypal. By this point I and many of my friends have lived it. Reading about it isn't that interesting, but it would have been a very interesting read when I was in college.

A little while ago I mentioned the huge influence of The New Hacker's Dictionary on my teenage self. It was a glimpse of another world, a book I could read over and over again and always get pleasure from it. After writing that entry I started rereading it for some project I've already forgotten, and I got to C before putting it aside. The bookmark's still in here at core leak-cracker.

It's not just that TNHD is old and the hacker community too large and diffuse to need or find a dictionary useful anymore. It's not even that I've read the book seven or eight times. I was using its lessons as the best available substitute for participating in this world, and now I participate and I don't need the book. That's how SoaNM felt, only I absorbed its lessons the hard way before ever reading the book.

Anyway, that's me being down on the book. If you're not a programmer or computer engineer, it's still pretty good at giving the flavor of the work and the strange power dynamic between labor and management, even though it's over 25 years old.

Next I'm reading Born Standing Up because it's a library book that needs to go back. But if you want to get in on the compelling action some have called "compelling", check out my unread books (do a tag search for 'unread') and leave a comment saying what I should read next. Unlike last time I'm not going to put a limit on how many books you can put in my queue, but I'm also not going to slavishly follow your demands.

[Comments] (1) : Interesting fact: did you know that there's a parallel universe APOD on NASA's site?

[Comments] (2) : Experimental Module Launched to Monitor Usenet

Legend of the Tomb of Fate: Do you like tombs? How about fate? Adam P. has the procedurally-generated door game for you!

I played for a while until I was killed by a vicious TypeError. Since you play in a terminal instead of at 2400 baud, the repetitive nature of those games is immediately apparent instead of being doled out over many weeks. Despite this there are some good game mechanics I haven't seen anywhere else. There's the randomly-generated elemental affinities, and also the way you can commission magic items of any given power for a large fee, after which they're available in the shop for a smaller fee.

Not only does the game use the random magic item data from my justly neglected non-masterpiece The Knapsack Problem, it ups the ante with a bestiary and a large list of possible in-game currencies, many taken from other games, like acorns, bells, buckazoids, zorkmids, and New Yen. Some currencies missing from Adam's list: Euros, Whuffie, meat, slips/strips/bars of latinum, simoleons, megabucks, quatloos, steel pieces, mills, and Monopoly dollars. No need to thank me, I'm just doing someone else's job.

: It wasn't actually made with the Eater of Meaning (2003), but Mark Manders's Floor With Fake Newspapers (2005-2006) is in the same vein.

[Comments] (1) The Eye of the Lens: I've got books that have been on my wishlist for years and no hope of me remembering how I put them on. I just trust my earlier self. (Occasionally I mistrust my earlier self and remove a nonfiction book that now sounds really boring.) But I think this book got on my wishlist when I read The Trillion Year Spree (not to be confused with the Trillionage Sprout) and came up with a crash course of works from the history of science fiction.

As you might guess I'm not a big fan of what an essay I'm reading calls "the left-bank affectations of the New Wave". My particular pet peeve is "science" elements that are just technobabble, verily technobabble that makes Star Trek's technobabble seem like well-thought out Clarkean exposition. And of course the technobabble is delivered in infodumps. This ruined "The Time Machine" for me despite the excellence of the central conceit. Near the end of TTM there was a diagram that reminded me of The Bride Stripped Bare by Her Bachelors, Even, but even that didn't appease my aggravation. Duchamp wasn't trying to write science fiction.

As bonus New Wave aggravation there's also peurile anti-Christianity (ruined the otherwise good third part of the title story, and "Symphony Number 6 in C Minor 'The Tragic' By Ludwig van Beethoven II") and boring mundane-freaking (was the entire point of "The Garden of Delights"). What's left? Well, "The Hall of Machines", the first part of the title story, is great, like Lovecraft writing Richard Brautigan fan fiction. And I was initially very happy with "...Ludwig van Beethoven II".

See, as I approached the end of that story I suddenly skipped from page 128 to a reprint of page 33. In an if on a winter's night a traveller type mishap, one of the octavo sheets had been duplicated and so instead of pages 129-144 I had pages 33-48. I missed the ending of LvB2 and the beginning of "The Garden of Delights". But the story still had a satisfying conclusion. Then I was able to find LvB2 online and the real ending was crap. It just goes to prove the adage about stories being improved by chopping off the last ten percent.

Oh, another good thing about this book is the late-70s ads in the back for British SF books with their mod cover art. One ad announces "The 1970's toughest collection of fiction and graphics," summoning up the image of a chain-smoking, fiction-writing robot named The 1970.

[Comments] (1) True MoCCA Stories: My sandal fell apart at MoCCA. Randall Munroe gave me Gorilla Tape to fix it with.

Also, I bought comic books.

[Comments] (1) : Because I complain so much when shipping services do stupid things like lose my inheritance, I try to anti-complain when they do nice things. For instance, I recently ordered an air conditioner because the intense heat in our apartment recently drove away guests Kevan and Holly, and seemed about to drive away Sumana.

A delivery attempt was allegedly made at 9:30 this morning, though I heard nothing and no note was left. I called UPS to complain and they got UPS delivery dude to come back. Now the air conditioner is installed and I'm burning carbon credits like nobody's business. Thanks, UPS.

The Record: Now Straight: About three Earth years ago I reviewed a game called XGalaga++. I said that I prefered a predecessor game, XGalaga, because of "smoothness of gameplay". Yesterday XGalaga++ author Mark Mongenet emailed me to ask what the heck I meant by that. I had to admit that I don't remember.

Due to old-library problems I can't play XGalaga or an old version of XGalaga++ (which sucks in and of itself), but here's my guess. Smoothness of gameplay has to do with the feedback loop between the controller and the avatar. When I play Pac-Man, just nudging the joystick sends Pac-Man off in a different direction, and because Pac-Man moves fast, I can change directions quickly and tear through the maze. When I play a tile-based game like Dragon Warrior, I can't change direction until Dragon Warrior guy has traversed the tile he's currently walking. And he moves sloooowly. Games like Ghosts 'n' Goblins, where you can't change direction during a jump, are more realistic but less smooth than games like Mario where you can. You might or might not argue that thrust games like Asteroids are more realistic but less smooth than steering games like Defender.

A lot of open source games have smoothness problems, disconnects in this feedback loop, usually because their quantum of movement is large. The problem with this interpretation of my 2005 remarks is that XGalaga++ doesn't seem to be one of these games. The ship moves just as well as the ship in Galaga. So I'm not sure what I was saying.

It's true that the ship in XGalaga++ moves more slowly than I prefer. I like games like xkobo or PowerManga or more modern shmups where you can cross the screen in a second or less. And the XGalaga++ screen is wider then the Galaga screen so you really feel the low speed. So maybe that's what I was thinking. But there's no problem with the feedback loop.

[Comments] (8) Blogging Pro Tip: The string ", you know," can almost always be cut.

The exception? When giving examples of strings that can be cut.

Things: Nepotism Edition: Brendan has a podcast called The Children's Hour of Knowledge. It's full of lies, and puppets.

Sabrina has a weblog about young adult fiction, YA New York. The "New York" is because it's crammed full of details on local author readings as well as reviews.

[Comments] (3) You Promised Lots Of Bread But All We Got Was Your Heel: I was a little discombobulated reading a Ken Macleod weblog entry where he said that "Lysenko's theories did not lead to the deaths of millions." I generally trust Ken Macleod on what did and did not lead to the deaths of millions, but I'd somehow got this same idea in my head despite having read a whole book about Trofim Lysenko. What happened?

Since reading the book I'd conflated Lysenkoism, a mainly postwar phenomenon, with the famines in the Soviet Union in the 1920s and 1930s, which did kill millions. The book, The Rise and Fall of T.D. Lysenko by Zhores A. Medvedev, says this about the effects of Lysenkoism:

The controversy directly affected the fate of thousands of Soviet scientists and the character of secondary and higher education in biology, agriculture, and medicine [by making it suck].

No mention of a famine. This is one of those books that couldn't get published in the Soviet Union despite being all conciliatory and "Come, comrades, let us further the cause of socialism by not founding our biology on dumbass theories of evolution!" So it probably wouldn't mention a famine if there had been one--not classy. But although there were periodic food shortages throughout the lifetime of the Soviet Union, the big famines were pre-Lysenko, and the periodic shortages didn't stop post-Lysenko.

Lysenko was responsible for setting Soviet agricultural science back about twenty years, and I suspect that had a spillover effect that led to the Soviet Union needing to import grain. And if you had some magic way of calculating the excess deaths due to Lysenkoism you'd get a lot, but not in the millions, and few by direct causation.

I can't find my favorite line from the book, which is someone arguing that although the capitalist world subscribes to non-Lysenko theories of potato husbandry, "I think a capitalist, too, enjoys a good potato."

Update: I never explicitly mentioned how fascinating Rise and Fall is, but it... is. That's why it's one of about five books I've held on to since college. Highly recommended. Also, searching reveals there was a story in July 1954's F&SF called "The Lysenko Maze", by Donald Wollheim. Wonder what that was about. Also, Donald Wollheim was the guy who published those unauthorized versions of Lord of the Rings in the 1960s.

[Comments] (2) Things: Non-Nepotism Edition: Generative spaceship graphics. Now, breed 'em, like in The Selfish Gene!

If pixel spaceships are too complex for you, try the glider gun of Kenta Cho's Game of Life shmup.

This interview with Cory Doctorow includes some of the writing advice dispensed to us at Viable Paradise.

Update: Non-Nepotism Edition becomes Nepotism Edition with Nick Moffitt's pixel spaceships.

: You probably haven't seen this pro-wrestling commercial, but you should.

PS: Today I discovered that Thelma is an anagram for Hamlet.

: We went to a member's party at the MoMA and saw the cool Olafur Eliasson things and generally walked around for hours. Hours! Sumana scanned the crowd for people she knew and ended up meeting Ze Frank. I'm still not sure how that happened.

Recommended thing: William Wegman's impossible-to-search-for video "Copyright", where he dramatizes the copyright page of a dictionary.

[Comments] (1) : Oh, here's an Olafur Eliasson tip. In the room for one color the best way to blow your own mind at the monochromicity of it all is to have someone stick out their tongue at you.

[Comments] (4) Book Writing: The Told Story: Baron Schwartz wrote an excellent article on the experience of writing a technical book. I thought I'd add supplementary stories about the three books I've been involved in.

The first book I worked on (Beginning Python) has not been very successful, but it's in a very crowded space. (It's a very distant second among books with that title!) My experience working on Beginning Python was much like the one Baron describes. I wrote my chapters nights and weekends, using all my free time. The publisher expected documents in Word format, which was a big pain. I wrote in Emacs and once my draft was done, spent a day pasting it into OpenOffice and setting the styles manually. I didn't have any problems incorporating reviewer feedback into the text, but there was only one review pass. The publisher hired technical reviewers to go over my chapters, but I couldn't even email them to ask for clarification--they'd already done their job and gotten paid.

I wrote three chapters for Beginning Python which translated into me busting my ass for a couple months on top of a full-time job. I think I wrote good stuff, but I got very little directly to show for it--a couple thousand dollars of an advance that will never be earned out. This is the fate of most books. All I can say by way of encouragement is that your chances are a lot better writing technical books than writing fiction. But, looking at it long term, Beginning Python was my apprenticeship. I showed that 1) I can write well, and 2) I make deadlines instead of slipping them or flaking out altogether. My work on this project opened the doors for other projects, which were much more successful. I'll talk about those later.

[Comments] (4) Book Writing #2: The Rest Of The Story: I've told these stories many times in person but not on NYCB (on the other hand, in NYCB you can see the stories develop as they happened). A while after working on Beginning Python my agent approached me and wanted me to meet Michael Loukides, an O'Reilly editor who was looking for someone to write a Ruby Cookbook. This was almost exactly 3 years ago. Mike was in San Francisco for a geolocation conference. I agreed to do the project despite not really knowing Ruby at the time. A major new O'Reilly book is not the kind of opportunity an up-and-coming writer passes up.

The pitch!

In March 2006, while Ruby Cookbook was in the editing stage, I had some phone conversations with Michael about doing another O'Reilly book. He tried to get me interested in various projects that existed in potentia, crystallized from some neural net in Tim O'Reilly's brain. However I'd already done such a project and I wanted the next one to be my own idea.

Lots of people have ideas for technical books they want to write (I've heard many pitches myself), but the animal-cover part of O'Reilly is pretty conservative and won't do a book project unless there's a good-sized market for what the book is talking about. At one point I suggested an in-depth book on ncurses programming, but that never happened because it would have sold about four copies.

Then I came up with the idea for RESTful Web Services, which was better, but in March 2006 still kind of a hard sell. Michael's initial response was: "I agree it's a book we need; I don't think it's something we need quite as much as Scriptaculous and Prototype". I argued for starting the book ahead of the curve, but see above re conservatism. Ultimately Sam and I got the book deal, as you know, but I think that's the reason underlying the drama we had in November with some factions wanting to stick "with Ruby" on the book's name.

Time management

Near the start of Ruby Cookbook I went from full-time at CollabNet to working three days a week. I was really bored with my job but I didn't have the confidence or the money to just quit. Three days a week at the job worked out well for my writing, and to this day 25 hours a week is the maximum amount of time I prefer to spend in the corporate world.

My one piece of advice, if you'll only listen to one, is to rearrange your job so that you have one or more days off every week to work on your book. The writing will go faster and you'll take some of the pressure off your evenings.

Later in 2005, Sumana moved in with me and eventually I felt like I could quit and work on Ruby Cookbook full-time. That's also how I did RESTful Web Services, and it's by far the best arrangement if you can manage it. Writing a book is approximately a full-time job, so treating it as a full-time job lets you live a normal life.


As a book with 350 short "chapters", Ruby Cookbook had a pretty detailed outline from the start. My daily goal was two or three recipes, depending on how many I needed to meet the next deadline. Longtime readers may remember recipes going green on my webpage for the book as they came in. Because the project was so clearly specced out, I sometimes had the luxury of being done by 2 in the afternoon and being able to take the rest of the day off. Ruby Cookbook is the only book project where that happened.

Baron suggests approaching the prose of your book by outlining in more and more detail, rather than jumping into prose that you'll always be mentally editing. That's a good approach, but my outline for RESTful Web Services never got that detailed. old_outline.txt is 5000 words. Some parts (Introduction, Chapter 1, Chapter 8) are very detailed and the rest is pretty skeletal. To keep a steady flow, if I felt myself unable to express some thought, I would just stick a TODO in the text, like when coding.

External dependencies

I was able to get a small budget for paying Ruby Cookbook recipe contributors, I think by giving up part of my advance. Contributors were my major external block. I started recruiting contributors as soon as I announced the project and my goal was to get all the contributions in before the second-to-last deadline, giving me a buffer time of two weeks to write any recipes that contributors couldn't deliver. This did not work completely, but it did keep the last-minute scrambling down to one or two instances.

For RWS we had some coauthors in the last chapter talking about Django and Restlet. I don't remember the details but there was some last-minute scrambling to get one of those sections in under deadline. I'm going to go ahead and call this a general rule.


Baron writes that he did a lot of revision and that every editing pass found a bunch of errors. I can second most of what he writes, but this section in particular rings true for me; I know too well the seemingly endless TODO list. However, my books didn't go through as many editing passes as his did, leading me to think that O'Reilly will skimp on copyediting to get the books out in time for whatever conference they've scheduled the release for. (I found this conference-centrism strange, but it shows up in Baron's entry as well: "[D]on't feel bad if the book doesn’t come to the [MySQL] conference: it will be at Velocity which is directly related, and at OSCon.")

The result is that the first printings of my books have lots of typos, as the more unkind Amazon reviewers have noticed. I've spent a full day plus a cross-country plane trip going through my copy of RWS finding missing words and other minor errata. I haven't seen the second printing yet, but it should be a lot cleaner.

Unlike with Wrox, with my O'Reilly books I had to find technical reviewers on my own. I actually think this was a net benefit for both books, because the reviewers I found were domain experts who were interested in the book, and willing to respond to requests for clarification. I wrote and rewrote whole sections of RWS because a reviewer said "you forgot this" or "this is wrong, you idiot", things I don't think a hired gun would have caught, and RWS is a much better book because of it.

The downside is that I had to coordinate the reviewers myself and there was no money to pay them (they got free copies of the book, which didn't cost O'Reilly much). There were a lot of technical reviewers who just found typos, and while that wasn't the best use of their time, I'm not going to say it was a waste of time, given the number of typos that got past everybody.


Ruby Cookbook was written using RedCloth-like wiki markup, and kept on an experimental internal wiki called Aardvark (which doesn't exist anymore). I describe the doctest-like way I tested the recipes in Unit Testing Your Documentation. This was a very convenient format for me, but it's not the format used for the final edit or to typeset the book, which is going to cause big headaches when it comes time to do the second edition.

RWS started out being written in wiki markup and then I converted it to Docbook about a third of the way through. Docbook was great. It's like writing HTML, except the tag names are longer. Plus, Docbook is what O'Reilly uses internally, so if you're writing a book for O'Reilly and someone tells you you have to use Word, make a fuss.

Docbook did have a couple shortcomings. Although I could do a cross-reference to another chapter fine, doing cross-references to a section within another chapter resulted in just the section name with no indication of what chapter that section was in. (This was a problem with O'Reilly's stylesheet; you can see a couple instances of this problem in the first printing of RWS). And I apparently use too many footnotes. But the major problem was the code samples.

Code starts to decay as soon as it's taken out of a file that can be executed as code. That's why I wrote the doctest-like program that executed Ruby Cookbook entries. But Ruby Cookbook looked like a set of unit tests: a bunch of self-contained little demonstrations of what you can do with code. The code in RWS looks like integration tests, full of interacting parts. There's a whole Rails application in there. And Docbook is less flexible about inserting code snippets than the wiki markup was.

So instead of putting the code in the text, I left the code alone and wrote a preprocessor that folded it into the text as necessary. Here's a random example, from my version of chapter 7 (implementation.xml.in):

      At this point I know enough about the dataset to create the
      database schema (see <xref linkend="bookmark-schema" />). I
      wrote this file as
      <filename>db/migrate/001_initial_schema.rb</filename>, created
      my <literal>bookmarks_development</literal> database in MySQL,
      and ran <command>rake migrate</command> to create the database

##ruby/bookmarks/app/db/migrate/001_initial_schema.rb|The bookmark database schema as a Rails migration|bookmark-schema

      Now I can create the database schema by running this command:

(You can see one of those problematic cross-references in there, though that one's OK because it links elsewhere in the chapter.)

My preprocessor goes through a .in file and replaces that double-hashed line with a Docbook example:

   <example id="bookmark-schema">
      <title>The bookmark database schema as a Rails migration</title>

      <programlisting>class InitialSchema &lt; ActiveRecord::Migration

Some files are explained in multiple sections. If you look at the RWS sample code you'll see some lines that just have a double hash.

example 1
more example 1
example 2
more example 2
The preprocessor stops the example at the double hash, and stores the location within the file for the next time the .in file asks for an example from that file.

Once the preprocessor runs, I've got an implementation.xml file that unifies text and code, and my book.xml file sews all the chapters together. Not as clumsy or random as a Word doc; an elegant toolchain for a more civilized time. The files did get a little out of sync near the end, in the final editing stage, which again will cause headaches come second edition time. But it won't be nearly as bad as Ruby Cookbook, and honestly most of the code in RWS will need to be replaced anyway.

That sordid subject, money

I'm not comfortable going all John Scalzi on you and showing you my royalty statements, so let's talk in generalities. I earned out my advance for both Ruby Cookbook and RWS in the initial buy. (The technical term for this is "my advance was too small".) That's Amazon buying a bunch, and Borders and B&N stocking a copy in each of their stores. And Waldenbooks, I dunno. The initial buys are probably the biggest sales I'll ever make, and they're almost entirely due to the O'Reilly brand name.

My advances were in the single-digit thousands of dollars. Subsequent to earning them out I've earned single-digit thousands of dollars for each book, quarterly. I'm the primary author on both books and I get the majority of the royalties. If I let someone else do the second edition, my share of the royalties will go down.

It's problematic for a number of reasons to try to convert book royalties into an hourly wage. One big reason is that much of the income hasn't come in yet, so who knows how much it's going to be and the time value of money etc. Each of my books took about a year of my life. My estimated earnings are more than the sub-minimum-wage figure commonly thrown around, but they're a lot less less than what I'd have earned working for those two years as a programmer. In fact, it's less than I earned at my first real programming job back in 2000.

Now, these are incredibly successful books. RWS is a year old and has an Amazon sales rank between 3k-5k. Ruby Cookbook's rank is between 20k-40k at two years old; a year ago it was 4k-10k. Beginning Python probably had just as many man-hours devoted to it, but it never cracked 14k. The fundamental author's fallacy is to make a connection between Amazon sales rank and number of sales, but think about what sales rank really means: that's the number of books that are doing better than mine on Amazon. That's approximately the number of people in the United States who are making more money from their books than I am.

So, as I said in in another context, writing is not the most cost-effective use of your time. But unlike writing science fiction, writing technical nonfiction can help your career in other ways that Baron and others have covered ably.

The wall

I want to write something about the feeling I get halfway through a book where I'm just sick of writing, but I've been writing this big weblog entry and I'm... sick of writing. So I'll just mention it. There's a point where you think "what the hell, why am I doing this, this is killing me", but at that point you've signed a contract and how are you going to feel if you flake out. I imagine some people actually do flake out at this point. To get through this I find it helps to get into the submarine mentality, and to not have a job that's killing you on top of the book project that's killing you.

[Comments] (1) Music Piracy Minute: For no real reason except my computer just played it at random, I've started hosting there's a mirror on my grave, one of my favorite Jake Berendes songs. Go ahead and download it; I'm 96% sure (Update: 100% sure) Jake won't mind, and you've been looking a little pale lately. Pale in a peculiar way that indicates you need to listen to some nerd rock. This goes double for Jake himself.

As always, Jake's music comes highly recommended and is unjustly obscure. I've got an extra copy of Foreign Policy somewhere actually, which I should give to someone.

Bonus: if you grab a copy of Ordem E Progresso, you'll get "susanna's webpage", the only song that's fan fiction about my sister's weblog.

: I need to go to sleep, but check out this gorgeous, tiny lego city. I would say LEGO city, but it's just so tiny!

[Comments] (1) Be Nice And Clean: Happy solstice. My plan was to show you a picture of this can of Malaysian shaving cream we have. Sumana got it from a friend who was moving back to Singapore, thinking I might like it. I don't like it because it's lemon-lime scented. It's shaving cream that smells like something you'd eat. I'm pretty sure they eat limes in Malaysia, so it's not a cultural thing. What the hell, folks. Here's a review that indicates it's a shaving cream for chicks.

Sumana reading this says "I'm interested in hearing why your plan didn't work." Well, my plan did work, and another thing that happened was that Helen Monroe from O'Reilly sent me a copy of the Korean translation of RESTful Web Services, a translation I'd never even heard of. So you get a double-barreled blast of pictures of things that originated in Asia. Note how nice the new Korean copy looks next to my beat-up English copy. That book used to look like this! Then I used it a bunch.

[Comments] (2) Eavesdropping: A year ago I eavesdropped on Rachel Chalmers's computer. I regret nothing!

[Comments] (4) : Japanese piggy bank helps savers enjoy romance. I know that romance was always a chore until I got a Japanese piggy bank.

Uh, no, actually the thing I wanted to share with you was a bit from the end of that article:

The company is already thriving on another new bestseller -- "Mugen Edamame" or "eternal green soy beans" -- plastic key chains that let people pretend to push boiled soy beans out of shells.

Genius! It's like the bubble wrap of Japan!

[Comments] (1) Beautiful Soup 3.0.7 Released: Guards! Seize it! Includes the chardet-avoidance code that drove me crazy and will save a lot of time in circumstances I can only describe as "rare".

[Comments] (2) : I heard a rumor that there was a recent NYCB entry that Evan hadn't left a comment on. Rather than investigate this rumor directly I went looking for whatever time-sink was keeping him from total comment coverage. It turns out that Evan has gone the route of many regular commenters on weblogs and started his own weblog. Subscribe for cross-references between life and literature, with pictures.

[Comments] (1) : Tonight we had a date night at Mundo, a local restaurant that was really weird and not that good when we ate there in 2006 or whenever with Adam and Sabrina. But they change their menu every season and I'd heard good things about their Red Sonja appetizer. Certainly more dishes should be named after comic book characters. Anyway, by now they've got their act together so I recommend it.

: About once a year I like to read through the entire run of Cutewendy, Josh Lesnick's 2000 dadaist webcomic of sex, violence, 8-bit video game references, and same-sex marriage. Recently I was stymied by the fact that the Cutewendy archives had dropped off the Internet, so I had to buy the trade paperback for $12. But now it's back online, so I've destroyed the trade paperback and the status quo is restored!

Lesnick has a comic going now called Girly, about the daughter of the couple in Cutewendy, and it's a lot better drawn and plotted than Cutewendy, but you know me, I love comics full of random stuff.

Awesome Anniversary: Ten years ago I discovered APOD.

: I caught Sumana's cold. It's an inter-blog crossover event!

[Comments] (4) Tales of Illness: My phone rang at 4 in the morning, waking me up. The caller ID said "Restricted". Uh-oh.



"You have the wrong number."


[hang up]

"That's actually the best possible way that could have gone."

On the plus side, I'm now qualified to be president.

[Comments] (2) Mega Man 9: Coming soon! Surely Adam P. will be pleased. In honor of the revamping of the series I created Mega Man MMVIII, the latest Crummy feature, which pits Mega Man against random nouns. While testing I got Nerve Man, Daughter-In-Law Man, Zirconium Man, Sin Man, King-Of-The-Salmon Man, and the deadly Programmer Man. Enjoy! Comes complete with rarely-seen gynoid code.

Game Center US: Tomorrow, health permitting, I'm going to a showing of the English-dubbed Game Center CX. Reading between the lines a little bit, someone on the Japan side has gotten the shows translated and is trying to get a distributor in the US. Given the extremely positive response of everyone to whom I've explained the the concept, I hope to give them some ammunition by telling them I know N people who will buy the DVDs when the come out. Leave me a comment or send email if you'd like me to increase the value of N.

Game Center US Update: Well, by all the standards I'd set for myself my Game Center excursion today was a failure. I got the time wrong and arrived halfway through the showing. There was nobody to ask my weblog-journalism questions except one of the film-festival guys. He said there had been someone from the production company at the premiere last week, and she'd been taking video messages (!) from American fans to send to Shinya Arino. So I missed all the excitement and any opportunity to find out exclusive facts for you, my readers, which in retrospect makes sense--why would someone from the production company stick around for all the showings? I should have hustled.

But, something I didn't expect happened that made up for things going wrong. I speak of Sumana's reaction to the show. When I said earlier that everyone to whom I've explained the the concept reacted positively, I should have said all the men to whom I explained the concept. Sumana just decided to humor me, and not without a certain amount of eye-rolling, in my obsession with this weird Japanese TV show. But she came with me to the showing, mostly because I'm still sick. Two minutes after we arrived she was laughing and loving it. Arino's joie de vivre charms the ladies! I don't think she would have liked the show in Japanese, but the subtitles brought the character to life and she had a lot of fun.

Okay, here's what I know. An episode of Retro Game Master is 30 minutes long, half the length of a Game Center CX show. They cut out the otaku-sociology and game creator interviews and everything but Arino's Challenge. This undoubtedly makes the show more Sumana-friendly, but it would have been nice to see a translation of the whole thing. It also messes with the pacing of the show, as the narrator builds up big cliffhangers which are immediately resolved because there's nothing between challenge segments.

There are subtitles over dialogue, and the Japanese captions and narration are are replaced by English captions and narration. The way the captions are done looks a lot like the localization of Hey! Spring of Trivia from a few years ago, but unlike with H!SoT the English narration is faithful to the tone of the original show. (I've never seen the Japanese Fountain of Trivia, but it really seemed like the American dubbers were being snarky. Here the over-the-top dramatic narration is present in the original.)

These guys are working to get either a US distributor for the translated shows on DVD or to get it shown on US TV. No information was available about the status of these negotiations, but according to random film festival guy, Ray Barnholdt will know when it happens, so take your cues from him.

And I just discovered that most of what I just wrote shows up in this Wired weblog entry from Thursday. Oh well.

[Comments] (2) Serious Review of "The Most Unwanted Song": Rather than just chortling over its existence, as often happens. You can hear the song here among other places. My thesis is that the song fails because it conflates two different kinds of badness. I guess I'm equating "badness" with "unwantedness" when they actually have a complex relationship, but whatever. Here's the homepage in case you're not familiar with the project.

I think one important aspect of badness is irreducibility. A bad thing with something good about it is generally not as bad as the same thing with the good part removed. "The Most Unwanted Song" contains many different aspects (each disliked by lots of people), and they're not all combined into one piece but arranged in a "Fingertips"-like series of mini-songs. This raises the possibility that any given person will like part of the song, effectively carving out a smaller song that they like. I believe this is what happened, and this is why the reaction to the song is more positive than you'd expect from the parameters of the experiment.

I decompose TMUS into three major songs. Let's call them "Opera Rap", "Frank Zappa Goes to Town", and "Kids Can't Sing". Only the third song is really unredeemably bad. I was enjoying the song until around the 9 minute mark when "Kids Can't Sing" started in earnest. If the song had stopped there it would have been pretty good and not particularly Unwanted.

"Frank Zappa Goes to Town" is a series of decent Zappa-esque noisefests, I can see how some people could take or leave it. But "Opera Rap" is really excellent. There's something genuinely beautiful about hearing a soprano sing to a rap meter. And just as the cowboy-themed lyrics start to get old she busts out a verse about Wittgenstein. Really, you wouldn't write those lyrics unless you wanted to hold people's attention.

So the problem, and I think this may have been the point of the project, is that badness comes from hackwork and not from a bad choice of attributes. Songs about cowboys aren't bad per se; they tend to be bad because many people like songs about cowboys so much they suspend their critical faculties. Commercial jingles and elevator music are bad because they're forced on you: the people who wanted the song to be created don't consider themselves part of the audience. Children's songs tend to be bad for the same reason, and also children haven't developed their critical faculties yet.

If you ask people what they don't like in a song they'll give you a bunch of heuristics, but treating those heuristics as constraints won't give you a bad song because constraints are a spur to creativity, bane of hackwork. At Viable Paradise I had to write a story in the genre I most hated. I wrote a bodice-ripping vampire romance that's really embarrassing but it's a pretty good story with some emotional depth. I don't like vampire stories or romance stories because I think there's a lot of hackwork there and it's not worth it to me to filter it out. But given those things as constraints I can work within them. (Actually now that I think about it, I should have written a novelization of a movie, because I hate those even more.) TMUS is bad not where it deploys some genre or instrument that everybody hates, but where it feels like hackwork.

This is also why "The Most Wanted Song", while listenable, is not very good. People are more similar in their likes than in their dislikes. The heuristics were too close together, which made it very easy to crank out some hackwork. It's much more difficult to come up with a good smooth-jazz love duet than to come up with a good operatic rap about the profession of cowboy. That fact probably surprises a fair number of people but I doubt many of them read this weblog.

<M <Y
Y> M>


Unless otherwise noted, all content licensed by Leonard Richardson
under a Creative Commons License.