The Payment Processor was a complex financial app developed in consultation with many staff at my employer agency, designed for reuse and extensibility.
  • Screenshots
  • Entity Relationship Diagram and Flowchart (PDF)
  • Source Code Excerpts
  • Language: PHP
  • 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.
  • Screenshots
  • Live Demo (Web App, works best with touch)
  • Source Code Excerpts
  • Language: HTML5 / JavaScript
  • 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.
  • Screenshots
  • Source Code Excerpts
  • Language: HTML, JavaScript and Google Maps, using a MySQL backend.
  • 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.
  • Screenshots
  • Live Demo
  • Source Code Excerpt
  • Language: PHP / HTML5 / JavaScript / SQL (SQLite)
  • Purpose: Personal lesson planner that I used when I was a teacher (the commercial ones I saw were too slow / unweildy so I made this one in about 2 days)
For Hearth Connection, I made a web-based reporting system that allows end-users to customize the query somewhat, had customized graphs, and drilled down to greater detail.
  • Example Report (PDF)
  • Screenshots
  • Source Code Excerpts
  • Language: PHP, HTML5, JavaScript and SQL (SQLite)
  • 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.
  • Noteworthy Features:
    • 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.
  • Screenshot
  • Live Demo (Windows Executable File -- no installation needed, also runs under WINE)
  • Source Code Excerpt
  • 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.
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)
  • Github Source Repository
  • Screenshots
  • Source Code Excerpts
  • Language: React / JavaScript / HTML / CSS
  • 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.