Oh no! Google Reader is going away!

google reader logo

I was very disappointed to hear that Google Reader is being shut down on on July 1st of this year. RSS feeds are a great way to keep up with all your favorite blogs and news sources, and Google's product made this really easy. In fact, when I open a browser window, the second thing I open is Reader (the first being Gmail).

Sure, there are other RSS clients, but most of them use Reader as a backbone. This works well because it helps keep your feeds organized and in sync. Fortunately, it sounds like some of these third party apps are preparing for life after Google pulls the plug.

I didin't get fully immersed into RSS until a few years ago, but it sounds like there were some good RSS clients that were pretty much destroyed when Google Reader came along. Hopefully we'll see some innovation now that there's room for these apps again.

I think that, as a rule of thumb, it's good to pay for things you like. Free web services are great, but in the end it only works if companies can sell you to advertisers. In a lot of cases it ends up swashing the competition and then, if it's not profitable enough, it goes away. And consumers are left with nothing.

Use Yahoo Pipes to discover new eye care apps.

I've written a couple posts about using online services to automate tasks like creating RSS feeds from a site that doesn't provide them and using IFTTT to keep a journal.  Another popular tool for web automation is Yahoo Pipes.  From the Pipe's homepage:

Pipes is a powerful composition tool to aggregate, manipulate, and mashup content from around the web.

It may be an over-simplification, but Yahoo Pipes essentially grabs content from the web, usually in the form of RSS, and manipulates it in ways that you tell it to.

The problem to solve

I want to find out when new iPhone apps come into the iTunes store that might be of interest to me as an optometrist.  I sometimes read about new ones in my journals or, more likely, on my social networks.  However, maybe I want to be the FIRST person to hear about the latest and greatest eye care app.

A solution

Apple has a page on their site that allows you to create RSS feeds to alert you when new media becomes available in iTunes.  It lets you do some customization, so I created an RSS feed that would be populated with new IOS apps.  I customized it like so:

I decided to find apps in all genres.  An optometry app might be listed as medical, but when I submitted my apps I also considered listing them as reference or utility.  

Clicking the Generate button will give you an RSS feed URL:

http://itunes.apple.com/us/rss/newapplications/limit=300/xml

Copy this to your clipboard.

However, there was some pretty severe limitations on how much we were able to customize this feed.  If you plug it into you favorite RSS reader (like Google Reader) you'll get probably get 250 listings for fart apps.  So, how can we customize this further?  Why, Yahoo Pipes, of course!

Go to Yahoo Pipes, log into your Yahoo account, and "Create a new pipe".  On the Pipes Editor page, drag the Fetch Feed resource from the left hand column into the workspace. Note:  If you're not seeing this column click the arrow button on the left hand side of the page (see circled item below).

Paste the iTunes RSS URL into the text box in the Fetch Feed window.  To test the feed, click on the top of this window (it'll turn gold as it is in the image above) and the content of the feed will show up in the pane at the bottom of the page.  It's working, but there's a lot of apps unrelated to eye care!  We need to filter these results.

So, we go back to the tools in the left hand column and find filters - it's under the operators heading. Drag this tool under your Fetch Feed window.  We need to conned everything, so drag a  from the circle on the bottom of the Fetch Feed window to the circle on the top of the filters window - this will create a "pipe" connecting the two.  Do the same thing from the filters window to the pipe output window.  

Now, let's add some filters. We'll have better results if we try permitting things that are eye care related than if we try to block all the things that are not eye care related, so we'll choose the permit option.  Make sure you choose the any option  - if you make a lot of rules it's unlikely that any of the feeds will meet all of them, and consequently nothing will pass through your filter. For my first rule I decided to permit items where the description contains the word optometry.  By clicking the (+) button I added similar filters for the words optometrist, ophthalmology, and ophthalmologist.

By clicking on the Pipe Output title you can see the results of your filter.  I did this and . . . got nothing.  Well, that's not totally unexpected - what are the odds that an app was released today with one of those keywords?  I decided to add a few more and came up with this:

I clicked the Pipe Output again and . . . got a hit!  The App For Learning Optics app passed through my filter.  Not only did something get through, it's fairly relevant!  Note: your results may vary depending on what is coming through the RSS feed when you test it.

Google Reader button

Google Reader button

So, what should we do with this?  Give it a title (Optometry Apps RSS), hit the save button, then click the run pipe link.  This will take you to another page that shows the results of your pipe. It also gives you the ability to get the filtered data in multiple ways, including as an RSS feed.  I chose the Google Reader button and added it to, er, Google Reader.  When I go to Google Reader I see my Optometry Apps RSS feed complete with the result that made it through my filters.   Even better, it shows up in Flipboard on my iPad since I've connected that to my Google Reader account.

If you don't want to repeat this whole process, feel free to use the feed that I've created.

http://pipes.yahoo.com/pipes/pipe.run?_id=c7306982fb17d3464a8b00235179356b&_render=rss

This was really meant to be an exercise in using Google Pipes and RSS (i'm not really desperate to immediately find out about new optometry apps).   But, is this practical or useful?  Only time will tell.   I'm not sure if my filters will catch the  IOS apps that I want it to.  It really depends on how well I set up my filters, which I'll probably have to experiment with for a while.  

Oh, for extra credit: If you really, really want to be the first person to find out about new IOS eye care apps, you could take this RSS feed and use IFTTT to alert yourself with a text message when a new app pops up in your feed. Or, get really creative and have a light turn on in your house.

GPS apps: Twist & Waze

I've tried a few GPS apps on my iPhone, but I've always come away a little disappointed.  They're always a little more cumbersome to use than my dedicated Garmin GPS, slower to give me directions, and more likely to lose the GPS signal.  Furthermore, I use my iPhone to listen to podcasts and I get annoyed that the GPS app lady talks over what I'm listening to.  Furthermore, I sometimes have to switch apps to change to a new podcast, something I don't want to do when I'm driving.  Lastly, using the GPS is murder on your phone's battery.

The phone GPS apps do have a few advantages.  They're always up-to-date and  do a better job finding new restaurants, new roads, etc.  The user interface is usually better so it's easier to enter addresses or, even better, choose an address from amongst my contacts.  Also, there are ways I can send addresses from my computer to my phone so I don't even have to type anything. However, in my experience, the apps just didn't offer enough additional features to make me abandon my dedicated GPS.

Waze icon

However, a couple new apps have grabbed my attention.  One of them is Waze.  On the surface Waze works like most other GPS app: You search for or enter a location and it shows you a map and gives you visual and spoken directions.  What makes this app interesting s the fact that it uses data from all the other Waze users on the road.  It measures the speed of other cars on your route.  Even better, it allows users to report issues such as heavy traffic, accidents, and even police  (I think the spirit of this feature is to report police cars at accidents or pulled over vehicles but I'm sure people report speed traps too).  

I'd heard about Waze on a number of blogs and podcasts, although I was a little skeptical about how it would work for me.  After all, most the people I read and listent to are in large, tech savvy cities like San Francisco.   Was there going to be enough users in Madison WI to get the advantages of crowdsourcing?  I'm please to say that every time I fire it up it reports at least 45 people in the area using Waze.  That's proven to be very adequate: It's done a very good job of driving conditions on my commute to work.  And, when I encounter something unreported, I've made an effort to contribute to the cause and be the reporter (It's worth mentioning that Waze does a good job making this hands-free).

Here's a few screenshots.  I'd wish I'd gotten one of the alert telling me a stopped train was blocking my drive downtown...

The other app I've been liking is Twist.  It's not really a traditional GPS app.  It does give you an ETA and shows you a map of where you're going, but not in a way that's going to make you choose it over another app or a dedicated GPS.  No, the real purpose of Twist is to let other people know when you're going to arrive.  

Twist icon

Consider this : We take my kids to visit grandma and grandpa pretty often.  They only live 45 minutes away, so we make plans to get together on a lot of weekends.  We never set a real concrete time that we're coming over, and our time of departure is unpredictable due to the fact that two and four year olds lack punctuality.  Still, we'd like to give my parents a sense of when we'll arrive.  

That's where Twist comes in.  To "make a new Twist", you simply enter your destination (mom's house) and who you want to notify (mom).  Then, when you leave your house the GPS senses you're on the move and sends mom a text message, something like "Todd just left.  His ETA is 10:45 AM".   When you get close to your destination it sends another text message saying "Todd is about to arrive".  If you stop to get the kids some french fries en route and it takes too long another text message will be sent alerting mom of the delay.

Twist seems works best for trips that:

  1. You make on a regular basis
  2. Someone is waiting for you at your destination

I made one like the above example, and I made one for the days where my wife gets home before me..   That way, when I leave work and pick up the kids from daycare, I can let her know I'm on the way home and when I'll arrive.  That way I know I'll have a hot gourmet meal just waiting for me when I arrive [insert wife's laugh here].

My 15 Minutes

About a month ago I wrote a post about how I was using IFTTT to keep a journal about cute things my kids say and do. A couple weeks later one of my favorite podcasts, Mac Power Users tweeted that they were looking for interesting IFTTT recipes for an upcoming show.

I wrote David Sparks a short email about how I'm using IFTTT web automation to keep my journal. Lo and behold, they actually mentioned it on their show - It's at about minute 55. David even calls me a "smart guy" at the end. That's kinda the nerd equivalent of having Aaron Rodgers say "nice arm" after watching you toss a piece of paper into a wastebasket.

So, I'm kinda famous.

Adding Flash to Squarespace 6

This site is hosted on Squarespace, an awesome service that allows you to host blogs, galleries, and websites. They have great tools for managing the look and the content of your site. Even cooler, they provide hosting that can give you more resources if you suddenly need them. For example, if I'm caught up in some scandle and CNN's breaking story links to this post, well, it won't crash. They also have really nice analytics tools, so I could see how many gawkers are coming to nerdiguy.com.

However, since Squarespace is one company of a long list of companies that do NOT financially support this blog, I'm not going to spend much more time singing their praises.

What I want to write about is Squarespace 6. This update came out a couple weeks ago, and, as is typical for a major software change, I have mixed feelings. It looks really cool. The tools to manage the site are incredible. However, some of the features that were present on the old site seem to be missing, and it's a little buggy. As someone who had spent years working on updates to a website, only to have users lament the loss of the old version, I'm very sympathetic to them. And I have the utmost confidence that the bugs will be worked out and the old features will trickle back in.

A few things have perplexed me since converting to Squarespace 6. For example, it doesn't seem like I have a lot flexibility for editing the structure of the templates. Also, I can't find an easy way to provide my readers (either one of them) with an RSS feed.

I also was struggling to embed Flash files on the site. I know, I know, Flash is going the way of the dodo. Still, I'd spent a fair amount of time programming in Flash in the past and I want to include a few of my creations here. Actually, my Oculus Invaders game seems to be the biggest reason people come to nerdiguy.com.

I had to do a little finagling with Squarespace 5 to get these Flash files embeded and working. I used swfobject and Squarespace 5 code injection, using this forum post as a guide.

However, when I upgraded to Squarespace 6 I was at a loss. I'm still getting the hang of the new version, and I initially saw no access to a file system to even store my Flash files, much less link to them or embed them. I contacted their customer support about this, and, and after several back and forth emails, got the impression that it was not possible. I was starting to get very disappointed with the new version and was wondering if I wanted the shiny new look of the new one or what appeared to be the more robust and feature rich old one.

I kept plugging away, though, and eventually figured out that you can upload and link to files (I knew it - how could you not!?). To do this, simply go to the page or journal entry where you want to appear and enter the editing mode. Clicking the "link" icon in the toolbar will give you the option of uploading a file. Clicking this will allow you to navigate to the file(s) on your computer and upload it. Once the file is uploaded you the text field will display an absolute path to your file - you'll want to copy this. If you uploaded multiple items you can hover over the "upload file button" and see all of your files. Clicking a name will display that file's path.

There.  Now all we have to do is embed it into our blog entry.  As I said earlier, I wanted to use swfobject because in my experience  this is the best way to embed Flash in a browser-independent way.  Alas, I could not make this work, even with code injection.  Instead, I took a simpler route.  I created my blog post with a little text in the beginning.  I then clicked the "Add Block" button to add a code block, then again to add some text at the end.

So essentially, the post is divided into three sections:

I added the standard object/embed Flash code in the code block and changed the language to Javascript.

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="320" HEIGHT="240" id="Yourfilename" ALIGN="">
<PARAM NAME="movie" VALUE="Yourfilename.swf">
<PARAM NAME="quality" VALUE="high">
<PARAM NAME="bgcolor" VALUE="#333399">
<EMBED src="Yourfilename.swf" quality="high" bgcolor="#333399" WIDTH="320" HEIGHT="240" NAME="Yourfilename" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>
</OBJECT>

Just make sure you change the two instances of *Yourfilename.swf*  to the link that you uploaded (the one I told you to copy earlier).  Set the width and height and to whatever you need, and change the background color if you desire.  

A couple more things.  For some reason, every time you I tried to edit my code block the *display source* checkmark became checked.  This is pretty annoying, because if you save it that way it will just display your code (instead of running it when the page loads).

Lastly, when I was working on this my flash file was not working.  It didn't work in the editor, and it didn't work in the preview.  However, when I logged out and looked at my site, it worked!  You can see the results here and here.

Nothing too complicated for a real website developer.  However, with my disorientation with the new Squarespace site and the misinformation (perhaps *miscommunication* would be a fairer word) I  received from their support, I was starting to think this would not be possible.  Maybe posting my experience here will make the process easier for someone else.

If This, Then That: Rethinking the Email Journal

A while back I wrote a post about how I was using email, AppleScript, and Dropbox to keep a journal about my kids. Overall this has been working well, and I feel it is helping me to write more entries than I otherwise would. However, there's one thing that bothers me: It depends on Apple's native Mail application. In short, the rules I set up in Mail.app trigger an Applescript that appends the message to a text file.

Unfortunately, as hard as I try, I just can't seem to get comfortable with the Apple Mail app. I know this is may be considered blasphemy to the Apple faithful, but I just feel more comfortable using the Gmail web client. I like the keyboard shortcuts that let me fly through my inbox, and I have a workflow for using labels that I just can't seem to replicate in Mail.app.

So, my solution has been this - I manage my email in Gmail (or in Mailplane, which is pretty much the same thing). But, to catch my journal entries, I also open Mail.app at startup and keep it running on my desktop. This works, but it's not a perfect solution for multiple reasons:

  1. My MacBook Pro is getting a little long in the tooth, and running a largely unneeded program bogs it down a little.
  2. My laptop needs to be running for this to work. I'd like to be able to write an email from anywhere, hit send, and have it processed be my filter and added to my journal immediately. If my laptop is packed away, well, my email just stagnates in my inbox.
  3. Having an extra app running in my dock insults my minimalist sensibilities.

Because of these issues I thought I'd try another tack. I decided to try If This Then That, or IFTTT. I'd looked at IFTTT a while back, and while it looked powerful and interesting, I wasn't sure what to do with it. I thought this was the perfect time to give it a try.

First, a little info about IFTTT. The name really says it all: If this, then that. As in, if something happens, do something. IFTTT uses the public APIs of a whole slew of services, including Gmail, Google Reader, Twitter, Dropbox, Facebook, Instapaper, PinBoard, and about 40 more. So, you can essentially connect these APIs together like little building blocks. An example would go something like this: "Watch my Twitter account - when I 'favorite' a tweet, save the tweet in Evernote." There's a ton of other examples available at the IFTTT recipes page.

For my email needs, it would go something like: "If an email comes into my Gmail account with the subject "kid1.txt", Then append the content of that message to a specified text file in Dropbox."

So, I signed up for a IFTTT account and clicked the "Create" link. First you need to select the "This" part of If This, Then That. In my case, the This is "watch my Gmail". So, I clicked the Gmail icon and, on the next screen, selected the "New email from search" option. Then, I specified the phrase that I wanted IFTTT to watch for:

IFTTT  gmail

Next, we need to specify the "That". My That is "append the text to a file in Dropbox". So, I clicked the Dropbox icon and chose "Append to a text file" on the ensuing page. I specified the file I wanted to append to (kid1) and the path inside my Dropbox folder (Family/). I set up the Content field to format the text to include the date that it was sent and the message body.

IFTTT  content

After saving this 'recipe', I'm ready to go. I can still follow these steps: Write an email to myself, set the subject to "kid1.txt", write my "journal" entry in the content, and hit send.

Email screenshot

IFTTT sees it, grabs it, and appends the text to my journal file in Dropbox.

Text file screenshot

So, how is this method better? Well,

  • I don't have to have Mail.app running - or even have my computer running, for that matter…
  • No need for complicated scripting
  • Multiplatform - all I need is IFTTT, Gmail, and Dropbox. If I switched to a PC tomorrow, or decided my only computer was going to be my phone, this would still work.
  • IFTTT checks checks my Gmail account every 15 minutes, so I know my journal entry will be added to my text file in a timely manner.

Any concerns about this method? Yes:

  • I'm giving a third party access to my Gmail and Dropbox accounts.
  • I'm relying on a third party for this workflow. However, I'm not too worried about that: If IFTTT goes under, I'll still have my email archive and the redundancy of my Dropbox content. IFTTT is not hosting any content, so they're not going to lose my priceless journal.
  • IFTTT doesn't perform any actions on my email. It does what it's supposed to but it would be great if, when it's done its job, it could mark the email as read and archive it for me. I'll probably just do these things manually, but I think I'll have this lingering fear that I'm doing it too soon and not giving IFTTT a chance to add the content to my journal. I'm going to have to give some thought to how I want to handle that.