Cocoal.icio.us 1.0b22 and b23
As much as I’d like to, I can’t put all of the blame for my recent silence on email. Part of my problem is that I’m an inveterate taker-on of side projects, and one in particular has consumed a lot of my time recently: Cocoal.icio.us.
I felt particularly under the gun to get b22 of Cocoal.icio.us out the door, since it contains changes to make the app compatible with Joshua Schachter’s recent API changes and conformant to his best practices for future client development. To wit:
- I changed the code to use the new “/posts/all” API call instead of the much nastier “/posts/recent?count=10000” (which Joshua recently limited to return no more than 100 posts).
- I made the entire API URL prefix (instead of just the server name) configurable to more easily support Joshua’s plans for versioned API URLs (e.g. http://api.del.icio.us/1.0/api/etc).
- I changed the authentication code to store the password in a keychain item instead of the preferences. Aside from simply being the right thing to do from a security standpoint, this change was necessary because of the vagaries of how NSURLConnection handles HTTP authentication when doing a synchronous request. In that mode, the username and password either have to be specified as part of the requested URL (which has its own set of problems) or must already be in the keychain when an authentication challenge is received (in asynchronous mode, you simply get a delegate callback from which you can provide credentials).
- Since Joshua recently added an API call to delete posts, I exposed this functionality in the client.
- Since Joshua fixed the previously broken tag renaming API call, I re-enabled that functionality in the client.
The authentication rewrite is what took the most time, and, honestly, I still don’t have it working the way it should (I think I’ll try to do a Brent Simmons/Fraser Speirs-style extended discussion of the issues involved in another post).
After getting the more difficult changes out the door, I decided it would be fun to work on eye candy again, so I cranked out b23, which adds a feature aped from NewsFire: optional window transparency when the app goes inactive. This was a pretty easy feature to add (even the UI—have I mentioned that NSUserDefaultsController is the killer app of Cocoa Bindings?), and I kind of like having it since I tend to always keep Cocoal.icio.us open in the background.
As always, feedback and bug reports are welcome (don’t be scared off by my recent anti-email tirade—just don’t always expect an immediate response).