Hi, I’m Allen.
I’m a full stack web developer, with an emphasis on the front end. I love the web because its open nature means there are no gatekeepers or proprietary tools in the way of creating, publishing or viewing websites. My favorite part of software development is being able to identify a problem, brainstorm and prototype a solution, and then refine that into a finished product. Some of my other hobbies include: drawing and digital painting, playing and writing music, hiking, photography, and chess.
Coding Projects
GitHub-
Dithermark
After reading this article on dithering, I was excited to try it on my own pictures, but at that time I wasn’t able to find any apps that let you do this. That led me to create my own app, however as I kept adding other image processing techniques it morphed into a tool that allows you to quickly and easily transform photos into pixel art.
Since then people have found other uses, such as: creating patterns for knitting, teaching in an art school, and optimizing images for the Ledger Stax lock screen. It includes variations on many popular image dithering algorithms, as well as original color quantization algorithm research. Built with Vue, it uses the Canvas API, Web Workers, WebGL and the Unsplash photo API for random images.
-
Reason Sound Pack Viewer
Reason+ is a subscription service that allows users to download sounds and presets in the form of sound packs for use in Reason. Using the desktop companion app, subscribers can view and download the packs, but non-subscribers and users that don’t have the app are limited to the Reason+ share site. I reversed engineered the API, and used Vue to create a fully featured single page app so musicians can quickly and easily preview all the sound packs.
-
WebAssembly Performance Comparison
WebAssembly is an exciting new technology for the web, however it is difficult to find objective measurements to evaluate which language is best to use as the source. I built an app with Vue that compares the performance of JavaScript against WebAssembly generated from C++, D, Rust and Zig for dithering an image using the Stucki error diffusion algorithm.
-
Capricornus Squadron
2D turn-based strategy browser game in the style of Advance Wars. I created the custom game engine, user interface and music while acting as the lead developer for two other students. Uses the browser Canvas and Web Audio APIs. While playable using touch input, for the best experience a mouse is recommended.
-
Chess Scout
Opening preparation is a key component of chess success. I built an app that uses the Lichess API to download a player's games and visually display their opening repertoire and statistics. This can be used to prepare against tough opponents or to evaluate your own strengths and weaknesses. Built with React, it uses a custom PGN parser and chess rendering engine to display chess games using the browser Canvas API.
-
Umbrella CMS
A project created using Elixir and the Phoenix Framework to house various custom content management systems (CMS). These include organization for book and movie reviews, bookmarks, my music library, inspirational quotes, artwork and photography.
It is structured as an umbrella project, which allows the advantages of a monolith, as projects can easily share code and use the same instance of the BEAM virtual machine for increased efficiency, while also having the flexibility of microservices, as each sub-project can have its own dependencies and configuration. Each sub-project uses the same custom authentication middleware, which allows the sharing of users for an SSO-like seamless authentication flow. It also includes custom mix (scripting) tasks to import and convert images for my photo library and to generate the static site for my artwork at strangescenery.com.