Pull Requests: Assign or Request Review?

If you’re feeling confused about GitHub’s new review requests feature (as opposed to the existing ability to assign people to issues and pull requests) here’s my take. When review requests were first rolled out, they were not very useful because there was no way to see a list of pull requests you had been requested to review.… Continue reading Pull Requests: Assign or Request Review?

History v. State

I want to reprogram the way I think about the state of my data models. Think of a blog post. Before I publish it, it’s unpublished. After I publish it, it’s published. If I unpublish it, it’s unpublished again. Maybe I edit it and republish it. Published again. I (and a lot of programmers, I… Continue reading History v. State

Easily prune your ssh known_hosts file

At some point, you’ve probably seen this message when you try to log in to one of your servers: This is really common when you have Amazon EC2 instances behind Elastic IPs because the IP address stays the same (and probably the hostname, too), but as new instances replace old instances, the new instances’ ssh… Continue reading Easily prune your ssh known_hosts file

A Gotcha Using Node.js + Request In a Daemon

I have a Node.js program running as a daemon on a Linux VPS. Periodically, it polls a list of URLs using <a href="https://github.com/mikeal/request">request</a>. When it first starts, everything runs smoothly. But after running for a while, it starts getting 400 errors, and the longer it runs, the more URLs return 400 errors. I could not… Continue reading A Gotcha Using Node.js + Request In a Daemon

Notes On Creating A Multi-user Feed Aggregator

Some time ago, I answered another user’s question on Stack Overflow about database design for a multi-user feed aggregator. I also received an email from a developer asking for additional input, which I shared. But I thought I should put my response here, as well, for posterity’s sake if nothing else. Note that my comments… Continue reading Notes On Creating A Multi-user Feed Aggregator

Delete Empty Folders

I recently found that I had a lot of empty folders in my MP3 folder after a wayward ripping session. So I whipped up this quick DOS one-liner to remove all empty folders. From a command prompt, just change to the folder containing all the empty folders and enter the following: FOR /f "tokens=*" %G… Continue reading Delete Empty Folders

XMPP vCard Python Script

Couldn’t find a script to update my Jabber/XMPP vCard photo (a/k/a avatar), so I wrote one. It requires xmpppy (a/k/a python-xmpp). It should work with gTalk, but I have not tested it. Credit to pastebin for some code snippets. Hope this saves someone some time and effort. #!/usr/bin/python ”’vcard.py – Update your XMPP vcard photo… Continue reading XMPP vCard Python Script

On Bootstrapping

On Friday, Dave Winer released a terrific thought-piece-of-a-podcast on how journalists need to learn about bootstraps. In his most recent podcast with NYU’s Jay Rosen, he and Jay discussed the topic, as well, but I want to focus on bootstrapping, the metaphor. Dave offered the well-worn phrase “haul yourself up by your bootstraps” as the… Continue reading On Bootstrapping