You can also also view the full archives of micro-posts. Longer blog posts are available in the Articles section.
The UNIX and the Echo. #unix
TIL about Ibis, the portable Python dataframe library. #python
The evolution of Mac app window corners: What a sense of nostalgia to see those old windows again…
It looks like I forgot to upload my GPG key with extended support to a public server ;-)

/me is listening to “This is The Life” by Amy MacDonald
I use beets to manage my digital music collection but fetching lyrics has stopped working perfectly for a while. It looks like this is an issue with Google (LyricsPlugin: Disabling Google source: no API key configured) or maybe this is related to this issue. Anyway, I need to find a way to get correct embedding of lyrincs into my MP3s again.
An ode to bzip: A review of current highly performant compression algorithms.
The usual suspects are the GIL, interpretation, and dynamic typing. All three matter, but none of them is the real story. The real story is that Python is designed to be maximally dynamic – you can monkey-patch methods at runtime, replace builtins, change a class’s inheritance chain while instances exist – and that design makes it fundamentally hard to optimize. The Optimization Ladder