1. That excellent post of Tantek Çelik’s, like all well–hyperlinked documents, lead me to a whole raft of great resources I hadn’t come across before:

    (In other news: I need to make a “dump tabs into new note dialog” browser )

  2. Cross-browser selection UI injection flow:

    1. Listen for mouseup on body
    2. When triggered, let s be window.getSelection()
    3. If s.isCollapsed === false, return
    4. Else, let r be s.getRangeAt(0)
    5. Create a new element e
    6. Call r.surroundContents(e)
    7. e.innerHTML and e.textContent now return useful values, and e’s coordinates can be used to inject UI into the page

    To resolve: what element should e be? Or more accurately, what display property should it have? Possibly inline-block (inline mucks up if selection is across block elements, block mucks up selections within text nodes)

    Turns out there are problems with r.surroundContent, namely that it does not handle partial element selections. See MDNs explanation and solution.
  3. Jovian Salak: Microphone's arrived. Now all set for #Nepal. Just need to encourage some creative juices in advance. Not sure how this is done though...

    Jovian Salak alternate solution: we throw a DIY pizza party with recitals of Half Caste, as a joint leaving party

  4. Jovian Salak: Microphone's arrived. Now all set for #Nepal. Just need to encourage some creative juices in advance. Not sure how this is done though...

    Jovian Salak I know the solution: a farm nearby is selling a small hay bale (£3.50). Let’s buy it and roll it to the .

  5. Trawling through Dubliners CDs to try to find one particular song I remember hearing early in my childhood. I really love this , it is so grounded.

  6. This morning’s update: ditched the crappy old DRY-violating tags module and replaced it with a super lightweight one. Soon I’ll add the ability to store tag descriptions, synonyms/related tags as well as dynamically pull content in from the URLs it lists so the tag pages aren’t quite as boring.