1. One of the creepiest visible things about Facebook IMO is contact prioritisation in the chat sidebar. Whenever a contact changes places, I think “what did I do to prompt that? What did they do? What maths told Facebook that would optimise my engagement with it? Is it trying to influence me? Am I being experimented on?”.

  2. Interstellar and throughly enjoyed it. Giggled endlessly at the wonderfully kerbal spin-docking, and sighed exasperatedly at the magical SSTOs with near infinite fuel (except when the plot required otherwise) and an ascent profile of “well, uh, we take off… and go up… and we’re in space now. YAY!”.

    Also: props to Hans Zimmer for the best use of a pipe organ in a film score I’ve heard for a long time. Caught me by surprise!

  3. Bruce Lawson: "Go .. try to find that missing closing tag on the div in your 100s of lines of HTML". https://medium.com/the-javascript-collection/html-wasnt-made-for-apps-59f870dfc075 Here: http://validator.w3.org/

    @brucel another handy trick is to view source in Firefox. Malformed HTML is red and bold, easy to see.

  4. That fuzzy feeling when people give you really, really high resolution graphics to work with.

    I forgot how much fun even the simplest video editing was.

  5. Got distracted trying to find somewhere to put smelly bananas, ended up cleaning the kitchen and arranging all my jars in order of colour, which, apparently, my panorama software cannot handle:

  6. The Heroku python client library is horribly out of date, and many simple things which should work don’t, throwing confusing errors. Here’s my version:

    # coding: utf-8
    
    import requests
    
    HEROKU_URL = 'https://api.heroku.com'
    
    
    class Client():
        def __init__(self, api_key, heroku_url=None):
            self.heroku_url = HEROKU_URL if heroku_url is None else heroku_url
            self.session = requests.Session()
            self.session.headers.update({'Accept': 'application/vnd.heroku+json; version=3'})
            self.session.auth = ('', api_key)
    
        def get(self, path):
            r = self.session.get('%s/%s' % (self.heroku_url.rstrip('/'), path.lstrip('/')))
            r.raise_for_status()
            return r.json()
    
        def post(self, path, data=None):
            r = self.session.post('%s/%s' % (self.heroku_url.rstrip('/'), path.lstrip('/')), data=data)
            r.raise_for_status()
            return r.json()
    

    Add similar methods for DELETE if you find you require it. I haven’t yet, as the idea of programatically being able to delete apps is much more worrying than the ability to create them.

  7. Migrating a lot of my unorganised, unlinked text file notes and lyrics into a Smallest Federated Wiki, initially locally for experimentation and emphasis on offline use. Coming up with ideas for plugins I want to make:

    • ABC notation parser using abcjs for embedding both whole tunes and music fragments
    • Multi-paragraph text area for lyrics (currently using code sections, but they syntax highlight automatically which is irritating for non-code)
    • YouTube embedder (or more generic, e.g. it’d be great to have SoundCloud, vimeo etc support.
    • Local audio file uploads+embeds similar to images