1. Tried Kerbal Space Program — surprisingly difficult, though I attribute that partly to the unclear design and pedagogy. Great fun though, and an immediate emotional connection with the characters — esp. the way my kerbonaut gets all excited when rocket’s launching.

  2. Javascript has no real Set or Dictionary implementation, which for someone spoiled by python’s set and dicts is rather frustrating. However, in leiu of the poorly supported js Set type, plain old objects can be massaged into acting as both sets and dicts:

    
    // Python: d = dict()
    var d = {};
    
    // d['key'] = 'value'
    d['key'] = 'value';
    
    // d.get('nonexistent', 'fallback')
    d.hasOwnProperty('nonexistent') ? d['nonexistent'] : 'fallback';
    
    // d.keys()
    Object.keys(d);
    
    // s = set()
    var s = {};
    
    // s.add(1)
    s[1] = true;
    
    // 1 in s
    s.hasOwnProperty(1);
    
    // Accessing all values in set:
    Object.keys(s);
    

    Notes: the in operator can be used to test membership, but will incorrectly return true for __proto__, as well as all properties up the prototype chain, i.e. all properties and methods of Object. hasOwnProperty is much safer to use.

    Similarly, the use of the ternary operator for get-item-with-fallback could in theory be replaced with d['item'] || 'fallback', unless of course the value stored was falsey, in which case the or will incorrectly return a truthier fallback.

  3. MTU has this wonderful explanation of the differences in physics between open/closed conical and cylindical bore instruments. Try some of the equations out in grapher or an equivalent!

    Open cylindrical bore (e.g. panpipes): y=sin(nx)

    Closed conical bore (e.g. saxophone): y=sin(nx)/nx

    where n is the harmonic e.g. 1, 2, 3, 4 etc. in both cases.

  4. Slowly getting a PuSH subscription service working. It should be fairly easy to turn it, once finished, into a layered library so people can either bolt it onto a Silex/Symfony app and have it all just work, or use the lower level client and logic in other frameworks.