Blog posts

Set up 2FA on Ubuntu with YubiKeys

What’s a YubiKey? A YubiKey is basically a tiny device that plugs into your USB slot and pretends to be a keyboard. When you tap the little golden disc, it types out a One Time Password (OTP). Through the Yubico API, you can easily validate this password, and use it in combination with another method of authentication (such as a password or ssh key) to achieve two-factor authentication (2FA). Many popular websites like Google, Facebook, and Github allow you to enable 2FA via YubiKeys.
Read more

Writing Haskell with Vim

Getting started writing any new language is easier with the help of your editor. In the case of linters, they can teach you the language’s idioms and best practices while you write your first lines of code. Here’s how to set up a new project in Haskell and configure vim for Haskell. Basic vim setup for Haskell What you’re going to need: Vim 8 Your .vimrc A vim package manager (here I use vundle) Airline (Vim status bar) ALE (Linting engine) ghcmod-vim (Reveal types inline) Haskell / ghc Stack ghc-mod, hlint, hdevtools, hfmt This tutorial assumes you already have Vim 8 installed.
Read more

How to manage or eliminate React state without Redux

When I started writing React – I made a big mess. Many of my components took too many props, or my component had an immense amount of state. Doing simple things required a lot of data manipulation, and ultimately led to a lot of bugs. It didn’t take long for simple tasks to become extremely tedious. I think this happens to a lot of people who start out with React.
Read more

Converting an Angular.js app from Require.js to Webpack

I’ve recently converted my webapp at work from Require.js to webpack, and although the initial setup was a little tricky, it clearly offers numerous benefits to make the switch when it comes to performance, loading times, and development workflow. In this post, I will only cover a basic switch from Require.js to Webpack. In a following post, I’ll go into lazy-loading with webpack and ui-router. Possible Require.js setups, and their pitfalls In essence, there are two basic setups you can have for your Require.
Read more

Karma tests with AngularJS + RequireJS

Setting up testing is usually a little painful – but setting up testing when you’re using some kind of weird Angular + Require setup is even worse! Furthermore, the Karma documentation is a little bit terse, so it’s hard to tell exactly what combination of configuration settings will get you your intended result. Here’s how I accomplished this. File Hierarchy Here is a typical, sample hierarchy. My top-level directory is something like /opt/some-app.
Read more