My Little Corner of the Net

Raspberry Pi

“I should get a Raspberry Pi,” I said one night as we were watching TV.

“Well, if that’s what you really want, put it on the list and I’ll get one when I go to Wegmans,” Denise replied, thinking my comment to be a bit random.

I wasn’t talking about about desert, of course, but rather the tiny, TV-ready computer produced by the Raspberry PI Foundation. I’d been thinking about setting up a TV connected computer for a while, looking at several Micro-ITX form factor machines, but I couldn’t quite justify spending a few hundred dollars on what would basically become a video player.

Raspberry Pi

Raspberry Pi Model B, complete with ARM11 processor, 512Mb of RAM, and HDMI output capabilities.

TV watching is usually a background process for me—I’m usually doing something else while I watch, and that something else often includes my laptop. With more and more content available online these days, I find myself frequently streaming video, but it is sometimes frustrating because it prevents me from doing other things on the computer while my TV sits idle.

The Raspberry Pi seemed like the perfect solution…at $35 the Pi costs less than a streaming device like Roku or Apple TV, but also has the ability to do run lots of other software in addition to streaming. And since it runs off a 750 mA phone charger, the always-on Pi consumes hardly any energy.

A few weeks ago, Denise’s laptop’s hard drive started acting up, so I went online to find a replacement. Since I needed to place an order anyway, I though “why not get a Pi while I’m at it.” I got my Pi from an Amazon partner, not an official distributer, and I paid a bit more than the standard $35, but since it was shipped by Amazon I avoided shipping charges and it all evened out in the end.

In addition to the Pi I also ordered a Kootek case to keep the Pi’s circuit board protected and a Rosewill 5-port Ethernet switch. I was already using a HomePlug powerline Ethernet setup to connect my BlueRay player to my router, so I figured the switch, which cost about same as a decent WiFi adapter, the would let me connect both devices easily.

I had planned to use an existing Bluetooth keyboard with my Pi, paired to a $5.00 USB dongle I picked up somewhere a while back, but I quickly learned that Bluetooth can be a nightmare to configure on Linux, so after about a week of fighting, I picked up a Logitech K400r wireless keyboard a trackpad combo that works great. In all, I probably paid about $75-$80 to get the Pi up and running—not pocket change, but not an unreasonable investment, either.

It took a few false starts to get up and running, but I’ve now got the Pi working quite well. I decided to use the Raspberry Pi-optimized Debian Linux distro, Raspbian, for my OS because it offered the most flexibility. Using Michael Gorven’s packages and instructions, I was able to get XBMC, a great media player designed for the ten-foot user interface, loaded and running, which was the primary goal of my project. In addition to XBMC, I’ve managed to set up an OpenVPN server, giving me a private, remote gateway into my home network. I’m now starting to play with emulators and hope to have the Pi emulating my old Apple IIGS and Intellivision game console soon. I’ll be posting some tutorials and solutions to some of my stumbling blocks on here in the next few weeks.

Overall the Pi runs well. It can be a little sluggish when loading web content, but once the GPU kicks in, video performance is great. I’ve watched a number of videos from YouTube, TED Talks, and a handful of TV networks through XBMC and I don’t think its ever stopped to buffer (I wish I could say the same for my BlueRay player!).

I’m starting to dream up ideas for my next Pi (or Pis?)—I’m thinking about setting up a dedicated file and print server so that I can shut down my old desktop PC when I’m not using it. The Pi, from what I hear, can also be a great Wake-On-LAN server, so I could remotely boot the desktop from afar if I ever found that I did need something on it, too. I’m also thinking up home automation ideas for the Pi as well as some possible ideas for a “carputer” in my truck. Looking at some of the projects featured on sites like the Raspberry Pi blog, LifeHacker, and Hackaday.com, it’s clear that the sky’s the limit for this cheap, little computer.

Guetenprint to the Rescue

I have a very old HP LaserJet 4L printer. I found it on Ebay some 10 or so years ago being sold by a local computer recycler. I won the auction for about $30 and drove to the seller’s facility to avoid paying shipping changes that were nearly twice what I paid for the printer.

In the time since getting the printer the thing has proven itself to be a beast. Missing a couple of side panels and showing its wear, the printer is not the prettiest, fastest, or quietest printer, but it does just keep printing, and I hate to give it up, especially since printers today seem to be commodity pieces that are often cheaper to replace than the toner cartridges they consume.

I have the printer connected, via a parallel port, to a Windows PC in my home office. The PC shares that printer, so I can easily print to it from other computers in my home, including our two laptops. At least that was the case until recently. After a brief power issue with the PC, my MacBook Pro suddenly stopped being able to find the printer and, once I was again able to see the printer from the Mac, I could no longer find a working print driver for it in Mountain Lion. As a stop gap measure, I configured the PC as a Google CloudPrint server and, using the Cloud Printer app I found in the Mac AppStore I was able to print through the cloud, but this was inconvenient and print quality seemed somewhat diminished.

Today I found a solution. Gutenprint (formerly known as Gimp-Print) is a collection of open source, third-party drivers for standard Unix print systems like CUPS, and lpr. The idea behind Gutenprint is to provide print drivers that are backward compatible OEM drivers for popular printers. Gutenprint is especially helpful when an OEM decides to discontinue support for an older printer, as is the case with the 4L–HP hasn’t released a new Mac driver for it since the PowerPC days. Since OS X is based in Unix and uses CUPS as its print system, Gutenprint is a perfect fit.

To install Gutenprint on a Mac:

  1. Visit the SourceForge download page and grab the latest DMG package available (5.2.9 as of this writing).
  2. Once downloaded, double click on the file to mount the disk image and run the installer.
    Gutenprint Installer
  3. Go to “Print & Scan” in System Preferences.
    System Preferences Print & Scan
  4. Click the “+” icon below the list of printers.
    Add New Printer
  5. Find your printer in one of the lists. In my case, I found it by going to Windows, selecting the name of my workgroup and Windows PC, and then selecting the printer.
    Select a Printer to Add
  6. Click the list labelled “Use” and choose “Select Printer Software…” A list of available print drivers will open.
    Select Printer Software
  7. Enter your printer model into the filter box or scroll through the list until you find your printer. Gutenprint drivers can be identified by “CUPS+Gutenprint” and the version number of the package you downloaded.
    Select Printer Driver
  8. Select your printer and click OK. Then click the “Add” button on the Add Printer dialog box. Your printer is now ready to use.

I honestly don’t recall how I had my MacBook configured originally as I know there was never a native driver for the 4L available. I figure that I must have used either the Generic PostScript or Generic PCL driver, but neither worked when I had to reconfigure the printer. Now, with Gutenprint, I hope to have many more years of happy printing–or at least until I can use up my spare toner cartridge.

Hi, I’m a Mac! (or It’s a Unix System! I know this!)

I finally gave in and bought myself a Mac.  My five-year-old Toshiba laptop served me well, but with several pieces of the plastic case broken off and what appear to be memory issues slowing things down, I decided it was time for an upgrade.  At more than three times the price of a similarly specced Windows-based machine, getting the Mac took some justifying, but in the two-or-so weeks since I got it, I’ve been incredibly happy with my decision.

I ordered the 15″, 2.3 GHz MacBook Pro from the Apple in Education site.  It was shipped to me directly from China and took about a week from the time I placed my order to arrive with standard shipping.  With the educational discount (one of the perks of working for a university) the computer came to just under $2,000 after taxes and shipping charges.  I also got a $100 gift card to use toward apps or iTunes, which is a nice perk.

While the initial price difference between Apple and most PC laptops seems outragous, it doens’t take long to notice the features that make Macs stand out:

  • Unix – I’m a Unix guy—I’ve been building web applications to run primarilly on Unix servers for about 15 years.  I can script my way out of just about any situation in Unix and I frequently catch myself trying to use vi commands in Notepad.  Apple was the first vendor to successfully create a mainstream desktop Unix enviornment that is easy for even non-techies to use but that also gives power users the tools they need to get things done.  Having Unix at my fingertips makes developing and testing code so much easier. 
  • Power up – My Toshiba notebook takes about three or four minutes to boot up from hibernation on a good day, followed by another minute or two after I reenter my password before I can do anything.  This is consistent with most of the Windows machines I’ve used over the years.  The Mac wakes up from sleep mode instantaneously, allowing me to log in and get back to work in seconds.  This is great when hopping between meetings—there’s no need to carry an open laptop from room to room just so as not to have to wait to be productive.
  • Battery – Apple claims that the MacBook battery gets up to seven hours of performace.  Although I’ve yet to see numbers quite this high (performance varies, of course, because of system configuration and running programs), five plus hours of use is not out of the question.  Considering that I’ve yet to own a Windows laptop that got more than two hours between charges, I won’t complain about five.
  • MagSafe connector – I’ve broken more laptop power supplies by tripping over cords than I’d like to admit.  I’ve had to replace the power connectors on a couple of laptops as well.  The Mac’s MagSafe power adapter is perfect for a klutz like me–if I get tanlged up in the cord, it simply detaches from the computer as I walk away.  Likewise, the magnetic lid lock means no plastic hooks the break off when my suitcase gets knocked over in an airport waiting area, as happened last year on the Toshiba.
  • Virtualization – While the Mac may have cost as much as three computers, it is, in a way, three computers.  With VMWare, I’m able to run Windows and Linux on top of the Mac OS.  At work it isn’t uncommon for me to have three or four virtual machines running at the same time and, with the 16Gb RAM upgrade I installed the other night, I suspect I’ll be able to do the same with the MacBook, though I’ve yet to try.
  • Display – Apple is the only major vendor still using 16:10 widescreen displays on laptops.  Most current Windows notebooks are now shipping with 16:9 displays with most 15″ models having a maximum vertical display of 768 pixels.  My Toshiba laptop, which has an early 16:10 widscreen display, has a vertical resolution of 800 pixels which I often found too small—I did not want to upgrade to something even smaller.  Apple’s base screen comes in at 1440×900 on the 15″ model or up to 2560×1600 with the new Retina display.  While the Retina display was a bit out of my price range, I did opt to upgrade to the 1680×1050 high-res display.  While I can see the spaces between pixels if I look really hard, the dispaly is crisp, sharp, and bright.  Windows 7 actually looks better on this screen than on any other laptop screen I’ve seen it on.
  • USB – I discovered, quite by accident, that the USB ports continue to be powered while the Mac sleeps, similar to a desktop.  This let’s me use the laptop to charge devices like my phone in a pinch–even with the computer closed–letting me charge my phone and tablet while I charge the computer, even if I’m short of electrical outlets.  A downside, though, is that the Mac only includes two USB ports while the Toshiba (as well as most PC laptops, from what I’ve seen) has four.  This isn’t a huge deal because I rarely ever need more than two at once.

Apple reports that the MacBook accommodates a maximum of 8Gb of RAM, which they offered an upgrade to for $90 when I placed my order.  Checking online, I found that the architecture will support well over 8Gb though currently the highest you can go is 16Gb since no one is making DDR3 SODIMM modules in with more than 8Gb on them.  I found and ordered a 16Gb Corsair Vengeance upgrade kit (note: affiliate link) for about $85 on Amazon and upgraded myself.  I definitely recommend the upgrade as it makes the computer much snappier, though it does come at a small cost in battery life.

Macs aren’t perfect.  If I want to plug mine into a monitor or a projecter, I need to cary around a 6″ long dongle to connect the device’s VGA port to my Mac’s Thunderbolt port.  The dongle is just big enough to be inconvenient but small enough to forget somewhere–and at $30, I’ts not something I want to be loosing.  And yes, that’s $30 for something that every other laptop gives you for free.  I’ve also noticed that the all-aluminum case, while very rugged, does tend to get very warm, especially when I have the computer in my lap.

I’m definitely not an Apple fanboy–no more than I am a Windows or Linux fanboy.  I like certain features of many different systems and despise certain other ones.  Still, Apple packs a lot of nice features into their tiny little aluminum boxes.  Is the high price worth it?  Maybe not to everyone, but I’m happy with my decision.

Integrating Google Reader with Outlook

I hate to admit it, but I’m pretty much connected at the hip with Microsoft Outllook.  90% of the work that I do is driven by email, and Outlook makes it fairly easy for me to manage those messages, track the work I’m doing with tasks, and keep up on my appointments, all in one place.  If it isn’t in Outlook, I’m likely to forget to look at it—I’ve even developed the habit of noting my phone messages in tasks as I listen to them because of the likelihood that I’ll be interrupted before I get to return the calls and then forget to do so when the little red light on my phone turns off.

I like to keep track of a number of websites–for everything from news, to notices of updates to software I use and support, to blogs of friends and other interesting people.  I became an early adopter of RSS when Netscape first introduced the idea on their MyNetscape portal, setting up an elaborate homepage to track all of my favorite sites.  Over the years I’ve tried many different approaches for managing and reading these RSS feeds, from online readers to desktop clients.  Desktop clients always seemed to work the best since they could keep track of what I’ve already seen, but they weren’t portable.  I can access web clients no matter where I am, but most only show the most recent updates to a site and don’t remember what I’ve already read.  And with both approaches, I actually have to remember to look at them, something that I often forget to do when I get busy.

I stumbled on the Outlooks RSS features by accident, but when I found them, Outlook instantly became my new way to manage RSS.  Outlook stores feed items as messages.  Once a feed is parsed, all of the items in it are stored in Exchange folders, keeping them available forever, alongside my email.  I also have the ability to move RSS items to other folders for archiving and I can forward an article delivered by RSS to someone else as if it was an email.  Outlook does a pretty good job of remembering what RSS items it has already downloaded, so once I delete an item, it usually doesn’t come back.  This isn’t perfect, however, and I often end up with duplicates, especially when I’m logged in on two computers at the same time.

Outlook was good, but not perfect, so I continued to look for something better.  I “discovered” Google Reader, a web-based feed aggrigator that offered many of the things I liked about Outlook, like the ability to track the article’s I’ve read and the ability to access articles that are older than the default number of items served up in the RSS feed.  With an Android app available, my feeds are available anywhere I go, too.  I had seen Reader in the past and liked what it could do, but being a web app, using it meant losing the tight integration with my email that I had come to love in Outlook, so I never adopted it.

In my continued quest for a “perfect solution,” I found a number of blog posts and Q&A sites offering suggestions for Outlook-Reader integrations, from importing an OMPL file from Google to setting Reader as a folder’s web page.  Google’s OPML file is just a listing of the original RSS feeds to which you’ve subscribed, so this approach leaves me with nothing different than what I’m doing now—Google Reader completely leaves the picture.  And with the web page method, I’d lose the tight intergration that lead me to switch to Outlook in the first place.

Not happy with any of the solutions I found, I decided to create my own.  Google has not published an API for reader, but based on the research of Martin Doms, it appears that such an interface may have once been an intent.  With the Help of Dmitrij Duhnich’s Google Reader API Class, I was able to whip up a solution in a matter of hours.

Using Dmitrij’s class, I retrieve the 20 newest unread entries for a subscribed feed.  These are returned as a PHP stdClass object that I reformat into an RSS 2.0 feed using SimpleXML.  The key, however, is that I mark each item unread as I add it to the RSS feed.  When Outlook pulls the feed, it gets only items it’s never seen before.  By marking the items read, I ensure that I’ll never get duplicates, no matter how many different computers I use to retrieve my feeds.

I call my tool Fed (as in the past-tense of the word feed) because once it’s fed you an item, it will never feed it to you again.  Right now it exists as only a few extremely rough PHP files.  If there’s an interest, I’ll cosider cleaning up my code and releasing it.

Awesome Android App of the Day: Evernote

I started using Evernote several months ago when I needed an easy way to take notes during a meeting. It didn’t take long for me to realize the potential of the tool, which has now become my personal wiki, of sorts.

Evernote is an app and a service. To use it, you need to create an account on evernote.com. Then, as the name implies, you use the app to take notes. Those notes are automatically stored “in the cloud” and are automatically synced with all of the devices that are connected to your Evernote account.

Screen shot of a note being edited in Evernote

I use Evernote on my tablet to take notes during meetings that I can then pull up on my desktop when I need to review action items. I keep a running list of merit badge blue cards that scouts turn in to make it easier to complete the paperwork when I turn advancement lists in to council. At work, I’ve replaced a lot of the notes scribbled on Post-Its or on my whiteboard with notes in Evernote: everything from thoughts on how to architect the next app I write, to bugs I find in existing apps that need to be addressed, to the obscure Unix commands that I only need to use every few months go into the program.

Evernote lets me categorize and tag my notes so that they are easy to find when I need to recall them. The application also has a built-in search to aid in note retrieval.

While I’ve mainly used Evernote to keep my text notes, that is only the tip of the iceberg on what it can do. Add on apps and third-party services allow for whiteboard-style drawings, photos, scanned receipts, and even audio and video clips to be stored in the Evernote cloud. Evernote is also great for clipping content from websites when doing research and several email clients support archiving email messages to Evernote.

The Evernote app is free, as is the service for users of basic accounts. A premium upgrade is available for $5 a month or $45 a year that gets users a higher upload limit and many extra features, like the ability to share notes so that others can edit them and the ability to review different versions of notes as they change.

Evernote works equally well on Android phones and tablets, with the app adjusting its interface to accommodate the screen size of the device. In addition to Android, Evernote is available for iOS devices, Windows and Mac computers and virtually every other mobile device including Windows 7 Mobile, Blackberry, and WebOS (i.e. the HP Touchpad).

Get Evernote from the Google Play Store
Evernote website (for online access to notes, desktop downloads, and information about other mobile versions)

<