~/devreads

Kevin Burke

https://kev.inburke.com/ · 110 posts · history since 2012 · active

12 Feb

kevin 1 min read

I read this and then had trouble finding it for a year, I'm writing about it so I have a way to find it... The proposal here is so obviously correct that it's shocking it doesn't come up more often when people discuss the NBA Draft... basically the idea is that you assign a high […]

todays world

30 Oct 2025

kevin 10 min read

*This post originally appeared on Shyp's engineering blog in July 2015. It has since been deleted. It is reproduced as closely as possible here. The original is accessible on the Wayback Machine. Eight months ago when I ran our core API tests at Shyp, it took 100 seconds from starting the test to seeing output […]

todays world

29 Oct 2025

kevin 3 min read

Most browsers have the ability to launch different browser profiles. Each profile can come with a different theme and a different set of website logins (cookies, application state, etc). This can be helpful if you want to segregate browsing behavior. For example, I have different browser profiles set up for my personal email, my "consulting" […]

code

25 May 2025

kevin 1 min read

One of the first ever Redis libraries for Go was hosted at github.com/garyburd/redigo. It has been deprecated for some time and has now been finally removed altogether from Github. If you still have a dependency on this project, this means that will be broken now. github.com/gomodule/redigo should be a drop-in replacement for github.com/garyburd/redigo. If you […]

codetodays world

28 Feb 2025

7 Feb 2025

kevin 8 min read

Most PG&E ratepayers don't understand how much higher the rates they pay are than what it actually costs PG&E to generate and transmit the electricity to their house. When I looked into this recently I was shocked. The average PG&E electricity charge now starts at 40 cents per kilowatt hour and goes up from there. […]

policy

23 Aug 2022

kevin 4 min read

Every day we learn more about the importance of good air quality. Here are some tips to help you improve air quality inside your house. How to Measure First, you are going to want to be able to measure air quality in your house. There are a few different things you want to measure: PM2.5 […]

educationpollution

6 Jun 2022

kevin 2 min read

The San Francisco Chronicle charges for subscriptions. How much does a subscription cost? This is an impossible question to answer, even for current subscribers. The Chronicle advertises several different prices for new subscribers. The only public information the Chronicle shares about its permanent subscription rates raises more questions than answers. No one at the Chronicle […]

news

16 May 2022

kevin 1 min read

I have a sweet tooth and one candy I really enjoy is Strawberry Sour Punch. Unfortunately after twenty years of having the same formula it seems that the company has decided to change the formula for Sour Punch. The new candy has more of a cherry flavor and isn't as sour. It does not taste […]

todays world

2 May 2022

kevin 1 min read

On Sunday morning at 1am I had a lot of stomach pain. I am a One Medical customer, had heard that they offered urgent care, and so I searched on their website for information. Unfortunately their urgent care option does not show up in the list of care options on their website: I concluded that […]

todays world

10 Jan 2022

kevin 4 min read

Update: Everything in this article about Davis is also currently true in the following cities: Redondo Beach Beverly Hills Manhattan Beach South Pasadena Santa Monica Anaheim Oxnard To get a full list, visit the HCD website, click "Compliance Report," and filter for "Compliance Status" => "OUT". I would also guess that San Francisco will make […]

housing

6 Dec 2021

kevin 8 min read

I fail phone screens pretty often, which limits my job prospects and is embarrassing for someone with ten years of industry experience, a pretty extensive Github account and a publicly available list of difference-making projects. 1 In theory a phone screen is supposed to evaluate whether a) this person would be good at the job […]

todays world

11 Oct 2021

kevin 3 min read

Many companies break up their internal environments into different realms. A typical setup might look like: The prod realm is where production servers live. The dev or stage realm is a live testing environment, where code gets deployed before it goes into production, or long-running features are tested. The local realm is for code that's […]

todays world

1 Oct 2021

kevin 8 min read

Here are some of the different strategies you can use to write tests that read or write data from a database, and the benefits and drawbacks of each. I'm usually writing Go code, so the examples here are for Go, but the notes should generalize to any language that runs tests against Postgres, MySQL, or […]

todays world

4 Aug 2021

kevin 2 min read

When you sign up for Datadog, you are immediately asked to choose whether you want to have your data stored in US1, US3, or Europe. This is an odd UI decision because Datadog provides no other information about US1 and US3, for example, where they are located or how old the infrastructure is in each […]

codeconsulting

21 Jul 2021

kevin 4 min read

Allen Weisselberg, the chief financial officer of the Trump Organization, recently got indicted by the New York DA for fifteen counts of tax fraud. The charges say they said he didn't report benefits as taxes. If your company pays you a $100,000 per year cash salary, you will owe a chunk of that to the […]

housing

5 Jun 2021

kevin 2 min read

We live on a street that's about 29 feet wide. There are parked cars on either side that take up about 7 feet each, which leaves 15 feet in the middle of the street for through traffic. There are hundreds or thousands of streets like this in San Francisco; here's a screenshot of one at […]

opinionpedestrian safety

29 Mar 2021

kevin 3 min read

When you get an offer from a tech company it will usually be some combination of cash and stock. Small companies give out stock because it's hard to compete, cash-wise, with bigger companies, and a grant of stock or options offers the chance at a large payday down the road. Valuing the cash part of […]

silicon valley

29 Jan 2021

kevin 2 min read

It is difficult for children, especially young children, to learn over Zoom. It is more difficult to teach critical skills like learning to read and write over Zoom. As Heather Knight and others have noted, keeping children isolated has severe impacts on their mental health. It is the Mayor's top priority to get children back […]

todays world

19 Jan 2021

kevin 2 min read

In very rare cases, the Pfizer and Moderna vaccines will cause the person being vaccinated to have an allergic reaction. When I say very rare, I mean it; the chances are a few in a million, or about the same of picking a specific resident of Newark, New Jersey at random out of the phone […]

todays world

15 Sept 2020

kevin 1 min read

Edit: If you are in a desperate situation, or getting rejected multiple days, please call your State Assemblymember. Staffers in the Legislature have access to additional resources and can help you get the assistance you need from EDD. The California EDD Paid Family Leave phone tree is like a choose your own adventure book, where […]

todays world

9 Sept 2020

kevin 6 min read

Sometimes people choose to work for one company over another for reasons related to the work environment, for example what the company does, and whether the other employees create a place that's pleasant to work at. But a major factor is compensation. If Company A and Company B are largely comparable, but Company A offers […]

opinionsilicon valley

4 Sept 2020

kevin 10 min read

I finally got my home network in a place where I am happy with it. I wanted to share my setup and what I learned about it. There has never been a better time to set up a great home network; there are several new tools that have made this easier and better than in […]

codeeducation

23 Aug 2020

kevin 1 min read

Generally if you name a food or drink, people know whether they like it or not. It is rare for someone to drink a merlot, or try pizza from a new restaurant — toasted bread, melted cheese, tomato sauce and toppings - and be wildly surprised at their reaction to the taste. I can't quite […]

todays world

9 May 2020

kevin 3 min read

Let's revisit one of the most humiliating (and expensive) moments of my life. It happened a decade ago and even today I cringe and seethe when I think about it. I was one of 25 finalists for a $20,000 scholarship in my junior year of college. The last step was an hour long interview with […]

claremont mckennatechnology

1 Jul 2019

kevin 2 min read

For a company trying to sell and explain a product, a lot of this information was amazingly difficult to find so I wrote this. For the rest of this we'll assume you're cooking a steak but the same advice applies to most other meats/cuts. Why Do You Want A Torch to Sear Meat To get […]

todays world

12 Mar 2019

kevin 1 min read

The phone number for the SFMTA Temporary Sign Office is very difficult to find. The SFMTA Temporary Sign web page directs you to 311. 311 does not know the right procedures for the Temporary Sign Office. The email address on the website is also slow to get back to requests. The Temporary Sign department address […]

tips and tricksusability

kevin 1 min read

Say you have a Aurora RDS PostgreSQL database that you want to use as the source database for Amazon Database Manager Service. The documentation is unclear on this point so here you go: you can't use an Aurora RDS PostgreSQL database as the source database because Aurora doesn't support the concept of replication slots, which […]

code

17 Feb 2019

kevin 7 min read

Three years ago I quit my job and started consulting full time. It's worked out really well. I get to spend more time doing things I like to do and I've been able to deliver great products for clients. I wanted to go over some tips for starting a successful consulting business. Charge more - […]

code

7 Oct 2018

kevin 4 min read

Belmont is evaluating pedestrian and bike improvements to Ralston Avenue. These improvements build on the Pedestrian and Bicycle Master Plan. There is pretty good cycle access all the way from the eastern tip of Foster City to the Belmont Caltrain station. However, the cycling access from the Caltrain station to Safeway, NDNU or Carlmont Village […]

todays world

25 Sept 2018

13 Sept 2018

kevin 1 min read

Previously I wrote about pedestrian/bike improvements for the east side of 101. There's now a proposal for the east side exit of 101, shown in this slide at a recent Caltrain board meeting. It's not ideal to have pedestrians and cyclists on the north side of East Grand for two reasons: ped/bike crossings will hold […]

caltrain

11 Sept 2018

kevin 5 min read

It's Rail Safety Month and last month at the Caltrain CAC we got a presentation on suicides on the Caltrain line. I've added some key papers that study railway suicide to this Github repository. At a high level, they show: There are several factors that predict suicide incidence. There are several factors that have been […]

caltrain

2 Sept 2018

kevin 4 min read

For the past month or so I've been commuting to a biotech office east of 101 in South San Francisco. I've gotten a little depressed about how car-centric the infrastructure is and I wanted to share some small wins that could improve the bike and pedestrian experience. Why bother? Well, the roads get really full […]

caltrainmobility

20 Jul 2018

kevin 2 min read

Last week I wrote about how AWS ALB's do not validate TLS certificates from internal services. Colm MacCárthaigh, the lead engineer for Amazon ELB, writes: I’m the main author of Amazon s2n, our Open Source implementation of TLS/SSL, and a contributor to the TLS/SSL standards. Hopefully I’m qualified to chime in! You’re right that ALB […]

code

10 Jul 2018

kevin 2 min read

If you are using an Amazon Application Load Balancer, and forwarding traffic to internal services using HTTPS, the ALB will not validate the certificate presented by the internal service before forwarding the traffic. So we're clear here, let's say you are running a web server on Amazon ECS. The webserver is configured to present TLS […]

codetodays world

6 Jul 2018

kevin 1 min read

Twelve days before Christmas 2017, Otto LLC, a company that wanted to produce smart locks, shut down with little notice. Employees were given no severance and contractors were left with tens or hundreds of thousands of dollars in unpaid invoices. This incident was widely covered in the press, and one board member has since quit […]

todays world

23 May 2018

kevin 2 min read

Belmont is finalizing plans to build affordable housing on two parcels it owns across from the Caltrain station along El Camino Real. The proposal from the developer, LINC Housing, would construct around 20 large-family affordable units (2 and 3 bedrooms) and 20 senior housing units (one bedroom). Belmont reduced the parking requirements for new construction […]

todays world

9 May 2018

kevin 4 min read

There's a pretty famous software engineering slide called "Latency Numbers Every Programmer Should Know." I thought I would write an equivalent for housing construction, since a lot of these statistics can be hard to estimate. The goal is to make it easy to do a ballpark estimate of the impacts of a particular proposal. For […]

housing

26 Apr 2018

kevin 3 min read

Want to know how to get rough profiling of any tool written in any language, whether you control the source or not? Keep reading. For example, here's the output you get when you compile Go from source code. Each of these lines prints out a few seconds apart. How would you go about getting timings […]

code

27 Mar 2018

kevin 2 min read

In the middle of a housing crisis, cities up and down the Peninsula are moving forward with plans to add a ton of new office space and no new housing. These plans will add many more new commuters, without any corresponding housing for them. Last year the Apple Park launched in Cupertino. 2.8 million sq […]

todays world

20 Mar 2018

kevin 4 min read

Writing middleware in Go seems pretty easy at first, but there are several easy ways to trip up. Let's walk through some examples. Reading the Request All of the middlewares in our examples will accept an http.Handler as an argument, and return an http.Handler. This makes it easy to chain middlewares. The basic pattern for […]

todays world

16 Feb 2018

kevin 2 min read

On Tuesday, the SF Board of Supervisors moved to study whether a Mission laundromat is a historic resource, delaying 75 units of housing by 5 months. We wanted to look back at famous laundromats of history. Garden of Eden, 6000 BC Eating the forbidden fruit without any napkins makes quite a mess. Adam and Eve […]

satire

4 Nov 2017

kevin 4 min read

It's a common, and distressing, pattern to have factories in tests that call out to a library like Faker to "randomize" the returned object. So you might see something like this: User.create({ id: uuid(), email: faker.random.email(), first_name: faker.random.firstName(), last_name: faker.random.lastName(), address: faker.random.address(), }); package = Package.create({ width: faker.math.range(100), height: faker.math.range(200), length: faker.math.range(300), }) This is […]

code

23 Oct 2017

kevin 4 min read

There are a number of Unix commands that manipulate something about the environment or arguments in some way before starting a subcommand. For example: xargs reads arguments from standard input and appends them to the end of the command. chpst changes the process state before calling the resulting command. envdir manipulates the process environment, loading […]

code

22 Oct 2017

kevin 3 min read

Bazel is a build system that was recently open sourced by Google. Bazel operates on configuration files - a WORKSPACE file for your entire project, and then per-directory BUILD.bazel files. These declare all of the dependencies for your project, using a language called Skylark. There are a number of Skylark rules for things like downloading […]

code

16 Oct 2017

kevin 3 min read

It's easier than you think to make a software package installable via Homebrew. If you depend on a very specific version of a software package (say, Postgres 9.5.3 with readline support), I highly recommend creating a Homebrew repository and publishing recipes to it. Then your team can install and update packages as easily as: brew […]

code

10 Oct 2017

kevin 3 min read

When you navigate to your project in CircleCI's UI, Javascript from eight different analytics companies gets loaded and executed in your browser. Pusher Intercom Launch Darkly Amplitude Appcues Quora (??) elev.io Optimizely You can see this in my Network tab here: This is a problem because the CircleCI browser context has full access to the […]

codesecurity

1 Sept 2017

kevin 5 min read

Node string encoding is all over the place. Let's try to straighten out how it works. First, some very basics about string encoding. A string is a series of bytes. A byte is 8 bits, each of which can be 0 or 1, so a byte can have 28 or 256 different values. Encoding is […]

code

8 May 2017

kevin 6 min read

You might have heard that you shouldn't be using JWT. That advice is correct - you really shouldn't use it. In general, specifications that allow the attacker to choose the algorithm for negotiation have more problems than ones that don't (see TLS). N libraries need to implement M different encryption and decryption algorithms, and an […]

codedesign

10 Apr 2017

kevin 5 min read

You should write your next web server in Go. Yes, you! Compared with Ruby, PHP, Python, or Javascript, you're going to get great memory and latency performance, and libraries that do what you expect. The standard library can be a bit lacking though, if you are used to developing with a tool like Rails. I […]

code

30 Mar 2017

kevin 16 min read

Do you work in the tech industry in the Bay Area? You should start learning about, and getting involved in, local housing politics. The prognosis for housing and rent prices is bad, and things are likely going to get worse for tech workers in the Bay, unless we start taking action. I will explain why […]

economicstodays world

3 Jan 2017

kevin 4 min read

You may have seen this on New Year's Eve: Another leap second, another slew of outages. Handling time correctly is hard!https://t.co/kJepOfsKkv pic.twitter.com/Fwz2Xtpzkd— Dan Luu (@danluu) January 1, 2017 I'd heard a little about this problem, but I didn't understand how it broke code, and what to do about it. So here is an explainer. Background […]

code

15 Dec 2016

kevin 7 min read

The next president of the United States showed a willingness to violate historical norms while campaigning, and there's little evidence that he has any moral compass - the examples of this are legion, one of the worst is him cutting off medical treatment to his sick nephew over a legal dispute. His kids are going […]

todays world

27 Nov 2016

kevin 4 min read

A while ago my friend Alan and I were discussing configuration management. In particular we wondered why every configuration management tool has to ship a DSL, or be loaded from YAML files. We wondered if it would be possible to just write code that deploys servers — it might let you describe what you want […]

code

7 Nov 2016

kevin 6 min read

For the past few weeks I've been working on Logrole, a Twilio log viewer. If you have to browse through your Twilio logs, I think this is the way that you should do it. We were able to do some things around performance and resource conservation that have been difficult to accomplish with today's popular […]

codedesign

24 Oct 2016

kevin 8 min read

This is Part 2 of my voter guide. Part 1 covers the 24 San Francisco ballot propositions and city supervisor races. The deadline to register to vote in California is October 24. I highly recommend you sign up. Click here to register to vote. A few notes I cover in more detail in Part 1: […]

todays world

16 Oct 2016

kevin 9 min read

I think this is useful and the ballot's complicated so I wanted to share how I'm voting this year. I used several sources to compile this guide: The SF Chronicle's endorsements - they follow these issues every day. The ballot book mailed to every voter, especially the text of the law and the main pro/con […]

todays world

3 Sept 2016

kevin 4 min read

I have seen a few databases recently that could have saved a lot of space by being more efficient with how they stored data. Sometimes this isn't a big problem, when a table is not going to grow particularly quickly. But it can become a big problem and you can be leaving a lot of […]

code

2 Aug 2016

kevin 4 min read

For the past few weeks I've been on the hunt for a configuration file format with the following three properties: You can use a library to parse the configuration. Most configuration formats allow for this, though some (nginx, haproxy, vim) aren't so easy. You can manipulate the keys and values, using the same library. When […]

todays world

3 Jul 2016

kevin 9 min read

I've been following the commits to the Go project for some time now. Occasionally someone will post a commit with benchmarks showing how much the commit improves performance along some axis or another. In this commit, they've increased the performance of division by 7 (a notoriously tricky number to divide by) by about 40% on […]

code

16 Jun 2016

kevin 3 min read

I have a lot of tests in Go that integrate with Postgres, and test the interactions between Go models and the database. A lot of these tests can run in parallel. For example, any test that attempts to write a record, but fails with a constraint failure, can run in parallel with all other tests. […]

codetodays world

7 Jun 2016

kevin 2 min read

Recently I put the maximum amount of cash into my IRA account. Since stock prices jump up and down all the time, I wondered whether the current price would be the best one to buy the stock at. In particular, I'm not withdrawing money from my IRA for the better part of 40 years, so […]

code

27 May 2016

kevin 3 min read

(I'm omitting the many, many, astroturf posts - "Why X is Better than Twilio", "Why I'm Ditching Twilio for X" - and comments from employees at competitors between 2010 and 2014.) Twilio Raises $12m Series B "Can something like Twilio really become a $100m+ company? I hope so but my ignorance blinkers me to how […]

todays world

26 May 2016

kevin 5 min read

This is the story about an error that caused our tests to fail maybe one out of one hundred builds. Recently we figured out why this happened and deployed code to fix it. The Problem I've been fighting slow test times in Javascript and Sails since pretty much the day I started at Shyp. We […]

code

3 May 2016

kevin 5 min read

I was hired in December 2014 as the sixth engineer at Shyp. Shyp runs Node.js on the server. It's been a pretty frustrating journey, and I wanted to share some of the experiences we've had. There are no hot takes about the learning curve, or "why are there so many frameworks" in this post. Initially […]

codedesign

7 Apr 2016

kevin 6 min read

Often the best way to learn a new language is to implement something you know with it. Let’s take a look at some common async Javascript patterns, and how you’d implement them in Go. Callbacks You can certainly implement callbacks in Go! Functions are first class citizens. Here we make a HTTP request and hit […]

code

3 Apr 2016

kevin 2 min read

You may have seen the TSA Randomizer on your last flight. A TSA agent holds an iPad. The agent taps the iPad, a large arrow points right or left, and you follow it into a given lane. How much does the TSA pay for an app that a beginner could build in a day? It […]

todays world

18 Feb 2016

kevin 2 min read

DEAR SIR, I HAVE THE BELIEVE YOU ARE A REPUTABLE AND RESPONSIBLE AND TRUSTWORTHY PERSON I CAN DO BUSINESS WITH FROM THE LITTLE INFORMATION SO FAR I GATHERED ABOUT YOU DURING MY SEARCH FOR A PARTNER AND BY MATTER OF TRUST I MUST NOT HESITATE TO CONFIDE IN YOU FOR THIS SIMPLE AND SINCERE BUSINESS. […]

todays world

12 Feb 2016

kevin 2 min read

This is a pretty common task: encode JSON and send it to a server, decode JSON on the server, and vice versa. Amazingly, the existing resources on how to do this aren't very clear. So let's walk through each case, for the following simple User object: type User struct{ Id string Balance uint64 } Sending […]

code

9 Feb 2016

kevin 2 min read

You might want/need to check out repos locally as several different Github users. For example, my Github account is kevinburke, but I push code at work as kevinburkeshyp. If I could only commit/push as one of those users on each machine, or I had to manually specify the SSH key to use, it would be […]

code

14 Jan 2016

kevin 3 min read

Recently there's been a trend in API's to return more than one error, or to always return an array of errors, to the client, when there's a 400 or a 500 server error. From the JSON API specification: Error objects MUST be returned as an array keyed by errors in the top level of a […]

codedesign

27 Dec 2015

kevin 5 min read

This past week the team at Shyp decided to fork the framework we use (Sails.js) and the ORM it uses (Waterline). It was an interesting exercise in JS tooling, and I wasted a lot of time on busywork, so I thought I'd share a little bit about the process. Why Fork? We've been on an […]

code

18 Nov 2015

kevin 5 min read

Do you have objects in your system that can be in different states (accounts, invoices, messages, employees)? Do you have code that updates these objects from one state to another? If so, you probably want a state machine. What is a state machine? At its root, a state machine defines the legal transitions between states […]

code

13 Oct 2015

kevin 9 min read

Adrian Colyer wrote a great summary of a recent paper by Peter Bailis et al. In the paper the database researchers examine open source Rails applications and observe that the applications apply constraints - foreign key references, uniqueness constraints - in a way that's not very performant or correct. I was pretty surprised to read […]

codeefficiency

26 Sept 2015

kevin 5 min read

There's a distressing feeling in the Node.js community that apps without up-to-date dependencies are somehow not as good, or stable, as apps that always keep their dependencies up to date. So we see things like greenkeeper.io and badges that show whether the project's dependencies are up to date (and, implicitly, shame anyone whose dependencies aren't […]

code

23 Sept 2015

kevin 2 min read

To try and avoid having interview candidate start every interview with the same "tell me your background" boilerplate, we get every interviewer in the room with the candidate at the beginning of the interview for a few minutes, so everyone can introduce themselves and the candidate can walk through their background. Recently we had a […]

improvement

6 Sept 2015

kevin 7 min read

The Shyp API currently runs on top of the Sails JS framework. It's an extremely popular framework - the project has over 11,000 stars on Github, and it's one of the top 100 most popular projects on the site. However, we've had a very poor experience with it, and with Waterline, the ORM that runs […]

codedesignusability

31 Aug 2015

kevin 5 min read

Okay! You had an idea for how to improve the project, the maintainers indicated they'd approve it, you checked out a new branch, made some changes, and you are ready to submit it for review. Here are some tips for submitting a changeset that's more likely to pass through code review quickly, and make it […]

codedesignimprovement

25 Aug 2015

kevin 1 min read

Our test suite has been failing maybe 2% of the time with a pretty opaque error message. I thought the database logs would have more information about the failure so I figured out how to turn them on with Circle. Add the following to the database section of your circle.yml: database: override: - sudo sed […]

code

19 May 2015

20 Apr 2015

kevin 6 min read

Our test environment takes 6-9 seconds to load before any tests get run. I tire of this during the ~30 times I run the test suite a day,1 so I wanted to make it faster. For better or worse, the API runs on Sails.js. Before running model/controller tests, a bootstrap file in our tests calls […]

codeusability

9 Apr 2015

kevin 2 min read

Reddit and Duck Duck Go recently announced that they are eliminating salary negotiations, in part to help even the playing field for men and women, since men are more likely to negotiate salaries than women. Men negotiate harder than women do and sometimes women get penalized when they do negotiate. So as part of our […]

opinion

1 Dec 2014

kevin 2 min read

"Invalid Username or Password": a useless security measure Login attempts fail because computer users can't remember their email or didn't input the right password. Most websites on the Internet won't tell you which one is actually incorrect. Amazon: Shoprunner: Hacker News: If you tell an attacker the email address is wrong, they'll try a different […]

usability

29 Nov 2014

kevin 3 min read

Recently I had a very weird problem with iTerm where new login shells were being created with environment variables already present. Restarting my machine made the issue go away, and I wasn't able to reproduce it again. But I got curious about how long ZSH spends in various parts of the startup process. A new […]

code

4 Sept 2014

kevin 3 min read

I read Ready Player One recently and I enjoyed it; it was a pretty fast read and I finished it in a day. It presents a view of the future where the possibilities allowed by a virtual reality world surpass those of the real world, so most people spend as much time as possible connected […]

todays world

1 Aug 2014

kevin 7 min read

I used to play a ton of Roller Coaster Tycoon when I was a kid. I loved the game but I was never very good at making the roller coasters. They always felt too spread out, or too unnatural looking. As a ten year old I idly wondered about writing a computer program that was […]

codetodays world

30 Jul 2014

kevin 1 min read

You should sign up for a VPN service! Yes you, the casual Internet browser. Here is why. Any time you connect from your laptop/phone to a wireless network (SFO Wifi, Starbucks, etc), anyone else on that network can read all of your traffic over HTTP, to sites like Wikipedia, Netflix, YouTube, WebMD and more. This […]

security

26 Jul 2014

kevin 4 min read

I'm setting up a new website, which gave me an excuse to try out Nix, the stateless package manager, and Docker, the tool that lets you run all of your apps in light-weight containers on a host. Nix may be a great tool, and help you avoid the possibility of moving parts in your builds, […]

usability

24 Jul 2014

kevin 3 min read

I read a great blog post in college, and sadly I can't find it now, so I'll summarize. It showed a picture of Hearst Castle, and a photo of an average middle-class home, and the text of the post went something like: One of these can travel across the country in 6 hours. One of […]

todays world

22 Jul 2014

kevin 5 min read

You have photos on your computer. You would probably be really sad if you lost them. Let's discuss some strategies for ensuring that doesn't happen. What you are doing now is probably not enough. Your current strategy is to have photos and critical files stored on your most current laptop and maybe some things in […]

code

kevin 1 min read

You kick off a long running job - maybe a data migration script that operates on a large data set, or you're copying a large file from one disk to another, or from the Internet to your local computer. Then a few minutes in, you realize the job is going to take longer than you […]

code

4 Jun 2014

kevin 1 min read

It's important to recognize the people that have contributed to your project, but it can be annoying to keep your project's AUTHORS file up to date, and annoying to ask everyone to add themselves in the correct format. So I did what any good engineer should do, and automated the process! I added a simple […]

code

21 Apr 2014

kevin 2 min read

The Heartbleed bug was really bad for OpenSSL - it let you ask a server a simple question like "How are you" and then have the server tell you anything it wants (password data, private keys that could be used to decrypt all traffic), and the server would have no idea it was happening. A […]

codeeconomics

15 Apr 2014

kevin 2 min read

The open source community was shocked to learn Tuesday that millions of lines of source code had gone missing from Github.com, a popular online version control website. Github stores source code in "reposotories", which are big chunks of code that can be edited by Github members. Most version control websites will keep a small portion […]

satire

14 Apr 2014

kevin 1 min read

On a Friday in April, the lines for Space Mountain and Thunder Valley did not exceed 10 minutes all day. Astro Blasters twice had 4 people in line. The price is $60, which is ~$30 cheaper than Anaheim. It was about 80 degrees during the day and 70 at night. Also when you exit Disneyland […]

travel

24 Mar 2014

kevin 3 min read

"Build software like a tank." I am not sure where I read this, but I think about it a lot, especially when writing HTTP clients. Tanks are incredible machines - they are designed to move rapidly and protect their inhabitants in any kind of terrain, against enemy gunfire, or worse. HTTP clients often run in […]

codedesign

29 Dec 2013

kevin 2 min read

This will be short, but it seems there's some difficulty doing this, so I thought I'd share. The gist is, any time you reference a class or method in your own library, in the Python standard library, or in another third-party extension, you can provide a link directly to that project's documentation. This is pretty […]

codeusability

20 Oct 2013

kevin 1 min read

Over on the Twilio Engineering Blog, I have a new post about optimizing your HAProxy configuration. I wrote this mostly because we had some confusion in our configuration about setting options, and if I had it I figured others would as well. Here's a sample: When I said a 30 second connect timeout meant HAProxy […]

code

18 Aug 2013

kevin 2 min read

Recently I've fallen in love with the IPython Notebook. It's the Python REPL on steroids and I've probably just scratched the surface of what it can actually do. This will be a short post because long posts make me feel pain when I think about blogging more again. This is also really more about setting […]

code

13 Aug 2013

kevin 3 min read

Yesterday I sped up our unit/integration test runs from 16 minutes to 3 minutes. I thought I'd share the techniques I used during this process. We had a hunch that an un-mocked network call was taking 3 seconds to time out. I patched this call throughout the test code base. It turns out this did […]

codeimprovement

1 Jun 2013

kevin 3 min read

I really enjoyed Sam Saffron's post about eliminating trivial inconveniences in his development process. This resonated with me as I tend to get really distracted by minor hiccups in the development process (page reload taking >2 seconds, switch to a new tab, etc). I took a look at my development process and found a few […]

codeimprovement

28 Mar 2013

kevin 2 min read

This American Life is an excellent podcast, but occasionally puts out episodes on subjects I don't care for - fiction, reminisces about home life, etc. There is one heuristic you should use for filtering American Life podcasts: listen to the podcasts they release that tell one story for the whole hour. Example whole-hour podcasts, that […]

economicshideimprovement

15 Mar 2013

kevin 3 min read

Email from my alma mater: Dear Members of the Claremont McKenna College Community, I am writing to update you on an important action taken by the Board of Trustees at its meeting on March 9, 2013. In particular, the Board acted to end the College’s “No Packaged Loan” financial aid policy. Beginning with the fall […]

hidetodays world

17 Feb 2013

kevin 3 min read

Do you write forms on the Internet? Are you planning to send them to your server with Javascript? You should read this. The One-Sentence Summary It's okay to submit forms with Javascript. Just don't break the internet. What Do You Mean, Break the Internet? Your browser is an advanced piece of software that functions in […]

codeusability

12 Feb 2013

kevin 3 min read

If you've ever tried to teach someone HTML, you know how hard it is to get the syntax right. It's a perfect storm of awfulness. Newbies have to learn all of the syntax, in addition to the names of HTML elements. They don't have the pattern matching skills (yet) to notice when their XML is […]

codeimprovementusability

10 Feb 2013

kevin 3 min read

How should you design the controls for a shower? Let's take a quick look. Affordance A device should make clear by its design how to use it. Take a hammer for example. No one has ever looked at a hammer and wondered which end you are supposed to grab and which part you're supposed to […]

designusability

29 Jan 2013

kevin 6 min read

I've worked with Twilio's client libraries pretty much every day for the last year and I wanted to share some of the things we've learned about helper libraries. Should you have helper libraries? You should think about helper libraries as a more accessible interface to your API. Your helper libraries trade the details of your […]

codeusability

8 Nov 2012

kevin 4 min read

Last week two other Twilio engineers and I went to the Columbia engineering career fair. We had a great time and talked to a lot of really smart people. However I was surprised at some of the naive mistakes students made when we were talking. We're there to try to hire students and students are […]

improvement

26 Sept 2012

kevin 1 min read

The New York Times has a big new feature up explaining why data centers at Google, Facebook etc. waste tons of electricity. Diego Doval, a former CTO at a popular startup, skewers the NYT with a 5,000 word critique of the factual inaccuracies in the post. Doval is right on with his critique, but there's […]

opinion