Hi, there. My name is Garrett, and I'm a self-taught software-developer and speaker.
Hi! My name is Garrett. Welcome to my corner of the internet. I'm a self-taught developer and maker. I like to build software to improve the developer/user experience. I created the Extollo framework, Noded, CoreID authentication server, and a couple other projects. I love to communicate my work, and help others pursue their projects. I write blog posts, create video tutorials, hold talks, and publish code from my projects in the hope that others will find it useful.
A bit more background: I grew up in the rural mid-west, and I got started by teaching myself everything I know. I'm a big fan of learning to code this way. I'm currently studying computer science at the University of Kansas.
HackKU is the University of Kansas' annual hackathon.
My group participated for our fourth year in a row where we built CrystalMath, a graphical, interactive worktable for math applications.
Our project was the runner up in the education track and also received the award for best domain name for crystalmath.tech
.
This semester, I will be assisting an Honors Seminar section at the University of Kansas where I will work with a faculty member to provide support and mentoring for first-year honors students.
Swarm is a small programming language that natively abstracts parallel & distributed computing. I've been building it with my senior design group during my final year of my bachelor's at the University of Kansas.
HackKU is the University of Kansas' annual hackathon.
My group participated for the third year where we built Loc-Chain, a blockchain-based, anonymous contact tracing solution.
Extollo is the next iteration of my Flitter project. My goal is to use what I've learned from creating Flitter to create an even better and safer web app framework in Node.js built with Typescript.
The project is very much in the early stages, but so far includes a dependency injector, basic startup framework, and a Typescript-based ORM.
I an an avid self-hoster. As such, I have a lot of disparate apps that all have different login schemes, which can be a bit annoying to manage for myself and friends.
So, I decided to build a unified login system similar to things like CAS. CoreID supports OAuth2, OpenID Connect, LDAP, and SAML2 with universal 2FA and granular access controls. This project has taught me a lot about the different SSO stacks.
TeraCrunch is a Kansas City-based data analytics and machine learning firm.
I worked with them as a freelance systems engineer to handle infrastructure projects like backups and scheduled jobs, and smaller client projects such as a statistics aggregator, and Node.js application enhancements/maintenance.
HackKU is the University of Kansas' annual hackathon.
My group participated for the second year where we built Noded, a rich-data note-taking app designed to help people build personal information trees.
I liked this concept so much that I've continued improving it since then, and I use it for my personal notes to this day.
AllofE is a software company in Lawrence, Kansas, primarily focused on the eMedley web suite for higher-education.
I work as a software engineer doing full stack development in PHP/SQL/Angular. Of note, I designed and built a new automated proctoring flow used by 10+ schools built on TensorFlow and AWS Lambda. I also helped integrate and transition 50+ models and infrastructure components from a legacy framework to Laravel.
HackKU is the University of Kansas' annual hackathon.
I participated with a couple friends and we built WaitNoMore, a multi-tenant parking management app built on Python, Firebase, and Flutter.
For this project, we were awarded the Best Implementation of Google Cloud.
Flitter is my take on a Node.js app framework.
I started it as a learning project, and have expanded it to act as a base for all of my personal apps. It includes a unit-based startup framework, a dependency injector, an ORM, a job-queue wrapper, an auth framework, and more.
The CRMDA was a University of Kansas lab that assisted researchers with data analysis projects and computing.
I worked as a lab system technician there my freshman year of college maintaining the CentOS lab workstations, transitioning 20+ cluster scripts to the SLURM scheduler, and creating a proof-of-concept Kubernetes cluster on which I help a colloquium.
I studied computer science at the University of Kansas and received my bachelor's of science.
The KRS Corporation is an enterprise manufacturer based in my hometown.
I worked there over the summer assembling various components. Of note, I designed an Arduino break-out circuit to automate the flashing of these components. This system reduced the time required to program the controller boards by half.
USD 416 is the school district in my hometown.
As a summer job, I worked as an IT technician where I helped replace 50+ access points as part of a wireless deployment, imaged 100+ computers using Novell and Active Directory, and assisted with user support.
For two years, I served as the technical-director of TEDxYouth@Louisburg and helped organize and live-broadcast the first TEDxYouth event at a high-school in Kansas.
Particularly, I helped plan schedules for breakout rooms, built the sign-in and ticketing system, and directed the live-production of the event itself for 150+ guests.
Importing an OpenVPN Profile on Fedora 36
I recently upgraded to Fedora 36 and discovered
that my VPN settings were completely broken and
I couldn't re-import it from the .ovpn
file.
What ensued was an annoyingly difficult series of workarounds required to avoid bugs in OpenVPN, NetworkManager, and NetworkManager-gui.
I've detailed how to do it here.
Rancher K3s: Kubernetes on Proxmox Containers
I've been re-learning Docker and containerization and I decided to take the plunge and start converting my self-hosted environment over to Kubernetes.
This post details how I set up a Kubernetes cluster on LXD containers on Proxmox using Rancher K3s and NGINX ingress controller.
Read it here.
The Ultimate Guide to Cleaning a Dell XPS 15 Keyboard
Recently, I've been having a really annoying issue with my laptop keyboard where some keys require multiple presses or lots of force when pressed to register a key stroke.
Since I like to try to repair my own stuff, at least as a first-line, I decided to do a quick write-up on how to remove and replace the key caps without breaking them to clean out the key wells.
Read more here.
Runtime Data Validation from TypeScript Interfaces
How I (ab)used the TypeScript compiler to enable transparent runtime data validation using Zod and TypeScript interfaces.
Read more here.
multicrypt
: a library for multi-key encryption
Recently, I've been working on adding secure vaults for user secrets to my auth server project, CoreID.
To implement shared-vaults, I wrote an implementation of multi-key encryption using enveloped keys. It seemed fairly useful on its own, so I pulled it out into a standalone TypeScript package called Multicrypt.
Multicrypt provides a simple interface for multi-key two-way encryption for arbitrary keys and values, and makes it easy to add & remove keys from the shared values.
Learn more here.
Photo Challenge 01: Self-Portrait
One non-technical interest of mine is photography. I'm starting a new 30-prompt photo challenge, which I'll be posting on my blog.
The first challenge is a self-portrait. Mine tries to capture my technical side, and allowed me to tinker with depth of field and reflections.
Follow along here.