I'm Lewis. Welcome to my GitHub! I'm a generalist software engineer with a deep toolkit and a wide lens.
Name | Description |
---|---|
Wrychain | ⛓️💥 An experimental, hackable, mobile-first social platform for custom interactions and shared channels. |
Braillest | 🦮 Open-source braille embossing via 3D-printed molds. Faster than you'd expect, cheaper than anything else. |
Caspnetti | 🍝 An opinionated full-stack boilerplate combining a Dockerized C# ASP.NET Core backend with a Vue.js frontend. |
I'm looking for senior and staff software engineering opportunities with a preference towards individual contributor roles.
My experience in software goes all the way back to 2005 when I got my first laptop - a single core Pentium and 1GB of RAM. I was fascinated by the command prompt and learned how to write batch scripts. I wrote a simple cupholder script, and something inside me clicked. I was hooked. I started learning web development as a hobby during the days of HTML4 and raw javascript before jQuery. Around that time, I made a lot of raw WAMP websites making chat boards and blogging websites for friends and I to use on ramity.com.
In high school, I got my first bit of contract work by doing a few simple business websites. I also contributed some code to the school website before they transitioned to google sites (yuck) and helped with the yearbook and student literature journal doing XHTML work. I took a web design class junior year, and the teacher became my first mentor that fanned the flames and urged me to continue pursuing my interest in web development. They pushed me to learn git and to start preserving the code I worked on.
In freshman year of college, I got my first official position doing software as a full stack developer. Doing so allowed me to put myself through college. For extra money during my undergrad, I started doing remote freelance work with a co-worker and long time friend @austinsk8s for a software company based in Germany. We'd go on to work on some pretty cool projects like a pre amazon go self grocery experience, a BMW inventory system overhaul using barcode scanning gloves and programmable ink displays, an Uber-like bus hailing service for rural communities sponsored by the EU, and an uber-for-planes web experience for a local charter service. During college, I also did a summer internship at Walmart corporate and created a human moderated optical character recognition and computer vision tagging system for digitizing produce receipts.
At some point I decided to extend my time in academia to pursue a master's degree. I liked the idea of exploring AI and cybersecurity further to add some more tools to my toolkit. I got a research assistantship and contributed to a DoE funded project doing AI powered CVE patch recommendation and remediation for cortical devices on US electrical grids. Alongside that work, I did a thesis on a new way of distributed training using hybrid context unaware indexing to enable privacy preserving, deterministic, and auditable training of models offering configurable resilience to node drop out and privacy guarantees. During my last semester, I did a teaching assistantship position for incoming freshman programming foundations I and II. The position instilled a love for mentoring and teaching.
After grad school, I got a senior security engineer (AI) position at H&R Block. One of the main projects I worked on was the company's "fraud engine" which was an API service for DIY tax flows could utilize to determine the likelihood of a tax return being fraudulent to prevent giving refunds or other services to fraudulent entities. I learned .NET and azure cloud suite to implement a custom interpreter engine featuring frequency analysis, custom AI model evaluation, dynamically executed rule logic, atomic rule updates, hash caching techniques for efficiency. The project saved the company millions by eliminating projected fraud costs. It's the first project that I created that automatically scales to handle 100+ requests/second while keeping response times smaller than 500ms during the tax season peak.
Unfortunately my time at Block came to an end during a time of company downsizing and exodus, stock buyback, DOGE fueled speculatively, and executive churn. Making the best out of a bad situation, at the start of 2025 I started my first independent, philanthropic venture and created braillest. Through it, I added 3D printing, CAD, blender modeling, and a better understanding of braille, web accessibility, and screen readers to my repertoire. I believe in braillest's potential to change the lives of those who rely on braille as a medium. Braillest makes braille cheaper than print.
Machine learning
Name | Description |
---|---|
clerk | We have AI-generated pull requests at home with Docker, Ollama, and Gitlab. |
conjure | A code generation experiment. All code must be generated via the use of generator scripts or ChatGPT responses. |
VED pwn | An ML experiment showing vehicle OBDII data is a uniquely identifiable. Utilizes the VED dataset detailed here |
Computer vision
Name | Description |
---|---|
athena | A docker setup for opencv experiments featuring a locally compiled version of opencv for more features and formats |
apexCV | [Incomplete] A computer vision framework/toolset for scraping Apex Legends videos for meaningful data and statistics over time |
opencv table detection | A simple table detection apporach created entirely with opencv |
lane detection | A simple lane detection program created entirely with opencv |
opencv text detection | A simple text detection approach created entirely with opencv |
edge detection comparison | A simple script to compare different forms of edge detection with opencv |
optical flow | A simple script to perform optical flow with opencv |
Minecraft
Name | Description |
---|---|
minecraft | A dockerized vanilla minecraft setup. |
vault hunters 3 | A painless and fully featured dockerized server for the Vault Hunters 3 modpack. Now with ramdisk support! |
Docker boilerplates
Name | Description |
---|---|
DLNA-kickstart | A repo to kickstart a [D]ocker powered [L]inux image running a [N]ode [N]ativescript [A]ngular stack. |
DLAMPS-kickstart | A repo to kickstart a [D]ocker powered [L]inux image running an [A]pache [M]ySQL [P]HP [S]ymfony stack. |
soothsayer | A simple flask boilerplate for quickly creating web accessible applications created during my walmart internship. |
Distributed networking
Name | Description |
---|---|
theia | [Incomplete] A stab at allowing opencv operations to be performed by a pool of machines. |
ramium | [Incomplete] A hybrid blockchain network experiment featuring a global PoS blockchain with PoW subchains. |
Utility
Name | Description |
---|---|
iris | A suite of tools for key management (generation, distribution, storage, rotation), en/decryption of data, and validation of integrity and authenticity of data. Created for communicating over unsecure channels |
ssh-scripts | Dead simple ssh-agent start and stop scripts to prevent terminals from creating multiple ssh-agent processes |
virtual-host-manager | Client based interface to quickly set up virtual hosts on development machines |
Scrapers
Name | Description |
---|---|
discord wordle processor | Discover your discord server's Wordle leaderboard and finally settle who reigns supreme! Calculate detailed statistics from shared results like share count, current and max streak, weighted score, offByOne count, average % per guess, and more! |
potflip | [Deprecated] RSbuddy is no longer supported. See README for notice. This repo contains a few php scripts to assist in flipping potions for a profit in osrs using the rsbuddy API. See README for example output. |
wowah | [Deprecated] A simple data scraper for loading and parsing the WoW auction house api. |
twitchScrape | A twitch stream data scraper that enables side-by-side parsing of the downloaded byte stream with opencv. |
typho | [Incomplete] The beginnings of a stock data scraper that cross-references alphaadvantage stock data and google trend data |
trade-paint | [Incomplete] A simple autolist.com scraper to populate and filter available vehicles |
Game related
Name | Description |
---|---|
world-sim | [Incomplete] The beginnings of the backend for a game that never quite took off. Left for reference |
Bent | A simple game that uses a php websocket backend and electron frontend + three.js for rendering. |
Bent-Client | An electron client for a simple game |
js-map-generator | Simple but effective rogue-like map generator. Featured on my LinkedIn. View here |
Work
Name | Description |
---|---|
CTTP-Lab-Cert | [Deprecated] - Moved to private phabricator repo. One of my first projects at CTTP. Left for reference. Features a self created google spreadsheet clone for managing lab certifications |
Storyline-AJAX-integration | Sweet and simple AJAX implementation to hack in functionality of getting grade values out of a Storyline application. |
Web applications
Name | Description |
---|---|
micro | [Incomplete] The beginnings of a micro management interface for logging and inventorying food, clothes, and events. Left for reference and inspiration |
assistant | [Incomplete] A simple micromanager for managing food, finances, closet, and time tracking |
ally | A companion hub |
Interview
Name | Description |
---|---|
supply-pike-interview | Timed programming interview questions from local software development firm, Supply Pike. |
School
Name | Description |
---|---|
Caesar-Cipher | Sweet and simple sub 70 line functioning and interactive Caesar Cipher written in MIPS32 assembly |
CSCE-4853-HW5 | Interactive single-threaded SHA256 brute force password cracking tool given known hash and configurable password rules (min and max length, character set, salt, and more). |
CSCE-2004-HW6 | Solution, instructions, and helper code for Programming Foundations I's homework 6 |
phabricator-setup-doc | A fancy phabricator setup doc created for a technical writing class. |
CSCE-5703-HW | Homeworks from CSCE-5703 |
CSCE-5563-HW3 | Two pytorch projects: "dl3-actual" being GRU with a self defined backward propagation method, and "dl3-bonus" being a bidirectional LSTM using the highly undocumented nn.CTCLoss function to solve MNIST |
CSCE-5693-lab-2 | GPU programming lab 2 |
capstone | A simple pure CV approach for the autonomous navigation of a standardized robotics playing field. |
CSCE-4813-HW1 | Computer graphics homework #1 detailed here |
algo-hw9 | Algorithms homework #9 |
algo-hw7 | Algorithms homework #7 |
algo-hw4 | Algorithms homework #4 |
AVL-tree | A simple AVL tree implemented in c++. For more details see: https://en.wikipedia.org/wiki/AVL_tree |
CSCE-4523-HW | Repo containing all homeworks for completed Database Management Systems class |
spring-2018-notes | Notes covering software engineering (CSCE 3513), autonomous robotics (CSCE 4013), advanced data structures (CSCE 4263), database management systems (CSCE 4523), and some miscellaneous ramblings |
Trees | BST and AVL trees implemented in c++. For more details see: https://en.wikipedia.org/wiki/Binary_search_tree https://en.wikipedia.org/wiki/AVL_tree |
CSCE-4013-hw2 | The second homework assignment for the Autonomous Robotics course |
VectorInt | A school project driven integer specific clone of the famous C++ vector class |
RegisterClient | Register client (Android app) for accessing the server-side API. Developed using Android Studio. |
RegisterAPI-Java | Server-side register API. Developed in Java (w/ Spring) using the Eclipse IDE. Mavenized. |
RegisterAPIDataDefinition | SQL to create the backing database for the Register API project. |
Producer-Consumer | A multi-threaded producer-consumer implementation utilizing a shared bounded buffer. Created for an assignment. Written in java |
CSCE-2014-lab13 | Programming Foundations II - Lab 13 |
CSCE-2014-A1 | Programming Foundations II - Assignment 1 |
CSCE-2004-Lab13 | Programming Foundations I - Lab 13 |
CSCE-2004-Lab12 | Programming Foundations I - Lab 12 |
CSCE-2004-Lab11 | Programming Foundations I - Lab 11 |
CSCE-2004-A7 | Programming Foundations I - Assignment 7 |
CSCE-2004-A6 | Programming Foundations I - Assignment 6 |
CSCE-2004-A5 | Programming Foundations I - Assignment 5 |
CSCE-2004-Lab10 | Programming Foundations I - Lab 10 |
CSCE-2004-Lab09 | Programming Foundations I - Lab 9 |
CSCE-2004-Lab08 | Programming Foundations I - Lab 8 |
CSCE-2004-Lab07 | Programming Foundations I - Lab 7 |
CSCE-2004-Lab06 | Programming Foundations I - Lab 6 |
CSCE-2004-Lab05 | Programming Foundations I - Lab 5 |
CSCE-2004-Lab04 | Programming Foundations I - Lab 4 |
CSCE-2004-Lab03 | Programming Foundations I - Lab 3 |
CSCE-2004-Lab02 | Programming Foundations I - Lab 2 |
CSCE-2004-Lab01 | Programming Foundations I - Lab 1 |
CSCE-2004-A4 | Programming Foundations I - Assignment 4 |
CSCE-2004-A3 | Programming Foundations I - Assignment 3 |
CSCE-2004-A2 | Programming Foundations I - Assignment 2 |
CSCE-2004-A1 | Programming Foundations I - Assignment 1 |
GNEG-1103-electronics | Some simple Arduino scripts created for the electronics section of the general engineering course. |
Historical
Name | Description |
---|---|
Mirai | Source code from the original mirai botnet hack forum post. Prior to its release on the forum, it was attributed to having created some of the largest botnets and DDoS attacks ever seen. It was formative in IoT manufactures cleaning up their act in the use of factory default usernames and passwords. |