Blog

  • Migrating from Google Reader to Fever

    The perfidious vandals at Google will kill Google Reader on July 1, 2013. Accordingly, it is time to wean ourselves off Google dependence and find an alternative. Perhaps this will prove to be a good thing, as Google Reader has strangled RSS innovation through its monopolist, good-enough position much like IE6 once strangled the web.

    NewsBlur and The Old Reader are two services I’ve seen mentioned. Unfortunately, both are currently buckling under the load of my fellow reader-heads fleeing the sinking Google ship. (Edit: More alternatives are listed in the roundups at Kikolani and LifeHacker.)

    Accordingly, I’ve just installed Fever on my shared hosting. I’m not going to recommend my hosting provider as my account is based on a grandfathered plan, but Dreamhost is popular. The more technically inclined may want to spin up an Amazon EC2 instance.

    Fever is a PHP/MySQL web application. It’s very easy to install, assuming you have access to a web server. It costs a one-time $30, which is likely why it is very easy to install. It also comes with lots of really neat features that innovate beyond what Google Reader ever did, none of which I care about.

    Migrate from Google Reader to Fever

    1. Log into Google Takeout.
    2. Download your Google Reader data.
    3. Unzip it. The subscriptions.xml file contains your feeds and folders in standard OPML format.
    4. Download the Fever Server Compatibility Suite
    5. Upload it to your server and let it verify compatibility.
    6. Is it compatible? Great! Paypal over the $30.
    7. Copy the activation code from the email in your inbox into the wizard.
    8. Let the wizard install Fever for you, importing your precious subscriptions.xml.
    9. Fever will display a brisk progress bar as it quickly processes your myriad feeds.
    10. Oh, you may want to enable the unread messages count:
    Enable unread messages count

    Voila!

    My fever feeds
  • Fix VPN hostname resolution by flushing your DNS cache

    Sometimes when my VPN connection to work goes down, certain applications that rely on intranet servers (e.g. Lotus Notes, Lotus Sametime) become unable to reconnect to their servers even after I reconnect to VPN. This is due to the operating system’s DNS lookup cache reusing the failed hostname lookup from when VPN was down rather than doing a fresh hostname lookup now that there is a fresh VPN connection.

    On Windows, you can fix the issue by opening up the Command Prompt as Administrator and running the following command:

    ipconfig /flushdns
  • mkdir -p is your friend

    mkdir -p is a command second only to touch in succinct utility.

    touch creates a file if it does not exist, or updates its timestamp if it does. It’s handy if you want to write to a file without checking for its existence, as otherwise you’d need to determine whether or not append is the correct mode. It’s also handy for setting flags for yourself on the filesystem.

    mkdir -p creates a path if it does not exist, or does nothing if the path already exists. mkdir -p /foo/bar/baz will create /foo, /foo/bar, and /foo/bar/baz for you. Conversely, mkdir -p /usr/local/bin will not complain because those directories already exist.

    Why would you need this? A couple reasons that came up for me tonight:

    • You cannot redirect output to a file if the file is in a directory that does not yet exist
    • You cannot create a symbolic link in a directory that does not yet exist
  • Deleting duplicates in Google Calendar

    I’m not sure if it was Blackberry, Android, or Facebook, but something caused all the birthday events in my Google Calendar to have 36 duplicate entries each. This not only caused visual pollution but also resulted in me getting 36 notifications on my phone for every birthday.

    The first two apps I tried that promised the remove duplicates didn’t, so I nearly decided to write a duplicate remover myself. However, the third app I tried — GCalToolkit — worked. I used its free trial mode to purge all of the duplicates, and my calendar is clean again.

    Incidentally, I ended up signing up for Google’s 2-step authentication, as one of the non-functioning apps was password-based rather than OAuth-based. I was unwilling to give it my actual password, so I used Google’s application-specific passwords feature which depends on 2-step authentication. I’m still somewhat apprehensive about being able to access my email should I be travelling or should I lose my phone.

  • TurboTax 2012 crashes on startup

    I had an exciting tax year (lots of RRSPs, bought a house), so I picked up a copy of TurboTax 2012 to help file my Canada income taxes.

    Unfortunately, TurboTax crashed on startup and running it as Administrator did not help. It turns out there is a known workaround involving copying some DLLs around.

  • Startup order of services on RHEL or CentOS

    The startup order of services on Red Hat Enterprise Linux (and very likely other flavours) is determined by the numerical prefix on the symbolic links in /etc/rc3.d/ (for run level 3), /etc/rc5.d/ (for run level 5), and so on.

    When adding a service (chkconfig –add my_service –level 35), you can specify startup order by including a chkconfig clause in the header:

    #!/bin/sh
    #
    # chkconfig: 35 59 80

    The above service should start at run level 3 and 5 as the 59th service to run (the numbering is sparse, so there isn’t necessarily as a 58th service).

    The 80 specifies the shut down order.

    Obviously, do not rename the symbolic links yourself. Use chkconfig to manage them.

  • Firefox 10 and Firefox 17 side by side

    An enterprise-y web application that I’m using does not work with Firefox 17, Chrome 23, or IE 9. Accordingly, I’ve done the usual dance and installed Firefox 10 to run side by side with Firefox 17.

    By default, you can’t open Firefox 10 while Firefox 17 is running and vice versa. There’s a way around that.

  • cpio: chown failed – Invalid argument

    I ran into this error while installing the IBM Java RPM on Red Hat Enterprise Linux:

    error: unpacking of archive failed on file /opt/ibm/java-x86_64-60: cpio: chown failed - Invalid argument

    The issue is due to /opt/ibm being an NFS mount on the system. There are known issues with running the chown command on NFS 4. One workaround is to specify NFS protocol version 3:

    mount -t nfs -o vers=3 127.0.0.1:/share /mnt

    In my case, the NFS mount was specified in /etc/fstab, so I modified the relevant line there to say:

    127.0.0.1:/opt/ibm /opt/ibm nfs rw,vers=3 0 0
  • Pixel-pushing in canvas

    By way of avva (Russian), I was pointed to this excellent analysis of Notch’s 4kb Javascript/Canvas demo of flying through a 3d labyrinth:

    Per the Hacker News discussion, this is not necessarily the way you should be using canvas for 3d — that’s what WebGL is for — but seeing what’s possible with relatively simple code and the basic web technologies is inspiring.

    (Notch is the creator of Minecraft.)

  • Posting more frequently

    I’ve been really enjoying Rafe Colburn’s technical blog since he made his pledge to post more frequently. It makes a lot of sense for a technical blog to also have linkblogging with brief commentary within the same stream of content. I would argue that the appeal of sites like Reddit and Hacker News relates to people doing the same en masse.

    Naturally, I’ve also been doing some techie linkblogging on my Twitter account.