Software
Contact: ceautery@gmail.com
Objective: Do something amazing
Education: Autodidact
A standard résumé is available on request, but the work I share below better demonstrates my capabilities. The following are projects in various stages of completion that I have worked on independently for fun and out of curiosity.
Compass and straightedge geometry
The blog entry below is a lengthy treatise on using classical Greek geometry to build regular pentagons in a variety of ways. At the bottom of the page hides the single work I am most proud of: an engine to animate compass and straightedge constructions, complete with a driver language (create a circle with point a as the center and point b as the radius, find the points where this circle and line intersect, etc.). I feel that this could be turned into a valuable classroom tool, and I am hopeful that I will eventually persuade the Khan Academy project to take an interest in it.
Four ways to construct a pentagon
Soroban (abacus)
While trying to get Khan's attention with my geometry tool, I set about learning their "Exercises" framework. I turned a template meant to be used with setting points on a number line into a working soroban, with randomly generated questions that you solve by moving beads. Interestingly, the Khan framework did not adopt HTML5 canvases, instead sticking with SVG, presumably to keep compatible with users confined to Internet Explorer kiosks at the local library. Even though I am quite the fan of HTML5, ultimately I think this was a good choice.
Khan Academy sandbox demo of soroban basic addition
Basic addition demo
Multiplication demo
Prime number machine
An HTML5 demonstration of finding prime numbers and prime factors, not through math, but as the side-effect of a mechanical process.
Spirograph
An iPhone web-app I wrote for my stepdaughter. At the time I completed it, it seemed to be the only spirograph application to draw and animate the actual gears as you draw.
Spirograph web app
Pufftygraph, an HTML5 Spirograph with touch-driven gears
Lentil
An iPhone web-app I wrote for my wife. This one was for tracking calcium and protein in her diet when she was pregnant with our daughter Adelaide. Despite its functionality, it is mainly a quick hack due to timeline problems - my wife was currently pregnant, and needed something immediately that wasn't on the market. It contains a hand-rolled calendar, uses JSON and localStorage to store data in lieu of a SQLite database (a concept I hadn't tackled yet), and a few other hurried design decisions. I always intended to go back and clean the app up a little, but Adelaide was born and, well, there you have it.
How and why I wrote Lentil... along with some advocacy for going hippie during pregnancy.
lentiltracker.appspot.com
Etch Notes
Another iPhone web-app for my wife. This was a replacement for the built-in Notes app, which broke after a particularly bad sync with iTunes. (This one does use SQLite, which I figured out shortly after writing Lentil.)
Designing a notes iPhone web-app
etchapps.appspot.com/notes.html
Sudoku Solver
A java applet that solves Sudoku boards. The user fills in the board as shown in the book or newspaper it comes from, clicks solve, and the applet attempts to fill in the remaining cells.
Building a java applet Sudoku bot
Working Sudoku solver applet
Image Extractor
My wife found a shockwave applet that contained images of dresses she wanted to make, but couldn't find an easy way to export the images. I downloaded the raw applet and looked at the binary in a hex editor, and saw that it had embedded jpeg data. So I wrote a program that takes an arbitrary binary blob and looks for image content in it, allowing the user to zoom and export each individual image.
Lightweight java solution to searching image archives
caFormTools
This project is a javascript container to manage form validation, including features to auto-correct phone numbers when you tab off of text input fields, and to duplicate sections of a form (e.g., for registering multiple people for an event).
Form validation using custom attributes
Creating an Archimedean spiral app
This was an experiment with creating a tutorial on using Netbeans to create a simple Java Swing application, with a little backstory on why I wanted to create a nested spiral image for my wife. TLDR: Because it would make a cool tattoo.
Creating an Archimedean spiral generator
Bezier curves
An overview of the simplicity of bezier curves, and how Java uses them to draw circles
Greyscale
The math behind converting color images to greyscale, and a proposed improvement to the built-in Java greyscale math using the modern "709" standard. TLDR version: The method for turning each pixel's color into a brightness variable can be traced all the way back to Newton. The sample image is of my stepdaughter Scout in a bamboo play enclosure at the Columbus Zoo.
Javascript Register Machine
This was a side-project I was particularly enthused about for a while, so I gave it its own blog. The idea was to, without researching existing assembly languages or processor instruction sets, design a "register machine" and an assembly language to interface with it, all in javascript. This gave me a glimpse into just how monumental a task writing an operating system would be, and not a small amount of resentment toward IT professionals who are sarcastically dismissive of Apple and Microsoft engineers.
HTML Editor
This is a text editor I wrote in 2001 that uses the main body of an HTML document as the editor and captures various keyboard and mouse events instead of using a standard input field like a textarea. It only worked in Internet Explorer, and has long since been deprecated due to the availability of better, free tools.
DHTML events - blast from the past
Counting Squares
In July of 2012, NPR's "Science Friday" posted an image similar to the one above and asked Facebook users to vote on how many squares (of any size) they could find in it. A friend of mine challenged me to write a program to solve it. What I ended up with doesn't parse raw image data, but has a template to declare where lines are on a grid, and then iterates through the line intersections looking for squares.
Dice
A quick HTML5 page I wrote for my stepdaughter Scout when she was on vacation in San Diego with her natural father. It's a secret code using pairs of dice to stand for individual letters and numbers. I used it to generate a message (basically "hey, how's vacation? We miss you!") that I printed out and mailed to her.
Encryption
This pair of blog entries is the result of some independent research I did on RSA encryption and Elgamal key exchange. I use encryption every day at work, but felt like I was hindered by not being familiar with the underlying math.
RSA and the other Sun Tzu
Elgamal and the Discrete Logarithm
The next pair are works in progress with only screenshots, with no longwinded descriptive blog entries or links to source code.
Barcode
An attempt at a barcode parser. I have the key concepts down, but parsing blurry images turns out to be a bit of a bear. I abandoned this and don't have any real plans to return to it; I was just curious how barcodes worked.
Knitting
An early build of something I DO intend to return to. This will allow my wife, knitting enthusiast, to quickly design and modify knitting patterns. Fleshed out, this could fill a niche in the market, as the popular knitting applications all seem difficult to use and expensive.
Ultima
An early build of an 80s-style RPG. This uses the Ultima IV icon set, which is apparently royalty-free now. I have most of the battle system working, but the hard part of creating a good storyline and adding all the NPCs and dialog has yet to be started.
The next few items are general programming expositions.
Perl Tutorial
A tutorial I wrote during my first year at AEP to help my fellow developers, perl-averse all, to get a better handle on some basic structures and expressiveness of the language. I still refer back to it occasionally for concepts I don't use often (to treat an anonymous function as an array, do you wrap it in parentheses or brackets? how does that flip-flop range operator work again?)
Functions in shell scripts, scope creep
Three table SQL Joins
Three table inner-join vs. the staging table
Mainframe fun
Using File-AID Batch to update multiple PDS members
Oldschool Mainframe/COBOL geek-out
The remaining links below are philosophical, not technical.
Volunteer work:Teaching Excel to elementary school students
Mentoring a teenaged boy
Character:
What a good vacation looks like (plus why I love Vermont)
A good day coaching my daughter's soccer team
Hobbies:
Reading
Games, video or otherwise