Hi there 👋

I love making data useful to people! My skills are best in data manipulation, systems administration/engineering, and untangling complicated data/lineages.

Recently I’ve been busy with work and starting graduate school but thankfully I’m back in a position where I can start updating my projects again. Keep an eye out for new content and check out my resume in the meantime. If you’re intersted in something I haven’t posted yet, send me an email and I’ll be happy to talk!

Outside of work and school I enjoy tea, immersive experiences, and my data side-hobby is datasets of cultural institutions.

Latest Posts

📝 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)

📝 Hugo

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 - 5 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)

📝 The apartment life of securing data

As a college student, I have enough data that I want secure, but no permanent, secure location for my server to go. This makes for some interesting challenges in managing my data.

(17 Jan, 2019 - 3 min)

📝 Problems of running production software at small scale

As a student (and generally as someone learning tech), it’s really nice to be able to run the same technology that is used for production systems. However, this is not always a viable option, particularly as a college student, and I want to talk a bit about why this is a challenge.

(17 Jan, 2019 - 6 min)

📝 Secure cookies behind multiple proxies

Security is an important aspect of running a modern website, and part of that is ensuring the security of cookies and other data the attached to a given user. Here is what I learned while implementing Secure cookies on a project.

(8 Jan, 2019 - 3 min)

📝 Pains of Stateless State Management

As it would turn out, synchronizing states is really hard. The tech used for this app is fairly common. The client is rendered using p5.js, the server uses Node.js, Redis stores states, & data is passed between the two using websockets via socket.io The biggest difficulty is that there are multiple devices per player and multiple players connected at the same time. I have to make sure that all necessary data is synchronized efficiently, but I also need a single source of truth to fall back on.

(18 Dec, 2018 - 5 min)