Garrett Mills - Posts & Updates A sporadic collection of my thoughts, blog posts, and project updates Tue, 30 Mar 2021 19:17:04 GMT awesome en Copyright 2021 Garrett Mills. All rights reserved. Technology Software Development Education <![CDATA[Blog Post]]> 606379301694a11cf37d1ce5 Tue, 30 Mar 2021 19:17:04 GMT Rethinking Dependency Injection in TypeScript

For the past few years, I've been experimenting with various paradigms for DI in JavaScript and TypeScript.

In the latest in my series of mad ramblings on dependency injection, I've written up my thoughts on the various paradigms I've tried.

Read more here.]]> (Garrett Mills)
<![CDATA[Side Project]]> 6021af9360b9ec2b58623a2d Mon, 08 Feb 2021 21:39:31 GMT New Features in Noded

Noded is a project I started at HackKU last year. It's a rich-data notes app designed to help people create information trees. I've been slowly improving it since.

  • File Box
    • In addition to the basic file uploader, you can now add "File Boxes" to your notes, which support nested structures and managing individual files.
    • Files in File Boxes appear in the universal search, and will open to their nested location directly.
  • Universal Search
    • Nodes that support full-screen mode now open directly from the search interface. This means that the open page is unchanged.
    • In-line links and images now render properly in view-only mode.
  • Databases
    • Added the "Hyperlink" column type for external links.
    • Added the "Link to Page" column type for referencing other notes.
  • Users can now drag-and-drop to re-order subtrees in the sidebar.

You can try Noded out here.

]]> (Garrett Mills)
<![CDATA[Open Letter]]> 5ff10217c8162e185a523495 Sat, 02 Jan 2021 23:30:31 GMT An Open Letter to Senator-elect Roger Marshall

Roger Marshall, Kansas Senator-elect, has expressed his intention to vote not to certify the result of the 2020 presidential election.

I feel very strongly that this is a dangerous and irresponsible move that goes against the core tenets of American democracy.

Read the letter here.

This letter is released in the public domain. Please, adapt it, share it with others, and most importantly, send it to your representatives. Call them, e-mail them, snail mail them to tell them to support free and fair elections.

]]> (Garrett Mills)
<![CDATA[Code Snippet]]> 5fd029e89d55604a939f9b2c Wed, 09 Dec 2020 01:35:36 GMT Full-text search PDFs from Linux CLI

For an open-note exam, I wanted a quick way to full-text search PDFs from the command-line.

I wrote a 2-line script to help with that, using just find, grep, and pdftotext (common to most distros).

Get it here.

]]> (Garrett Mills)
<![CDATA[Side Project]]> 5fc7f0515b35c233d85fd2d2 Wed, 02 Dec 2020 19:51:45 GMT MiniQ: A bare-bones, CRON-driven job queue.

I wanted a simple way to queue jobs to be run in the background without having to run a separate daemon.

MiniQ is what I came up with. With just 3 files, MiniQ provides the ability to log jobs and the CRON script will run periodically and execute the queued jobs in the background.

More info here.

]]> (Garrett Mills)
<![CDATA[Blog Post]]> 5fc68b4f5b35c233d85fd294 Tue, 01 Dec 2020 18:28:31 GMT Converting an Ionic/Angular Site into a Progressive Web App

For the last year or so, I've been working on converting an Ionic app to a progressive web app with offline support called Noded. I decided to write up my findings on how to do this with Angular service-worker.

Read more about it here.

]]> (Garrett Mills)
<![CDATA[Side Project]]> 5fc3663a081ff50074eb4926 Sun, 29 Nov 2020 09:13:30 GMT My Technical Notes Site

I'm trying to write down or save all the technical tricks, notes, and fixes I find. That way, it's easier for me to find them again in the future, and maybe they can be of use to others.

You can check them out here.

]]> (Garrett Mills)
<![CDATA[Blog Post]]> 5f199bad6ba57f18297b4e7c Thu, 23 Jul 2020 09:15:49 GMT How to Code From Home Like a Boss

With the current need to work from home, I've put together a list of tricks and tools I use to do my work as a software developer remotely, and discuss the challenges. Here's what I use.

]]> (Garrett Mills) <![CDATA[Code Release]]> 5eb5f9a991202acecf005016 Sat, 09 May 2020 00:30:33 GMT Feed Page, RSS, & Atom - Minor Website Updates I recently made some tweaks to my website. I added a dedicated page as a historical archive for these updates.

I also added the ability to subscribe to this feed using RSS, Atom, and JSON thanks to a handy NPM package.]]> (Garrett Mills)
<![CDATA[Code Release]]> 5ea0d07b000b92b10459cd4f Wed, 22 Apr 2020 23:17:15 GMT VuES6 - ES6 Vue.js Components, in Plain JavaScript

I recently released a small utility library for defining Vue components as proper ES6 classes, but in vanilla JavaScript. I like to use this in small projects where I don't want to have to set up vue-cli and compile templates. More info here.

]]> (Garrett Mills)
<![CDATA[Side Project]]> 5e8ddda99127dad0043b9c66 Wed, 08 Apr 2020 14:20:25 GMT Connect-4 Webtoy

I've built a simple Connect-4 webtoy as a project for EECS 368 at the University of Kansas. You can play with it here.

]]> (Garrett Mills)
<![CDATA[Blog Post]]> 5e632cd98c1b7808113a5adb Sat, 07 Mar 2020 05:10:49 GMT Code Freedom with Gitea & Drone - Part I

In my never-ending quest to self-host all the things, I've deployed a combination of Gitea and Drone CI for a feature-for-feature, self-hosted alternative to GitHub. Here's how.

]]> (Garrett Mills)
<![CDATA[HackKU 2020]]> 5e547826173147060d872951 Tue, 25 Feb 2020 01:28:06 GMT Noded - Free-Form Notes & Databases

I recently attended the annual University of Kansas hackathon, where me and a couple friends built Noded.

Noded is a tree-based note taking app based on reusable page elements. It provides support for basic notes, uploaded files, a built-in code editor, customizable databases, static website exports, and sub-tree sharing. Check it out here.

]]> (Garrett Mills)
<![CDATA[Code Release]]> 5dfbe96b78c3d7593abd5c8d Thu, 19 Dec 2019 21:19:39 GMT flitter-di@0.1

Flitter-DI is the second-generation dependency-injector used by the Flitter framework. It was pulled from the libflitter project in the hope that it can remain independent from the rest of Flitter and can be used in other projects. More info here.

]]> (Garrett Mills)
<![CDATA[Blog Post]]> 5dd04b99e54ea20caf6b7249 Sat, 16 Nov 2019 19:18:49 GMT Dependency Injection in Less Than 100 Lines of Pure JavaScript

DI is a powerful pattern for segmenting code to keep it efficient and easy to reuse. In this article, we're going to build a basic DI in <100 lines of pure ES6. Read about it here.

]]> (Garrett Mills)
<![CDATA[Blog Post]]> 5dce587aac2bb042f50478ab Fri, 15 Nov 2019 07:49:14 GMT A New Platform - My Relentless Pursuit of Privacy

I've finally moved the home of my blog from over to a self-hosted Hexo blog. Why? Read more here.

]]> (Garrett Mills)
<![CDATA[Code Release]]> 5dbc5b2298927ad9f6245e7c Fri, 01 Nov 2019 16:19:46 GMT flitter-auth@0.13

This release of Flitter's auth provider brings an OAuth2 server, OAuth2 client, and refinements to the login flow structure. More details here.

]]> (Garrett Mills)
<![CDATA[Speaking]]> 5dbc53fe98927ad9f6245e7b Fri, 01 Nov 2019 15:49:18 GMT Computing in the Kubernetes Framework

Recently I had the pleasure of presenting at the University of Kansas' Center for Research Methods and Data Analysis Weekly Colloquium. You can find resources from my talk on using k8s for scientific computing here.]]> (Garrett Mills) <![CDATA[Blog Post]]> 5dbc536798927ad9f6245e7a Fri, 01 Nov 2019 15:46:47 GMT Building a Raspberry Pi Cluster - Part 3

In the third installment of my miniature-HPC series, we discuss OpenMPI, Python3, and running parallel jobs. Read more here.

]]> (Garrett Mills)