1. Annoyed by websites hijacking your favourite browser keyboard shortcuts? Here’s how to disable it in firefox (tested in ff 95, probably works in other versions).

    On a site-by-site basis: Go Tools → Page Info (cmd/ctrl + I also works, if it’s not hijacked), and block keyboard shortcuts:

    Or you can disable it browser-wide so that it never bothers you again, in about:config, by setting permissions.default.shortcuts to 2.

    In theory, 3 should prompt you on a site-by-site basis, but it doesn’t seem to work, sadly.

  2. PHPUnit’s HTML code coverage reports don’t play nicely with GitHub pages “main branch /docs folder” by default, as they store CSS, JS and icon assets in folders prefixed with underscores.

    Here’s a little bash script to run tests with code coverage enabled, then move the assets around:

    rm -rf docs/coverage/
    XDEBUG_MODE=coverage  ./vendor/bin/phpunit tests --coverage-filter src --coverage-html docs/coverage
    mv docs/coverage/_css docs/coverage/phpunit_css
    mv docs/coverage/_icons docs/coverage/phpunit_icons
    mv docs/coverage/_js docs/coverage/phpunit_js
    grep -rl _css docs/coverage | xargs sed -i "" -e 's/_css/phpunit_css/g'
    grep -rl _icons docs/coverage | xargs sed -i "" -e 's/_icons/phpunit_icons/g'
    grep -rl _js docs/coverage | xargs sed -i "" -e 's/_js/phpunit_js/g'
    

    That allows you to use GitHub pages to show code coverage reports as well as docs, as I’m doing for taproot/indieauth.

  3. Tip for anyone using greg to download podcasts: this config setting forces the downloaded files to be in chronological order, and strips any query parameters from the end of their name:

    downloadhandler = wget {link} -O {directory}/{date}_{filename}
    

  4. Pro tip: get to know the locations of nearby fire hydrants, street crossings, traffic lights, chimneys and bicycles so that when the AIs take over you know how to appease them.

  5. A Camomile tip I learned the hard way: audio units built using camomile (and presumably VSTs and lv2s too) will stop working if you rename them, as they rely on the bundle filename, the .txt configuration file and the main .pd patch all sharing the same base name in order to function.

  6. django.test.TestCase and subclasses don’t warn you if the fixtures specified in their fixtures list don’t exist — double check naming if your tests mysteriously start failing or run suspiciously quickly

  7. Hurdy players: save the rosin you were applying to the foot of the chien for the chien string slot, but be aware that this trick won’t cure a badly shaped slot.

  8. Website Owner Tip: Provide *helpful* contact info. For example, if you provide a phone number, tell the user when's the best time to call. Perhaps even a bit of client side code that tells the user if **now** is a good time to call? With email addresses, how about telling them how long they're likely to wait for a reply? #web #tip #ux

    Website Owner Tip: Provide helpful contact info.

    For example, if you provide a phone number, tell the user when's the best time to call. Perhaps even a bit of client side code that tells the user if now is a good time to call?

    With email addresses, how about telling them how long they're likely to wait for a reply?