My little tiny Instapaper-helper script got a tiny bit of interest. Thanks to GitHub user aldl, there's now a forked version that has a handy installer, to make it easier to setup.
You can check that version out here. I can't vouch for how well it works, but hey, if it doesn't work, you can always fix it.
It hadn’t occurred to me until I saw a thread on Ars Technica, but iTunes Match has been out for six months now. I’ve written a bunch about it, but I figured, once again, it’d be good time to give a quick recap.
First things first
$25/year for a full backup of all of your music is worth it.
$25/year for a full backup of all of your music, while simultaneously making it available to all of your iOS devices—iPhone, iPad, Apple TV—and your other Macs and PCs, is a steal.
At this point, there is simply no reason not to buy it. Even if you don’t want to use iTunes Match on your iOS devices, it is still worth it for peace of mind, to simply have another location to have your media backed up. Go buy it.
A few things are still flakey
There are a couple of things that are still not quite perfect. For most people, these will go completely unnoticed. If you buy all your music from iTunes, or have never spent much time tweaking and caring for your ID3 data, tagging your music, or creating nested levels of smart playlists, iTunes Match is going to work like magic for you.
But if you are one of those people who curates your music carefully, you’ll find a couple of small annoyances.
Album art still doesn’t sync perfectly
I don’t understand why, or why this is a challenge to solve (I’m sure there’s a reason, but I can’t get my head around it …), but Album Art still only syncs intermittently. And only seems to do so when you’re playing music, which means if you’re listening somewhere that you don’t have a good signal (wifi or otherwise), you’re going to occasionally get some stuttering UI performance in the Music app.
Play counts don’t update
Play counts still intermittently update. Not a huge deal, but if you use a lot of smart playlists, it can bug you. It bugs me. Mostly because …
Some smart playlists still don’t quite work
If your smart playlists are based off of “Most Recently Added”, they sometimes seem to end up based off of the “most recently added” to the iOS device (when you really want “most recently added to my iTunes Match library”). Smart playlists seem to sometimes ignore the “don’t show videos or don’t show music that isn’t on my device”, which can lead to playlists where you end up downloading stuff you didn’t want.
Annoying, but probably not something everyone will bump into.
A couple of “nice to haves”
There are a couple of things that would be nice to have, that haven’t been added yet. I expect that, in the future (with Mountain Lion and iOS 6 on the horizon), we might get a set of new features and enhancements, so in a couple of months (maybe at my 9 month review), I’ll have nothing to say.
But, until then:
* We need a better way to manage music on the iPhone/iPad. Going into settings to flip the switch between “Show all music” and “Only show music on this device” is painful. That switch needs to somehow be in the Music.app. Or maybe just a different UI paradigm entirely.
* In something that I think I’m the only one to ever notice, sometimes iTunes loses track of “where” a song is, i.e. is it in iCloud or on the computer. That tends to happen after music has been automatically downloaded after being purchased from the iTunes Store. It’s just weird. And it cleans itself up … sometimes.
Buy it
If you’ve bothered to read this far, and you haven’t bought iTunes Match yet, just go do it.
I got a little bit giddy when I had the first couple of people follow (and comment on a couple of stupid bugs) my GitHub repository of my "Reading List to Instapaper" tool.
This whole social coding thing sort of works.
I made some small changes to clean up the code a bit (and comment it a bit better). Nothing dramatic—it still works the same way, but simply got rid of a requirement on Rails, which was needlessly in there.
The next step is to try to make a handy auto-installer, so you don't have to play with launchctl yourself. But, in the meantime, check it out if you use Instapaper and you're on a Mac.
It's not terribly surprising. I'm not really sure what Sensable has been doing for the past few years. The endeavor into dental seemed like it was maybe working, but it was hard to say because the company has changed focus 8 times since I left nine years ago.
Shit, has it been nine years?
From a pure technology perspective, Sensable was an awesome company and an awesome place to work. Cool technology, incredibly smart people (legitimately, some of the smartest people I've ever met in my life), a large enough niche to be self-sustaining (academia), with a couple of other niches to keep the lights on. Not being a business expert, nor privy to the financials, I'd guess the big issue is that when you take $40ish million in funding, you have to find a way to pay that back.
Unfortunately, the revenues never got there, and the leadership, in later years, seemed to be more interested in digging a deeper hole than finding an exit. (I'm just speculating; I don't actually know anything.)
In early April, the Sensable I knew ceased to exist. I'm sort of ok with that. I'm not sure if I know anybody who still works there—everyone has gone onto other things, often bigger and better—nor do I have any clue what the company was really doing these days. In reality, I haven't been clued into Sensable for years.
So, given that, why does this pain me a little bit? It's the close of a chapter of my life. Even though I've been gone for nine years (again … shit, that makes me old), I still see folks from Sensable from time to time. There are still emails and occasional get togethers. These are people I root for, as they were, to a person, almost all really awesome.
But that thread that tied us together—which had frayed and grown bare but not broken—finally broke. And that makes me a little sad. But, I'll still keep up with the folks I worked with and watch as they do new, awesome things.
(If the second company I worked for disappeared off the face of the earth, I'm not sure I'd really care. In fact, I know I wouldn't. That place was sort of a cesspool. Actually, not sort of; it was a cesspool.)
Actually, it's not. While "Spring is for" turns up something like 2.3 billion results on the Google, "Spring is for concerts" turns up two. And, coincidentally, one of those results happens to refer to a different stop on of a tour that spawned this post.
Did that make sense?
Regardless of the nonsensicalness of the previous couple of sentences, I've seen a bunch of shows this spring (both with and without my wonderful girlfriend). Much of that has been documented on ye old Twitter and previously on ye old blog.
But, we lucked into some good seats to a couple of really great shows, and felt that it deserved a bit of verbage.
A little over a week ago, I saw Nada Surf play for the fifth or sixth time. As always, they were just fantastic. There are bands that just know how to play to a crowd and they connect in that way where it's not just the music, but you feel like you're actually hanging out with a big group of people and experiencing something unique (even if it's quite likely they pull off the same schtick in every city). Nada Surf is always like that.
This time did feel a bit more unique, as they covered a tune by The Gravel Pit (a Boston band they toured with back in the day), which probably doesn't happen everywhere (though, judging by setlists, at least happened in New York as well.)
About a week later, the girlfriend and I went to see Snow Patrol. There's a bit of backstory here. This was sort of our "bonding" band, as 2005-era Snow Patrol was a perfect bridge band between poppier music and "indie rock." So, they're kind of a foundation for our relationship.
Go us.
A few years back, we got ok seats to see Snow Patrol open for U2 at Gillette Stadium. We left super early so we could get to our seats and catch the opener. What could go wrong?
3.5 hours of traffic (on what should be a 40 minute drive) got us to the arena in time to have Snow Patrol leave the stage.
Perfect.
Cut to a couple of months ago. Snow Patrol sold out The Orpheum, but I found some "obstructed view" seats on StubHub.
Turns out, we were obstructed by the stage. Probably the best seats I've ever had for a "big" show. And, with the exception of not playing "Spitting Games", Snow Patrol were another band that made a big, likely routine for them, show feel somewhat unique and intimate.
I'm sort of continually looking for a simple WordPress theme that will let me get most of the cruft out of the way, and just focus (mostly) on the text. I generally (stress generally) dig Tumblr's themes because they're, quite often, "here's a picture, here's some text". Simple. (Except when someone MySpace's their Tumblr up and turns it into a sea of icons and badges and animated gifs.)
So, I grabbed it off GitHub, messed around with things a tiny bit, and here we are. I'm sure I'll tweak it a bit more, and then get bored by it and change it again in three months. But for now, I'm happy with my new clothes. It's spring, the weather is nice, and it feels like I've just done a bit of spring cleaning on the old blog.
Feels like this, really:
(This is my street. Walking out to go to work some mornings can be quite inspiring.)
A week or so back, I started thinking that it might be nice to get away from using the Instapaper bookmarklet (which is great, don't get me wrong) and see if there was a way to use Safari's Reading List (which works on the iPad, iPhone, Mac, and presumably the PC) to send links to Instapaper.
This is about the Mac implementation, but presumably, a PC implementation would work similarly.
Getting the Reading List info to feed into Instapaper was surprisingly easy. I used Ruby, but you could certainly use pretty much any scripting language. The Reading List entries are stored in the Bookmarks.plist file that lives in your ~/Library/Safari directory. It's a binary plist, so you have to run a magic plist command on it to convert it into a text plist.
At that point, if you want to, you can throw that through a regular expression, or into a plist/XML parser to deal with it like an object.
You find the set of entries that define the Reading List links, parse the URLs out of them, and then you can send the links to the Instapaper Simple API to store in your Instapaper account.
I've got some extra jazz in there that keeps track of the last time it ran, only grabs links newer than that, and after submitting, throws up a little Growl message that lets me know the link was submitted successfully.
It's about 83 lines of code (and I'm a pretty crappy ruby programmer) and, so far, it works pretty flawlessly.
But, what good is that if I have to run a script every time I want to sync up my Reading List and Instapaper? Wouldn't it be awesome if there was a way to automatically run the script whenever the Reading List is updated?
It would be.
And there is.
launchd is a nifty cron-like thing that runs on the Mac. You tell it to do automatic stuff and it does it. One of the automatic things you can tell it to do is "watch this file, and if it changes, run this command."
After a bunch of trial and error, I got my little LaunchAgent working, and now, every time I add something to the Reading List in Safari, I wait about 10 seconds, and I get my little Growl notification that the link has been submitted to Instapaper.
Awesome, right?
Even better, now I can add things to my Reading List on Safari on my iPad or iPhone. When my computer next syncs up its bookmarks, it'll submit those links to Instapaper.
Even better than that, if I put the little touch file (that keeps track of when I last updated) onto something like Dropbox, I can run this utility on any computer I want, adding links to the Reading List all the while, and things should appropriately get added to Instapaper.
All in all, it's a nifty little system.
I'm going to throw the whole thing up on Github at some point this week, so you can download it and play with it yourself (and probably make it better).