• Reviving old projects: Dominion with JavaFX

    Implementing a deck-building card game with JavaFX.

    Estimated 3 min read (572 words)

    Read More >
    Tags:
  • Reviving old projects: CodingBat in JavaScript

    Creating a framework for validating CodingBat answers in JavaScript.

    Estimated 1 min read (173 words)

    Read More >
    Tags:
  • Switching to Doom Emacs

    I've been using Emacs for more than decade. I started out with plain-'ol vanilla Emacs and bunch of customizations that I sourced from around the web / wrote myself, but as time went on I became aware of the nice UX enhancements found in some of the Emacs configuration frameworks, particularly Spacemacs. The trouble with Spacemacs is that I find it at times to be unbearably slow. Today is the day that I switch to Doom Emacs.

    Estimated 8 min read (1498 words)

    Read More >
    Tags:
  • I ♥ Keyboards

    Like a plumber's wrench or a carptenter's hammer and saw, a keyboard is indispensible to the programmer. As mechanical keyboards have gone more mainstream; there's been an explosion of key switches, cases, and PCBs to accomodate any preference. The question is: how many more will I buy before I'm satisfied? Maybe I'll start framing them.

    Estimated 8 min read (1514 words)

    Read More >
    Tags:
  • That's a lot of Schiit!

    I set out to create a budget-ish, audiophile-quality audio setup for my desk using Schiit separates. Convenience, tactility, and extensibility were key objectives for me. I've designed this system with the intent of having easily accessible analog controls for all aspects of the audio experience.

    Estimated 14 min read (2639 words)

    Read More >
    Tags:
  • Static Site Cost Update

    It's been a month-ish, so here's an update on what this site is currently costing me to run.

    Estimated 1 min read (167 words)

    Read More >
  • Task Management with Spring Boot

    I often run into batch jobs which are business critical, but not very traceable or simple to validate. There are a number of common shortcomings I've observed: tasks must be scheduled / executed / tracked externally, lack of a progress bar, no ability to rerun only failed tasks, cannot pause tasks, hard to determine which tasks in a batch failed, etc. I tried to solve these issues and more in Taskman: a platform for running tasks; including functionality for monitoring their status, progress, and results.

    Estimated 15 min read (2851 words)

    Read More >
  • QMK Firmware Customization

    Write-up on how I've customized my Tokyo60 keyboards using QMK; including my userspace config and keymap. The latest Tokyo60 V3 shipped to me (and many others) without a bootloader, but I was able to flash it using a Teensy 2.0 development board. I've provided details of that process in case you find yourself in the same situation.

    Estimated 3 min read (471 words)

    Read More >
  • Continuous Deployment with CircleCI and s3deploy

    Now I have a simple to edit, static site that meets my résumé hosting and blogging needs; but deployment is currently a bit tedious. Manually copying the built files into the S3 bucket and invalidating the CloudFront distribution takes too much time and requires too much fiddling with my mouse to encourage consistent updates. CircleCI and s3deploy to the rescue!

    Estimated 3 min read (591 words)

    Read More >
  • Document Search with Algolia

    Overview of how to enable Algolia document search with the VuePress default theme and srape your site using the provided Docker image to facilitate a full text search experience.

    Estimated 2 min read (281 words)

    Read More >
  • Conversion to a Static Site with VuePress and AWS S3

    I've been working a lot lately with AWS and I figured it was high time that I leveraged some of that newfound kowledge to improve my own website. I set out with 3 goals in mind: reduce my monthly AWS bill, improve performance, and create a better experience for both the user as well as the developer.

    Estimated 5 min read (933 words)

    Read More >
Last Updated: 1/13/2020, 12:22:13 AM