EmpathyHonestyJoy

"If you want a successful project and a happy client, then you want Austin."

- Johnson, Pillar Tech Lead

Professional Projects

Click for detail
Tap for detail
KotlinAWSAngular
Review and approve claims, which are then dynamically assigned a price. I was the founding tech lead and was able to pick the tech stack, architecture, and build out the team
ElixirAWSKubernetes
A data ingestion, discovery, and analytics platform for smart cities created by Smart Columbus as the winner of the USDOT's first-ever Smart City challenge
UnityC#
3D photo-realistic interactive experience for our on-campus museum. Built by a team of 2 in 4.5 weeks. Awarded Outstanding Contribution Award internally and submitted for an external award as well
ElixirAWSKubernetes
Open Source, Cloud Agnostic Data Engine
Java
Monolithic app that supports Public Sector Retirement Planning
NodeJavaAWS
Chat bot that gives advice. Powered by AWS Lambda, Lex, Cloudformation, and Machine Learning. Built by 3 in ~2 months
NodeAWS
Demonstrate AI Ubiquity by recognizing associate faces; built by a team of three in three days
NodeAngular
Forward a meeting to a unique address and receive a QR code. Anyone who scans the code is invited to the meeting

Personal Projects

Click for detail
Tap for detail
KotlinAndroid
Android App Live Wallpaper based on the art of Mark Ferrari and code of Joseph Huckaby
KotlinJs
Wildermyth is a procedural narrative game with characters that change over time. This site allows you to upload a save and see all your characters, their details and their relationships. By leveraging local storage and indexedDB the user only needs to upload their data once, and it persists across page refreshes.
Kotlin
A collection of tools for crawling sites and doing tedious downloads. While configurable, this is mostly hard coded and uses 'strategies' I'm writing in Kotlin, as opposed to a DSL or json config files.
Kotlin
Stitch a bunch of small images into collages at the target size. Used to take a 300 small LOTR images and create collage wallpapers
Javascript
Google Browser plugin to print issues as if they were story cards
Node
Write version controlled stories in markdown with auto-generated reference links to topics
C#
Stardew Valley Mod: Track what you"ve shipped and then view daily, monthly, or yearly graphs
JavaKotlin
Minecraft Mod: Build and use teleporters in a semi-balanced manner
JavaKotlin
Minecraft Mod: Auto sorting chests
JavaKotlin
Minecraft Mod: Craft increasingly powerful jump pads that bounce you high into the sky

Presentations

Click for detail
Tap for detail
Presented at CodeMash 2023
Unfortunately a lot of devs dislike pairing, and often times its due to a bad initial experience. This presentation was built to explain what healthy pairing looks like and to build attitude and discipline to pair well, even with an unskilled partner.
Given to a company onboarding boot-camp
This talk focuses on the messy, organic nature of growing good software. It's a collection of attitudes and 'tastes' that permeate evolving a complex system from a simple mvp
Presented to over 40 people in order to encourage language adoption
When I was looking to use Kotlin as the tech stack for my new team, I wanted to win my devs over to the benefits of Kotlin. I ended up getting to present to a much larger audience. I'd like to think the several teams outside of mine now using Kotlin where at least partially swayed by this presentation
Presented at multiple companies as a lunch and learn
This presentation was simply an effort to share my main hobby project, as well as both architectural and technical lessons I've learned while working on it
Given at multiple companies in lunch and learn formats
I wanted to use Quest Command to illustrate ways to speed up testing loops, as well as add nuance to common testing patterns that less mature developers can get trapped inside
Part of a test series I gave on increasing test maturity
Created in an effort to deep dive on executing the 'ice cream cone' of testing well. Focuses on how to move tests out of slow spaces while testing behaviors
Given to offshore and then to onshore devs
Intended as an introduction to TDD, this was built to instill a sense of passion for TDD by giving the 'why' as much as the 'how'.
Part of a test series I gave on increasing test maturity
I wanted to spend some time looking beyond patterns and focus on well meaning traps developers fall into and common smells that a test should be cleaned up
Given to a software craftsmanship guild
I've found that devs will often identify as good at TDD but that they haven't found TDD useful. On examination however, they're not doing or understanding TDD at all. This quick presentation was given to help make TDD guidelines explicit, so they could be practiced in a group session
Presented as one of my first lunch and learns at a previous company
I wanted to talk both about palette cycling technology, as well as about using Kotlin and android. Some of this content evolved into the 'Why Kotlin' talk
WIP presentation to explain building DSLs in Kotlin
While still WIP, this presentation is geared towards developers familiar with Kotlin and interested in learning more advanced techniques. Formatted as a live coding session, this talk builds a domain specific language, walking through each step / language feature to build up to the DSL
Written to help a team write better stories
Only skimmed to another tech lead, this presentation is intended to help developers understand how to turn writing 'tickets' into writing 'stories'
Given at a lunch and learn
A basic intro to one of my favorite tools to install on any new computer

Games

Click for detail
Tap for detail
Create an RPG with intense levels of interactivity by removing the dependency on a GUI.
Description
I love games that let you interact with the world. Quest Command is my attempt to remove the effort needed to build a gui, so I can spend more time on deep systems and interacting with the world.
How to Play
See the readme to run the game in docker or using the java jar. All commands are typed into the console.
Iterations
Latest
My only game that lacks a gui, and not surprisingly the only game I've stuck with a single iteration. Partially also due to using a more modular event based system that requires less full system knowledge to work on.
Collect parts to battle bots
Description
Inspired by Pokemon and Medabots, battle other bots to acquire parts, and then fit your loadout to the task at hand. The hope is to make each part's ability unique, and also to use it to interact with the environment (swim, climb, break obstacles, etc).
How to Play
Map Screen: Arrow keys to move, Space logs the tile type, Z starts a battle on that terrain.
Battle Screen: Arrow keys to select an option. Space to accept that option, Esc to go back a menu.
Iterations
Latest - KorGE
Latest iteration, now written with KorGE. With this go I renamed from Automon to Mechamon, and started using KorGE, the first game engine I've really liked and not felt constrained by.
Scrappers - Spring
In this attempt I tried to go for the thinnest possible slice by just focusing on a battle, without a map. I also gave up and used spring and angular to attempt to avoid my gui woes.
Automon Suit - Zircon
Calling this version automon suit reflected my move to the idea of a wearable suit instead of an autonomous bot. Using Zircon for the front end helped me get the map part up and running quickly, but I still quickly became frustrated with building the gui.
Automon - JavaFX
My second attempt at this game idea, made in java instead of Unity. This attempt used JavaFX for the UI and played with the name 'core gear'. Also worth noting that this was built before I knew about git, and so the history is mostly lost due to a poor port from svn.
More than a pilot
Description
Inspired by Star Trek and FTL, I want to create a starship game that's not just focused on combat. I've likely spent over a thousand hours on different iterations of this game.
How to Play
Planet Generator: Turn off auto update on web as it can slow things down. Drag values (like seed) to change them, or double click to type/edit.
Ship Builder: Try different modes to place tiles and watch air flow, etc.
Iterations
Stars Between - KotlinJS
Latest iteration, now written with KotlinJs. Inspired by how nice wildermyth-legacy was to develop. I'm hoping writing html and css will help me more quickly build out the gui layers. Effectively combines the portability of Korge with the web UI I tried in the spring iteration.
Stars Between - Korge
An attempt written with KorGE. I really like Korge, but still ran into issues quickly building a UI.
Stars Between - Spring
My last commit before moving to KorGE, this version attempted to eschew gui pains by just making a terribly performant spring app and angular web page. While it was much nicer than any previous gui tool, creating controllers and services and web sockets to make it run not only was terribly non-performant, but also caught me up in loads of wiring code. While I find html and css easier to style than KorGE UI, KorGE far surpasses any other Kotlin compatible UI I've used and it's benefits far outweigh trying my ridiculous web hack.
Starship Jr - Java FX
I thought if I could reduce the scope of the game, maybe it would be easier to manage? This burnt out quickly when I still had to fight JavaFX to build a UI.
Starship Jr Ship Builder
I intended to create a separate ship building tool from the main game, but didn't get very far.
Biome Viewer
I thought breaking the project into multiple libraries would help me, and thus learned the downfall of too many micro services.
Utility
These saw my move from maven to gradle.
Play Space
I also moved some of this code to Kotlin once I started learning it.
Character
I also made an effort to convert from Swing to JavaFX.
Health Center
Ultimately all these services created a web of dependencies that I wasn't mature enough to manage, and my problem space was made no smaller.
Planet Generator
I did have fun with generating planets though.
Starship
My first iteration, made before I knew about git or even SVN. I used to copy my whole project folder every so often to make a backup. This was my first real hobby project, and I made a hundred mistakes that I now fondly look back on. Front end built with Swing.
Prototype metroidvania with a focus on swinging
Description
I really want to build a super mario world style game where the focus is on exploration, alternative exits, and swinging as a main traversal mechanic.
How to Play
Use a controller or arrow keys to move and space or A to jump. Z and X (or LB and RB) let you dash. Enter or X button let you interact. You can interact with exits. (Jump on world map to enter a level).
Iterations
Latest
A port to Korge.
LWJGL
I decided to go full Minecraft and try doing the low level graphics myself. Turns out, this was still painful. While drawing to the screen wasn't terrible, I ran into issues trying to get my collision maths working.
LibGDX
My second attempt (after a lost Unity project), Lib GDX seemed simpler than going full LWJGL, but wasn't worth fighting for when an update suddenly broke the repo.
How many can you save before you run out of fuel?
Description
An attempt to make a game in a single day with a friend, while he also learned both Kotlin and Korge. We struggled to understand box2d, especially given the multiple levels of porting.
How to Play
Arrow keys to move and thrust. X to toggle Flight Assist. Lateral thrust with E and Q. Supports controller.
Iterations
Hackathon
What we built mostly over a one day min-hackathon, though we did prep work beforehand and hope to keep working on it afterwords.
Prototype beat maker inspired by It Takes Two
Description
While playing It Takes Two with a friend we found a really neat beat maker tool in the game (in The Attic: Rehearsal), and I wanted to see if I could quickly replicate the basics of it.
How to Play
Each board is a different instrument. Columns affect timing, and rows affect pitch (different samples). Try to make an interesting beat!
Iterations
First Iteration
Used Korge to quickly be able to play sound and deploy to the web. Very rough prototype with bad sound quality and awful visuals.

Coding Stats

86 Total Repos
3740 Total Commits
311.67 Average Commits Per Year
650 Largest Commit Files Changed
18656 Largest Commit Lines Changed
7.12 Average Commit Files
129.22 Average Commit Insertions
52.66 Average Commit Deletions
06/03/2023 Last Updated
Commits Per Year
2023 135
2022 1025
2021 1091
2020 512
2019 386
2018 506
2017 38
2016 4
2015 2
2014 4
2013 33
2012 4
Average Active Days Per Month of Year
Jan 10.58
Feb 9.5
Mar 7.5
Apr 11.17
May 14.81
June 13.29
July 16
Aug 14.84
Sept 12.58
Oct 10.29
Nov 13.81
Dec 11.86
Total Commits Per Repo
Quest Command 1131
Wildermyth Legacy 300
Website 197
Palette Cycle 155
MicroStars 153
Config 138
Misc_tools 112
Advent_of_code_2020 108
Vex Lwjgl 105
Automon 2021 72
Active Months
Quest Command 42
Config 35
Website 30
TechBlog 17
Misc_tools 17
Writing 15
Site Crawler 13
Quest Command.wiki 12
Palette Cycle 11
Vex Lwjgl 11

Mods

44 mods downloaded 1,259,838 times
as of 03/06/2023 08:16 AM
Alternate Actors
298,511
Boethiah for Good Guys
212,232
Namira for Good Guys
170,353
Placeable Statics
138,677
Boethiah for Good Guys
52,900
Placeable Statics
49,122
Achievements Unlocked Legendary Edition
43,246
Buyable Paintings and Pictures
42,964
Other
38,943
The Gray Cowl of Nocturnal
38,428
Namira for Good Guys
29,210
Clothe Dead NPCs
18,586
Gray Cowl of Nocturnal
17,221
Painting in skyrim
15,999
FTL Homeworld - Savegame Manager
15,185
A Friend of Time skyrim
14,184
Iceburgs Spiderman Suit
13,219
Tamriel in Minecraft
9,236
Reusable Wallpapers and Floors
9,090
Mines and Mills
8,922
Daedric Light Armor
6,541
Skyrim Modesty Mod
5,845
Daedric Light Armor
5,782
Better Underwear
5,442
Table of Contents
Home
Professional Projects
Personal Projects
Presentations
Games
Coding Stats
Mods