Let's Learn Vi(m)

This post was originally created for https://github.com/therobinkim/lets-learn-vi. Introduction Background vi is a text editor that is built into many operating systems and henceforth built into terminals. It's rather plain and can be intimidating at first, but can be a lot of fun to learn, and when…

How to read a git diff

When I learned how to read a git diff/patch, I felt like my understanding of the internal mechanics of git improved. Here's a little tid bit I'm going to use as an example to illustrate some of the different components: 1. diff --git a/bootstrap.sh b/bootstrap.sh…

Why are there multiple versions of Node.js?

A brief history: Node.js was on v0.12.x when some people created a modified version called io.js io.js got up to v3.x Node.js and io.js became buddies again and kept the Node.js name Node.js was launched into v4.x to keep…

Function.prototype: apply(), call(), bind()

Function.prototype.apply() What does it need? It takes it in context and optional arguments array. How do we use it? If I write func.apply(context, arguments), I like to think of the code actually executing as context.func(arguments), where each element of arguments would be translated by…

D3: Click and Drag ONE Shape

(I had this draft sitting in my blog for over a year now. I decided to just publish it without any further edits.) I wanted to click and drag a shape using D3.js, but most of the examples I found online assumed I was passing in data. But I…

Kate Heddleton: How to Onboard Software Engineers

These are the notes I took while listening to an interview with Kate Hiddleton, a product engineer in San Francisco, about onboarding new software engineers. The goal of onboarding a new engineer Get them to reliable independence , which is composed of three parts: Technical knowledge. Does the engineer know Python…