Switching Costs in Software Development
The story of why it is important to make sure that it is easy to switch from one service to another.
The story of why it is important to make sure that it is easy to switch from one service to another.
This is the story of how we assessed and refactored two video players into one, cut the player code each product maintained by up to 94%, and swapped to the new player without disruption to any users.
You find the latest version of my book at the usual place at This now contains all the material that I plan to put into it. New are “experience” parts about performance, function-like m…
C++ has changed a lot in recent years. The last two revisions, C++11 and C++14, introduce so many new features that, in the words of Bjarne Stroustrup, “It feels like a new …
We introduced Cockroach Labs last June with a simple yet ambitious mission: Make Data Easy. We are now thrilled to launch CockroachDB beta.
V8 v5.4 comes with performance improvements and reduced memory consumption.
At Build 2016 we announced the Desktop App Converter, enabling developers to bring their existing desktop apps and games over to the Universal Windows Platform (UWP) and then extend it with UWP functionality. With this, we’ve enabled the path to migrate an app or game to all Windows 10 devices over time – including…
A simple Makefile for C or C++ that automatically finds sources, determines include flags, and sets up header dependencies.
A while back I decided to try to write a Game Boy emulator in Common Lisp based on this series of articles . I made some good progress but eventually got bogged down because I was trying to learn a bunch of complex new things at once:
Today, we’re pleased to announce that the next release of the Cygwin library (version 2.5.2) will be available under the GNU Lesser General Public License (LGPL) version 3. The Cygwin library is the core of the Cygwin project, which includes a distribution of the popular GNU tools and other open source tools designed…
PEP 492 and PEP 525 introduce support for native coroutines and asynchronous generators using async / await syntax. This PEP proposes to add asynchronous versions of list, set, dict comprehensions and generator expressions.
URLs have been used for decades now and you'd would think they would have consistent behavior…
From now on, I won’t be building any more native apps. All my apps going forward will be progressive web apps. Progressive web apps are web…
For the past 2 years, ~90% of my coding time has been spent working on a large scale Backbone.js app. In February 2014, the Backbone community was in a fairly good place. The core library had reached 1.0 the previous year and had a strong team around it. Marionette had emerged as a de-facto standard for web…
Quick, what’s the difference between these two C/C++ definitions of initialized local variables? char buffer[32] = { 0 };char buffer[32] = {}; One difference is that the first is legal in C a…
C++ provides two calling syntaxes, x.f(y) and f(x,y). This has bothered me for a long time. I discussed the problem in the context of multimethods in D&E in 1994, referring back to a proposal by Doug Lea from 1991, and again in 2007. Each of the syntaxes has its virtues, but they force design decisions on people…
Explore technical topics, solutions, and resources for building with Twilio – and beyond.
The pros and cons of both Emacs and WebStorm for Node.js development.
This is the first article in a series dedicated to multiple dispatch - an advanced abstraction technique available to programmers out-of-the-box in some languages, and implementable in others. This first post in the series presents the technique and explains the problem it intends to solve. It uses C++ as the…
In this post I’d like to test limits of python aiohttp and check its performance in terms of requests per minute. Everyone knows that asynchronous code perf...