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
How do I add an empty directory to a git repository?
Via Stack Overflow. And, of course, git add the empty directory. So helpful.
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
Fun with River2
I decided to install Dave Winer’s River2 to supplement my usual feed reading. Now that I can access it via its smart use of Dropbox, it should be good for feeds that I don’t feel like I need to see every headline. One of the things I love about River2 is that it’s an app… Continue reading Fun with River2
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 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