1. Turns out that performing a GET request on a data URI from PHP works if file_get_contents is used, not if cURL is used. I wonder what support is like for other server side languages — using data URIs in with could be the basis of some interesting .

  2. Kyle Weems: function awesomeWorkday(tasks){if (tasks instanceof coolJsonStuff || tasks instanceof coolApiStuff) { return true; } else { return false;}}

    cssquirrel even the if/else is redundant ;)

    
    function awesomeWorkday(tasks) {
      return (tasks instanceof coolJsonStuff || tasks instanceof coolApiStuff) ? true : false;
    }
    

  3. 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.
  4. Aral Balkan: So http : // twitter . com / Aral Balkan (sans spaces, of course) is a valid URL. If clients used it as a mention we’d have fully-qualified names.

    Aral Balkan current rough consensus is to use URLs as nouns, pingback (or webmention) as notification infrastructure.

    Personally I am doing some rather more complex stuff where I author notes using @-names, which get parsed by @cassisjs into .h-x-username twitter.com-linked anchors, then I transform those into .h-card’s with data either from my contacts DB (at the mo mirrored from my personal CardDAV share) or from the identengine.com API for people I don’t know. Then all the links in a note get sent pingbacks.

    Fat chance of twitter implementing that though ;)

  5. I was going to spend this evening working on browser extension, but I think it would be better spent providing a /data export utility for fellow ex users.

    From my initial researches, it looks like /u/username.json is the best bet, as it gives a JSON array of all posts written by username, along with like and comment data. It accepts a max_time=timestamp query param, and a _ query param, the function of which I am not sure of.

    To iterate through all the pages of posts from a certain user, start with their profile URL w/ .json tacked on the end, fetch all the items, get the datetime of the last item, convert that to a timestamp, fetch the same URL with ?max_time=timestamp, repeat until an empty array is returned.

  6. Wow, exporting my DB of tunes (for migration into the shiny new system) as almost results in valid !

    -
      TUNE_ID: 1
      T: Bourree De Brand
      M: 2/4
      L: 1/8
      C: Trad. French
      N: Bourree from France
      K: G
      ABC: |-
        d>B GB|c3g|f>d ef|ga bg|d>B GB|c3g|f>d ef|g4:|
        |:c2e2|g=fd2|e=fe2|ded2|cB AG|c2e2|g=fd2|e=f/2e/2 dB|c4:|
      words: 
      genre: folk
    
  7. I love that now has shiny namespacing and a thriving code sharing community, but I think the heavily hierarchical namespacing practises used by some of the community (e.g. symfony components) are unhealthy.

    They are difficult to memorise, relying on (often slow) IDE autocomplete, and encourage a use statement for each class. That’s pretty much a scoped equivalent of from x import * in python — not a good practise! It’s still namespace pollution, it just takes longer to write.

    I am trying to use a more python–like, package-centred approach with much fewer subnamespaces. The outcome of this should be that you use the package name:

    use BarnabyWalters
osse;

    …and then using all the classes/subnamespaces from that root, e.g: $t = Posse\Helpers::convertHtmlToTwitterFormat($s);

  8. Question: What Status code should I use for “You haven’t provided enough/correct information to carry out that method”? Currently I’m thinking 422 Unprocessable Entity.

    Context: POST request to a list resource for the creation of a new sub-resource.

  9. Learning new trompette patterns with Gregory Jolivet, and decided to try to evolve a micro syntax for representing them in notes, so I can add some SVG or Audio-API magic afterwards.

    1 4 1 3 1 4 1 3 1234 1234 1234 1 3

    And a variation: 12 4 1 3 12 4 1 3 1234 1234 1234 1

  10. Rolled out usage of the menu element on . I’m looking forward to more browser support for HTML context menus, that will really open up the possibilities for cross-browser extensions