All Posts

Email Security

To combat spam there are three methods that email uses nowadays for verification. These measures prevent spammers from impersonating you and getting you in trouble (such as ending up on a blocklist). Let’s look at what they are and how to safely implement them.

(2 Jul, 2020 - 8 min)

2020 First Half Retrospective

I haven’t posted here much in this year, but that doesn’t mean I haven’t been doing things. Here’s what’s gone up so far this year:

(30 Jun, 2020 - 2 min)

Building a metadata API & Search is a semantic, structured way to write metadata, and also part of how Google understands your site’s content.

(19 Apr, 2020 - 4 min)

Protecting content on is an RIT web server students, faculty, and staff can upload files and simple websites to.

(27 Mar, 2020 - 5 min)

Styling for Print & Accessible Code

When I moved to Hugo, one of the main goals was the generated site would be compatible with most media. This includes blog posts being printable and accessible.

(21 Nov, 2019 - 3 min)

Mobile Blogging

My boss’s boss encouraged me to bring a Bluetooth keyboard on my flights this summer so I could write while in the air. Suprisingly it’s possible to do this on Android using plain Git.

(24 Oct, 2019 - 4 min)


This summer I converted my blog to use Hugo, a static site generator, and GitLab Pages for a simple, lightning-fast, and secure writing experience.

(24 Oct, 2019 - 3 min)

Bundling JS with Webpack & Babel

This tutorial will walk through retroactively adding Webpack & Babel to a Node.js project. The first step in changing your dependency management is to inventory the packages you’re using. For the project I’m going to do this on, the objective is to migrate away from using CDNs and bundle them instead. This is also a good time to implement Content Security Policy for additional security, since by inventorying you will know what scripts are being loaded.

(27 Feb, 2019 - 5 min)

CI & CD with GitLab

Save on the hassle of testing and deploying code & make GitLab do it for you! In this tutorial we’re going to set up a Staging environment as well, and this requires a little prep work. Create a staging branch in your Git repo based on master, if you don’t have one. If you already use dev, development, or another name, that’s fine, just replace staging with whichever branch name is appropriate for you.

(27 Feb, 2019 - 4 min)

Bootstrap: Designed to be overwritten

Bootstrap is a wonderful framework to use, however, it comes with some challenges balancing being cookie-cutter and bloat. Bootstrap is a great framework that makes it easy to build websites. Some aspects are fairly simple, such as the grid system, but the further you get in the more complex its components can get. A typical challenge in building a site with Bootstrap is that your site might end up looking, very obviously, that it was built with Bootstrap.

(13 Feb, 2019 - 2 min)