A Lazy Sequence


The Future of JavaScript MVC Frameworks

David Nolen:

…immutable data allows a new library, Om, to outperform a reasonably performant JavaScript MVC like Backbone.js without hand optimization from the user. Om itself is built upon the absolutely wonderful React library from Facebook. If you haven't checked it out before, I recommend watching this video from JSConf EU 2013. Interestingly because of immutable data Om can deliver even better results than using React out of the box.

19 December 2013

Native JavaScript Promises, with DOM support are in ES6

While a lot of interesting work is going on in JS and AltJS, promises are the rising tide for a lot of javascript developers. It is great to see them finally make it into the language’s spec.

At their most basic, promises are a bit like event listeners except:

  • A promise can only succeed or fail once. It cannot succeed or fail twice, neither can it switch from success to failure or vice versa
  • If a promise has succeeded or failed and you later add a success/failure callback, the correct callback will be called, even though the event took place earlier

This is extremely useful for async success/failure, because you're less interested in the exact time something became available, and more interested in reacting to the outcome.

Via Jake Archibald.

16 December 2013

Monument Valley

Wired previews a puzzle game that might just out-fez Fez. I hope the gameplay lives up to the visuals. Bonus points for having a female main character.

…[The] visual design of Monument Valley isn’t just decoration; it’s integral to the game’s puzzle-like gameplay, too. Each level looks different from the next, but the goal remains the same: Guide Ida, your curious little avatar, through architectural labyrinths to finish the level…

15 December 2013

ClojureScript DOM survey

Dave Della Costa:

This post aims to give those JavaScript developers, familiar with standard JavaScript libraries' approaches to DOM manipulation and event handling, the “lay of the ClojureScript land.” This is not intended to assert that any one of these are superior to the others – although I certainly recommend you avoid simply wrapping browser-default API calls – but merely to help you make the decision as to which one may be best suited to your needs.

12 December 2013

Bjorn Juhl’s Pedal Stackers Guide

Bjorn Juhl & Donner Rusk, of Bearfoot Fx, discuss guitar amplifier topology from a high level, and the impact those topology have on how an amp responds, as part of their philosophy of pedal design.

2 December 2013

Prolog for devops with Marella

On using Prolog, and logic programming, for system administration purposes

Logic programming's heyday feels well passed, making it ripe for rediscovery. Today several mature Prolog interpreters are packaged for all the major Linux distributions, and the declarative paradigm it belongs to still has serious advantages:

  • Predicates describe the relationships between entities more flexibly than functions do in other languages
  • Depth-first search through the space of available solutions is built-in!

…Though experimental, [it] already works well for achieving a consistent environment between OS X and Linux machines.

10 November 2013

Responsive Web Design: Relying Too Much on Screen Size

Luke Wroblewski:

As the kinds of devices people use to get online continue to diversify, relying on screen size alone paints an increasingly incomplete picture of how a Web experience could/should adapt to meet people’s needs. Screen size can also lead to bad decision-making when used as a proxy for determining:

  • If a browser is running on a mobile device or not
  • If Network connections are good (fast) or bad (slow)
  • If a device supports touch, call-making, or other capabilities

Via Douglas.

31 October 2013

The Trouble with Types

Martin Odersky, creator of the Scala programming language, outlines the main categories of static type systems as well as some new developments, and discuss the tradeoffs they make.

29 October 2013

Cargo Cult CSS

Too many potentially quotable bits in this article by Ben Darlow. Here’s the pitch:

…I’m going to talk about some of the problems with techniques being advocated by CSS ‘framework methodologies’ and how we, as web developers, can better solve these problems.


24 October 2013

C++ vs managed code

Jon Harrop:

…I do believe that the vast majority of the people who prematurely optimize away garbage collection don't know what they are talking about and would not be capable of building a good solution in any language. Such people usually only know C++ and have no knowledge of garbage collection algorithms, which is scary because C++ programmers reinvent GC algorithms every day. A good test is to ask them how garbage collection works. If they describe naive mark-sweep circa 1960 then they haven't done their homework.

Via Don Syme.

22 October 2013

On Monoliths

Stefan Tilkov:

Nobody wants monoliths, i.e. big systems composed of hundreds of thousands or millions of lines of code (in a language like Java) or tens of thousands (e.g. in Ruby), yet everyone ends up having them. And once you have one, you’re basically stuck with them…

…So what’s the proposed remedy? To talk about that, we need to take a step back and find out how we actually end up systems that are too big in the first place. My theory is that the number one reason is project scope.

Via Stuart Sierra.

22 October 2013

Typed Clojure by Example

Nathan Stien:

…I’m going to walk through a series of interesting types I’ve encountered while working with some standard clojure.core library functions. As we go along, the types will get more complex and show off additional features of the type system. My hope is that this will be a useful tutorial for people who want to learn Typed Clojure.

22 October 2013

Tulip: Async I/0 for Python 3

Python creator Guido van Rossum’s slides about his new async IO library, Tulip, for Python 3 that leverages co-routines and generators instead of callbacks:

def fetch(host, port):
    r, w = yield from open_connection(host, port)
    w.write(b'GET/ HTTP/1.0\r\n\r\n')
    while (yield from r.readline()).decode('latin-1').strip():
    body = yield from r.read()
    return body

def start():
    data = yield from fetch('python.org', 80)

22 October 2013

Active learning, almost black magic

Lars Marius Garshol:

I've written Duke, an engine for figuring out which records represent the same thing. It works fine, but people find it difficult to configure correctly, which is not so strange. Getting the configurations right requires estimating probabilities and choosing between comparators like Levenshtein, Jaro-Winkler, and Dice coefficient. Can we get the computer to do something people cannot? It sounds like black magic, but it's actually pretty simple.

Via Richard Minerich.

20 October 2013

Grantland looks back at Myst on it’s 20th anniversary

Emily Yoshida examines the history and, surprising lack of, legacy of Myst and its sequels:

Twenty years ago, people talked about Myst the same way they talked about The Sopranos during its first season: as one of those rare works that irrevocably changed its medium. It certainly felt like nothing in gaming would or could be the same after it.…

…Fans and critics alike held their breath in anticipation of the tidal wave of exploratory, open-ended gaming that was supposed to follow, waiting to be drowned in a sea of new worlds.

And then, nothing.

24 September 2013

Technical Difficulties

This month’s issue of Pelgrane Press’s Webzine, See Page XX includes an article I wrote about modern technology – cellphones, the internet etc – in roleplaying games with a focus on allowing the players access to it but considering the inherent consequences and tradeoffs for improving the game.

20 September 2013

CSS Transitions

Smashing Magazine has a deep look at the features and quirks of the CSS Transitions spec and the various implementations in the wild.

15 September 2013

Civet coffee: why it's time to cut the crap

Tony Wild at The Guardian:

But nowadays, it is practically impossible to find genuine wild kopi luwak – the only way to guarantee that would be to actually follow a luwak around all night yourself, one experienced coffee trader told me. Today, kopi luwak mainly comes from caged wild luwaks, often kept in appalling conditions.…

…The naturally shy and solitary nocturnal creatures suffer greatly from the stress of being caged in proximity to other luwaks, and the unnatural emphasis on coffee cherries in their diet causes other health problems too; they fight among themselves, gnaw off their own legs, start passing blood in their scats, and frequently die.

15 September 2013

Clojure and testing

Alex Miller:

Techniques like generative, simulation, or specification tests are testing styles that can provide far greater coverage than you can hand-roll in example or BDD tests and they tend to be less fragile as well. They may have a higher up-front cost but so far in my experience they have a lower maintenance cost and much higher coverage, thus yielding greater overall value.

1 September 2013


A javascript library that uses the devices gyroscopes to control a parallax scene.

Via Oliver Hunt.

29 August 2013

Lovecraft's notes for “Mountains of Madness”

This is one of seven pages of plot notes that horror author H.P. Lovecraft produced while planning his 1936 novella “At the Mountains of Madness.”…

The one densely packed page presented includes Lovecraft’s own sketches of the Elder Things.

Via Bayard Randel.

28 August 2013

Of wizards and magical machines

Drew Crawford:

…essentially all software is subsidized. You are using an operating system that is subsidized by Berkley, typing on a keyboard subsidized by IBM, doing a heck of a lot of things subsidized by Xerox, a network subsidized by DARPA, a web browser subsidized by Google, Apple, and Netscape, etc. To a nontrivial extent, Python is subsidized by Google, Linux is subsidized by IBM, C++ is subsidized by AT&T, and [arbitrary software package you use] is subsidized by [arbitrary large entity]. Even if their only contribution is to feed and water and do laundry for the open-source developers working on the project, it’s subsidies all the way down.

26 August 2013

Jeff Tweedy on the business of music

Chicago Grid interviews Jeff Tweedy:

“There’s a widely held belief among musicians, and maybe artists in general, that there’s some zero-sum game being played, that it’s a compromise to even think about business as being a part of what you do,” …

…“The idea of selling out is only understandable to people of privilege.”

Via Elizabeth Sampat.

25 August 2013

Damon Lindelof on blockbuster screenwriting

Vulture interviews Damon Lindelof (Lost, Star Trek):

Once you spend more than $100 million on a movie, you have to save the world,” explains Lindelof. “And when you start there, and basically say, I have to construct a MacGuffin based on if they shut off this, or they close this portal, or they deactivate this bomb, or they come up with this cure, it will save the world—you are very limited in terms of how you execute that. And in many ways, you can become a slave to it…

Via Ken and Robin Talk About Stuff.

25 August 2013

ClojureScript core.async Dots game

Bruce Hauman has implemented a simple little game in the browser using ClojureScript and core.async. His blog post breaks down how he wrote it, and how he used core.async to do so cleanly and with a fairly small amount of code. Worth the time it takes to read.

When I wrote about Alt JS last month, I had not had time to get to grip with core.async's benefits, specifically with respect to ClojureScript. I'm reevaluating my position on ClojureScript as a result: the ability to naturally build complex state machines using sequential processes is of great value to a lot of the Javascript I currently write.

14 August 2013

Cerebral Palsy beer

In Gothenburg, Sweden, bars and restaurants with good disability access are being rewarded with beer instead of a more traditional certificate.

The specially brewed beer, dubbed CPA or cerebral palsy beer, is a hybrid of Indian pale ale and American pale ale and is described by the makers as "one that everyone will want to stock in their bar". The bottle features a stylised picture of a woman with cerebral palsy in a wheelchair.

24 July 2013

Basic electricity for guitarists

Nick Jaffe:

In these videos we'll cover the basic principles of electricity and electrical components as they relate to electric guitars in a simple, but accurate way.

23 July 2013

The A.V. Club's HateSong

In HateSong, we ask our favorite musicians, writers, comedians, actors, and so forth to expound on the one song they hate most in the world.

17 July 2013

Iron Empires: Void kickstarter

Christopher Moeller's Iron Empires sci-fi comic is comprised of two graphic novels that inhabit different corners of the same setting, but tell self contained stories. Moeller's story telling is great, but more impressive is his art: instead of the typical pencils, ink, colours approach, he paints every panel.

Void is the third story told in the setting, and is being published independently. Moeller has teamed up with Luke Crane et al of Burning Wheel who wrote and published the roleplaying game of the setting, Burning Empires, to put out this (and hopefully future) instalments, and they are looking for support, via KickStarter, to cover the printing costs.

Don't miss the free preview content linked near the bottom of the page.

17 July 2013

Why mobile web apps are slow

Drew Crawford:

But the real elephant in the room here is that in all these articles on this subject, rarely does anyone actually quantify how slow JS is or provide any sort of actually useful standard of comparison. (You know… slow relative to what?) To correct this, I will develop, in this article, not just one useful equivalency for JavaScript performance–but three of them. So I’m not only going to argue the “traditional hymns” of “wa wa JS is slow for arbitrary case”, but I’m going to quantify exactly how slow it is, and compare it to a wide variety of things in your real-life programming experience so that, when you are faced with your own platform decision, you can do your own back-of-the-napkin math on whether or not JavaScript is feasible for solving your own particular problem.

10 July 2013

Finishing move

Gus Mueller:

As mentioned in the WWDC keynote, Apple is adding official support for game controllers in iOS 7 which is going to be awesome and I can't wait to get my hands on one. You know what's going to be even more awesome though? Game controllers for the Apple TV.

The tea leaves don't look good for Nintendo.

20 June 2013

Matter, anti-matter, and the unified theory of garbage collection

Michael R. Bernstein:

Reference counting and tracing are often viewed as fundamentally different, incompatible forms of memory management. An extraordinarily insightful 2004 paper by Bacon, Cheng, and Rajan, A Unified Theory of Garbage Collection draws incredible parallels between these two approaches to GC. It begins by introducing the insight that tracing and counting are related and goes so far as to formalize and generalize the work done by GC algorithms in order to prove their point: these approaches are in fact "algorithmic duals" of each other which take the same approach from different starting points. …

This article references a paper I have been meaning to read for a couple of weeks now. Garbage collection is something I want to understand better.

12 June 2013

Extend the web forward

Yehuda Katz:

How did it all go so horribly, horribly wrong?

In short, an over-reliance on centrally planned API design.When Facebook first realized that the browser’s offline feature was broken, they had no way out. Their only choices: try to hack around the problems or beg the central planners to try again.

See also a related article (also by Katz). Via David Herman.

10 June 2013

Anatomy of the Star Wars logo

…Suzy Rice, who had just been hired as an art director, remembers the job well. She recalls that the design directive given by Lucas was that the logo should look “very fascist.”

“I’d been reading a book the night before the meeting with George Lucas,” she says, “a book about German type design and the historical origins of some of the popular typefaces used today—how they developed into what we see and use in the present.” After Lucas described the kind of visual element he was seeking, “I returned to the office and used what I reckoned to be the most ‘fascist’ typeface I could think of: Helvetica Black.”

30 May 2013

The tone bender timeline

Fuzz fan Kit Rae's obsessively detailed history of the Tone Bender fuzz pedal.

The Tone Bender was one of the first fuzz tone boxes to come out of England during the booming London music scene in the mid 1960's, the British answer to the American Maestro Fuzz-Tone. There are numerous versions, each with slightly different characteristics to the sound, and numerous re branded versions made for third party companies. Tone Benders were popular pedals among guitarists in the late 1960's through the mid 1970's, often associated with the Vox brand, and guitarists like Jimmy Page, Jeff beck, Mick Ronson, and Pete Townshend. It is arguably the pedal with the most interesting and colourful history in the annals of fuzz, and the genesis of the UK stomp box phenomenon. The history is somewhat convoluted, with a host of interrelated individuals and companies, including Jennings Musical Industries, Vox, JMI/Vox engineers Dick Denney and Gary Hurst, the legendary Macaris Music Exchange of London, Sola Sound/Colorsound, The Beatles, The Yardbirds, and Led Zeppelin, among others.

Below is a chronological timeline of the pertinent dates for pedal releases, events, and people related to the Tone Bender fuzz pedals, spanning the 1960's, and including some dates from the 50's, 70's, and 90's that are relevant.…

20 May 2013

Bee-harming pesticides banned in Europe

Europe will enforce the world's first continent-wide ban on widely used insecticides alleged to cause serious harm to bees, after a European commission vote on Monday.

29 April 2013

A working model of RPG elements

Ryan Macklin:

As you might imagine, “what an RPG is” is, well, a hell of a question. While we (at least in the American tradition) comes from Arneson and Gygax, we’ve moved to a place where games like Fiasco and A Penny for my Thoughts fills the same (or a very similar) space, even though they different wildly in execution…

…As I chewed around what makes up a RPG, I hit upon these four elements:

  • Language
  • Avatars
  • Consequence
  • Persistence

12 April 2013

Why concatenative programming matters

An extensive introduction to Concatenative (functional) Programming by Jon Purdy. I found the section about how row type polymorphism is used to facilitate point free programming particularly interesting.

…concatenative languages give us something applicative functional languages generally can’t: we can actually return multiple values from a function, not just tuples. And thanks to row polymorphism, we have a uniform way to compose functions of different types, so the flow of data in our programs doesn’t get obscured, as it were, by the plumbing.

Also interesting is the claim that:

In an applicative language, we have to jump through some hoops in order to get the basic concatenative operators we want, and get them to typecheck. When implementing composition in terms of application, we must explicitly implement every type of composition.

Brandon Bloom has an implementation of concatenative programming as a library for Clojure called Factjor. This may be where I found this article in the first place.

11 April 2013

Nels Cline’s 5 essential effects

Nels Cline, of Wilco, writing at Premier Guitar about his essential effects:

…I am a pedal geek. But I am serious about pointing out that, with all the chatter and obsessiveness surrounding equipment generally, and effects pedals specifically, all that matters is what you like. That could just as well be an amplified wire hooked to a eucalyptus tree going into an old radio or some fabulous overpriced vintage guitar combined with a boutique amp and 23 Illuminati-approved effects pedals…

11 April 2013

Abstraction or leverage

Michael Nygard:

One of the words I see overused is "abstraction." I hear developers use it when they talk about the DRY principle and reducing common code. Reducing common code to eliminate repetition improves your leverage, but not necessarily abstraction.

…All abstractions offer leverage, but not all leverage is an abstraction.

7 April 2013

The most surreal places on Earth

A collection of photos of amazing and sometimes surreal natural and man made places. Hard to say if they are the most surreal; high on the list though.

26 March 2013


Client side dependancies (e.g. jQuery) bundled as .jar files and hosted in a Maven repository. Via Chas Emerick.

17 March 2013

Test-match music

Samuel Flynn Scott of The Phoenix Foundation on their 80 minute long forthcoming album Fandango:

Honestly, I'm thoroughly satisfied that we have made 80 minutes of tripped-out pop oddities that pay absolutely no attention to the short-form game of contemporary music. This is test-match music…

Great video and song too.

5 March 2013

The Manual of Linotype Typography (1923)

This manual of Linotype typography has been prepared to demonstrate the possibility of producing upon the Linotype machine a high quality of work without increasing the cost of the production. A piano, no matter how perfect in workmanship and tone, yields to the performer a quality of music equal only to the composer's genius and the ability of the artist. The same is true of the Linotype machine.…

A guide to typography and book design published in 1923. Unsurprisingly the book looks fantastic, and still has relevant content today. Via Graham Walmsley.

28 February 2013

Detecting invisible motion in video

The system works by homing in on specific pixels in a video over the course of time. Frame-by-frame, the program identifies minute changes in color and then amplifies them up to 100 times, turning, say, a subtle shift toward pink to a bright crimson…

27 February 2013

We broke the tomato, and we’re using science to fix it

Thanks to decades of breeding, the modern agricultural tomato has a lot of properties that are great for farmers: the plants are incredibly productive, and the resulting tomatoes hold up well to shipping. Just one small problem: they are nearly tasteless.

22 February 2013

Terrible tweets

Terrible Points: 2, Transgression: Using a hashtag superfluously, or as the punchline. [e.g. "Got sunburn today. #shouldhaveusedsunscreen"] (Terrible.)

Doghouse Diaries scoring system for determining how terrible a tweet is. Via Stephen Bier.

20 February 2013

Your content, now mobile

Karen McGrane writing about mobile content and design at A List Apart:

If people want to do something on the internet, they will want to do it using their mobile device. Period.

The boundaries between “desktop tasks” and “mobile tasks” are fluid, driven as much by the device’s convenience as they are by the ease of the task…


Your content strategy for mobile should not be to develop a satellite to your desktop site, showing only the subset of content you’ve decided a mobile user will need…

Never force users to go to the desktop website for content they’re seeking on a mobile device. Instead, aim for content parity between your desktop and your mobile experiences—maybe not exactly the same content presented exactly the same way, but essentially the same experience.

McGrane covers a lot of missteps site developers make targeting multiple devices, although one particular egregious error is left out. Via Douglas.

19 February 2013

PLT_HULK says it best


10 February 2013

System F in Coffeescript

John Bender introduces the System F extension to Lambda Calculus using Coffeescript.

System F and its variants are used frequently in the study of typed computation and an extended form, System FC, plays an important role in GHC's compilation process [1]. This post will attempt to translate the grammars of the Lambda Calculus, Simply Typed Lambda Calculus, and finally System F into a small subset of CoffeeScript while covering the basics of application and abstraction in each…

23 January 2013

Jason Morningstar on Traveller

Jason Morningstar (interviewed by Judd Karlman) writes about playing the classic RPG Traveller when he was a kid:

GDW’s Traveller was published in 1977. If you were a gamer in 1977 you had access to crappily-produced games like Dungeons & Dragons that looked like zines assembled by slightly deranged high school students. The art alternated between pervy and terrible. In contrast, in the same format (a digest-sized box with three books) Traveller was professionally laid out and edited and had made a few passes through a Linotype machine. The text was crisp and clear, sans serif, in an austere black box. There was no art, because art was for people who were not serious. It was revelatory and awesome, and just looking at it made you want to be a better player.

21 January 2013

The serif readability myth

Kas Thomas writes about the difficulty of evaluating legibility of type, and how the notion of serif faces being more legible than san-serif faces is probably not based on facts.

…It turns out a surprising number of otherwise convincing "legibility studies" have been based on reading speed or reading comprehension, which have no bearing on glyph recognition per se. Reading speed is now known to be mainly a function of cognition speed, which varies considerably from individual to individual and is not related in any straightforward way (and possibly in no way) to typeface design. Reading comprehension is even further removed from type design.

18 January 2013

Why not events

Event systems, in general, are exponentially more complex than declarative systems to achieve the same goal. And most of that complexity is non-essential, accidental. All but the most trivial of event systems quickly grow so complex and difficult to reason about that there are no obvious bugs or inefficiencies.

17 January 2013

What if the worlds soil runs out

A rough calculation of current rates of soil degradation suggests we have about 60 years of topsoil left. Some 40% of soil used for agriculture around the world is classed as either degraded or seriously degraded – the latter means that 70% of the topsoil, the layer allowing plants to grow, is gone. Because of various farming methods that strip the soil of carbon and make it less robust as well as weaker in nutrients, soil is being lost at between 10 and 40 times the rate at which it can be naturally replenished. Even the well-maintained farming land in Europe, which may look idyllic, is being lost at unsustainable rates.

Via Jason Kottke.

17 January 2013

Can vegans stomach the unpalatable truth about quinoa?

But there is an unpalatable truth to face for those of us with a bag of quinoa in the larder. The appetite of countries such as ours for this grain has pushed up prices to such an extent that poorer people in Peru and Bolivia, for whom it was once a nourishing staple food, can no longer afford to eat it. Imported junk food is cheaper.…

16 January 2013

Semantic satiation

Squirrel, squirrel, squirrel, squirrel, squirrel, squirrel, squirrel, squirrel, squirrel.

Semantic satiation (also semantic saturation) is a psychological phenomenon in which repetition causes a word or phrase to temporarily lose meaning for the listener, who then processes the speech as repeated meaningless sounds.

Via Tim McCormack.

15 January 2013