{ "version": "https://jsonfeed.org/version/1", "title": "Garrett Mills - Posts & Updates", "home_page_url": "https://garrettmills.dev/", "feed_url": "https://garrettmills.dev/feed/json", "description": "A sporadic collection of my thoughts, blog posts, and project updates", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" }, "items": [ { "id": "606379301694a11cf37d1ce5", "content_html": "Rethinking Dependency Injection in TypeScript\n

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


\n 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.\n

\nRead more here.", "url": "https://garrettmills.dev/feed/#606379301694a11cf37d1ce5", "title": "Blog Post", "date_modified": "2021-03-30T19:17:04.665Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "6021af9360b9ec2b58623a2d", "content_html": "New Features in Noded\n

\n 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.\n





\n You can try Noded out here.\n

", "url": "https://garrettmills.dev/feed/#6021af9360b9ec2b58623a2d", "title": "Side Project", "date_modified": "2021-02-08T21:39:31.063Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5ff10217c8162e185a523495", "content_html": "An Open Letter to Senator-elect Roger Marshall\n

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


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


\n Read the letter here.\n


\n \n 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.\n \n

", "url": "https://garrettmills.dev/feed/#5ff10217c8162e185a523495", "title": "Open Letter", "date_modified": "2021-01-02T23:30:31.215Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5fd029e89d55604a939f9b2c", "content_html": "Full-text search PDFs from Linux CLI\n

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


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


\n Get it here.\n

", "url": "https://garrettmills.dev/feed/#5fd029e89d55604a939f9b2c", "title": "Code Snippet", "date_modified": "2020-12-09T01:35:36.295Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5fc7f0515b35c233d85fd2d2", "content_html": "\n MiniQ: A bare-bones, CRON-driven job queue.\n\n

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


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


\n More info here.\n

", "url": "https://garrettmills.dev/feed/#5fc7f0515b35c233d85fd2d2", "title": "Side Project", "date_modified": "2020-12-02T19:51:45.190Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5fc68b4f5b35c233d85fd294", "content_html": "Converting an Ionic/Angular Site into a Progressive Web App\n

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


\n Read more about it here.\n

", "url": "https://garrettmills.dev/feed/#5fc68b4f5b35c233d85fd294", "title": "Blog Post", "date_modified": "2020-12-01T18:28:31.443Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5fc3663a081ff50074eb4926", "content_html": "\n My Technical Notes Site\n\n

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


\n You can check them out here.\n

", "url": "https://garrettmills.dev/feed/#5fc3663a081ff50074eb4926", "title": "Side Project", "date_modified": "2020-11-29T09:13:30.876Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5f199bad6ba57f18297b4e7c", "content_html": "How to Code From Home Like a Boss\r\n

\r\nWith 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.\r\n

", "url": "https://garrettmills.dev/feed/#5f199bad6ba57f18297b4e7c", "title": "Blog Post", "date_modified": "2020-07-23T09:15:49.731Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5eb5f9a991202acecf005016", "content_html": "Feed Page, RSS, & Atom - Minor Website Updates\r\nI recently made some tweaks to my website. I added a dedicated page as a historical archive for these updates.\r\n

\r\nI also added the ability to subscribe to this feed using RSS, Atom, and JSON thanks to a handy NPM package.", "url": "https://garrettmills.dev/feed/#5eb5f9a991202acecf005016", "title": "Code Release", "date_modified": "2020-05-09T00:30:33.192Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5ea0d07b000b92b10459cd4f", "content_html": "VuES6 - ES6 Vue.js Components, in Plain JavaScript\n

\nI 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.\n

", "url": "https://garrettmills.dev/feed/#5ea0d07b000b92b10459cd4f", "title": "Code Release", "date_modified": "2020-04-22T23:17:15.369Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5e8ddda99127dad0043b9c66", "content_html": "Connect-4 Webtoy\r\n

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

", "url": "https://garrettmills.dev/feed/#5e8ddda99127dad0043b9c66", "title": "Side Project", "date_modified": "2020-04-08T14:20:25.849Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5e632cd98c1b7808113a5adb", "content_html": "Code Freedom with Gitea & Drone - Part I\r\n

\r\nIn 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.\r\n

", "url": "https://garrettmills.dev/feed/#5e632cd98c1b7808113a5adb", "title": "Blog Post", "date_modified": "2020-03-07T05:10:49.731Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5e547826173147060d872951", "content_html": "Noded - Free-Form Notes & Databases\r\n

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

\r\n\r\nNoded 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.\r\n\r\nCheck it out here.\r\n

", "url": "https://garrettmills.dev/feed/#5e547826173147060d872951", "title": "HackKU 2020", "date_modified": "2020-02-25T01:28:06.154Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5dfbe96b78c3d7593abd5c8d", "content_html": "flitter-di@0.1\n

\nFlitter-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.\n

", "url": "https://garrettmills.dev/feed/#5dfbe96b78c3d7593abd5c8d", "title": "Code Release", "date_modified": "2019-12-19T21:19:39.163Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5dd04b99e54ea20caf6b7249", "content_html": "Dependency Injection in Less Than 100 Lines of Pure JavaScript\r\n

\r\nDI 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.\r\n

", "url": "https://garrettmills.dev/feed/#5dd04b99e54ea20caf6b7249", "title": "Blog Post", "date_modified": "2019-11-16T19:18:49.804Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5dce587aac2bb042f50478ab", "content_html": "A New Platform - My Relentless Pursuit of Privacy\r\n

\r\nI've finally moved the home of my blog from Medium.com over to a self-hosted Hexo blog. Why? Read more here.\r\n

", "url": "https://garrettmills.dev/feed/#5dce587aac2bb042f50478ab", "title": "Blog Post", "date_modified": "2019-11-15T07:49:14.346Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5dbc5b2298927ad9f6245e7c", "content_html": "flitter-auth@0.13\r\n

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

", "url": "https://garrettmills.dev/feed/#5dbc5b2298927ad9f6245e7c", "title": "Code Release", "date_modified": "2019-11-01T16:19:46.584Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5dbc53fe98927ad9f6245e7b", "content_html": "Computing in the Kubernetes Framework\r\n\r\n

\r\nRecently 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.", "url": "https://garrettmills.dev/feed/#5dbc53fe98927ad9f6245e7b", "title": "Speaking", "date_modified": "2019-11-01T15:49:18.769Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } }, { "id": "5dbc536798927ad9f6245e7a", "content_html": "Building a Raspberry Pi Cluster - Part 3\r\n\r\n

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

", "url": "https://garrettmills.dev/feed/#5dbc536798927ad9f6245e7a", "title": "Blog Post", "date_modified": "2019-11-01T15:46:47.194Z", "author": { "name": "Garrett Mills", "url": "https://garrettmills.dev/" } } ] }