In my most recent position I have converted a WPF/C# Windows App, left unfinished by a prior contractor, into a complete and modular cross-platform Progressive Web App using C#, ASP.NET, JavaScript, WPF (for the Windows version which still exists), and various other open source libraries. The app works offline and online on any mobile or desktop device, and provides version control and workflow tracking for a variety of building inspection types; its object-oriented design allows the rapid creation of additional types.
In the summer of 2022 my latest addition is a complex graphics and drawing library that can automatically recognize rooms on building plans that are scanned in from PDF, allowing inspectors to link their data to specific physical locations rapidly. This provides our customers with a graphical view of their building's needs rather than having to wade through tables of numbers.
Live Demo not available because this is an internal app
Source Code Excerpt not available because this app is closed source
Language: C# / ASP.NET / HTML5 / JavaScript / SQL Server / SQLite / IndexedDB / Progressive Web App
Purpose: The main application used by this company to perform building inspections for most public school districts in Minnesota as well as many other types of customers
The Payment Processor was a complex financial app developed in consultation with many staff at my employer agency, designed for reuse and extensibility.
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.
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.
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.
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.
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 2018 job search I worked on an open source musical improvisation app in React. I also used NPM libraries and Webpack. It works on desktop and mobile systems. It is unfinished since I found a job shortly thereafter.
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.