Coffee Walks

When we’re abroad, Amy and I tend to explore new cities by walking… and then walking some more, until our feet are sore.

The trick is to figure out where to walk. We want to visit tourist highlights, of course, but we also like to get off the beaten path. One of our favorite ways to do this is by stringing together visits to the city’s best coffee shops. We’ve noticed that better caffeine tends to be located in less-touristed, more-intriguing neighborhoods.

We just got back from a short visit to Europe. Here are some of our favorite Parisian discoveries:

And in Barcelona:

If you’re nearby, give these great venues a shot!

Cyclides of Dupin

My undergraduate math professor, Tom Banchoff, always loved using Dupin’s cyclides as geometric examples. When I was a student, we used a software package called Fnord to visualize complex curves and surfaces like the cyclides.

Tom is retiring this year, so I thought it would be fun to revisit one of the “classic” Fnord demos. Below, you’ll see a simple striped cyclide rendered in much the same fashion as the original cyclide.fnorse. Like that demo, there’s a slider to manage rotation in the fourth dimension, around the XW-plane.

I’m always amazed by the march of technology. Work on Fnord began in 1990, before the web even existed. If Fnord were rebuilt today, the web would certainly be a natural (even phenomenal) fit.

XW: 0 π/2
Divisions: 21 61
view x: -π/2 π/2
view y: -π/2 π/2
view z: -π/2 π/2

The 2014 Indie Tech Summit

I’m looking forward to this weekend’s Indie Tech Summit in Brighton, UK; I can’t make it in person but I’ll be there in spirit.

Since the summit dovetails so nicely with my work on Cloak, I also wrote more about it on our security blog:

For many years, there’s been a growing consensus that digital privacy is an essential issue for our time, and a growing concern that, as a society, we are woefully far from an admirable state of affairs. Last year’s Snowden disclosures showed many of us just how deep the rabbit hole goes. More hopefully, Snowden’s disclosures also helped to focus and intensify efforts around the globe to set ourselves on a wiser path.

With that stage set, I think it’s worth watching Indie Tech impresario Aral Balkan’s recent talk, Free is a Lie. My reaction to Aral’s talk is complex: I’m not sure it chooses precisely the right targets, but it does provide an undeniably strong place to start the discussion.

Dear OS X Editor Gods (Again)

Five years ago, I wrote:

Deliver us from TextMate, vim, and emacs.

Some years ago, we would have followed TextMate to whatever end. Now, however, we see that TextMate was a false prophet.

History repeats, and nearly identically so. Sublime Text is the new false prophet. Sublime’s developer has been incommunicado for over a year; in frustration, the community started its own bugbase. Alas, those hundreds of bugs are likely to go unanswered.

Meanwhile: although vim and emacs remain mired in their archaic prehistory, they continue to see substantial improvement and adoption. TextMate 2, unfinished even five years later, shows signs of life on GitHub under the GPLv3. And Atom is a promising upstart, unprepared for the adult world but showing plenty of youthful zeal and sporting the MIT license to boot.

Serving Static Sites

I admit I had an ulterior motive for my static sites post: I’m heading towards a longer discussion of non-static, stateful sites. How we architect for statefulness has massive implications for the kinds of monolithic services we see on the web today (think Facebook) and the kinds of privacy-eroding policies most of these services employ to reach profitability.

Before I get there, a few of you asked how I generate and serve my own blog. So this post is a (very) quick side-bar on the topic.

My blog is generated by Jekyll. While there are countless static site generators out there, Jekyll feels like it has rightly earned its crown as the default choice for static site generation when your project has no specialized needs. Jekyll’s documentation is straightforward and complete and, with few exceptions, I’ve rarely had to do back flips to build the kind of sites I envision with the tools Jekyll hands me.

My blog is served using Amazon S3 and CloudFront1. I use an elegant gem called s3_website to get the job done; it does exactly what it says on the tin, reliably, and mercifully in accordance with its documentation. To use s3_website, create a simple YAML configuration that specifies your S3 bucket, AWS credentials, and (optionally) CloudFront endpoint. Invoke s3_website apply to turn your YAML configuration into AWS reality. After this, your site is ready to serve content. Simply run jekyll build to generate your static content and s3_website push to deploy it. The s3_website gem is quite smart; it will do nice things like selectively invalidating CloudFront content if necessary.

It took me about ten minutes to get going with s3_website; I highly recommend it. The folks at MadeByMedia posted a number of other handy Jekyll + s3_website tips that are worth looking at, too.

[1] CDN nerds will point out that CloudFront’s latency — especially on little trafficked sites like mine — can be quite variable, that cache invalidation is expensive and sometimes slow, and that S3’s consistency model2 is not always desirable for website content. To this I say that the perfect is the enemy of the good enough.

[2] I’ve always wanted to do a footnote within a footnote! S3’s consistency model is read-after-write for new objects, and eventual for all other actions… unless you’re in the us-east-1 region, in which case it’s simply eventual for all actions. Pretty strange, that.