Archive for Projects

Visual feedback and saving inventions on Eureka

I just launched a couple new features for Eureka. First is an animated loading bar after you click the button to generate an invention. Very minor, but I thought some visual feedback was necessary instead of having the user stare at an unchanging screen while the Markov processor runs.

Second, you can now save and revisit inventions. As suggested by commentors,  generated-invention pages now have save buttons that give you permalinks.

So go create random inventions and share them with your friends!

Introducing Eureka Invention Generator

I just submitted a little web app I’ve been working on this summer for Sunlight Labs’ Apps for America 2 programming challenge. The idea of the contest is to build an app around one of the datasets provided by our friendly US government on the new Data.gov website. My app is called Eureka and it generates inventions.

Eureka Invention Generator

The app is built around a Markov processor assignment I had last quarter in a programming languages course. Essentially the program uses Markov chains and a binary tree of n-grams to generate random text based on word frequencies of whatever source text you feed it. In effect, the generated text is babble in the language of whatever source document you input.

I had a lot of fun playing with the program last quarter. I’d give it the history of America as a text file and get to read about English settlers crossing the Delaware under siege by the Confederate army. Or noticing how randomly-generated text in the language of the Bible wasn’t really any easier to read than the real thing.

After hearing about the Apps for America 2 challenge, I spent a few weeks scoping out datasets on Data.gov and thinking about ways to use them. I zeroed in on the XML files of US patent application bibliographic data and eventually connected the dots back to the Markov processor assignment.

The contest entry page for Eureka can be viewed here. All source code is available on GitHub. This includes some shell and Python scripts to validate and parse the XML, a Ruby port of my Markov processor (originally in ML), and the website frontend of the app.