Auto-links

Most wikis require you to perform one of two contortions to create a link:

  • Use CamelCase. Much like a camel, this is robust, but tiring to finger.
  • Wrap things in [“symbols that are hard to type”].

In both cases, you need to know in advance that you plan to create a link, and be enough of a disciplined philistine to overcome the effort and overlook the ugliness.

Auto-links are the solution [1] – here’s how they work. Say you create a page called ‘Camel case’. Now, type Camel case anywhere else, and that ‘Camel case’ text will be turned into an auto-link as you go. In other words, the wiki notices that you’ve typed the name of an existing page in the midst of your text, and automatically creates a link for you. If you go back and edit the text, the link goes away. [2]

Links between pages become evident to readers without any extra effort on the part of the writer. If I type ‘MySQL’ and an auto-link appears, it’s easy to see that a relevant page about it already exists.

Having used such a system for a long time, I have come to appreciate the tiny flash of satisfaction at seeing a link appear with no extra effort, confirming that the page does indeed exist [3], and making navigation while editing a breeze. Pages that I wrote years ago are now festooned with links to pages that were created long afterwards. Indeed, the most satisfying feeling of all is when an auto-link pops up to a page I’d forgotten I wrote. Lazy serendipity!

[1] see Per Sederberg‘s implementation in Emacs Freex mode, though we called them ‘implicit links’ back then

[2] To do this the way God intended requires running a regex containing all the pagetitles in your wiki over what you type on every keystroke – this is very nearly instantaneous for even 10k documents.

[3] For extra points, allow pages to have multiple aliases, so that (for instance) ‘database’, ‘databases’ and ‘MySQL’ all point to the same page.

Communal interactive jukebox

[I wrote this in 2003 – there are still pieces of this vision that haven’t been realized]

why isn’t there a little wireless didgeridoo that just sits next to a cd player (stereo audio input), with a wireless network card, and maybe an ip address or a network id or something that you can initially configure easily/remotely by plugging in a computer via a usb or something, that just sits there and plays whatever your laptop running winamp tells it to by wireless???

apparently these exist already 😦
but they’re pretty crap at the moment – they’re proprietary, and are only just getting up to speed with 802.11b etc.

this doesn’t exist though:
you could set a password to it, and then anyone with a laptop nearby who knew its id and had the password, could wrest control of it, e.g. at a party. better still, you could have a sort of queuing system/software for allowing different users to place requests, and people could vote whether they like what’s playing and that person’s reputation would go up – like slashdot karma – it would be a sort of communal interactive jukebox

Dropbocumentation

Every time a programmer goes away for a few days, a piece of infrastructure they know best breaks. That’s just Murphy’s Algorithm.

If they they had only written a 100-word overview with some examples, that would have saved someone else a painstaking day figuring out how things should work, why they suddenly don’t, and righting the world once more.

How do you make it likely that everyone writes down what they know while it’s still fresh? Think of edits as conversions (in the analytics sense) – our funnel stretches from signup to viewing to editing, and we want to maximize the number of edits.

How do we optimize the ‘edit’ conversion rate for a wiki?

  • Editing should happen in the same mode as viewing. If you have to click ‘edit’, then wait for a page refresh, then scroll down inside a teeny textbox in a browser, then hit save to see your changes … those steps create a barrier to entry. The conversion rate of views to edits will drop dramatically. Typos, inaccuracies, inscrutabilities and out-of-datenesses will accumulate.
  • It needs to be as available as possible. All and only your team can access and contribute to it, even if they’re on a different computer or offline.
  • Consolidate everything in one or two searchable places. When it’s hard to find something, you won’t want to start looking. If you have to search one by one through a wiki, your email, a bug tracker, the version control commit log and comments in the codebase, you’ll end up just tapping someone on the shoulder – the knowledge will never get planted in a way that it can grow.
  • No special knowledge. Wiki markups are confusing and confusable. WYSYWYG editors are a good start – but editing text in most browser textboxes feels like typing with chopsticks. And proprietary document formats are opaque and constricting.
  • No barrier to exit. I want to be able to easily (and ideally automatically) grab a dump of all our documentation, both as a backup and as an export.

After reviewing these possibilities over and over, these are the best solutions I’ve come up with for Memrise:

  • A few monolithic Google Docs. This has worked reasonably well, except that Google Docs still falters in an unwieldy and buggy way when dealing with even medium-sized documents. Boooo!
  • Etherpad clone. They seem pretty expensive for multi-user monthly subscriptions, and seem weak at linking and searching. Plus, they don’t work offline, and I don’t trust the companies behind them to be around in 5 years’ time.
  • Text files in Dropbox. The main downside to this is that you can’t easily inter-link text files, and they lack formatting which makes them ugly to read. But they have no barriers to entry whatsoever.

    In an ideal world, someone would build a nice (optionally hosted?) wiki solution pulling and formatting Dropbox text files as webpages to give you the best of both worlds, perhaps combined with a few desktop apps and extensions to make offline viewing editing more pleasant.

    The pain of forgetting

    There’s an old adage that psychologists study their own deficiencies: I study the psychology of memory.

    At times in the past, I was able to discourse fluidly on obscuranta ranging from the internals of software for text processing, Wildean views of suffering, or conspiracy theories behind the construction of the Egyptian pyramids… few wanted to listen, but at least I found my own thoughts interesting.

    Painfully, painfully, I feel this rich arcana slowly seeping away. In my personal Hades, I would be doomed to fill a sieve with grains of sand by day, even as they pooled into a puddle of forgetting around my feet by night.

    My frustration hardened into a hypergraphic compulsion to externalize everything I learned. I wrote notes on every article, lecture and conversation. I painstakingly heaped my newfound nuggets of knowledge into a gigantic paper haystack.

    But then I had a new problem – I couldn’t find any of it. Like a millionaire without the numbers to his Swiss bank account, I was rich and poor at the same time.

    Things came to a head when I desperately tried to assimilate a pillar of textbooks for my neuroscience qualifying exams. Every brain area goes by a dozen names, can be organized by location or by lesion, by experiment or experimenter, by projections or inputs, by effect or atrophy, or equally along a dozen other dimensions.

    But in my paper prison, each piece of information was confined to a single cell – a place for everything and everything in its place. In order to allow the informational inmates to run free, I needed a way to allow any nugget of knowledge to abide simultaneously in a multitude of homes.

    And so I sought to build software to help me. After many musings in the shower, I constructed an elaborate infrastructure that incorporated: dynamically-generated hyperlinks to highlight associations; transclusion to include the same text in multiple places; tags to break down the trammels of tree-based hierarchies; and aliases to allow for multiple names.

    Things are better now. I feel mnemonically empowered, or at least less mnemasculated. By granting conjugal visits from my conscious to my unconscious mind, this index-on-steroids means I can find things more easily.

    But maintaining this index requires effort whenever I add a new piece. And my memory mansion grows so fast that even if I slept in a different room every night, I’d never return to the same one twice. I simply don’t remember what’s in there to look for it.

    So in truth, even this sophisticated system is just a crude ropes-and-pulleys facsimile of my mind. A fixed hyperlink lacks all of the deep isomorphism, insight and spontaneity of an analogy. The ideas trapped there are dead and inert – they don’t bump and bite and spark off one another like active, bustling, living thoughts. And the effort of exhuming them by typing laboriously into a laptop lacks all the rapid, happy spontaneity of immediate recollection.

    I dream of distant-future neural prosthetics, a google gland hooked up to my hippocampus. But I am too impatient to wait.

    This is the quest that led me to co-found Memrise. I have gone as far as I can efficiently *externalizing* my thoughts. Memrise’s mission is to improve *internalization* – learning faster, forgetting slower.

    I know that there is no silver bullet that will fix my memory. But I’m compelled to continue looking for tools and techniques that can boost it and shore it up.

    Memory, the persistent effect of experience, provides the tools with which we think. We are the sum of our memories. When we forget, we erode.

    Self Control through software

    Leo Efstathiou asked me recently whether I’d rather be smarter, or have more willpower. It took only a moment’s thought to realize that I’d rather have the self-control any time.


    And so it was with a sense of wonder and optimism that I normally reserve for sunrises that I fired up Self Control: a Mac application that completely blacklists parts of the Internet. Like a gaoler with a blackjack, Self Control coshes any attempt to blunder down rabbit holes like Facebook or email for some time period you specify. It’s absolutely and delightfully watertight.


    The beauty of this is its potential long-term effect. I want to counteract the variable reinforcement schedule that email and blogs provide – with Self Control’s help, I’m hoping to ensure zero reward from them for long enough to break the self-perpetuating cycle of reflexive refresh-pressing.

    Sssssssshhhhhhhhhhh… for now

    I suppose I must really care about mobile phones ringing, since this is the third piece I’ve written about it. Maybe it’s just that I really care about auditory pollution. Or that it seems like a problem that affects billions of people and hasn’t been given enough thought.

    I often want to silence my phone for an hour or so, while in a meeting or class. However, I know that I’ll forget to turn the ringer back on afterwards. This is a failure of prospective memory (‘remembering to remember’), and it’s something I feel I have almost no control over.

    Wouldn’t it be great if one could set one’s phone to be silent for an hour, safe in the knowledge that soon after the meeting ended, you’d be back in business? Isn’t this what we always want?

    Mobile phones should be felt but not heard

    I can never hear or feel my phone when it rings, no matter how loudly or how insistently hornet-like the trilling and shrilling and buzzing and fuzzing.

    For this reason, I got very excited when I heard that they now make a Bluetooth bracelet that buzzes when your phone rings.

    Better still though, I’d like a sticky Bluetooth (Gluetooth?) doodad that you could affix to a watchstrap or a belt or a ring that stayed charged by dynamo from the kinetic energy of my movements – that would be much less obtrusive.