Purpose: Process and allocate payments to various funds, to automate an important workflow at an agency that funds homeless service agencies.
Noteworthy Features: Demonstrates an example of clean, object-oriented, extensible code. (Some of the other portfolio examples are personal projects or are written in a more procedural style because my coworkers or successors were not comfortable with object-oriented modern code.)
Fraction Pizza is a game for tablets that gives elementary age students practice with specific learning objectives.
Designed for: iPads; works on any web-enabled device but works best with touch
Purpose: Teach 1st through 5th graders fractions by providing a "pizza restaurant" game with a variety of academic levels that match particular learning standards
Notable Features: It uses an open-source handwriting recognition module to recognize numbers written on the tablet by students; the original could only recognize single digits but I expanded it to recognize multiple digits, or reversed digits written by younger children. It also has built-in arcade games to give the kids a break after every few problems-- of course, those games are also educational and meet learning standards.
Limitations: This game was used by me to teach specific in-person math classes; for all-online learning I would provide more verbal or written instructions.
NoTo37 was software that supported a local campaign for school funding. It allowed parents to locate and send messages to city and state representatives, and tracked the results on a map so the organizers would know where to focus their energy.
Purpose: Sent emails to legislators, linked to users' social media accounts, and tracked the results using geographic as well as tabular reports.
Notable Features: It used Google Maps to track campaign activity in near-real-time, and I invested a lot of effort into email security compliance to make sure it got past the legislators' spam filters.
Lesson Planner is a simple but capable web-based database app developed in only a few days, with the goal of high performance.
Purpose: Report on homeless services at various agencies across the state of Minnesota, according to a variety of complex metrics, and convert the data into easy-to-understand graphs.
The example report is a PDF, but later versions also had an interactive Web-based mode where you could click on numbers and graphs to drill down the numbers and find
out which service participants were included in the number, or what their demographic characteristics were.
Custom aggregate and custom SQL functions, similar to stored procedures (except written in this case for SQLite), were used extensively to simplify database queries.
I modified an open-source graphing library extensively to add features
required by the agency, so that they could get the exact style and format they wanted.
FlowEdit is a programmers' editor and an example of a high-performance desktop app.
Example of: A high-performance desktop Windows app.
Language: C/C++ with Windows API (Win32)
Purpose: Programming editor
Notable features: Press F4 with your cursor on a symbol to look up the definition in any of the open files; it appears in a separate window (even if it's in the same source file-- each source file can have unlimited windows). Then you can edit or view the definition and press Esc to return where you were. This was a rare feature when I first made the editor; nowadays Visual Studio has something sort of similar but I still like HyperEdit.
As part of my job search, I am learning new languages and reinforcing old ones. I use the recruiting and practice site CodeSignal, which focuses on reviewing data structures and algorithms. Java isn't completely new to me, since I helped oversee the design of a Java database app at Hearth Connection.
CodeSignal Profile -- While learning languages on CodeSignal, I got an overall score of 780, in the top 5%. CodeSignal includes engineers at top companies like Facebook (average score 747) or Google (average score 738).
During my job search I am also creating an open source musical improvisation app in React. The source is available on Github. I also used NPM libraries and Webpack. It works on desktop and mobile systems.
This open-source app is currently under development and is not completed yet.
Live Demo (Web App; record and playback features are not implemented yet; works in all modern browsers, except for MIDI hardware which works best in Chrome (or Firefox with the Jazz plugin)
Designed for: Any browser environment; auto-adjusts to different screen sizes and orientations, and interfaces with MIDI hardware on both desktop and mobile systems using Chrome (or Firefox with the Jazz plugin)
Purpose: Currently, it's an onscreen piano and drum kit that can have multiple on-screen keyboards and also input or output to MIDI hardware and software devices. When fully developed, it will also be able to record and play back tracks and automatically transpose parts in order to let the user create their own automatic accompaniment patterns while playing.