When I first released Paperclip, there was a lot going on. It was released in the middle of a minor scandal within the Mac community. To be sure, the scandal wasn’t of my doing (and I did what I could to meet my end of the bargain), but while it pushed Paperclip out, it also caused several problems during development. Although I’m generally happy with Paperclip, I knew I could do better. Now that I’m in the home stretch with finishing the next version of Paperclip, I’m ready to start talking about how Paperclip 2 is what I always envisioned for Paperclip.
A few words about 20MacApps
I’ve previously written about my affiliation with the promotion known as 20MacApps. Basically, the promotion was 20 new applications released every few weeks. No existing applications were sold, these were brand new apps. I was asked to be involved and I tentatively agreed on the condition that I could come up with an app concept worth developing. A few weeks of hacking later and I had a working prototype of Paperclip running on my computer. I was loving it and I agreed to the promotion.
To my surprise, Paperclip was scheduled to be the first app released. This would mean concept to finished product in under 2 months. That wasn’t enough time, but my own hubris got the better of me. Paperclip was coming along nicely and I thought I could have something resembling a 1.0 released that I could polish quickly. Unfortunately, I never had access to a real beta test group due to my agreement with the promotion. I was also running low on time so I couldn’t rewrite some of the internal aspects to my satisfaction and still have time to add polish and features. The internals appeared to work, but without proper testing, I just had to assume that they would work.
In the end, I shipped something that I was happy with, more or less. Paperclip was probably my best 1.0 product to date, even though it shipped with a few bugs. Of course, I wasn’t aware of them until the product actually went into the hands of some users, but I managed to take care of most of them relatively quickly. By the time I shipped, I had squeezed another week or two of development in because the promoters of 20MacApps had apparently cut and run, leaving customers looking for answers. I was just in the dark as the customers so I gave away copies to everyone that had ordered through the promotion.
Two problems with Paperclip 1
Once people started using Paperclip, two things were immediately apparent: I hadn’t spent enough time developing the internal mechanisms for Paperclip and everyone wanted to be able to attach multiple notes. The two were related from a development stance. The internal mechanisms were relatively solid. Once users started sending in reports, I fixed a memory leak and a couple of crashing bugs. Other than that, there’s one crasher still extant (which I’ll get to later), but otherwise Paperclip had a solid core.
Unfortunately, Paperclip’s internals were designed to work rather closely with the note display mechanisms. One of my notes from development was that they needed to be disconnected and work independently of each other, but I didn’t have time for that before I decided to punt and ship to 20MacApps customers. I knew it’d take a massive re-write effort to provide multiple notes, but I didn’t know if I could make it work with the 1.x codebase.
The big fix
Before I could do anything with Paperclip, I needed to fix the codebase. This wasn’t going to be a simple refactoring. This was going to be a complete re-write. I started a new Xcode project and started putting pieces together.
The result of this is Paperclip 2. P2 has all of the features of P1, but it supports some of the more pressing requests. The memory usage has been toned down. It feels a bit zippier. And, get ready for it, you can now attach multiple notes to the same document!
In addition, I’ve been able to add some nice power-user features such as the ability to write plugins for several aspects of the system and improve on Applescript support. And, finally, also by popular request, I’ve added documentation within Paperclip’s bundle.
Paperclip 2 won’t be bigger, but it will be better. Paperclip 2 isn’t trying to out-feature Paperclip 1, it’s simply trying to be what Paperclip 1 should have been. Sure, there are a few extra niceties added to it, but P2’s codebase is now greatly improved. This will make it much easier to add features to future releases. It won’t be a huge change over what you can already see in Paperclip, but it’s a massive improvement.
The upgrade fee
I’ve spent a lot of time, energy, and effort into Paperclip 2. I’ve never charged for an update for any of my applications up until now… and I see no reason to start.
Paperclip 2 is what Paperclip 1 would have been if I had the time to develop it properly. I’m exceptionally grateful for all of the users that have been with me up until now. It would be poor form to charge for this upgrade. Perhaps I will have an upgrade fee in the future, but it won’t be for Paperclip 2.
The extant bug
Paperclip 2 is in the polish stage. That’s usually the longest part, but I’ve been polishing it for a while. However, there is an extant bug from Paperclip 1 that I still haven’t been able to squash (and that I mentioned earlier). The bug is a crash that happens deep within some of Apple’s code (specifically, somewhere in the Applescript implementation). I can’t reproduce it consistently nor can I work with the code directly. Paperclip 2 won’t be released until I can confidently say that this bug is squashed. Once it’s squashed, I’ll start planning Paperclip 2’s release.
Watch this space
Paperclip 2 is different and better than Paperclip 1 in a lot of ways. Not only did it gain multiple note support, but there’s also a robust plugin system and MobileMe syncing. Over the coming weeks, I’ll write a few articles describing these features as well as a few power-user features from Paperclip 1 that many people may not have noticed.
Leave a Reply