1. Bret Victor: How can you call the web a publishing medium when your bookshelf can just vanish? URLs and HTTP are a disaster. Doesn't have to be this way.

    @worrydream “bookshelf” is completely the wrong mental model. A “list of links” is like a list of postal addresses of places (hence web “address”) as a physical analogy, or the contents of their authors brains as a human analogy. Complaining about their contents changing/disappearing is as complaining that space/time/humans are “a disaster” (which admittedly may broadly be true).

    “your bookshelf” is whatever personal archives you make of your favourite things (analogies: photos, notes, physical books), and therefore the solution is better personal archival tools. I’ve made a start — my website automatically takes an archive of every page I link to and stores it as HTML+HTTP headers in the filesystem, which has proven to be a quite robust format.

    Of course if you actually have a practical idea about how to improve on the infrastructure of the web, speak up and/or build it :)

    Edit: reflecting on this, “completely the wrong mental model” is incorrect, and better expressed as “a mental model which is inconsistent with reality”. There are no “wrong” mental models, only a variety of co-existing metaphors with varying levels and areas of consistency with reality.

  2. Ben Werdmüller: 21st century politician to watch: @stellacreasy (whose icon is her dressed as Boba Fett), v actively engaging on social media. The future.

    .@benwerd talked to any politicians about Known? I realised recently that politics is, broadly speaking, the battle for ideas, fought with language on the field of mass media. I’d much rather the field was platforms which belonged to citizens, rather than states or corporations. Social media is a start, but principals can go much further.

  3. Spotted on google.com: people searches return rich contact data in autosuggest box:

    Predictably, it only works for people with Google+ data.

    Turns out that selecting that option and pressing return doesn’t navigate to aaronpareki.com, or even a Google+ page, but adds a weird state indicator and a “this option does not exist” warning:

    (just in case anyone’s wondering, the reason I was searching was to attempt to reproduce this)

  4. Reading Lakoff+Johnson on time metaphors, wondering if the way we use the two main inconsistent metaphors (time as objects passing by a stationary observer vs time as a landscape through which an observer passes) has personality side effects, as one is a metaphor where the observer is helpless, whereas in the other the observer is in control.

  5. The things which have always inspired me the most to create have always been tools and reference rather than exemplar examples elevated on pedestals. Want to inspire people? Build tools and documentation.

  6. My favourite progressive-enhancement+AMD requirejs abstraction: enhanceEach

    It covers what is for me an extremely common use-case, of

    “I have a bunch of elements with some class which means that I want to progressively-enhance them, only loading the code required to do so in to pages which contain the elements”

    var enhanceEach = function (selector, dependencies, callback) {
        var elements = document.querySelectorAll(selector);
        if (elements.length > 0) {
            require(dependencies, function () {
                var args = Array.prototype.slice.call(arguments);
                Array.prototype.forEach.call(elements, function (element) {
                    var innerArgs = args.slice();
                    callback.apply(callback, innerArgs);

    A typical example, activating CodeMirror on textareas with class|=codemirror if there are any on the page:

    enhanceEach('textarea.codemirror', ['codemirror/lib/codemirror', 'codemirror/mode/htmlmixed/htmlmixed'], function (el, CodeMirror) {
        var config = {
            indentUnit: 1,
            tabSize: 2
        if (el.hasAttribute('data-codemirror-mode')) {
            config['mode'] = el.getAttribute('data-codemirror-mode');
        var codemirror = CodeMirror.fromTextArea(el, config);

    (A fan of minimal, useful javascript abstractions, and the thought processes behind them? You may enjoy A Minimal Javascript HTTP Abstraction)

  7. Alternative, smaller, simpler logo based on super-helpful feedback from Aaron Parecki, Brian Suda, Brennan Novak, Kartik Prabhu:

    I kept the multi-stranded green connection as I couldn’t find a single green which looked effective on it’s own, and the whole thing was so much flatter without the extra depth they give.

    Also, an alternative version with randomly truncated segments – symbolising sites with different levels all interacting happily

    which was worth a try, but I think it lacks balance. Probably going to stick with the first one.

  8. Initial draft of a logo:

    Got stuck for inspiration (trees are cliché and, in the UK, ironically associated with the conservatives) so looked on wikipedia, and found this beautiful photo by Stephen Ausmus:

    So made a stylised version for a laugh, and actually really like it. It shares some colours with the indiwebcamp logo

    whilst remaining stylistically separate and visualises a lot of principals: a centralised node split up into a more diverse ecosystem, but still connected by the green strands of standards (many of which are , also associated with the colour green).

    Still a WIP though — thoughts?

  9. A far greater culinary challenge awaits, though: what to do with a jar of the far less tasty by-product of : “Chocolatey oil with bits of burnt batter and granola floating in it”.

    (yes I tried deep-frying . It’s part of my job as Granola Science Strategist at @rvkgranola)

  10. Kitchen disaster strikes! It turns out that the low melting point of chocolate in the mixture causes it to melt and flow out of the batter whilst frying, resulting in some vaguely chocolatey batter shells and guilty-looking chocolatey oil.

    Paying more attention to the second batch results in some passable fried chocolate milk. Looks like success here is a matter of very thick filling and precise frying timing.

  11. Tonight I shall be combining my two favourite @sumendirest recipes to create the single most unhealthy thing I’ve ever cooked: Fried Chocolate Milk!

    I made the main mixture yesterday and it’s been cooling in the fridge. Now for the fun part: frying.

  12. Learning about umw.domains, a project to give UMW students+faculty their own personal domains. It’s a great project!

    My own has been a place of experimentation and self-expression for years now and I’ve learnt a lot, and connected with many people through it. Anything which makes personal domains more accessible is a move in the right direction.