Larry Hosken: New: Tag: programming

I updated the public Octothorpean source code. It said something like "This is the source code to the Google App Engine .go program behind 'Octothorpean'," though that's been wrong for a year. I copied over the new source code. I updated the README to stop hyping App Engine and embrace the simplicity of a static site (plus one darned-simple CGI script) generator.

Permalink
& Comments

Further Bewordled

I read Allison Parrish's article "Rewordable versus the alphabet fetish," in which she discusses the design of the card game Rewordable. Like Scrabble and Bananagrams, in Rewordable a player builds up words from parts. Unlike Scrabble tiles and Bananagrams tiles, a Rewordable card might have more than one letter on it. Parrish points out:

We sort of take it for granted that spelling games will use letters as their unit. But why should this be the case?

And I thought Oho, yes. Those past game designers fell into this trap. Such buffoons! And then I remembered that I had made a game in which one builds up words, uhm, from letters. I couldn't throw stones at those buffoons, for I resided in a glass house of buffoonery myself.

So I tweaked the game: Bewordled can now have more than one letter in a square.

Now the Bewordled game is that much more compelling. This could be good news for me if wildfire smoke keeps me indoors for a few days.

Permalink
& Comments

Circly

I made a picture filter. I call it "circly" because it's kinda like pixelize, but with circles. And then I made a web page of circle-drawing animations so you can lose yourself in watching lots of circles appearing or anyhow that's what I spent way too much time doing.
circly-filtered selfie

At first I thought I should use k-means clustering to choose which circles to draw. But then I tried just choosing random circles and that looked about the same and was much faster. And then I tried choosing regularly-spaced circles and that was fast and looked better. I often start with the over-complex method and then am surprised when the simple method works better. But maybe that's better than starting with the simple method and then feeling disappointed when the further work on the over-complex method doesn't pay off. Anyhow, you can look at circles.

Permalink
& Comments

wordnet, is-a

ColinTheMathmo asked folks to think of animals that were also verbs, like "bug". I thought of some and then it occurred to me: wordnet ("wn") is a computer tool that knows the meaning of many many words. It knows that "bug" is a verb. It knows that a "bug" is an (arthropod is an invertebrate is an) animal. I already knew how to use wn "by hand" to look up word definitions. I knew that it could also be used in a computer program, but I didn't know how. This seemed like a good opportunity to learn.

So I googled around, found out I should install NLTK (sudo aptitude install python3-nltk) and install its data; and then I started tinkering.

From my previous playing with wn I knew that "hypernyms" was its jargon for relations like "a bug is an arthropod". But there were still things to learn to use it programmatically. I had to learn about Synsets, the objects wn uses to keep track of senses of a word. You don't directly ask wn if "bug" is an arthropod. wn doesn't know whether you mean the creepy-crawly "bug" or the computer-problem "bug" or what-have-you. So you start by asking for a word's Synsets, and then you can query wn about the relations between those Synsets and others (e.g., Synset(animal.n.01)).

Once I knew about the important data types, I slapped together a program:

#!/usr/bin/env python3

from nltk.corpus import wordnet as wn

def load_words():
    words = []
    for line in open("words_500K.txt"):
        score_s, word = line.strip().split("\t")
        if len(score_s) < 4: break
        words.append(word)
    return words

def is_animal(word_s):
    animal = wn.synset('animal.n.01')
    senses = wn.synsets(word_s)
    to_do = []
    for sense in senses: # get creepy-crawly bug, computer-problem bug, etc...
        to_do += sense.hypernyms()
    while len(to_do) > 0: # walk up is-a trees: bug -> arthropod -> invertebrate...
        h = to_do.pop()
        if h == animal: return True
        to_do += h.hypernyms()
    return False

def is_verb(word_s):
    return len(wn.synsets(word_s, wn.VERB)) > 0
        
def main():
    words = load_words()
    for word in words:
        if not is_verb(word): continue
        if not is_animal(word): continue
        print(word)

main()

Pretty soon, a list emerges: man head does blue bear horse game mans horses dog heads queen birds fish soldiers fly bird baby stock gray dogs bay soldier jack cat grey pen bears permit mount games sole bull fox kids rays prey flies cow mate kid seal copper wolf ray eagle cats pet rail lamb grade queens pig beef swallow snake steamer cows cock mouse drum bees knot chat duck babies monkey goose rabbit worm rat pigs toy stray crow dove buffalo rats dun hawk fishes hare worms drums toys ducks layer homer hounds fowl snakes mates drill knots buck steer dam bulls butterfly bat rabbits orphan bitch stocks grades frog rails sire swan hound sow welsh whale eagles lambs turtle seals monkeys layers cricket fowls ram crows frogs permits steamers beaver lark butterflies perch pens raven kit quarry bucks sponge jacks bug hog kitten oyster parrot crane swallows crab ape bays calves blues oysters pets grub orphans bugs smelt plug foxes hack monitor stag poll hogs cocks hawks bats mounts babys soles shark cod flicker beetle spat grunt swans kite sharks fawn hares tick apes whales quail gulls falcon cuckoo kittens grays beetles crabs imagines torpedo ravens cub jade nestling larks snail stud grouse cubs parrots gull turtles nag leech badger mares stint rams cranes snails skate whiff polls quarries alligator buffaloes drone crickets drills stunt pup skates dams steers tinker skunk greys bunting clam rooks beavers shrimp ferret wolfs snipe kites homers coppers stags ruff sires carp foxs studs char bitches bulldog lug slug sows grunts clams alligators monitors pout assess reeves sponges suckling stunts torpedoes slugs grubs leeches pollard whiting falcons plugs drones kits quails strays ticks rook chats winkle perches roach mew flounder pinches cockle reeve whelp shrimps pups cuckoos skylark hacks foal fawns duns nags tinkers mews badgers whiffs skunks preys flickers whelps fishs cockles scallop basset ferrets yak nestlings remount scallops prawns crawfish snipes ruffs lugs gelding flys bream flounders spats butterflys bulldogs cocker sucklings foals jades buffalos mouses prawn gooses roaches

They ain't all good, but there are some great ones in there I wouldn't have thought of on my own.

Permalink
& Comments

I had some thoughts about automatically-generated mazes rattling around in the back of my head and figured out a way to apply an algorithm from that Mazes for Programmers book to a problem I'd noticed a while back.

The problem: I wanted to create a maze with thick walls; and I wanted to choose the maze's entrance and exit squares ahead of time. Alas, the naive algorithms I had were more likely than not to block off the entrance and/or exit with walls. But I'd had Kruskal's algorithm (as applied to mazes) on my mind, and I saw how to apply it here: choose an entrance and an exit, then grow a maze-tree from each; when the two maze-trees collide, treat them as a single maze-tree and continue growing to fill in the rest:

(This problem doesn't show up with normal "skinny-wall" mazes; you can choose any square as the entrance and any as the exit/goal/whatever. You can get from any point to any other point in a normal maze; you can always be assured that there's one way to get from start to finish.)

Permalink
& Comments

Book Report: Mazes for Programmers

This book is about randomly generating mazes by writing computer programs. Before reading this book, I'd tried randomly generating some mazes, but those mazes hadn't pleased me: too many little nubbly dead ends. This book showed an algorithm (well, a few algorithms) that didn't have so many dead ends. (The secret, obvious when you hear it but I swear not so obvious when you're just staring at a maze and trying to figure out what you don't like about it: have fewer branches in the maze.)

There's plenty in this book: several maze-generation algorithms, tweaks for hex grids, tweaks for 3-D, tweaks for cylinders, tweaks for… Uhm, yeah, there's plenty in this book. I didn't use much of it. I was just looking for this one specific thing! But it's nice to know that if I ever want to put a maze on a Möbius strip, this book has some ideas about that.

Permalink
& Comments

Book Report: Humble Pi

This book talks about math errors and the consequences that follow. There are errors of engineering, software errors (dear to my heart), and plain old computation errors. Some of these get pretty interesting. E.g., until I read this book, I thought the designers of the Millennium Bridge must be pretty darned incompetent. When pedestrians walked across the newly-constructed Millennium Bridge, it started to shake itself apart. Engineers have known about the "breakstep bridge" problem for a long time; there was no excuse for this to happen to a modern bridge. Except except, as I learned from this book, the Millennium Bridge was shaking itself apart in a new, exciting way. It wasn't bouncing up and down as people stomped on it. Rather, it waggled from side to side as walkers shifted.

I found out about medical calculators, used for lives-are-at-stake calculations like drug dosages. If I haul out my phone calculator and type in 2  3 · 4 , it ignores the second dot and shows 2.34. But it's strange that I hit the · key twice—one of those was probably an accident. Maybe I meant to enter 2.34, maybe I meant 23.4. These fancy-pants medical calculators are more careful: they show a warning about the too-many-dots problem. (The book also discusses a problem that can arise from using too many fancy-pants complex error checkers: if the system gets too complex, that's just more opportunities for errors as layers of a system interfere with each other.)

I found out that the Spurious Correlations website is pretty funny and reminds us that plenty of unrelated things correlate with crime rates, cancer rates, whatever rates; and you should take any pundit's discovery of the true cause of whatever with a big grain of salt. I found out about a project Tommy Flowers worked on after his WWII codebreaking work: ERNIE, a random number generator that generated entropy from neon tubes. I learned… uhm, there's a lot of cool stuff in this book. Recommended; check it out.

Permalink
& Comments

Site's corollary: Never attribute to stupidity that which is adequately explained by software complexity. –Dick Sites   ...

Permalink & Comments

link: Web War Stories Computer nerds, take note: I just enjoyed watching "Overflow," a @WebWarStories episode about debugging and fixing a gnarly computer bug. The bug occurred on a rapidly-growing-popular web site, so th...

Permalink & Comments

"The more time I spend in front of a keyboard, the more I think my core skills here aren’t any more complicated than humility, empathy and patience; that if you understand its authors the code will r...

Permalink & Comments

Book Report: Hello World It's a book about AI and ML, especially where they bump into ethical questions. Part of the problem we get into is… computers nowadays (as in the past) are good at things humans are bad at; bu...

Permalink & Comments

I still use computer files. So I keep remote backups. Some weeks back, my backups stopped working. I was using Dropbox, and Dropbox was doing some biiiig upgrade. One side effect of this upgrade was...

Permalink & Comments

Book Report: Grace Hopper and the Invention of the Information Age It's a combination biography of Grace Hopper and story of the development of COBOL, the first mumble programming language (where historians and quibblers enjoy arguing about what exact phrase goes in...

Permalink & Comments

Book Report: How Smart Machines Think When Sean Gerrish isn't automating the creation of wordplayish portmanteaux, he wrangles artificial intelligence… or writes this book about it. It's a popular-science survey of modern AI. You ...

Permalink & Comments

Book Report: Troublemakers It's a swath of Silicon Valley history in the 70s and thenabouts; short biographies of some folks I'd heard of and others I hadn't. There's a good variety. I didn't learn much about the organizations...

Permalink & Comments

A team reported a typo in an Octothorpean Order online puzzlehunt puzzle's hint. So, no problem. I fix up the puzzle file on my computer, and go to upload it to the Octothorpean site… and get ...

Permalink & Comments

A while back, you'll recall I made a phone game that involved walking around and "checking in" to various landmark-y locations. The game got its information about local landmarks from Foursquare, tha...

Permalink & Comments

Book Report: Life in Code It's a collection of essays by Ellen Ullman, a writer about technology who has actually worked as a programmer and thought about it and isn't a blowhard. I'd seen some of these before, but some appea...

Permalink & Comments

I'm learning Objective-C for work. (We have SDKs for folks who want to write apps that talk to banks, and one of those SDKs is for iOS, which is an 🍎 thing, and thus uses Objective-C.) It's been a tr...

Permalink & Comments

The new job starts Monday. The main programming language there is Java. I haven't done much with Java in years. In my remaining free time, I took a few whiles to catch up on how the language has chan...

Permalink & Comments

Job search is done: I accepted an offer at Token, which writes software to help banks do bank-y things on the internet. Many thanks and appreciations to folks who pointed me at places, pointed places...

Permalink & Comments

Help me find a programming job? [Update:] Job found! Hello excellent friends, especially local computer nerd friends. I'm looking for work. Specifically, I'm looking for work as a programmer in the San Francisco Bay Area. Behold,...

Permalink & Comments

Book Report: Homeland It's a sequel to Little Brother. Much of the action takes place during protests. Uhm, and that's pretty much all I remember. Remember back when my website got zapped for a few weeks? The good news i...

Permalink & Comments

Game: Troubador Tour Board I made a phone game: Troubador Tour Board. You play it by walking around with your phone, occasionally pressing a button. Nowadays, that's not so unusual for a game. This game's unusual in that you d...

Permalink & Comments

Remember phraser, that tool for generating puzzle-design-friendly word lists? I just updated it. I found OMDB, a big database of movie info with a public API. (Did I find it? Or did one of you tell m...

Permalink & Comments

OpenID Connect for Google accounts The document OpenID Connect | Google Identity Platform doesn't have a freeform feedback mechanism, so pardon me as I vent here. When it says "JSON array" it means "JSON object". Okay yeah I figured ...

Permalink & Comments

phraser, a word list generator When you construct word puzzles, it's good to have a nice list of words to work with. Over the last several weeks, I've been tinkering on and off to build phraser, a tool that chugs through wiki data...

Permalink & Comments

Worlds Colliding, well, Lightly Brushing anyhow QuizUp, a trivia quiz app, is built using Pants, that build tool I wrote documentation about. ...

Permalink & Comments

Computer programmers say "premature optimization is the root of all evil" because it encourages our tendency to complicate programs for negligible benefit. But here's another reason: the start of a p...

Permalink & Comments

Comic Report: The Imitation Game It's a comic biography of computing pioneer/codebreaker Alan Turing. It's pretty good as you'd expect since it's written by Jim Ottaviani, who's done other excellent science-y biography comics. ...

Permalink & Comments

Book Report: 10 PRINT CHR$(205.5 + RND(1)); : GOTO 10 It's a book about a little "one-liner" Commodore 64 BASIC program. What happens when a bunch of academics want to talk about the good ol' days of 1980s home computer programming? A book like this, th...

Permalink & Comments

Book Report: Adrenaline Junkies and Template Zombies It's like a pattern language for software development organizations. This isn't a design pattern language; it's more of a catalog of emergent patterns. You will encounter these situations as you make...

Permalink & Comments

It wasn't the BUILD Dictionary Correction. I said that Bazel's BUILD Encyclopedia used to be the BUILD Dictionary. A Googler gently corrected me: But in fact, it was the encyclopedia back then as well. : ) I apologize for the ...

Permalink & Comments

Link: Why Chromium has code owners One fun issue with working in a biiiiig codebase is that nobody knows it all. Something that can help: have "local experts" own parts of the codebase. Give them a chance to say how to make some code ...

Permalink & Comments

Bazel is an anagram of "Blaze" Well dog my cats: http://bazel.io/, an open-sourcing of the Blaze build tool. (But I guess it doesn't build your code on Google's internal cloud machines.) The BUILD Dictionary (which I worked on) is...

Permalink & Comments

2Tone, OpenID The 2-Tone Game web site has players "log in" so it can keep track of them. E.g., This player has solved these puzzles, has those puzzles open, and hasn't even seen those other puzzles over there. In...

Permalink & Comments

I attended an interesting talk recently. It was about tracing requests in complex service-oriented-architecture web service dealies. It was by Ben Sigelman, who worked on the Dapper project—whi...

Permalink & Comments

I attended an interesting talk recently. It was about tracing requests in complex service-oriented-architecture web service dealies. It was by Ben Sigelman, who worked on the Dapper project—whi...

Permalink & Comments

I played the computer game Hack 'n' Slash and it was pretty fun. It's that game where you get to change the game's program as you play through it. (I guess it's also a platform by which you can creat...

Permalink & Comments

"It turns out they were images of the tape records written by a Cedar Mesa program called the Archivist. Luckily, when the 9-track tapes were transferred to 8mm tapes, a file called rosetta.tar conta...

Permalink & Comments

Link: Video: How 1000s of Devs Can Work on the Same Code and Understand Each Other If your organization doesn't use C++, you might be surprised that this talk about Google's C++ Style Guide could be relevant. But very little of it gets into C++. It's mostly about coming up with a s...

Permalink & Comments

fantabular.py: already obsolete Remember a few days back when I posted about fantabular.py, a little computer program to convert Quip docs to spreadsheets? It's already obsolete: Quip now includes spreadsheets. Now I wish I'd procr...

Permalink & Comments

fantabular.py converts puzzlehunty Quip docs to spreadsheets fantabular.py is a little computer program to look at your Quip documents, find those with "Tabular" in the name, and convert their tables to spreadsheets. If you're part of a puzzlehunt team, you o...

Permalink & Comments

I updated the downloadable 2-Tone Game source code. More recent versions of the App Engine SDK weren't compatible with this four-year-old (five-year-old? something like that) code. I just wanted to u...

Permalink & Comments

Link: Testing Culture If you liked Parts 1 and 2 of Mike Bland's Unit Testing vs Heartbleed and goto fail bugs, you'll be glad to know that the rest of the article is up: setting up a unit testing culture, ...

Permalink & Comments

Link: Testing Culture vs Heartbleed It's Part 2 of Mike Bland's article on how a testing culture could have prevented recent high-profile bugs. This time, it's Heartbleed, a darned innocuous bug which is causing umpty-ump percent of th...

Permalink & Comments

Link: Testing Culture vs goto fail Catching software bugs requires testing culture. It's a mix of technology and attitude. Technology should make running tests easy. Attitude should encourage you to write tests—hey, it's easy so...

Permalink & Comments

FAQs, Facts, Drowning in Questions You're a small team of software developers. You make a service|API|tool|thingy used by many, many software developers. They have questions, so many questions. You're drowning in questions. How can yo...

Permalink & Comments

Book Report: Little Brother Remind yourself it's fiction: after a terrorist attack, the DHS goes police state on San Francisco. That part's all too believable. The less-believable part: our hero is a teenaged computer programme...

Permalink & Comments

Link: godep Go Dependency Management talk video A while back, I went to a local GoLang meetup to see some quick talks about the Go Programming Language. Keith Rarick gave an interesting talk about godep, a tool to manage dependencies. The regular ...

Permalink & Comments

Link: 2014 #mysteryhunt IT and Infrastructure It's a blog post by an Alice Shrugged team member about keeping their team-puzzle-state server up and running. We need jargon for this. HintOps? Solutions Reliability Engineering? ...

Permalink & Comments

Puzzle Hunts are Everywere, so Don't try to Think About Other Things Working on the UI for the upcoming Ghost Patrol game, I took some little breaks. (Part of the UI is a little countdown timer that lets you know how long until the game starts—and eventually tel...

Permalink & Comments

Book Report: Debugging It's a book about debugging, about troubleshooting. It has some good advice and some fun anecdotes. As I write this, it's been a few weeks since I read it, and the anecdotes have all leaked out of my...

Permalink & Comments

Book Report: Mr Penumbra's 24-Hour Bookstore Like every novel-reading San Francisco bay area tech worker, I enjoyed Mr Penumbra's 24-Hour Bookstore. Its computer and code bits are more science-fantasy than hard science fiction, but they support...

Permalink & Comments

Syllables from Phonemes: Nothing is E-Z I want to write puzzles that use word-sounds. And by "write," I mean I want a computer to do all the hard work while I stare off into space and think about burritos. But word sounds are tricky for co...

Permalink & Comments

Link: Can you code better than a fourth grader? What if we're talking about a Vietnamese fourth grader? Neil Fraser went to Vietnam, and since he's a programming/educating nerd, he checked out the local computer science programs. He didn't just ch...

Permalink & Comments

Book Report: Java Concurrency in Practice I work with the Scala programming language but Scala runs on the JVM, the Java Virtual Machine. This is pretty important. Java turned out to be an icky programming language, but some smart folks have...

Permalink & Comments

This tech talk about election software http://www.youtube.com/watch?v=RBSiuVGQECs shows politicians can't cooperate. In theory, it's a UX programmer talking about how he and other geeks worked with t...

Permalink & Comments

App Engine Programmers: Go just got practical (versus just plain fun) tl;dr someone wrote some code that showed me how to speed up a game, so I'm happy. If you're a Pythonic App Engine programmer, then you know that AppStats and NDB make your life a lot easier. AppSta...

Permalink & Comments

I have infinity words for you Developers Developers Developers Developers Developers Developers Developers Developers Developers Developers Developers Developers Developers Developers... ...

Permalink & Comments

Open Source, part of the new gig It feels like Twitter has open-sourced a bigger fraction of its software than Google has. I haven't scientifically measured that; and even so, I hedged with "fraction"—Google has open-sourced a...

Permalink & Comments

Twitter -> RSS bookmarklet updated I wrote a bookmarklet so that if I was visiting someone's twitter page, I could bring up the feed of their twitter stream in Google Reader. But the feed URLs moved, so I had to update my bookmarklet....

Permalink & Comments

Presentation: Tech Writing for non-Tech Writers I'm a rara avis at Twitter, the only full-time technical writer. As such, my life is that of a celebrity: I'm constantly being invited to events, everybody wants to be seen with me, etc etc. At least...

Permalink & Comments

Book Report: Team Geek Ben and Fitz wrote a book about coexisting with your fellow geeks on team projects without going mad. Those of you who are still reading this book report instead of going to Amazon... probably don't ...

Permalink & Comments

Book Report: Broken Ballots A few people want to steal elections. A few billion people want fair elections. How do you make an election un-stealable? It's not easy. Elections do't run themselves; we need election officials. Fol...

Permalink & Comments

@ikai pointed out an unintentionally funny article The Real Reason Silicon Valley Coders Write Bad Software. The reason? Because they aren't better English writers. This article made it into the Atla...

Permalink & Comments

The Power of Type Theory in the Context of Buffoonery In programming, there are types. E.g., if your program says x = 2, it's also useful to say that x has the Integer type. That allows us to organize our functions based on the kinds of thingies they ca...

Permalink & Comments

Link: Middle-Aged Software Ranty Chris Crawford reminds you that your software project doesn't need a red sports car. And probably doesn't need half the new features that your power users agitate for. ...

Permalink & Comments

From the list of recent edits to Scala School, a tutorial for the Scala programming language, you might guess that puzzle nerds were trying to sneak in some easter eggs: You'd see a bunch of changes ...

Permalink & Comments

Book Report: The New New Thing It's a biography of Jim Clark, a high-tech entrepeneur. This book talks about a period of his life after he helped found SGI and Netscape, when he was working on health-service software and designing...

Permalink & Comments

Book Report: In the Plex Why do I keep reading Steven Levy books? They're full of mistakes. He interviews people who know a lot... and then somehow still gets it wrong. I read In the Plex because, golly, he talked to all the...

Permalink & Comments

Book Report: Version Control by Example For a hobby computer programming project, I used a revision control program called Veracity. It works fine. One of the Veracity programmers wrote a book about revision control; I found it cheap, so I...

Permalink & Comments

Crossword Compiler Noob Diary Unsurprisingly, creating mediocre crossword puzzles is easy but creating good crossword puzzles is hard. Mind you, I don't feel pressured to create great crossword puzzles. For puzzlehunts, I only ne...

Permalink & Comments

Soon I will be insufferable. I switched groups at work. Instead of working with the internal training group on [confidential] [confidential] [confidential], I'm working on something I can actually talk about! Unfortunately for y...

Permalink & Comments

Book Report: Closure: The Definitive Guide This book is about computer programming, specifically about how to use the Google Closure Library and Google Closure Compiler. I learned things that I didn't learn from Google's own documentation for...

Permalink & Comments

Follow Twitter in Google Reader Bookmarklet Update: the version of the bookmarklet described on this page no longer works, sorry. You want the updated version which works instead. Twitter changed their UI and now I can't find any tweeter's RS...

Permalink & Comments

Link: Clang MapReduce video If you're a computer programmer and don't have much computer code, then refactoring is easy. You start up your IDE, fill out a little dialog box, and there you go. But if you're part of an organizati...

Permalink & Comments

Book Report: Why Programs Fail Today we celebrate #DennisRitchieDay ahem excuse me, Dennis Ritchie Day, in memory of a computer programmer who... Oh, man his stuff is in your computer, in your phone, Dennis Ritchie's stuff is ever...

Permalink & Comments

The Go Gopher Meme is Too Damn High I've been messing around with writing an web app on App Engine using Go. A few months ago, there was a nice demo presentation of creating such an app that used as its example Mustach-io, a program fo...

Permalink & Comments

Book Report: The Architecture of Open Source Applications If you're a computer programmer who thinks about software design, it helps if you've had a chance to learn about a variety of software designs. This is a great book for that! Maintainers of several p...

Permalink & Comments

Book Report: I'm Feeling Lucky It's anecdotes and interviews about Google's early history by Doug Edwards, an early employee. (Is this a good time to repeat that my opinions are mine? They're mine. I speak for myself. I don't spea...

Permalink & Comments

Book Report: Knuth: Selected Papers on Fun and Games Don Knuth is, of course, one of our greatest scholars of Computer Science. If someone asks you, "What's an efficient way to to sort ______ for quick retrieval?" you are always safe bluffing the answe...

Permalink & Comments

Book Report: Managing Humans It's kind of a book about people-management by "rands," a blogger who's also an engineering manager. I suspect that people-managers who aren't used to dealing with nerds might get creeped out by thi...

Permalink & Comments

Book Report: Waltzing with Bears This book's subtitle is "Managing Risk on Software Projects" and it's written by the Peopleware guys. OK, nobody's reading this blog post anymore; the non-computer folks have clicked away to find som...

Permalink & Comments

Do you ever worry that you've been using your Javascript programming framework so long that you've forgotten how to write plain ol' Javascript? You probably never worry about that. Anyhow, I wrote a ...

Permalink & Comments

I know, I'll use another regular expression. ...

Permalink & Comments

Book Report: The Design of Design It's Groundhog Day, which the movies tell us is a day in which we have to worry about the same thing repeating over again. So maybe today's a good day to report on a book whose title repeats, The De...

Permalink & Comments

Wikipedia article data is available again: http://download.wikipedia.org/enwiki/latest/ Now you can tinker with nutrimatic. ...

Permalink & Comments

Book Report: An Engineer's Guide to Silicon Valley Startups I read an early draft of An Engineer's Guide to Silicon Valley Startups months ago, but didn't blog about it then because it wasn't published yet. And then, when it was published, I forgot that I had...

Permalink & Comments

Book Report: Apprenticeship Patterns For some reason, I thought this would be a book of mentoring patterns, but that's not what's going on here. This is a book for a computer programmer who wants to learn more about the craft. If you'r...

Permalink & Comments

Book Report: Coders at Work I used to post an annual list of top 10 fave reads of the year. Nowadays, I post a "book report" for every book I read. It takes less time than writing up the top 10. It took too long to pick the ...

Permalink & Comments

Puzzle Hunts are Everywhere: 2-Tone Game GC Notes If you've played through the 2-Tone Game and emerged, thinking Wow, that was strange; I wonder how it turned out that way?—you're in luck. At long last, some rambly essays about how the game c...

Permalink & Comments

Book Report: Finite Fields for Computer Scientists and Engineers I'm not at Blackhat, nor will I be any time soon. Crypto is hard. I didn't finish this math book, Finite Fields for Computer Scientists and Engineers. My math is pretty shaky. Usually, when I'm t...

Permalink & Comments

Book Report: Two Bits Two Bits is a book about the free software movement, explained in terms that an academic can understand. The author tries to steer around debates about what exactly constitutes an example of Haberma...

Permalink & Comments

Book Report: Masterminds of Programming I just read a blog post, The Myth of the Superior Programming Language. In it, he points out that people who insist on using some wack-ass different programming language are kind of annoying. I agr...

Permalink & Comments

Musicians about the Internets Yesterday, I went to a party at which I knew almost nobody. (Well, I knew some folks, but they mostly showed up at about the time I had to leave.) What's an introvert to when faced with a crowd like...

Permalink & Comments

Book Report: Organizational Patterns of Agile Software Development This book is about software development process. I guess it's aimed at project leads, project managers, and managers. But it's organized into Design Patterns, a form loved by many computer programm...

Permalink & Comments

Book Report: Planning Extreme Programming For me, this was a "Casablanca" book. By that, I mean it reminded me of my experience watching the movie "Casablaca." I kept thinking Big deal, I've seen all this before. But of course, that's beca...

Permalink & Comments

Link: My Secret Identity Revealed on CPedia The folks at the Cuil search engine have a new way of presenting their data, Cpedia. Instead of the stereotypical list-of-ten-results, they construct an encyclopedia article. Where by "they", I mea...

Permalink & Comments

chris451's comment on Caja [Edited to add: If you have questions or concerns about Caja, the Google Caja Discuss group is a good place to ask them.] Since I switched blogging software, people who think they're commenting on m...

Permalink & Comments

"What is a Content Management System?" At the GC Summit, Debbie mentioned that the organizers of the excellent DASH treasure hunt game will start using a content management system to keep track of their puzzles. Someone in the audience a...

Permalink & Comments

Book Report: Hackers It's another Steven Levy book about the history of technology. As with other Levy books, I keep spotting things that I know are wrong, so it makes me not trust Levy to tell me things I don't know. ...

Permalink & Comments

Rapid Development: an Example Speaking of Rapid Development... There's a protocol called pubsubhubbub by which your blog can tell the world that it's updated. Usually when I hear the word "protocol", that means "oh man, complica...

Permalink & Comments

Book Report: Rapid Development Today at work, we talked about ripping of^W^W repurposing some material from that McConnell book on software engineering, Code Complete. So maybe today is a good day to post a book report on another...

Permalink & Comments

Under Construction, as Ever Thanks, Blogger.com, for five wonderful years of managing this blog! Sorry that y'all will stop supporting FTP publishing, which I was using. I've been scrambling this weekend to throw together som...

Permalink & Comments

Links to some Early 2010 Posts I'm switching blogging software. The good news is that blog posts made via the new system won't clobber my old blog posts. The bad news is that I didn't really try to "weave together" the old stuf...

Permalink & Comments

Book Report: the Pragmatic Programmer This book, The Pragmatic Programmer is difficult to find by searching, since there's also a series of books by that name. So maybe I'll give the full title here: The Pragmatic Programmer / ...

Permalink & Comments

100% Organically Farmed Software The book The Mythical Man-Month pointed out the organic nature of software development in 1975 ...The building metaphor has outlived its usefulness... If, as I believe, the conceptual structures we...

Permalink & Comments

Tutorial: Closure Tools Javascript compiler and library There are some fine tutorials out there for using Closure Tools, but I wrote a tutorial anyhow. Go read Closure Tutorial: Displaying Friendfeed Items. Uhm, by "Closure Tools", I mean the set of rec...

Permalink & Comments

Book Report: The Mythical Man-Month (a Study Guide) If this book report seems a little heavy on the questions? It's because it's the first draft of a study guide? For people reading the book? Oh man it's way too long? But hey give me a break, it's...

Permalink & Comments

Book Report: The Mythical Man-Month (leftover cheap joke) Last week, I posted a rough draft of a study guide for The Mythical Man-Month. I left a cheap joke out of that study guide. That study guide was serious business and had no room for cheap jokes. S...

Permalink & Comments

Link: Deny you ever read about Crypto Strikes Back in this blog post In theory, I'm hobbyishly working on a little programming project. In practice, I make almost no progress on it. I'm almost never home and awake and alert enough to code. The bad news is: not much...

Permalink & Comments

Google & OpenID: discovery URL A while back, I mentioned that Google supported Opendid. There's one important detail that I had a hard time finding amidst the mountains of documentation: If the user wants to use their Google acco...

Permalink & Comments

Book Report: Knowledge Sharing in Software Development I was in meetings most of this last week at work. Meanwhile, one of my co-workers was learning a new style of programming--and thus was trying to learn about four big new things at once. She sent m...

Permalink & Comments

OpenID, OAuth, Learning by Gossip Last weekend, I did some programming. Well, not much programming. Mostly I did research preparatory to programming. Well, not exactly research. It was more un-research. I started out learning ho...

Permalink & Comments

Aiming for Precisionism but Missing When I was in Houston, I took perhaps my favorite photo-of-mine ever, this shot of the Houston Hyatt. It reminded me of some photos that the artist Charles Sheeler took. But he didn't leave his pho...

Permalink & Comments

Book Report: The Elements of Programming Style Non-programmers might not realize it, but some computer program source code is even harder to read than the rest. Some of this code is so messy that an experienced programmer looks at it and says "I...

Permalink & Comments

Book Report: The Difference Between God and Larry Ellison I've "used" Oracle applications. When I say "used", I mean "tried and gave up". Oracle calendar was slow, buggy, and thought it was a good idea to store my password, unencrypted, in a publically vi...

Permalink & Comments

Book Report: Applied Cryptography This is an old textbook about applying cryptography; that is, it's about computer security. It's the textbook by Bruce Schneier, the book he later said wasn't so important--you can get this stuff ri...

Permalink & Comments

Book Report: Exploiting Online Games This book is about hacking online games. Unfortunately, they started out talking about plenty of stuff which I already had read about. Cheating happens. E.g., people in shoot-em-up games use video...

Permalink & Comments

Book Report: The Psychology of Computer Programming How to get programmers to get along together. Attempts to use psychology to design easier-to-use computer language features. Discussion of which is better for your organization's culture: batch proc...

Permalink & Comments

Book Report: Crypto This last weekend, I pitched in for a playtest of MSPH12 "Jeopardy!". These puzzle-solving endeavors have wonderful moments. Solving puzzles in a team environment--it's very satisfying when my skil...

Permalink & Comments

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: Frie...

Permalink & Comments

Link: Caja's HTML sanitizer for Javascript [Edited to add: If you have questions or concerns about Caja, the Google Caja Discuss group is a good place to ask them.] When you write a program that's supposed to be secure, you have to plan on ...

Permalink & Comments

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...

Permalink & Comments

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. ...

Permalink & Comments

Book Report: Code Reading I am getting ready for a The Game, and am thus hyper-aware of white cargo vans. This is tricky; while team-mate Wesley is in town, he's staying close to Delancey Street. As in Delancey Street Mover...

Permalink & Comments

Puzzle Hunts are Everywhere: a web-crawling puzzle-hunt robot that didn't work When the applications for the Ghost Patrol game started appearing, it was pretty humbling. New videos kept showing up on YouTube. The videos... the videos made me glad that my team (Mystic Ghosti) ...

Permalink & Comments

Book Report: Refactoring Here I am tending to my blog on the bus. I wasn't really planning on it. I was just checking my email. I get email, among other occasions, when someone or something posts a comment to this blog. ...

Permalink & Comments

Book Report: Defensive Design for the Web It's sad news that Rory Root, owner of Berkeley's Comic Relief comic book store, died today. But no-one reads this blog for news. You're here for book reports. Here is a book report for Defensive ...

Permalink & Comments

Puzzle Hunts are Everywhere: The Elementarizer Yes, it's another blog post about programming & puzzle-hunts. This one isn't a web crawler. Dr Clue runs team-building puzzle hunts. Alexandra's done some puzzles for them and I've proofread a...

Permalink & Comments

Puzzle Hunts are Everywhere: Simple Website Monitor Waiting for the bus, Jonas asked me: "Why did you start beeping during that tech talk?" People at work occasionally start beeping. We're an internet company with many servers. When servers have pro...

Permalink & Comments

Puzzle Hunts are Everywhere: an elegant Mastermind Crawler Last time, I wrote about a brute force web crawler. This time, I'm writing about an elegant web crawler. As you would expect from elegant code, I didn't write it. The Pirates BATH game had a pregam...

Permalink & Comments

Puzzle Hunts are Everywhere: Brute Force Web Quiz Crawler It's another blog post about how web programming skillz can aid in game-ish activities. A couple of years ago, Team XX-Rated hosted the Paparazzi Game. I was sorry that illness made me miss the gam...

Permalink & Comments

Book Report: Beautiful Code Chs 30-33 (If you're reading these posts in reverse chronological order, be aware that this Book Report is the last one of a series. This book report is for Beautiful Code, a book of essays. Rather than try ...

Permalink & Comments

Book Report: Beautiful Code Chs 26-29 Labor-Saving Architecture / William R. Otte and Douglas C. Schmidt This is a fun essay, talking about issues that arise if you have a distributed network of computers and you want all of those comput...

Permalink & Comments

Book Report: Beautiful Code: Chs 9-12 (I started learning Erlang a couple of weeks ago. Then I stopped. I'd started learning how to use the concurrency features. So I tried a simple program: it ran a "while true" loop in two threads--...

Permalink & Comments

Book Report: Beautiful Code Chs 5-8 Correct, Beautiful, Fast (in That Order) / Elliotte Rusty Harold Emerging from the previous essay, I saw that this essay was going to be about verifying correctness of XML. My yawning muscles tensed...

Permalink & Comments

Book Report: Beautiful Code Chs 22-25 (Visiting the doctor is good for you. Today, I visited a cardiologist to make sure that my recent hospital visit was Really No Big Deal. Thus, I missed the last bus to work and worked from home tod...

Permalink & Comments

Book Report: Beautiful Code Chs 2-4 (Another episode of Iron Puzzler is coming soon. And now, on to our partial book report, Beautiful Code, chapters 2-4...) Subversion's Delta Editor / Karl Fogel This essay was nice. It talks about...

Permalink & Comments

Book Report: Beautiful Code Chs 17-21 Another Level of Indirection / Diomidis Spinellis I'm not exactly sure what I was supposed to get out of this essay. "Function pointers can be useful."? OK, the point of these essays was not to in...

Permalink & Comments

Book Report: Beautiful Code Ch 1 Beautiful Code is a book about programming well. There are 33 chapters. In each chapter, one or two big-name programmers write about "the most beautiful piece of code they knew." As you'd expect w...

Permalink & Comments

Site Update: Updated Tags for Old Blog Posts Blogger.com manages this part of my site, the /new/ part. In the long-forgotten days of 2006, Blogger.com didn't support labels/tags/whatever. In those dark days, I hand-made some tags, tags which l...

Permalink & Comments

Site Update: Mini-feed on Home Page I continue to putter around with the computer. I did some programming this morning, and now this site's home page has a little mini-feed with links to a few recent articles on this blog. Not wildly e...

Permalink & Comments

Book Report: Parallel Distributed Processing Based on the title, I hoped that this heavy two-volume set of books containing a number of articles would teach me a lot about how to write programs that run on several machines at once. After readi...

Permalink & Comments

Book Report: Beautiful Code: Chs 13-16 The Design of the Gene Sorter / Jim Kent This essay is what I want to see in a book called Beautiful Code. He talks about the design. He dives into specifics of implementation. The section "Theory...

Permalink & Comments

Book Report: BAE05: Ellen Ullman's "Dining with Robots" The Best American Essays 2005 contains two essays which pay homage to the then recently-deceased chef Julia Child. One of them is by Ellen Ullman. Ellen Ullman is a geek; she writes about software ...

Permalink & Comments

Switching Gears Today I felt like I'd lost a fight with the interior of a passenger van, but that wasn't the problem. I'd had a great weekend playing in the Griffiths Game, a 24+ hour puzzle hunt run by the Burnina...

Permalink & Comments

Book Report: Game Physics David Eberly wrote this computer programming book about physics and numerical methods. Where "numerical methods" means making quick accurate calculations. It's an interesting subject, and this is a...

Permalink & Comments

Link: Parallel Analysis with Sawzall People ask me what I do at work. I did not write the academic paper Interpreting the Data: Parallel Analysis with Sawzall (Pike, Dorward, Griesemer, Quinlan 2005). But I did revise the tutorial for t...

Permalink & Comments

Link: Joel on Hungarian Notation Just when I thought I was going to have to read the papers myself, Joel Spolsky wrote a readable paper about the non-braindead version of the software engineering technique Hungarian Notation. Is th...

Permalink & Comments

Hungarian Notation Not Brain Dead (If you are not a computer programmer, this item will not make sense.) For years I made fun of Hungarian Notation and Charles Simonyi. Now, thanks to Joel Spolsky, I find out that Hungarian Notation...

Permalink & Comments

Book Report: The Process of Creating Life The Process of Creating Life is the second book of Christopher Alexander's Nature of Order tetralogy. That is, this is a book that is Alexander's theory of the universe and how this nature should gui...

Permalink & Comments

Hiding Data in Metadata I'm flipping through this telegraphic code book which E. E. Morgan's Sons used for encoding messages long ago. Most of it consists of code words to convey phrases. E.g., instead of sending "one hund...

Permalink & Comments

Book Report: The Phenomenon of Life Summary: This is a good book if you skip the first four chapters, the last chapter, and half of the appendices. Christopher Alexander is famous as the honcho behind A Pattern Language. A Pattern Lan...

Permalink & Comments

Tech-Brain Candy When I commute to work, I change buses close to the San Francisco main library. Tonight, I took advantage of this. During the ride from Mountain View to San Francisco, I'd been reading Managing Gig...

Permalink & Comments

I bet you get these mixed up all the time Last week, I read the book Managing Gigabytes by Witten, Moffat, and Bell. It's about storing and retrieving huge repositories of data. This week, I am reading Trilobite! (Eyewitness to Evolution) ...

Permalink & Comments

Tags