teaching machines

Learning Elsewhere: Tales from an Extra-curricular Game Development Competition

Following is a draft of a talk I am to give at ITiCSE 2013. The work discussed was done several years ago at Iowa State University, during my first full year of full-time teaching. I wish I had more quantitative results, but its absence is sort of consistent with the premise that we cannot do […]

Keystrokes File Format

A Keystrokes text movie is composed of a number of frames. Each frame is currently stored in a separate file, and all metadata describing the frame is stored in the file name. The only thing inside the file is the text of the frame (or a diff describing how to construct it from the previous […]

Keystrokes Patcher

For our Keystrokes project, we grab “frames” for our text movie as snapshots of the file being edited. We don’t really want to pass the complete file around for every snapshot, so instead we store diffs between frames that allow us to reconstruct any particular frame beyond the first. To produce frame 2, we apply […]

Quick Commenting in Vim

Speedy commenting is a major feature of any IDE like Vim. I’m sure there are good plugins that support it, but I don’t like other people’s code. I wrote my own, and here it is, ready for you to not like it. It works on the premise that for each type of file you have, […]

On Data

People talk about all the stuff we’re going to be able to do once computers are fast enough and storage is cheap enough. Sadly, I don’t think technological advances will gain us much. Taken to the limit, the digital world of computers is just the analog world that we already have. And there’s nothing easy […]

The Programming Gene

My wife and I read to each other. We ran into this the other day in Daniel Defoe’s Robinson Crusoe: So I went to work, and here I must needs observe, that as reason is the substance and original of the mathematics, so by stating and squaring everything by reason, and by making the most […]

Sit Down and Code

At the 2012 Midwest Instruction and Computing Symposium, visualization researcher¬†Daniel Keefe¬†offered a keynote presentation on data-intensive visualization. His work involves the design of novel interfaces to navigate complex data sets. Visualization researchers always have the best demos. Mr. Keefe expressed his frustration with programmers: they hear the problem and then they sit down and write […]

What’s the Best Text Editor?

Students ask, “What’s the best text editor?” When talking about superlatives like best and worst, we really have to narrow down our scope to have meaningful discussion. You simply can’t say, “They’re the best band ever!” You’ve not gone through all of time and figured that out. Even if we could travel through time, there’s […]


One of my colleagues has sparked our students’ interest in IRC. He and the students have been suggesting I swing by their channel, especially since I’m occasionally the topic of conversation. I applaud my colleague’s barrierlessness, but my dreams of things to do with my family and of things to code and of grant proposals […]

Restoring the Last Known Cursor Position in Vim

In unconfigured Vim, the cursor is placed at the beginning of each file that I open. When I close a file in Vim and open it again later, it’d be really nice if the cursor would automatically move to where I left off editing. And it can, with this handy autocommand: Autocommands let you write […]

1 31 32 33 34 35 40