Personal projects

A walk through some side-projects from my github profile.

Convert.gg

JavaScript JavaScript
Node.js Node.js
React.js React.js

Fetches media from the web or the client device and transcodes (converts) files to various formats.

The web needs a free one-stop shop for common file operations like these. Existing alternatives are either not free, or make you tolerate an ad-ridden and shifty experience. As a personal project this is a great platform for experimentation—the app's client-side nature yields interesting engineering-problems and regular opportunities to play with fun tech like webassembly. The current implementation uses functional, highly modular code, and is well optimised for minimal server-costs—however it's overly explicit codebase (class components instead of hooks) will be an irksome source of tech-debt in the future.

JPEG-React

JavaScript JavaScript
React.js React.js

Analyzes and edits JPEG images. Entirely client-side. Particularly handy for removing/editing EXIF metadata. Here's a deprecated demo: olve.io/jpeg

This was my first foray into the React ecosystem. It spawned spin-off projects, taught me a lot, and yielded several job-interviews. It remains a robust, blazing fast, and thoroughly threaded app, but is rendered an abandoned brownfield by poor implementations of concepts that were new to me during the project's inception. It's functionality is object-oriented and tied to React-components (meaning very tedious code-reuse and refactoring), it never had a proper UI, and was never optimised for production (the demo still fetches a dev-build of React from a CDN).

The project's spin-offs are to some degree still useful, though. Some libraries already existed for reading EXIF metadata in 2015, but they'd let too much information slip through, so I wrote my own. Writing metadata in the ancient TIFF format was tricky, and manually keeping track of byte-offsets and endianness with native JavaScript types is exhausting. Therefore, I wrote a data type: the struct.

structs.js

JavaScript JavaScript

A Javascript data type for creating and manipulating bytearrays.

Today, with more seasoned eyes, I see the design flaws of code I was once very proud of, and no longer use this library, but boy did I love using structs.js. Gone were the headaches of manually managing byte-offsets, endianness, and byte-signing.

Better Struct libraries exist in 2020, but after using this I'd still like a native JavaScript struct—they make client-side CRUD development very comfortable.

Modeling agency web platform

JavaScript JavaScript
Node.js Node.js
React.js React.js

A complete platform for marketing models and managing modeling agencies.

I worked on this inbetween professional projects while self-employed. The platform consists of three standalone products:

I intended to sell this, offer the platform as a service, or if all else failed offer it to my own modeling agency for free and use the exposure for marketing. As it stands this is an unfinished and unpolished implementation of your average contemporary web solution for a market segment of low competition. I might pick this up again, but right now other projects are more interesting to me.

Web-playlist

JavaScript JavaScript
React.js React.js

Audio player for browsers. Demo at: olve.io/music.

I initiated this project mainly to practice using arrow-functions and other ES6 features before my first day at a new job. I wanted a podcast player at some point after the first time I abandoned this project, and began playing with a branch implementing service-workers and Indexed-DB. Good podcast players that allow local files (Pocketcasts) already exist however, and reinventing the wheel is only fun for so long. This is a poor product, and a dead and forever abandoned project, but it was good practice and I don't consider it time wasted.

MacSpotifyMediaKeys

Objective-C Objective-C

Bypass iTunes mediakey hijacking.

On my MacBook, iTunes will prevent media keypress-events from ever reaching Spotify—this solves that. Fun, tiny project I slapped into launchd and use every day.

Bristow

Python Python

Global keybindings for running Python 2.5 code in Windows

The mediakeys on my keyboard broke during my gamer teenage years, and I wrote this. It relies on ctypes to interact with the Windows API and includes many Windows helper methods useful for whatever one might want to keybind. I used it to control media players and to kill frozen videogames. Python is not as interesting to me as it once was and I probably won't ever pick this project back up, but using ctypes and the Windows API was useful practice back then. This ended up being a personally rewarding project.