Getting around in a wheelchair must be very frustrating

In 15 things I’ve Learned in 1500 Miles of Stroller Running, Evan Roberts notes:

A lot of our city must be awful to navigate in a wheelchair or with other mobility impairments, and especially in winter.

I don't have any experience with stroller running, but I can attest that if you spend 10 minutes pushing a stroller around your city, you'll quickly realize how hard and frustrating it must be to get around in a wheelchair. Fixing all those curbs would make a great public works project.

— January 7, 2016

Functional programming semantics

This bit from Federico Carrone's interview with Jesper Louis Andersen is insightful:

You tweeted:

Functional programming semantics are far more important than static typing for removing errors from programs.

Why? Could you elaborate?

I’ve somewhat alluded to this before, but never in more than 140 characters. In an imperative program a function depends on two things: the parameters it is passed and also the current state of the machine store. In a functional language, only the former matters. The consequence of this choice if far reaching:

One, the state space we have to reason about as human beings is far smaller for FP, which makes it harder to make a programming mistake. Two, we can test functions in isolation and be rather confident we have covered the functions execution well. Three, data processing is inductive in nature, recursing over the structure of data rather than manipulating the store from afar. The programming is closer to a proof by induction, which force the programmer to handle corner cases rigorously.

The ease of reasoning also comes into play once you have found a bug. It is often easier to figure out what the program is doing wrong just by taking a close look. It is rare you need to attach a debugger, which you can’t in a concurrent and/or distributed system where some parts are outside of your direct control.

When you add typing to the above, you obtain another dimension where your system is (automatically) checked for additional rigor. But I often find people forget how much power there is to be had just by functional programming on its own, with no regard to types. From my own experience, functional programs tend to have an order of magnitude fewer errors than imperative counterpart programs, especially when these are subtle corner-case errors, types or not. Naturally, types + functional programming help even more. But had I the choice between imperative programming with types or functional without, I know what I’d pick without hesitation.

Writing pure functions makes code much easier to reason about, so I try to do it as much as possible even when not using a functional programming language. I often find myself wishing for static typing when modifying a big Ruby program, but as Andersen says, I'd rather use a dynamic functional language than a typed imperative language.

— December 28, 2015

What can a technologist do about climate change? A personal view.

Bret Victor wrote an incredible interactive essay about what technologists can do about climate change. I really appreciate the effort he put into this, because it is a topic that has been on my mind a lot lately. I think climate change is the defining challenge of our time. And I think I ought to be focusing more on what I can do about it.

— November 27, 2015

Charles Babbage, perfectionist engineer

I recently finished Sydney Padua's entertaining and educational The Thrilling Adventures of Lovelace and Babbage. Several of the stories are available online, but the book is well put together (not to mention much easier to read than the web version) and includes a bunch of integrated source materials and illustrated footnotes.

The Thrilling Adventures of Lovelace and Babbage

Babbage completing his Analytical Engine is one of history's great "what ifs", but is is perhaps more unfortunate that he didn't finish the Difference Engine. He had a working prototype of part of it, and we know that it would have worked, because two have been built. I had the good fortune to see one in action at the Computer History Museum several years ago, and watching it work was mesmerizing.

One of the primary documents included in The Thrilling Adventures of Lovelace and Babbage is part of a talk given by John Fletcher Moulton to honor Napier. Moulton recounts a visit he paid to Babbage, and contrasts Babbage's flightiness with Napier's ability to see his task to completion.

That which impresses me most deeply is [Napier's] tenacity of aim, combined with his receptivity of new ideas in attaining it. From first to last it was a Table of Logarithms of sines that he proposed to make, and he did not permit himself to be turned aside from that purpose till it was accomplished. His concepts evidently widened as he proceeded, and he must have been sorely tempted to turn from his comparatively restricted task to larger schemes. But he wisely resisted the temptation. He saw that he must create an actual table and give it to the world, or his task was imperformed. Would that other inventors had been equally wise! One of the sad memories of my life is a visit to the celebrated mathematician and inventor, Mr Babbage. He was far advanced in age, but his mind was still as vigorous as ever. He took me through his work-rooms. In the first room I saw the parts of the original Calculating Machine, which had been shown in an incomplete state many years before and had even been put to some use. I asked him about its present form. 'I have not finished it because in working at it I came on the idea of my Analytical Machine, which would do all that it was capable of doing and much more. Indeed, the idea was so much simpler that it would have taken more work to complete the Calculating Machine than to design and construct the other in its entirety, so I turned my attention to the Analytical Machine.' After a few minutes' talk we went into the next work- room, where he showed and explained to me the working of the elements of the Analytical Machine. I asked if I could see it. 'I have never completed it,' he said, 'because I hit upon an idea of doing the same thing by a different and far more effective method, and this rendered it useless to proceed on the old lines.' Then we went into the third room. There lay scattered bits of mechanism, but I saw no trace of any working machine. Very cautiously I approached the subject, and received the dreaded answer, 'It is not constructed yet, but I am working at it, and it will take less time to construct it altogether than it would have taken to complete the Analytical Machine from the stage in which I left it.' I took leave of the old man with a heavy heart.

As a programmer, this rings true to me, to the point of being painful. How many projects are left undone because something better came along? It's important to take a step back and recognize the value of finishing things.

— November 22, 2015


Thank you, Erik Wiffin for this contribution to software engineering.

— November 13, 2015

The Longterm Costs of Personal Projects

As one with more than his share of deceased personal and side projects, I read David Hamp-Gonsalves post about the long term maintenance costs of personal projects with interest.

Longterm projects are usually incur a small but on going cost. API’s change, PAAS’s deprecate old stacks, frameworks and libraries die / decay and domains need to be renewed.

When the idea is new and shiny, using a fun new platform and API seems cool (and maybe that was the whole point!) and of course it should have its own domain! But over time these things decay and the maintenance bill comes due. And your project dies.

This site is guilty of many of these. It's hosted on Google App Engine (seemed like a good idea at the time) and I recently had to re-write the web serving part of the application in order to get it running on a new version of App Engine. I've also had to migrate the data store due to changes with App Engine. It would probably have been better to use Jekyll (which I haven't switched to -- yet -- because I still want the ability to edit in my browser).

— November 3, 2015

Copenhagenize names Minneapolis one of top 20 bike cities worldwide

Mikael Colville-Andersen of Copenhagenize created a list of the top 20 bike cities world wide, and the only US city on the list is Minneapolis at number 18.

American cities—often content with baby steps—are in desperate need of leadership, and Minneapolis has emerged as a contender.

Colville-Anderson does call out Minneapolis, though, to stop bragging about how tough its riders are and start laying down some real infrastructure:

What will help the city is to stop talking about the winter and to focus on getting a massive rise in ridership during the rest of the year. Minneapolis would do well to increase its commitment to protected infrastructure and to focus on making the continent’s best on-street network, and the first city NOT to feature sharrows.

Hometown pride aside, I'm not sure I'd rank Minneapolis above Portland. They have different positive attributes, and a little friendly competition never hurt anyone. Just look at this sea of green in Portland!

But the Minneapolis Bicycle Master Plan is looking very nice. The bike infrastructure that has come online in the 3 years since I've been gone has been pretty awesome. Keep it coming, Minneapolis.

— October 30, 2015

The peon lounge

Silence is now offered as a luxury good. In the business-class lounge at Charles de Gaulle airport, what you hear is the occasional tinkling of a spoon against china. There are no advertisements on the walls, and no TVs. This silence, more than any other feature of the space, is what makes it feel genuinely luxurious. When you step inside and the automatic airtight doors whoosh shut behind you, the difference is nearly tactile, like slipping out of haircloth into satin. Your brow unfurrows itself, your neck muscles relax; after twenty minutes you no longer feel exhausted. The hassle lifts.

Outside the lounge is the usual airport cacophony. Because we have allowed our attention to be monetized, if you want yours back you're going to have to pay for it.

As the commons gets appropriated, one solution, for those who have the means, is to leave the commons for private clubs such as the business-class lounge. Consider that it is those in the business lounge who make the decisions that determine the character of the peon lounge and we may start to see these things in a political light. To engage in playful, inventive thinking, and possibly create wealth for oneself during those idle hours spent at an airport, requires silence. But other people's minds, over in the peon lounge (or at the bus stop) can be treated as a resource—a standing reserve of purchasing power to be steered according to innovative marketing ideas hatched by the "creatives" in the business lounge. When some people treat the minds of other people as a resource, this is not "creating wealth," it is a transfer.

— Matthew B. Crawford, The World Beyond Your Head

— October 30, 2015

Startup Stock Option Changes

Tech startup investor Joe Beninato proposes some changes to make startup equity more fair and valuable to employees:

  1. Cap table transparency for all
  2. Early exercise for early employees
  3. More than 90 days to exercise after departure
  4. Vesting schedule revisited

His suggestion for a back-dated vesting period instead of the standard four year equal vest with one year cliff is the most controversial. I would be willing to accept this in exchange for his other proposed reforms. Any company with an unorthodox stock option policy like these should promote them. It would be valuable in recruiting.

On a related note, Aaron Harris and Tikon Bernstam have both made similar calls for improving the equity compensation situation for employees.

— October 29, 2015

Four Road Diets

Urban planner Jeff Speck and 3D artist Spencer Boomhower collaborated to create this animation of four different road diets for typical street configurations. I think this type of visualization is useful to help people understand the impact of proposed traffic calming measures and could result in less opposition.

Jeff Speck: Four Road Diets from Cupola Media on Vimeo.

— October 29, 2015