My Second Steps with Javascript

There are many things to hate about Javascript. I’m not a fan of the language, and I’ve been known to laugh at people when they make unqualified claims that it’s “good”.

However, I sometimes find myself wanting to build toys and share them with everyone who has a web browser. Compared to the security and scaling implications of making my poor little VPS run a bunch of other people’s code for them, Javascript becomes the only viable option.


Interview on

As part of my upcoming talk at SCALE, I was interviewed on

Nitish Tiwari interviewed me by email about my talk, then edited my comments into what I feel like ended up as a very nice publication. I appreciate the CC-BY-SA license under which he released the article.

Installing gavrasm on Arch

Avra, the AVR assembler that I have been using for my ECE375 assignments, started throwing cryptic error messages such as “PRAGMA directives currently ignored” from an include file which had previously been working fine.

In order to sanity check whether the problem is in my code or the compiler, I installed gavrasm, the assembler which the ECE375 lab website recommends for Mac users.


Mailman and Multiple Addresses

“Your message to the list requires moderator approval”, replies Mailman when you try to post to your mailing list.

“But I’m on the list!” you complain, then waste a few minutes of your day finding the administrative password and releasing your message.


Automating Arch, I3, and Terminator to do the right thing at startup

I’m currently on my second clean install of Arch Linux. On the whole I’ve been glad that I ditched most of my old configuration when I installed Arch to the new SSD I got for my laptop at the beginning of the school year. However, I’d been procrastinating on re-implementing a few things which worked last install without me really knowing which of my many attempts had fixed them. This time, I know what I’m doing and what questions to ask.


Please License Your Code

Code without a license isn’t open source. It isn’t free software, either.

Posting your code publicly doesn’t inherently apply a license to it.


20 HabitRPG levels in 5 days

I’ve been having fun with HabitRPG lately, and discovered this One Neat Trick:



The Trouble with Toctrees

It’s a couple weeks and nearly a dozen posts into this Tinkerer experiment, I’m mostly delighted with it. It’s fulfilling its original promise of “write RST, push button, get pretty blog”... Mostly. There’s one problem, though. I constantly forget to add master.rst when committing.


Gamifying Adulthood with HabitRPG

After creating an account and abandoning it some time before December 2013 (since I have never yet subscribed and yet had a Trapper Santa scroll in my inventory), I have returned to HabitRPG. Here’s a quick examination of why I think I left and then came back.


Arbitrary Python versions on Flip

A question in the #osu-lug channel about running python 2.7 on a school server (which only has python 2.6.6) made me realize I should know how to do that but have never tried it. Stackoverflow provides instructions for solving a similar problem, so I’m testing them out to make sure they work for Python 2.7.7 and Python 3.


Vim: Open file with cursor at the end

As part of a recent quest to automate everything and learn more Vim tricks, I’ve been identifying patterns in my use of the editor and attempting to get them done with fewer keystrokes.


What Makes a Good Mailing List Post?

As part of my student club officer duties, I send a lot of emails. One game that makes this chore less onerous is to try to optimize each email’s quality. I do this by observing my own reaction to others’ postings, and others’ reaction to my posts. Here are a few trends I’ve noticed.


Those funny characters in Vim


I copied and pasted some of the lines from a PDF, and now I have a problem which is nearly impossible to Google.


Searching a FOSS project’s history

I’m curious about whether anyone has tried to build a predictive analytics plugin for Heka before. To find out, I’m going to stalk the project’s entire recorded history. Since it’s a relatively young project (only in its third year of having a public mailing list), the history is small enough for basic Linux command-line utilities to handle in a timely manner.

Here are all the places one can look for project history, and how I used them.


ECE375: Using an Arduino Uno as a programmer

I have an atmega128 development board for the ECE375 class at Oregon State University. I believe the board is good, because it runs the test program that it came with when I picked it up from TekBots. I also have an Olimex AVR-ISP-MK2 programmer inherited from an ECE major friend, which I have come to conclude is bad, because despite testing and rebuilding all of the connections between it and my atmega128 board, despite passing avrdude all of the force and override-warnings flags at my disposal, it consistently refuses to program.

Since my assignment is due tomorrow, I am configuring an Arduino Uno to stand in as a programmer. Here’s how.


Don’t rename Tinkerer posts

Or if you must, at least do it correctly. Here’s how.


Floating-point Forth

The first assignment for CS480 (Translators) requests that we use Forth as a pocket calculator, rather than teaching the immensely powerful composition strategies for which it’s valued in the real world.

Since our first exposure to the language is a deep dive into the syntax of floating-point computation, no single tutorial on the web answers all the strange assortment of introductory and advanced questions that my classmates and I are running into.


Blogging with Tinkerer

I had a wok site here for a while, but I rarely (okay, never) updated it. My experience with blogging platforms has been limited to Wordpress (both self-hosted and on, Wok, Pelican, and an abomination of a Trac plugin that I’d prefer to forget.

Here’s how and why I am now trying Tinkerer.