Showing all posts tagged #programming:


Tools & Craft: An interview with Stu Card

Posted on August 24th, 2018

Excited to announce the second episode of Tools & Craft! In this video I interviewed Stu Card, who began work in Human Computer Interaction before it even had a name. His was the first PhD in the discipline, and Stu has made fundamental contributions to HCI including the design of Engelbart's mouse and Information Foraging Theory. In his work at Xerox PARC and beyond, Stu has always emphasized "theories with a purpose", the idea that academi...

Twitter backup

Posted on August 22nd, 2018

I gave in to my paranoid tendencies today and wrote a little backup script for Twitter, which I figured I'd share here. Two requirements: github.com/sferik/t: A command-line power tool for Twittergithub.com/wireservice/csvkit: A suite of utilities for converting to and working with CSV, the king of tabular file formats To install these from the terminal: Here's the script to do the backup itself (which I plan to run ~1/mo): For some rea...

Tools & Craft: An interview with Andy Hertzfeld 

Posted on June 19th, 2018

I am so excited to announce Tools & Craft, an interview series I've been working on with Notion for the past few months! In this first episode, I spoke with Andy Hertzfeld, who designed the operating system of the original Macintosh. I've always been fascinated by the process of creating new tools and interfaces, especially those that amplify our thought and communication. We’ve all seen the legendary Apple keynotes and how personal comput...

A steelman for tradition

Posted on June 3rd, 2018

Epistemic status: High confidence about the pros/cons discussed regarding my own experience, fairly low confidence about the parts I heard secondhand. Epistemic effort: Low-to-medium effort. I realized these things were connected while I was in the shower last night, then I spent two hours stream-of-consciousness writing to get them onto the page. I then read it over once for minor editing and shared it with a friend to sanity check. 1. "Bik...

Strategically ignorant

Posted on April 1st, 2018

Effective software developers know how to manage their ignorance. Studying the inner workings of each dependency and every layer of your stack is a luxury you often can't afford, so it's important to know how and when to make leaps of faith. More than any explicit technical knowledge, this intuition is perhaps the biggest thing that differentiates experienced programmers from inexperienced ones. When I first started coding, painful awareness ...

Webpack and Ethereum smart contracts with Typescript

Posted on March 12th, 2018

I originally gave this talk at Typescript Conference 2018. You can find the slides here. TypeScript is a godsend for Webpack and Ethereum developers. In the nascent world of smart contracts, developer-friendly tooling is almost non-existent, the only error message is VM Exception: revert, and bugs can cost millions of dollars. Meanwhile, most Webpack config files are incomprehensible, fragile, and cobbled together from a mess of Stack Overflo...

What's in a name?

Posted on February 6th, 2018

I often use a thesaurus while coding, and I mentioned this fact to a non-programmer friend today. He was shocked, and he said that he thought that programming was mathematical, not lexical. But it’s not so easy to separate out—naming is one of the most important parts of programming (and math!), because it’s how you reduce complexity down to something that you can understand, explain, and maneuver. The conversation reminded me of a post I rea...

Unambiguous Webpack config with Typescript

Posted on June 19th, 2017

You can write your Webpack config in Typescript, and it’ll save you a huge amount of pain. Webpack’s docs would lead you to believe that using Typescript requires a hacky customized set up, but in fact it’s as simple as installing a single module and changing your extensions from .js to .ts! You can find the rest of the post at the Webpack blog.