Curtis Autery's Résumé

Curtis Autery
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.

Animated prime number machine

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

Bezier curves as ellipses

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.

Java greyscale conversion

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.

jsrmp.blogspot.com

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.

Counting 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.

Dear Scout

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?)

Perl tutorial

Functions in shell scripts, scope creep

Korn shell hack of the day

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