garrettmills

Hi, there. My name is Garrett, and I'm a self-taught software-developer and speaker.

about me

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 Flitter and Extollo frameworks, Noded, 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, so I taught 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.

what I'm working on

2021
August 2021 - December 2021

Honors Seminar Assistant

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.

April 2021

HackKU 2021

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.

January 2021 - Present

Extollo

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.

2020
April 2020 - Present

Starship CoreID

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.

March 2020 - February 2021

TeraCrunch, LLC

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.

February 2020

HackKU 2020

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.

2019
May 2019 - Present

AllofE Solutions

AllofE is a software company in Lawrence, Kansas, primarily focused on the eMedley web suite for higher-education.

I work as a software engineering intern 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.

February 2019

HackKU 2019

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.

2018
August 2018 - April 2021

Flitter

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.

August 2018 - May 2019

Center for Research Methods & Data Analysis

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.

August 2018 - Present

University of Kansas

I'm studying computer science as an undergrad at the University of Kansas, with a minor in business.

March 2018 - August 2018

KRS Corporation

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.

2017
May 2017 - August 2017

Unified School District #416

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.

2016
August 2016 - May 2018

TEDxYouth@Louisburg

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.

get in touch

I'd love to hear from you if you have questions or inquiries related to me or my projects. You can get in touch by text, e-mail, or using this form. I also occasionally share thoughts on my blog.

E-Mail: shout@garrettmills.dev
Phone: (913) 730-7124

latest updates

Side Project

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.

permalink  |  11/22/2021, 7:54:41 PM
Blog Post

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.

permalink  |  8/26/2021, 1:01:42 AM
Side Project

g.bash: A simple Bash framework

Between work and my personal lab, I write a lot of command-line tools to help automate various tasks. But, as anyone who's worked with Bash before knows, adding multi-command support, flags, and other handling can be difficult to get off the ground.

However, including a multi-file Bash framework is kinda... gross. One of the benefits of a shell script is that it can usually be distributed as a single-file affair. I was also unpleased with the current state of Bash argument-parsing.

Enter: g.bash. This is my take on a single-file framework and standard library for Bash that addresses these issues. I might write a more extensive blog in the future, but for now the broad strokes are:

  • Utility & array helpers
  • Filesystem helpers
  • Error handling & try-catch
  • String manipulation helpers
  • Logging to standard error/files by levels/flags
  • Math constants & helpers
  • Import system w/ singleton includes
  • Configuration file system
  • Command definitions & argument parsing
  • Locking & singleton execution

This side-project is still very much a work-in-progress, but if you're curious you can check it out here.

permalink  |  8/11/2021, 6:37:06 PM
Site Update

Monochrome Redesign

I decided that it was time for a visual refresh of this site. I liked the bright & flashy design I've had for about a year now, but decided on a return to relative simplicity.

The new design has the added benefit of being very light and semantic, and relies on no external stylesheets or frameworks, unlike the old. This has the added benefit of making the page more accesible and improving load times.

permalink  |  5/9/2021, 5:59:07 PM
Site Update

Technical Info on *.garrettmills.dev Sites

For the past few weeks, I've been reworking my analytics collection system with an eye to privacy.

I've tried to make my system collect only the data I wish to use in aggregate, and give users the ability to permanently opt-out of page-view collection.

For details and interesting nitty-gritty about this site, I've added a new technical info page that talks about how the analytics system works, the data it stores, and how you can opt-out.

permalink  |  4/29/2021, 7:25:07 AM
Code Release

Opting Websites Out of FLoC

Google announced recently that the beta version of their Chrome browser will include a new tracking system called Federated Learning of Cohorts (FLoC). This system is their replacement for 3rd-party tracking cookies. You can learn more here.

FLoC perpetuates the track-by-default system in Chrome that violates users' privacy. Worse, because it's baked into the browser itself, this tracking can occur on all sites by default.

I remain strongly opposed to these privacy-invasive moves. As a result, starting with version 0.59.0, all Flitter-powered sites (including this one) will opt-out of FLoC by default.

As a user, if this change makes you uncomfortable, consider using a browser that respects user privacy like Firefox or Brave.

permalink  |  4/23/2021, 4:07:58 PM