Chris Rawson over at TUAW with a nice response to RMS:

My iPad and iPhones may be tools of a “walled garden” approach to computing, but they do what I need them to do, every time, and without me having to tweak around the guts of their code in order to coax them into doing my bidding. How is that not freedom? How is that in any way equivalent to living in a prison?

See also my my Zealots piece.

The future is in glass.

Steve Jobs Q&A at WWDC 1997.

via Rands

Merlin calls Brett Mr. Useful. This is something that I’ve been finding pretty useful.

Zealots

I’ve written about my distaste for FOSS zealotry before, but man when Steve died the big guns came out. In their writing about Steve Jobs’ death and how good it is that we are now rid of his influence, Richard Stallman and Eric Raymond have shown once again that they are just as tyrannical, if not more so, as they accuse Steve of being. Steve never suggested that Linux (I refuse to call it GNU/Linux) users are “wrong”. And he didn’t tell Windows users that they were “evil”.

I used to have respect for Eric Raymond. If it wasn’t for his piece on How to be a Hacker I never would have discovered Python. His The Cathedral and the Bazaar essay convinced Netscape to open-source their browser (although I’ve always felt that was an act of desperation because they were getting their lunch eaten by Internet Explorer, not because of some deep-seated sense that it was “right”).

The holier-than-thou attitude is one reason I chose to put myself into this “prison” as they call it. I wasn’t coerced. I didn’t do it because it was cool. I tried it for myself and found the experience to be vastly superior to any of the Linux distros I had ever tried. It was so much better, in fact, that I “converted” most of my family and some of my friends. The diminished support burden on me was worth it. I can still do everything on the Mac that I was doing on Linux. I can still install and run the software of my choosing. Apple has not taken away any of those freedoms. And those are the ones that actually matter to real people.

When will the free software zealots realize that real people have enough to worry about and don’t really care if they can see the source code or open the box and hack away? People are not programmers.

Most people could not compile a program from source code, just like most people could not construct a chair out of a block of wood. The choice of software freedom is inapplicable if people are incapable of exercising their rights. — Thomas Brand

A Reserved Seat

Most people probably woke up this morning and didn’t notice any change. Their world is the same today as it was yesterday. But I am not most people. My world feels different. A little less vibrant. One of my heroes is gone.

I watched the iPhone 4S presentation on Tuesday night, almost as soon as Apple posted it. As I was watching, I couldn’t help but notice that the camera seemed to be deliberately coming back to one particular seat. It was an empty seat, marked Reserved. Eventually I started thinking of it as Steve’s seat. “That’s where Steve would be sitting if he were well enough to be there,” I told myself. We’ve known for a while this day would come. Death is inevitable. Steve talked a great deal about it in his Stanford Commencement Address back in 2005. But even with all of the lead time we had, all of the preparing we may have done, it still came as a shock when the day finally arrived.

I never met Steve Jobs. I’ve never been to Macworld Expo or WWDC to see a Stevenote in person. I’m sure I’ve never even been within a hundred miles of him. But the products he was instrumental in bringing to market have profoundly changed my life. I found out about his death from a text message on my iPhone 4. I’m typing this post on a MacBook Air.

I have enough self-awareness to know I will never be as relentlessly driven and focused as Steve was. But I hope that every once in a while I hear his voice coming from the seat I have reserved for him in my heart and in my mind.

seat
Goodbye Steve. Because of you my life has been better.

Goodbye Steve. Because of you my life has been better.

Can AppleScript and Automator have any future on an operating system where every app is surrounded by an impenetrable steel shell of distrust?

If AppleScript went away or became essentially neutered I’d be pretty pissed off. It’s honestly one of my favorite features of OS X.

The thing that drew me to Python wasn’t the language per se (although I do love me some significant whitespace). It was the fact that Guido and crew seemed to have their act together. I tried Ruby for a bit and I generally like it. The community, on the other hand, seemed to me to be a disorganized mess. Maybe it’s gotten better, but at this point I’m perfectly happy with Python and don’t see much reason to switch.

Interesting email from Barnes & Noble.

Interesting email from Barnes & Noble.

My iPhone home screen.

My iPhone home screen.

Matt Gemmell:

Good SEO is a by-product of not being a dick on the internet.

How to Make Yourself Use Python 3

Python 3 is the future. Since I don’t have any kind of massive legacy codebase to support, there’s really no reason I shouldn’t be using it. If you, too, would like to force yourself to use Python 3, here are three simple steps you can follow that won’t screw with the system Python installed by Apple.

  1. Download and install Python 3 from Python.org.
  2. Open Terminal.
  3. Type the following command:
    echo "alias python='/usr/local/bin/python3'" >> ~/.bash_profile; source ~/.bash_profile

Now every time you type python at the command line, whether it’s to run a script or enter the interactive interpreter, you’ll be using Python 3.

Weekend Project: Steal This Book (Cover)

Disclaimer: Let’s get this out of the way up front. The gist of what I describe in this post is probably against Amazon’s terms of service. So don’t be an idiot.

I own about 1,000 books. For years I’ve used Delicious Library on my Mac to catalogue them all. If you’re unfamiliar with Delicious Library, it’s the best cataloguing app you can buy for the platform. To my knowledge, it was the first to let you scan the barcode of a book and then automatically download all the information, including the cover image, from Amazon. You can do the same for movies, video games and even tools.

When the iPhone was released, I waited patiently for a mobile version and Wil delivered. There was much rejoicing. But the dream was over almost as soon as it began. Amazon changed their terms of service to disallow using their information in mobile applications, the app went away, and the ability to sync to the iPhone client was removed from the desktop version.

Since then I’ve been trying to find a solution that would allow me to have access to my entire library on my iPhone. For a long time, I lived in a state of denial and kept the Delicious Library app on my phone, but it was pretty useless without the ability to add new information to it. I tried exporting flat html files from Delicious Library to Dropbox and then syncing with Good Reader. It worked, but it was impossible to search so I found myself tapping repeatedly to manually find the information I was looking for.

The ideal solution (besides a working Delicious Library app) would be to create a database on my Mac that I could sync with my iDevices. It would also allow me to add new books on the device and then sync the updates back. Bento seemed perfect for the job, since I have it everywhere, I just thought actually creating the database would be a huge pain so I never bothered. But it’s amazing the things you’ll do when you’re completely bored on a weekend. Step one was to export a .csv file from Delicious Library with just the basic information (title, author, ISBN, publisher) and then import it into a new Bento library. Easy. That wasn’t enough though. I also wanted to have the cover images and you can’t export those from Delicious Library.

So the question became how to easily obtain the cover images for almost 1,000 books. Obviously searching Google Images wasn’t going to cut it. But Google did lead me to this excellent Abusing Amazon images article by Nat Gertler that describes in awesome detail the various URLs that Amazon uses for its cover images. With that information in hand, all I needed was the Amazon item IDs for all of my books. And it turns out that the item ID is one of the many things that Delicious Library keeps in its database. Exporting a file with just that field was trivial.

Now I had all the pieces: a generic image URL and a file with all of the Amazon item IDs. The Unix utility curl comes with OS X so I could use that to download the files. All that remained was to find some glue to put it all together. And my glue of choice is Python (you could do it in perl or Ruby and probably even AppleScript, but I stick with what I know best).

After reading a little documentation and experimenting with a subset of my item ID file, my little script was ready. I let ‘er rip and after about an hour I had a folder full of book cover images. I still had to add the images to Bento manually (since it appears that AppleScript support is not a high priority for the developers), but it sure beat having to download them all manually too. It also didn’t work for every book, and the image quality varied, but all in all it saved me a lot of time. The final script, cleaned up and with some features added, can be found on my GitHub.

Another thing I found while I was working on this is Delicious Library’s Scanned UPCs Log file. It basically keeps a record of the ISBNs for the books you’ve scanned into the application. I could see eventually modifying my script to read the most recent entry in the log and automatically download the cover. That would take some time to figure out Amazon’s API and the various Python libraries for working with it.May make for another fun installment in the Weekend Project Series.

In the end, this entire process could have been avoided if Amazon would just let us use their data in mobile applications. But since they won’t, I don’t feel entirely guilty about “stealing” it. Wouldn’t it be nice if they gave us some kind of library functionality, similar to what they’re doing with Cloud Drive or even extending the current Wish List? Why couldn’t we just upload a file with a bunch of ISBNs and then have a nicely formatted list show up in say Amazon’s iOS apps? It would be awesome, but I won’t hold my breath.

Now With 100% More GitHub

I’ve had a GitHub account for years and never used it for anything other than casually following a few projects (mostly because I think mercurial is a better solution than git). Since I’ve started posting some code here, and discovered GitHub’s gists, I’ve decided to try making more use of the site. My main page is here and my Open in Marked AppleScript now lives here.