Author Archive

Why Engineers Hate Scrum

There are a lot of people out there burned by bad experiences with Agile and Scrum. And talking to them about it, what their team called “Agile” consisted of doing things that Scrum says to do without understanding why they’re done and consequently not getting benefits out of it. (This reminds me of the legendary […]

The biggest interview fail I ever tried was the take-home problem

Hiring was always one of the biggest challenges in running DoubleMap. Our limited budget, small team, and geographic location put a lot of constraints on hiring, and I was always interested in learning about how other companies interviewed candidates. Around 2013/2014-ish, I read about companies giving candidates take-home coding problems and decided to try it […]

Optimizing Python With Cython

This is a mirror of a 2015 article I wrote about using Cython. Python is slow. It’s still faster than a lot of other languages, but describing Python code as “fast” will probably get some weird looks from people who use compiled or JITted languages. Still, I love Python for its design and speed at […]

NFTs are tearing the art community apart

Currently, the collision of artists and cryptocurrencies is playing out across Twitter and other platforms, dividing artists who normally praise and support each other into two camps. One camp wants to make money selling their art as NFTs, and the other camp hates the idea. If you haven’t heard already, NFTs are enjoying increasing popularity […]

Customize Huion tablet buttons on Linux

The “Huion Kamvas Pro (2019)” comes with 16 physical buttons and two touch strips along the sides of the tablet. On Windows, you can configure the buttons to send custom keystrokes (e.g. toggling painting tools or changing brush size). However, the key mapping is mirrored from the left to the right side, so you can […]

Using TypeScript to check for missing cases

TL;DR: use your type system to keep you from forgetting to handle all cases in switch statements and object keys. Often in programming, you have to deal with a list of distinct options. In some languages, this would be expressed by an enum, but in TypeScript it’s more common to express them as specific strings: […]

Who was Herman Wasserman?

Probably relatively well-known in music circles in his day, Herman Wasserman seems to only pop up today in conversation associated with George Gershwin. It seems like he was also a teacher to Ferde Grofé, who orchestrated Gershwin’s Rhapsody in Blue. If you search library catalogs, he turns up as having edited George Gershwin’s Song-Book as […]

QListView not accepting drag and drop

Python + Qt (in the form of PyQt5 or PySide2) is a weird mash-up of the famously slow interpreted dynamic language plus a heavyweight C++ GUI library. It certainly has its advantages over writing in C++, but I’m really wondering if there aren’t better ways to write cross-platform desktop apps. Anyways, in Qt, you’re supposed […]

Fixing only left/right channels working on Logitech headsets

I have a Logitech G430 headset. It’s one of a series of Logitech headsets that offer fake surround sound as a marketing ploy. (I will write up something someday about why surround sound headphones are 95% marketing B.S.) Using it on Windows, at some point all audio from channels other than left and right disappeared. […]

100% Unbreakable Encryption is Achievable!

There were two common cryptography misconceptions that we unlearned in school, and this post is about the first one we learned about. (And Cryptonomicon helped with this one too.) We hear a lot about how “strong” encryption is. That our files would take bazillion years to decrypt via brute force or that our Bitcoin account […]