Book Report: Googleを支える技術

I'm a technical writer. Technical writers write tersely. This promotes quick comprehension. If your writing is translated, there is another benefit. The translator does not need to work so hard.

Holidays are generally good times. Friends who have moved away come back to town. I don't even mind when they call up to say that they're running late for dinner before a show at the Fillmore. (Aside: To gloss my twit, the sousaphone joke was a lame joke I told at the Fillmore. The opening band, Crystal Antlers, was setting up. They seemed to have a lot of equipment. "All they need now is a sousaphone," I said. But partway through their set, out came a sousaphone. Except that now that I do an image search on "sousaphone", I see that I had the name of the instrument wong--though they did haul out the instrument I was thinking of. It might be called a "melodica"? Wow, this is turning out to be a long aside.) I especially don't mind this if I'm next to a bookstore. Bookstores are good places to loiter. I wandered over to the Kinokuniya bookstore. I don't remember much Japanese, but I remember some. I drifted over to the computer section. I could browse titles there--they'd mostly be in English or in phonetically-spelled out English.

Googleを支える技術 had "Google" in the title, so I thought it might be interesting. (This is a good time to re-iterate that my opinions are mine, and might not reflect those of my employer who might find books about Google really really boring for all I know.)

I expected it to be a book about searching, but it was about Google's technology infrastructure. It was pieced together from public information--there were chapters on GFS, BigTable, the things you can find out about. Also, there was a chapter on engineering culture. And therein I spotted the sentence that caused me to buy this book:

GoogleのソフトウェアエンジニアであるSteve Yegge氏は、自身のブログで次のように述べています。

I didn't know enough Japanese to know exactly what that meant, but I could tell it was about Google engineer Steve Yegge. This was good news--maybe I could use this book to give Steve a hard time. So, like I said, I bought the book.

I finally got around to typing that sentence in. It took a while. To type in Japanese characters, you pretty much have to know how to pronounce them. Do you know how to pronounce "氏"? Yeah, like I said, it took a while. (Yes, I tried typing in a couple of words and then searching the web to see if the text was already out there. No dice. No, Amazon's search inside the book doesn't search inside this book. I tried all that, see?)

I was glad it was a short sentence to type in. This promoted quick comprehension. If your writing is translated, there is another benefit. The translator does not need to work so hard.

Oh, right, what does the Japanese sentence say? It says, roughly, "Google engineer Steve Yegge said in his blog." This part of the Japanese book was talking about code reviews. Steve Yegge mentioned that the Google codebase is clean.

Now think about what I said about writing tersely.

Now think about some poor sorry Japanese slobs reading Steve Yegge's blog posts.

Ha ha ha ha.

Uhm, for those of you in the audience who don't read Steve Yegge's blog, his blog posts are long.

Nevertheless, this guy Yasushi Aoki has posted translations of some Yegge posts at I salute you, Yasushi Aoki. I wore myself out just typing that one sentence into an automatic translator. I wondered if "aoky" might have a meaning other than just pieces of the translator's name. I tried searching the web for the "aoky", and the first hit was a Japanese web page which suggested that AOKY is an initialism. I fed that into the auto translator and got:

It first opened for YORO


O Happy

K a year

Y hi

Stands for.

I don't really understand what that means, but I'll take that as my excuse to say: Hi Happy a year! See you in 2009!

Labels: ,

Dear Lazyweb: Texas Travel?

  • Any advice on things to see in Texas? Specifically, things in the east-ish Dallas-Houston-ish parts that might not make it into a guidebook? Maybe engineering-geekish things?
  • If you're a friend of mine and you'd like to go to Texas with me, uhm, March-ish or maybe April-ish let me know. What could be more fun than going to the land of perhaps the world's best beef with a vegetarian?

My plan to visit USA regions as decided by census data continues apace. I bought a Texas guidebook and riffled through it. I also came up with a new way of slicing up the map, which I like better than my previous way. Fortunately, even with this new way of slicing up the map, I need to visit Texas--so the Texas guidebook wasn't a waste. (With this new way of slicing the map, I shouldn't go to Michigan, at least not until after I go to Texas. I'd try to explain this, but when I explain it to people, they look bored.)

I like the idea of going to Texas because it's very exotic to Californians. I hung out with some of my high school chums last night and asked for Texas travel advice. They said "Texas? Don't." "I read your map-slicing travel plan. It's a bad plan." "Dude, Canada." I'm kinda reconstructing this from memory, but you get the idea. Only one of them had been to Texas--an exhausted stop in Amarillo, grabbing some sleep during a cross-country road trip. I can come back from Texas and tell my friends that I found the Big Rock Candy Mountain, that the natives anoint themselves with orange dye and dress themselves in a sort of "tree-wool". My California friends have no way to prove me wrong. At least, not the ones I've asked so far.

But I'm not sure what to do in Texas. Except that the Doc Porter Telephone Museum has a great name. And Galveston has some maritime stuff. But if Dell, TI, or RadioShack have factory tours, I haven't found them.

Labels: , ,

Zine Report: Giant Robot #57

The Obama posters say "HOPE", but when Obama himself picks people... well, he undercuts hope. It's like he scraped my old book reports, looking for books about USA politics with villains and chose those villains. He chose the viper Wade Randlett as a fundraiser. He chose the redbaiting Bill Richardson for his cabinet.

Giant Robot #57 has a painting of Obama on the cover, and cover article is about Obama. But it's not about evil appointees; it's mostly about art. You know that Shepard Fairey Obama poster? OK, this article is about artists like Shepard Fairey, making Obama-themed art, putting up posters. It's about a guy named Yosi Sergant, working for the campaign, reaching out to artists. It was interesting, inspiring even.

Maybe Obama's going to turn out to be just another politician, a demagogue who threw the word "HOPE" on a wall and let each American latch onto whatever... whatever they hoped for. But it's inspiring to see so many people working for change. Maybe it means that Americans are ready to make their country a better place in spite of their politicians. And we need that--and would have needed it, no matter who we elected.

Labels: , ,

Link: Arising like a Phoenix from a Bathtub

Further evidence of Darcy's ongoing awesomeness: she rescued the contents of the team Taft on a Raft web site. It's back! Including the material from the The Apprentice Zorg game!

If you sadly took down your links when that old site got taken over by domain vultures and turned into evil webspam, you might want to dust off those links, put them back in, but this time pointing to the new place.

Labels: , ,

Book Report: Too Cool To Be Forgotten

In this comic book, our hero goes under hypnosis and dreams he's back in high school. He gets a chance to get things right. It's nice enough.

Labels: , ,

Link: USA Census Tract Data

I want to travel somewhere, but where? I like the places that I've been. I could keep going back to them. Then again, one reason to travel is to see new things. How do I keep from falling into a rut? How do I decide to travel to someplace that I wouldn't necessarily think of on my own?

I could throw darts at a map. This idea has a few problems. One, it makes holes in my map. Two, I don't actually have any darts. Three, maybe that dart lands in North Dakota. There's nothing in North Dakota. Well, I'm exaggerating. (Or undera-ggerating. Obviously, there is stuff in North Dakota.) And yet, if my dart landed in North Dakota, I'd be disappointed.

OK, suppose that people tend to congregate in interesting places. New York City is pretty interesting, and plenty of people live around there. So maybe I shouldn't throw darts at a map.

Instead, I'll try slicing my map into pieces so that each piece contains about the same number of people. Then I'll cross cut each of those slices, again, so that each piece has the same number of people. That sounds like something my computer could do, if only I had fine-grained population data.

Those lovely lovely people at the US Census provide USA census data in an easy-to-parse form. So crank crank crank through the data, spew out some rectangles in a KML file, feed that to Google Earth, and I have the USA in slices. Making four slices in each dimension, I see that I haven't visited four major pieces of the country.

[Map of USA mostly grayed out, but with some middle states highlighted]

Four pieces, all contiguous. Why, I could take care of all four of those in just two trips: I could visit Dallas and Pittsburgh. Each of those is on/near the border between pieces. That seems kind of silly, though. Once I visit those places, I'll probably feel obliged to slice my map more finely and keep going--and then I might be sorry I went all the way to Texas and just visited Dallas.

[Map of USA more finely sliced]

Labels: , ,

Book Report: Working Effectively with Legacy Code

This book is a classic amongst computer programmers. Well, it's a four-year old classic. It captures the, uhm, zeitg^W movement towards unit testing and refactoring. It shares a problem with other classics: you've already heard its message, heard it from other sources.

Legacy code is scary. Within it lurk strange pieces of code. You look at a piece of code, a piece of code that had a purpose once. But that code has been changed over the years; now it has three purposes, each of which it kinda half-does by working with some other pieces of code which you wouldn't expect to be related. One way to deal with this is by surrounding the strange code with unit tests. Now if someone changes some code that alters behavior, you get an early warning. Blah blah blah.

He also lists a bunch of refactorings useful for making code quickly & easily testable. The first few of these in the list--I'd already heard of them. So I kinda zoned out for the rest of this part of the book.

Labels: , ,

Link: Caja's HTML sanitizer for Javascript

When you write a program that's supposed to be secure, you have to plan on security from the beginning; you can't bolt it on afterwards. The idiomatic way to describe a "plan" like we'll write the program first and figure out the security later is "They're asking for some magical security fairy dust to sprinkle over their code."

I'm tweaking a Javascript program that takes HTML from someone else and renders it on a page. I thought my program was getting "sanitized" HTML; that is, HTML that had any potentially-dangerous stuff removed. If I'm showing someone else's HTML on my page, I want to make sure that HTML doesn't have, for example, an <img src=""> in it. Otherwise, the webmaster of will know whenever someone reads my page.

I thought the program was getting sanitized HTML, but it was getting "raw" HTML, possibly chock-full of evil. Argh, I needed to bolt on some security. I went pleading to some of the security-minded folks for help. I was embarrassed--I 'fessed up that I needed some "magical security fairy dust". The amazing part is that those security-minded folks came through--they pointed me at Caja.

Caja is primarily a system for enforcing security "capabilities" in Javascript. But, but but even if you don't need all of that, you might still want one part:

Caja comes with a XSS sanitizer for HTML that works with your JS code: html-sanitizer.js. And you'll also need html4-defs.js. It looks like you need to build html4-defs.js via Ant. That's kinda annoying, but a lot easier than writing your own HTML sanitizer from scratch.

I looked over the source code. It's checking for bad stuff I hadn't thought to check for. I sure am glad that folks more knowledgeable than me are working on this thing.

Labels: , ,

Book Report: Spin State

I liked Spin State, a science fiction novel by Chris Moriarty. It's science fiction but with a story in which the characters make mistakes. That's a good thing. I actually found myself thinking literature-ish thoughts, all mixed up in there with the quantum entanglement. It's good to think about quantum entanglement and human frailty at the same time. Plenty of the action takes place in a claustrophobia-inducing mine. Well, I don't think that the characters were getting claustrophobic, but I was. A tense book.

Labels: , ,

Site Update: It's like Web2.0, but three years too late to be considered cool

You know how I had separate lists of Twitter updates and Blog updates? Like, on my home page, I listed each of those, but they were in separate areas? That was kind of silly. And unnecessary: Friendfeed provides a handy combination of my feeds. They provide it as a pretty web page, but also as a Web API. So I wrote a little Javascript to present that list of recent updates.

It's like I'm some kind of web programmer or something. But I'm not turning into a hipster, I swear. I don't even own an ironic trucker cap. Don't shun me just because I used some Javascript. At least I didn't put in any gratuitous XML parsing.

Labels: , ,

Book Report: Code Complete

Computers are hard. This afternoon, I was trying to figure out why some people couldn't view my web site. It sounded like a DNS problem; one guy reported it was affecting him on Comcast in Boston. So I tried Googling for DNS problem reports; I found people complaining that Comcast provides crappy DNS. I don't know if that means that Comcast provides crappy DNS or if that means that Comcast has many customers and thus has more people to whine about it. And then I got sidetracked when I found out that I no longer know what organization manages Back when I set up this domain, was managed by an outfit called They were the (something something) delegate. No one outfit was going to try to handle registering all of the .us domains; depending on what region you wanted a domain in, you'd deal with some local delegate. Thus, Don't look them up, they no longer exist. I found a forum post which reported that got gobbled by something which got gobbled by something else which got gobbled by If still manages, I didn't find any evidence of it on their web site. seems to imply that manages it--but it doesn't have any record of my domain. So the good news about my domain is that it's free, but the bad news of "free" is that if no-one's cashing your checks, then maybe you don't know who you're dealing with.

Computers are hard. Anyhow, yeah, book report, yeah, Code Complete, here we go.

This is one of those influential books that I didn't get much out of because their ideas have already percolated out into society. Heck, a large part of what it does is distill down ideas that had already percolated around society long ago. This book takes the time to summarize both sides of the goto-considered-harmful debate. So I kinda spaced out most of the time I was "reading" this book. Still, there are advantages of skimming over a book that's considered an authority of sanity and stuff.

I'm thinking of this section in particular:

Taking pictures of whiteboard drawings with a digital camera and then embedding those pictures into traditional documents can be a low-effort way to get 80 percent of the benefit of saving design drawings by doing 1 percent of the work required if you use a drawing tool.

I do that. I draw on the whiteboard and snap a photo instead of diving into you favorite diagram-drawing tool. And people laugh at me when I do. But now I can point at this book. I can say, "It's in Code Complete, thus it is accepted industry practice QED."

Labels: , ,

Ghost Patrol Links, including Photos

Yeah, yeah, you were waiting for the Ghost Patrol results, but me, I was waiting for Wesley's photos. And he posted them: Wes Chan's Ghost Patrol photos.

Mostly photos of puzzles and of our team (Mystic Ghosti). But there's other fun photos, too. coed astronomy, Longshots, Knights of Corinth, Burninators, and more. Check it out.

(Edited to fix a photo link: Loquacious != coed astronomy)

Labels: , ,

Book Report: The Craftsman

In a passing reference to this book, The Craftsman, I got the impression that it was a book that studied how people think when they're working. But it isn't that at all. I wish instead people had pointed out this sentence from the book's Prologue:

I am a philisophically minded writer asking questions about such matters as woodworking, military drills, or solar panels.

There might be some useful information in this book. But I'll never find it. I gave up on this book. It is larded with philosophy. One imagines that the author, Sennet, felt compelled to write this book because he is surrounded by philosophers who are unfamiliar with doing real work and he felt he had to explain the process to them in their own language...

First and foremost, by putting manual pursuits on an equal footing with mental labors. The general idea had a sharp edge; the Encyclopedia scorned hereditary members of the elite who do no work and so contribute nothing to society. By restoring the manual laborer to something like his archaic Greek honor, the encyclopédistes mounted a challenge equal in force to Kant's attack on traditional privelege but different in character: useful labor rather than free reason challenges the past. The very march of the alphabet aided the Encyclopedia's belief in the ethical equivalence of manual work to supposedly higher pursuits. In French roi (king) lies near rôtisseur (a roaster of meats or fowl), just as in English "knit" follows upon "king." As the historian Robert Danton observes, the Encyclopedia seized on such couplings as more than happy accidents; these take the authority of a monarch down a beg by making it prosaic.

So the real is problem is that I misunderstood what the book was about. This is not a book about how we think when we work. It is a book about professional thinkers thinking about work. What did Kant have to say about work? Diderot? If I cared about these things, then I guess I could read this book to find out. But hopefully one of my friends would cajole me into caring about something important instead and I'd get back to doing real work.

Labels: ,

Book Report: DEC is Dead, Long Live DEC

This is a book about DEC, Digital Equipment Corporation, a start up that grew big. The author argues that some of the things that made it a great start-up, a great place to work... these things also were the seeds of DEC's destruction. The company believed in innovation and shipped many products. But it never had a good way to figure out which of these products made money and which were a drain. And there were plenty of drains. Similarly, the company trusted its people to do great work and didn't waste time trying to monitor people. But there were some people who weren't doing great work and some people working on useless things. There was no way to detect these people. The company used the honor system, and it's quicker+easier to get a picture of what the company is doing if you trust the reports of a few managers instead of putting a lot of effort into cross-checking. But once some manager started distorting facts, trust backfired.

While the company did well, these problems weren't serious. The products that did well financed the others. But as microcomputers chased out DEC's minicomputers and the company needed to change, these problems became more important. The lack of clarity about which parts of the company were doing well made it difficult to steer the company towards survival.

This was a discouraging book. It suggests that a company that grows past a certain point runs into some awful problems--problems whose solutions are only mildly better than the problems. I work at a big company. I don't want to spend a lot of time reporting on what I do; just to help fact-check. I don't want to be limited to projects that fit a certain mold so that higher-ups have an easier time keeping track of what the company overall is doing. This book suggests that my attitude might doom my company. I hope it's wrong.

Labels: , ,

Book Report: The Ipcress File

I came up with an idea for a board-game like computer game. The board was going to be a map of the city. And there were these bits of secret info to move across the city. You control some agents that can move info. Or they could recruit ordinary citizens to move the info instead. Folks could pick up info from "drops" and carry them to other "drops". It as interesting to think about how to generate a fake city map, how to choose where to put the drops, how to figure out some "routes" for citizens... But it was shaping up to be a game with as many chores as any Real-Time Strategy game, but without the cool explosions. That's the problem with a quiet spycraft game. Not enough explosions.

Oh, right, my point. Spies. The Ipcress File. It's a spy story. It's a fine spy story. It's nice enough. It was kind of tough to get ahold of--my usual libraries had lost track of their copies. I ended up getting it from Link+. Which seems a little silly since I didn't like the book that much. How did this end up on my reading list?

Labels: , ,

Misapplying Google Friend Connect

I put a couple of "Google Friend Connect" gadgets on the site. These are little web gadgets that allow you to register your interest in the site and to leave comments on a wall. (That's "wall" in the sense of "write all", i.e., like a forum or IRC channel for you young whippersnappers who didn't have "wall".) And you're thinking "So what, big deal. I could already leave comments without these 'gadget' thingies." And you're right.

A neat thing about these gadgets, though--you can use them on more than one site and they share their data. E.g., I set up gadgets on a test website. The wall-comments there are the same as those on this site.

So... suppose you have a website on some topic. You can set up these gadgets for your own site. You can then encourage other folks to put your site's gadgets onto their sites. They'll need to install some HTML, and they'll need your permission (You'll need to tweak your Friend Connect settings under Site Settings > Advanced, you'll need to add their site's URL to the list of permitted sites) E.g., if you have a site about puzzly treasure-hunts and if you give me permission, I could post your gadget on my site. You might like that because it helps drive traffic to your site. I might like that because it makes my site part of a bigger community.

But I don't think my site could be the main site for the topic--my site's topic is me. I doubt that other sites want to start showing gadgets for my site. I do not have a personality cult; I am not Kibo.

Labels: ,

Book Report: Competing on Internet Time, Breaking Windows

Competing on Internet Time

This book is about the rise of Netscape including competing with Microsoft, contrasting Netscape's nimble pace to Microsoft's slow release cycles. I didn't finish the book. It talked plenty about the business side. Well, it didn't say that much about the business side, but it said it at length. Maybe if I'd kept reading there would have been something interesting about the software development process. But I couldn't stick with it. They kept saying "on Internet time" to mean "fast-paced". The Nth time I read it, I thought Oh, get over yourselves.

I tried looking in the index for bad attitude, it wasn't there.

I gave up and put the book down.

Breaking Windows

This book is about Microsoft's peak and downturn. It comes at the problem from the biz point of view, largely overlooking the technology. I guess. I didn't make it very far in the book. Maybe I would have made it past the discussion of how Microsoft needed to keep growing to sustain itself as a company. I guess it's very engineer-y of me to zone out during business discussions and only perk up when people talk about products and/or technology. I perked up when the book talked about Bill Gates' reason for getting into the software business when most companies were making software only as an excuse to get people to buy their hardware. Gates figured that Moore's law meant that hardware would become a commodity. So he didn't want to get into that business, just software. But in the first something something pages of this book, that was the only time I perked up. Eventually I realized this.

I gave up and put the book down.

Labels: , ,

Book Report: Going Postal

Skott raises an excellent point: The diskworld novels also have golems.

E.g., I read Going Postal. I read this Diskworld novel because it's where the puzzler team "The Smoking GNU" got their name. Aha, it all fits together. The book was nice. It was a fun read. It had golems in it.

Labels: , ,

Book Report: He, She, and It

During BANG 18, I found out that plenty of local goyim puzzlists don't know what a "golem" is. A puzzle required players to recognize monsters by looking at pictures. I thought that was pretty tough--but I didn't think that a golem was the toughest monster to identify. But it was for plenty of folks. Back in my day, nerds were required to play Dungeons & Dragons, and were thus forced to learn the basics of Golemnity. It was right there in the Monster Manual. If you can't bring yourself to play paper and pencil RPGs, you could at least read Kavalier and Clay. If you can't bring yourself to read a re-hash of old comic book publishing industry tales, you could instead read He, She, and It.

This cyberpunk novel features romance, Jewish legendry, and "glop" as an abbreviation for "megalopolis". Fun stuff, check it out. Contains only 80% of typical patriarchy levels for a science fiction novel.

Labels: ,

home |