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.
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.
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…
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.
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.
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.
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
/ul>
Via Douglas.
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.
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.
Via PLT_HULK.
As a result of the Hillfolk Kickstarter, the GUMSHOE is now available under two open licenses; the Open Gaming License and the Creative Commons 3.0 Attribution Unported License.
The document is a reference for game designers, and is not tuned to teach the game, or provide a playable game experience.
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.
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.
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.
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:
@coroutine
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():
pass
body = yield from r.read()
return body
@coroutine
def start():
data = yield from fetch('python.org', 80)
print(data.decode('utf-8'))
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.
Ambrose Bonnaire-Sergeant talks to Craig Andera about gradual typing, type systems, and his core.typed
project for Clojure.
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.
Jason Santa Maria’s single serving “smart quotes” advocacy site.
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.
Smashing Magazine has a deep look at the features and quirks of the CSS Transitions spec and the various implementations in the wild.
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.
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.
A javascript library that uses the devices gyroscopes to control a parallax scene.
Via Oliver Hunt.
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.
Luke Wroblewski's bullet point notes on Ethan Marcotte's An Event Apart presentation on a philosophy and definition of the web. I found the notes on building responsive sites particularly useful.
Via Douglas.
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.
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.
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.
Butterick's Practical Typography looks like an excellent free resource for anyone wanting to get better at typography and design. Lots of great content, but I especially like the section on dashes. Misuse of hyphens in particular is all to common.
Via Daring Fireball.
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.
A collection of the books that inspired D&D that are now in public domain and available for free online.
Via Douglas.
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.
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.
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.
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.
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.
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.
A staggeringly comprehensive list of browser polyfills compiled by the Modernizr project.
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.
An animation explaining an interesting experiment in quantum physics.
Via Gary Fredericks.
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.
A TED Talk by Allan Savory on the desertification of two thirds of the worlds grasslands, it's impact on climate change, historical attempts to counteract it, and a solution he believes is the only viable option.
…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.”
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.…
What it says on the tin. Of note: lists of alternatives to common fonts (i.e. Helvetica), and by application (i.e. web design, mobile). Via Erik Spiekermann.
Fn.py library provides you with missing "batteries" to get maximum from functional approach even in mostly-imperative program.
Via Clinton N. Dreisbach
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.
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
Brian McKenna's specification for algebraic types in javascript. Currently only Monad and Functor are defined.
See also: Promise/A+: Incorporate monads and category theory.
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.
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…
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.
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.
Client side dependancies (e.g. jQuery) bundled as .jar
files and hosted in a Maven repository. Via Chas Emerick.
Fractal food. Infinitely filling?
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.
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.
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…
A wiki encyclopaedia of monsters. Via Kenneth Hite.
A history of the more than 20 year development history of Chez Scheme. Via Michael Fogus.
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.
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.
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…
and
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.
EXCITING NEW PROGRAMS LANGUAGE ALLOW YOU TO VIEW TECHNOLOGY IN RADICAL WAY SO WHY DO YOU INSIST ON WRITE ANOTHER WEB FRAMEWORKS‽
Just what it says on the tin. Via Judd Karlman.
Marcus Blättermann looks at the visual design of the original Star Wars movies, and what made them great.
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…
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.
Programmers, and designers, if you haven't read Patrick McKenzie's list of false assumptions made about names do so now.
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.
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.
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.
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.…
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.
A web forms library for Clojure, from Justin Kramer.
Type designer Martin Majoor looks over the history and development of san-serif type faces, and slab serif type faces and explains his philosophy of designing families of type. via Matt Wilson.
Having just written about Project Templates for web development in Clojure, I have to mention Luminus: it is a framework (in name, if not form) that is doing what I wrote about. Via Anthony Grimes.