Larry Hosken: New: Tag: programming

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 computers. You can't just look at the text of the word. E.g., LEMON and DEMON ought to rhyme, but don't. You kinda need a room full of students to key in all the English words' sounds "by hand."

I like to imagine that's how the CMU Pronouncing Dictionary came into existence; a room full of students muttering to themselves and typing. The result was a big text file, of which I'll copy a fraction here:

REACTS  R IY0 AE1 K T S
READ  R EH1 D
READ(1)  R IY1 D
READ'S  R IY1 D Z
READABILITY  R IY2 D AH0 B IH1 L IH0 T IY0
READABLE  R IY1 D AH0 B AH0 L

Each line looks like WORD (two spaces) PH ON EM ES OF WO RD, where vowel phonemes are further, uhm, decorated with numbers indicating stress. (Useful for poetry-rhyming: UNHURRIED and WANT TO READ both end with an -eed sound, but the different stress levels would make for an awkward couplet.) Since READ can be pronounced like RED or REED, there's an entry for READ and another for READ(1).

This is a pretty awesome resource, and I've been using it to good effect. Of course, since I have engineer-brain, I don't think much about the parts that work well, and instead stare off into space and think about the parts that don't.

I want to know the syllable-breaks in words. When a computer sees the line

READABLE  R IY1 D AH0 B AH0 L

...It doesn't know whether that word is REE-DUH-BULL or REED-UHB-UHL or what-have-you. Maybe there's an automatic way to figure it out, but when I tried googling [phoneme syllable], I bumped into academic linguistics papers. When one bumps into academic papers, one tends to assume one's reading about not-so-easy problems.

I want syllable breaks. Both for puzzles and for, uhm, not-so-great rhymes. Who can forget the classic

To find a rhyme for silver
Or any "rhymeless" rhyme
Requires only will, ver-
Bosity and time.

How would you find this rhyme in the CMU dictionary? (You wouldn't; it doesn't have the word VERBOSITY. But if it did, how would you find it?)

VERB  V ER1 B
VERBAL  V ER1 B AH0 L

In VERB, the B is in the same syllable as the "ER"; but in VERBAL, the B wanders over to the next syllable, clinging to AL. But you can't just say "If there's a following vowel, then the consonants in between wander over." In VENTRAL, the N stays in the first syllable, while the T R travels to AL.

Of course, there's the "easy" solution of asking a bunch of CMU students to mark the syllable breaks in words; or better yet, find out that someone else has already done this. I haven't had any luck finding such a thing, though. Perhaps because I don't know the name of what I'm looking for; perhaps because it doesn't exist.

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 check out fourth graders, but also older kids; they're pretty impressive.

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 written some darned good APIs for it. Since Scala runs on the JVM, it can use those APIs. So when I want a data structure for my multi-threaded Scala-Finagle web server, I use a Scala ConcurrentMap but that's basically a wrapper around a Java ConcurrentHashMap.

Java Concurrency in Practice is a book by the Java folks who designed ConcurrentHashMap and all those other tasty Java ConcurrentThingies. I didn't finish reading it, though I liked the part that I read. You know how the scary aspect of programming Design Pattern books is when tyro programmers want to use all the design patterns they learned right away? Java Concurrency in Practice made me want to spawn threa start Executors all over the place, when... I'm not really writing that kind of code right now. At work and at home, I work on code where some geniuses have already figured out the multi-threaded web server framework, have already designed the ConcurrentThingies data structures for me to build on top of. All the changes I found myself thinking about were just complecting; I should use the code the geniuses wrote. I put the book down; I know where to find it again if I need it.

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 the Obama campaign to develop software to help folks organize. It's pretty interesting even if you think of getting Obama elected as misdirected effort.

If you're a computer programmer, working with non-programmers is tough. Apparently, folks don't come much more non-programmerish than politicos. Only… it's not that they weren't programmers. They are generally mired in the past.

Early on, our hero jokes about why the programmers used post-its on a wall to schedule their work: it's not that they didn't know more sophisticated tools. But they needed to get politicos involved with prioritizing/scheduling—and those folks don't do planning, issue tracking, none of that, nope. Post-it-based schedule on a wall was longer-term thinking than they were used to. At first it seems like a throwaway anecdote illustrating the difficulty of nerds getting along with non-nerds.

But then you hear about how political campaigns have operated historically. If politicians had ever tried to gather opinions from the electorate by anything more sophisticated than a multiple-choice poll, they would have been overwhelmed with the data. They didn't really have tools to gather it, measure it, make sense of it. It's 2013, the world has figured out something about how to conduct useful surveys, but these folks are still living in the 80s. They rely on hierarchy, rely on news bubbling up through the ranks. If most voters in the nation disagree with you on the economy, you might figure that out… but you might not. Obama's software made more things measurable; not that many more. From an outsider's perspective, it still sounds like they were stumbling around kind of blind. But the campaign was getting a lot more feedback than it was used to. (Well, probably the same amount of feedback; but maybe more signal and less noise in the mix; less distorted by games of telephone.)

Who knows? Maybe in another 20 years, politicians will listen to the people.

Yeah, I know, be careful what you wish for, right?

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. AppStats watches your running program and gives you pretty whaddyacallem-Gantt-charts-or-something showing where the time goes. Since your program's time probably goes towards inefficient data storing, the next thing you want is NDB, which lets you write your program in a sensible way and automagically stores things efficiently. But golang App Engine doesn't have those things, right? Well, hang on.

Matt Jibson wrote an AppStats for Go. As with the Python AppStats, you can tweak your program a little, get your program to do that one slow thing, then look at a chart showing where the time went.

I just used it to speed up the way that The Octothorpean Order puzzlehunt game website thing checks puzzle answers. In general, the program behind The Octothorpean Order is written more to be readable than fast. It's a side project; if I can't quickly understand the code picking it up after having set it aside for a couple of weeks, then I'm in trouble. And for the most part, that's fine. Not-fast ain't necessarily slow. But the answer-checking function was slow. Thanks to AppStats, I could see which of my readable-instead-of-fast bits actually mattered, and then rewrite that part.

Those slow parts were, of course, in the data-storing things. (Did the team solve the puzzle? Did they unlock new puzzles? If so, let's store the fact that they unlocked those puzzles, one… puzzle… at… a… time (instead of all at once).) I reworked just enough of my code to fix the worst of these. But if I were starting over today, I'd look into the same author's Goon library—which ports NDB's auto-caching features to Go. (It doesn't have Python NDB's nice asynchronous support; if I were a better Go programmer, maybe I'd know whether it was easy to fake this with goroutines or impossible because of the lack of async golang datastore APIs and multi-threaded goroutine... Anyhow.)

When explaining why he wrote these things, Jibson said The two killer features of the python runtime on app engine are NDB and appstats. I have been refusing to make a serious app with the go runtime because of this lack. It sounds kinda breathless, but he's basically right; you need a way to find out where your program's slow or there's a temptation to optimize prematurely until you're wading in code spaghetti all the time; caching-I-don't-have-to-think-about solves many problems. I'm sure glad he ported AppStats.

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

Updates:

Tags