Archive for the 'Indie Mac Development' Tag

Together is 10

Sunday, August 3rd, 2014

Together launched on 3 August 2004 (as did Reinvented Software), making it a decade old today. Join me on this long, gloriously self-indulgent look back at the app, some of which goes back even further, complete with some really old screenshots.

Also, I’ve written a post about surviving as a Mac developer for 10 years here.

NoteBook 1.0

In a way, Together grew out of a freeware app I wrote at the turn of the millennium to try out Cocoa in the Mac OS X Public Beta. The earliest date in the source code is 1 December 2000 and I released the app on 2 January 2001, so it’s clear what I was doing over the holiday season.

NoteBook 1.0 had almost nothing to it. All it did was present a sequence of rich text notes, thanks to the new text editing features built into Mac OS X. You can see a screenshot on the original web page, which I’ve uploaded here: I’m impressed at my first ever attempt at a Mac OS X app icon, bland though it may be (it later turned into this).

Even back then, I remember having ambitions beyond that. Mac OS X lacked the Note Pad and Scrapbook apps (actually desk accessories) that could be traced back to System 1.0. That was disappointing as I used them quite often, despite their limitations. Note Pad presented notes with a page-turning UI and Scrapbook was a sideways scrolling collection of various types of clippings: images, text, sounds and movies. I wrote about these and their connection to Together (when it was called Keep It Together) back in 2005.

Eventually the freeware app looked the way you see it below. Check out that Helvetica Light!

NoteBook screenshot

NoteBook 2.0

GEEK CORNER: You would never bother to say something was a Cocoa app now, but back then it was still a big deal. Actually, the app was written in Cocoa Java, so won’t work now. I was a C developer at the time and could’ve easily done it in Objective-C, but I wasn’t even remotely serious about shipping an app back then and fancied trying out Cocoa Java to see what it was like. Apple was still somewhat beleaguered and needed ways to entice both developers and users to the platform. For users, there was the hardware and amazing way Mac OS X looked; for developers, there were concerns that Objective-C, despite being a superset of C, easy to learn and ideal for incorporating existing C code, was considered a bit weird, whereas Java was very much a buzzword at the time. In the end, Objective-C won people over. Now there’s Swift, but I think that’s a very different story. Even so, I wouldn’t write off Objective-C just yet.


The freeware experiment taught me many things, such as what it’s like when people actually use your app and have opinions about it, but also made me think I could make a living selling apps full-time. I could see a few other people doing this and was getting tired of my day job in corporate IT.

After paying off my debts and saving up a cushion, I quit my job, got together with a friend who’d set up a company in the US, added features I knew people wanted, renamed the app to Notes (to avoid conflict with other apps on the market) and tried selling it for actual money. This was a total failure.

Notes 3.0 screenshot

However, by this point the app certainly had shades of Together about it, being capable of storing and viewing various file types along with a hierarchical folder structure.

Keep It Together 1.0

For the next year, I did contracting work to stay afloat and eventually burnt out. To recover, I had to shed all previous projects and commitments. I never wanted to let anyone down, but couldn’t have continued, either physically or mentally. It would take years to truly feel well again, and the first year was unbelievably difficult. I slept a lot, but in my waking hours ideas kept coming to me. Unable to consider a real job and with no sick pay, I decided to turn completely independent.

The result was Keep It Together 1.0. This took all the knowledge I’d gathered making NoteBook and put it into something truly designed for the task. No longer was this some kind of classic Mac OS replacement, but a proper Mac OS X app, inspired by the new iApps like iTunes and iPhoto, where you just throw stuff in there and not worry about it.

KIT 1.0 launched on Mac OS X 10.3 Panther with content searching as-you-type (Spotlight wouldn’t arrive until 10.4), linked files, groups (based on iTunes playlists, where items can be in more than one group at a time), smart groups, and notes you could create in the app too. As you can see, the basic design has stood the test of time.

KIT 1.0

KIT 1.0

KIT was well-received, but it took a couple of years to catch on, gaining a lot of attention during a golden era of Mac productivity apps that was inspired by GTD, tagging and the like. Eventually, the app grew to support bookmarks, web archives, ratings, tags and plenty more, but all this flexibility meant people wanted to put more in it and the database was seriously starting to creak.

Together 2.0

Over the course of 2007, I set about creating version 2.0. I decided to drop “Keep It” from the name, partly because Keep It Together was too long, and also because the abbreviation KIT was an impossible search term, even for the semantically-savvy Google. “Together” as a proper noun suffers none of these problems.

Together 2.0 screenshot

Together 2.0

Together 2 Shelf

Shelf in Together 2

Version 2.0 was released soon after Mac OS X 10.5 on 15 November 2007, and added a slew of features: a tags source list, folders, portrait orientation for the list and preview, thumbnail icons, Quick Look previews for files the app didn’t understand, Spotlight content searching to remove the burden of indexing, tabs, multiple libraries, editable documents, encrypted items and the Shelf tab on the side of the screen.

The Shelf was (and still is) for the app to be accessed from any other app, harking back to the compactness and convenience of those Note Pad and Scrapbook apps, except it adapts to what you’re doing: click the tab to open it and navigate the library or make quick notes, or drag to the tab to choose a destination for your import, then it changes again so you can add tags and so on.

Over the next 6 years, the app would grow to add .Mac (later MobileMe) sync, which never worked, then remove it when the service was terminated, web PDFs, favorites, importing files automatically from Finder folders or via bookmarklets and global hot keys, scriptability, nested groups, multitouch support and plenty more. All very geeky, but there was one thing people wanted more than anything…

Together 3.0

Released on 9 May 2013, I first sketched out the design for Together 3.0 some two years earlier to accommodate new features and work alongside a companion iOS app, even though I still had no idea how the apps would sync back then, as iCloud had not been announced. I also wanted to slim down the app’s UI to restore the simplicity of version 1.x, but without losing any features. This seemed the ideal time to do it.

Together 3.1 screenshot

Together 3.1

Mac OS X 10.7 Lion had been previewed and billed as the “Back to the Mac” release that would return some of the features and philosophy of iOS, and Apple’s attention, to the Mac. Finally, iCloud was announced at WWDC 2011 for launch the following October. This was the solution I’d been waiting for.

However, at WWDC Apple also announced the requirement for apps sold through the Mac App Store to become sandboxed in the same timeframe, and that iCloud would be restricted to Mac App Store apps. Sandboxing is a security solution that restricts apps’ access only to things you allow. At the time, app sandboxing was far more restrictive than it is now, and adopting it would mean losing a lot of features from Together. I wasted about 6 months sandboxing my three apps before Apple changed sandboxing to be more flexible and relaxed the Mac App Store rules for existing apps, provided they only included bug fixes and OS X enhancements.

With Apple still working out the creases in sandboxing, many of which wouldn’t be addressed until the release of 10.8 in July 2012, I decided to postpone sandboxing and consequently iCloud and all other new features to Together 3.0. In addition to iCloud, other new features included stationery, thumbnails, an Inbox, navigation history, tab exposé, autosave, a new design, and plenty more.

Together for iPad and iPhone 1.0

With iCloud in place I could finally create a version of Together for iOS. Many obstacles have fallen away over the years, but having a way of syncing that data across devices was absolutely key. Until iCloud, I’d toyed with various ideas, none of which seemed feasible. A solution that relied on something not built for the task, such as Dropbox, was too risky, but creating and maintaining two apps while running a cloud syncing service (and it has to be in the cloud) for something as data heavy as Together is too much for a single developer.

Together for iPad 1.0 screenshot

Together for iOS 1.0

I began Together for iPad and iPhone properly after releasing Together 3 for Mac, based on the iCloud work in the Mac app and designed from scratch for iOS 7. It’s a tricky proposition, recreating an app so desktop-based as this, all files, folders and tags, none of which has a natural place on iOS. However, if you take those things away or somehow try to abstract them too much, it fails to be the app people want. Likewise, you need to be brutal in what you can and cannot do. Anything that doesn’t fit has to go. This problem reminds me of the Irish joke, where someone asks for directions and the Irishman replies “well, I wouldn’t start here.”

Then again, it’s clear a shift is happening in iOS where creating an app like Together is getting easier and makes more sense all the time. Besides which, Together doesn’t impose things like folders or tags, that’s something done out of choice. As far as Together is concerned, nothing has changed since version 1.0: it will take care of whatever you put in its library, no further action necessary. Now that sounds like an iOS app.

The future of Together now is to build on all this. OS X Yosemite will bring a refresh of the UI and integration with iOS 8, which also gains the ability to share documents between apps, moving iOS closer to OS X. Despite being years later than I wanted, it feels like Together for iOS has arrived at the exact right time.

I love what I do. I never got rich from it and I rarely have any time off, but it’s far better than what I would have been doing otherwise. To everyone who’s supported me and my apps over the last ten years, thank you!

Ten Years a Mac Developer

Sunday, August 3rd, 2014

Today, my Together app, and thus Reinvented Software, turns 10. I’ve done a long post on the history of the app, but since there’s been a lot commentary lately amongst developers on what it takes to be indie in 2014 (some of which Gus Mueller linked to in his own post on the subject, saving me the trouble) it seems appropriate to talk about that now too.

All I have are my experiences and observations as a developer of ten years, with three Mac apps and one companion iOS app. I don’t have answers to things like upgrade pricing (although bye bye discount, I suspect) or what the hell to charge on iOS (probably more than you think, less than you’d like). Also, while I barely even consider myself an iOS developer, from what I’ve seen it’s just the same really, even if the scale is different.

To make a living, you need to create something useful that you can sell at a reasonable but sustainable price, and build up over time. Luck and good timing matter too, but a lot of that comes down to being smart about it. Sometimes it takes a while to come up with the app that sticks. In my case, my first app (KIT, now Together) launched and did nothing for two years, meanwhile my second app, Feeder, caught the podcasting wave. By the time that was over, Together was gaining traction and has been my main earner ever since.

Expect poverty starting out, moments in the spotlight far too brief, frequent setbacks and the ever-present threat of suddenly finding yourself in competition with some large corporation or VC-funded outfit possessing the kind of resources and reach you could only dream of. The iPhone app gold rush encapsulated this whole experience.

I wasn’t a part of that, but I can understand how it must feel. About four years ago, I remember being somewhat incredulous that I’d appeared on a list of 35+ Rockstar Mac Developers and their Apps (and here’s 20 more). Incredulous because it already seemed a little late from where I was standing. iPad had been released, which encroached on the Mac’s turf far more than iPhone ever had, and people were moving on. Would you get a post written like that about Mac developers today? I don’t think so. Hey, even that site has shut down. The wagons rattled off into the distance, leaving us coughing in their dusty wake.

Many Mac devs from that era have now experienced the full bell curve of interest in a platform, starting out as a niche concern, then hyped to the stratosphere, only to be swiftly brought back to earth. It’s hardly that the Mac or those apps are an irrelevance, but it can feel that way when you’re trying to promote your stuff. I don’t know how anyone else on those lists is doing now, but most look like they’re still going, thankfully.

The ones who aren’t? Well, I recognise the names and can suspect the reasons. There has always been, and probably always will be, people saying you should sell apps for pennies to get the most exposure, or do this or that to get gain thousands of customers overnight. This works for a short time, but it’s heralded the death of many a dev’s career, crushed under the weight of supporting people who paid next to nothing. What’s the point? There are no shortcuts to lasting success.

It took about 3.5 years until I could say I was making a proper living, but it’s not like you crest the hill and then it’s all freewheeling. I was buried under the avalanche of work that followed, and it took a few more years to dig my way out, by which time I had to start all over again creating a Mac and iOS app combo to survive in the new world that emerged in the meantime. There have been many hairy moments, and I’ve lost count of how many times I’ve thought it’s all over, only for things to roar back into life with the next release.

The peaks and troughs seem more extreme these days, and it’s much more difficult for apps to gain attention. You need to make sure you always have irons in the fire, while keeping up with the latest developments. You cannot rest.

It’s not easy and never was, but nothing worth doing ever is… at least that’s what I keep telling myself.

Yes, that just happened.

Indie Upgrade Cycles

Tuesday, December 18th, 2007

There are some very insightful comments on the last post, as expected from Daring Fireball readers. Thankfully, nobody took anything personally, because it was about whether super-cheap bundles are an efficient way of gaining customers, rather than any reflection on MacZOT (or any other bundle / discount) buyers or a particular site.

One theme running through the comments that did make me wonder ran along the lines of “the lack of updates caused me to look elsewhere”. There is the irony there that the extra support work not only delayed the 1.3 release, but put a squeeze on everything else I did.

The striking thing about this complaint though, is that it’s something I’ve also heard quite a lot in support emails regarding a number of Together’s competitors. I admit that I don’t keep tabs on them, because I don’t see the point, but as far as I can tell most of these apps get updated every 3 – 6 months, with bug fix / tweaks released every month or so, just like KIT.

For example, Soukyan writes:

What bothered me was that development seemed to slow to a halt for quite some time. I realize that you were preparing the 2.0 release, but this is the problem with small developers. My license entitles me to 1.x upgrades for free, but the paradigm in software has become, release, upgrades to release.5 at the most, and then do a new release and charge for the upgrade. Whatever the reasoning behind it, I don’t mind, but I do mind when the developer seems to drop off the face of the earth. The tells me that I cannot rely on the software to be maintained for the long term.

It’s when indie developers are quiet that they’re probably working the hardest. I spent almost the entire year working on KIT/Together. Version 1.3 was released within 6 months of the bundle and 2.0 another 9 months later, soon after Leopard was released. That was a longer gap than I’d normally like to have but in the meantime, KIT was updated every month or so all the way up until October, when it was made Leopard-compatible.

Obviously Leopard’s delay, and lack of development in the meantime, impacted everything quite significantly. I started Together when Leopard was supposed to be released in late June (and some rumour sites were adamant it would be April). I opened a lot of bugs about Leopard with Apple, a number of which still haven’t been closed and had to do a lot of work twice, to work around problems.

Indie Mac apps in general have frequent free updates that add features as well as fix bugs (often within days of them being reported), and this is what sets independent developers, whether individuals or small teams, apart from the likes of big companies such as Microsoft or Adobe, who release something huge every two years and nothing in between. Even Apple only manages, at best, annual updates to their applications, with the free, minor updates offering fixes but little in the way of new functionality (one exception being iTunes, but generally this is to support new iPods/iPhone or iTunes Store initiative).

Software development takes a long time and it’s most efficient to bundle changes together. One feature may appear as a bullet point, but take many weeks to design, develop and test. Most new features will impact something else, so the repercussions of even a handful of new features can be mind-boggling. Even a release that takes 2 or 3 months can easily devour another month in support, and for all sorts of reasons.

It’s a real balancing act for developers to come up with a release that has enough in it to satisfy people’s requests, works well, and provides enough features to get the attention of new buyers in a reasonable timeframe. I generally manage to release 2 to 3 such updates a year, alternating between both of my apps, and punctuated by the more regular bug fix releases.

Because indie Mac software is pretty low-priced anyway, and full version upgrades (e.g. 2.0, 3.0) often years apart, it’s important to keep that momentum going. There comes a point though where an upgrade like that won’t cut it and you need to make some pretty large changes, and that’s when it’s time for a major new version.

I guess that in Together’s market, where there is a range of diverse competitors people seem to bounce between, and where people may also use web apps that tend to trickle out smaller changes more frequently, people’s expectations can be very high.

So That’s Why It Was Called Pinprick!

Monday, December 17th, 2007

Just over a year ago, I wrote a long post, primarily about my experience placing KIT (now Together) in a super-cheap bundle with MacZOT, and some other stuff that was going on at the time. Having a fairly modest blog readership and seldom any comments, I didn’t know the post would become so popular. That only happened when John Gruber quoted a section of it on Daring Fireball in a piece entitled Pinprick.

The aim of my post was to examine whether the MacZOT promotion had been worthwhile from my perspective as a developer, amongst other things. This issue was one of many that were hot potatoes at the time and thankfully seem irrelevant now. However, I intend to revisit the bundle matter, as I have the final piece of the jigsaw to put in place.

The Story So Far

A quick recap is needed. I had been approached by MacZOT, through a friend, to include KIT in a bundle, having recently re-launched the app after an 18-month break (due to the overwhelming popularity of my other app, Feeder). The StoryZOT promotion was a week-long mystery bundle of three applications to be identified on the final day. These were rooSwitch from roobasoft (which won an Apple Design Award at this year’s WWDC), hawkeye from nito and my own KIT. Purchased together, these three apps would normally have cost $69.85, but the bundle was priced at just $5.95.

That price should make it obvious that the point is not so much to make lots of money from the bundle itself, but to use the promotion as a way to gain exposure for the applications involved; to put them on the map, as it were. Regular sales should improve as a result of increased coverage and recognition. Many such bundle deals had been run over the course of that year, so one would presume they were successful.

In total, 1536 bundles were sold and I was paid a flat fee of around $1000 (I’m converting from British Pounds), roughly 65 cents per copy. The developers negotiated their terms individually, so I cannot say how much of each $5.95 sale went to them, but I understand my payment was typical.

KIT (including its successor, Together) is one of those applications that gets a lot of feedback, partly because its scope is broad but also because its users are enthusiastic. It took around 6 weeks to clear the feedback aftermath from MacZOT and the whole experience had devoured some two months of my time. As I said in the original post, regular sales of KIT remained constant. The objective, to gain exposure and thus increase sales, failed. In fact, sales only rose some 6 months later, when I released version 1.3 as part of its normal revision cycle.

Having gained nothing in material terms, the final argument in favour of massively cheap bundles was that it’s an investment of sorts. While not all users will stick with the application, many will potentially upgrade in the future.

KIT 1.2 was pretty fresh at the time, being one month old. I didn’t go into MacZOT with the mindset of finding future upgraders, as a paid upgrade was a long way off. I continued with my original plans, released KIT 1.3 and set about developing the 2.0 version for Leopard, which I renamed to Together.

One Year Later…

I released that last month, some 14 months after the StoryZOT. Together’s reception exceeded my expectations. I am always pessimistically optimistic about major releases; no wild sales projections, but vaguely confident that it’ll be worth my time. I had worked hard to prioritise the most-wanted feature requests and combine those with my own original ideas to create what I hoped would be an application with broad appeal that lost none of KIT’s original purpose or simplicity.

Having put the best part of this year into that version it is a relief that every user I’ve heard from tells me that even if it’s not perfect, it’s a very capable application and a compelling upgrade. The only irresolvable complaints have come from a couple of individuals upset that Together is a Leopard-only application. And on that subject, it’s important to consider that Leopard is not even two months old, which impacts sales figures somewhat.

I don’t collect data about which versions of Mac OS X my apps are running on, but on Dec 15th (the one month milestone), Omni Group’s statistics shows that Leopard accounts for 21% of their user base and Adium’s Sparkle+ statistics shows 25% of users on Leopard. If Leopard follows the trend of previous versions shown on Omni’s site, within 6 months around 90% of users will have moved to the new OS.

As I said, Together exceeded my expectations. Some 23% of KIT users that originally paid full-price have upgraded to Together 2.0 in the month since its launch on November 15. That 23% is pretty impressive considering it matches the number of users on Leopard, according to the mean average of the above statistics. I thought upgrades wouldn’t reach the 20% mark for a few months, due to the various factors involved.

The answer to the ultimate question is 0.65104167 2.669270834. That is the percentage of MacZOT users that have upgraded to Together in the month since its release. To put it another way, that’s 10 41 sales (at $14.95 each) out of the 1,536 total. It’s a small percentage, but I am grateful for every single one. I actually know a lot of my users by name and recognise many of these as enthusiastic KIT users.

The total made as a result of the bundle deal so far, before fees, is around $1150 $1613. One could argue that this is money I wouldn’t have earned otherwise, but it doesn’t exactly cover those two months of work. That time could have been used to produce the 1.3 version (that actually did increase sales) much sooner. This situation also snowballs, because the longer an app does not have a certain feature, the more you hear about it.

Some Things Work

MacZOT hasn’t run one of those super-cheap bundles for a while and they are a world apart from their regular promotions or the kind that MacUpdate runs on a daily basis, offering around 40% off where the developer receives the majority percentage of each discounted sale. I did one of those with KIT on MacUpdate’s Promo back in May and was happy with the results. Mind, that came about because KIT had been voted for by MacUpdate users who wanted to see it featured, so it’s not like they didn’t know about it already.

Likewise, MacSanta’s no-nonsense (and no middle-man) discounts and other well-priced promotions, where users can see what they’re getting and developers receive a fair cut of sales, can be an excellent way for buyers of software to save money while developers to make a little extra and gain some exposure for their applications. I actually made more from the main day of MacSanta with the 20% discount than I did from that week-long StoryZOT, with no noticeable increase in support emails. Give Good Food to your Mac has been fine too.

As for the super-cheap mystery bundles, a little arithmetic will show they are certainly good for the promoters. Judging by the upgrade figures, one has to wonder if they are any good for those who buy the bundles, but at least the outlay is minimal. As for whether these sorts of promotions are good for developers, even in the long run, based on this particular experience I really don’t think that is the case.

Update: Oops, I messed up a bit. I noticed this when zenrain posted a comment below and I didn’t see his name on the list. The actual figure is 41 (or 2.67%) not 10. Still poor, but not as dire. I’ve updated the above accordingly. Sorry about that.

(Technical explanation: turns out some records on the database had trailing whitespace/newlines, which caused them not to match, I ran the query again and double-checked with text files and grep).

Give Good Food to your Mac Extended for One More Week

Sunday, December 9th, 2007

The European software promotion, Give Good Food to your Mac, has been extended by one week and will now run until the end of Saturday, December 15.

There are a couple of reasons for this. Firstly, there were a few problems when the promotion started, due to the load on the site’s dedicated server and its impact on integration with PayPal. Those problems were quickly rectified by moving to a cluster of servers and some other measures, but it took Aquafadas longer to set up a non-PayPal credit card payment system.

It turns out that PayPal’s reputation varies from country to country. While many people regard PayPal as a much safer option, because your credit card details are never revealed, buyers from some countries refuse to use the service outright.

Give Good Food to your Mac

Secondly, it’s only in the last few days that the underlying ambitions of the site have begun to be been realised. These aims have not been made clear in a lot of places and that’s because they are uninteresting to anyone but developers, but I think they’re worth mentioning here.

The intention was for the bigger European developers to help the smaller ones gain more attention. According to Claudia from Aquafadas, indie Mac developers don’t get nearly as much exposure in Europe as they do in the US, despite creating some pretty cool stuff. Hence the Euro-centric event. Aquafadas are taking a small percentage to cover their costs, the majority of each sale goes directly to the developers.

In trying to organise this event, Aquafadas noticed the second problem here, in that many European developers didn’t know each other or were unaware that the developer of an app was European, and as such didn’t know how to help each other. The omission of a number of European developers from the promotion was caused by this problem. Claudia found many of the developers involved by trawling sites like Apple’s Downloads. I’ve passed on the names of quite a few British and European developers that I know, and I’m sure others have done the same.

Aquafadas understand what I have written about here before, that the vast majority of Mac users are not involved in the online Mac community of news sites and blogs. To reach these people, more conventional means are required. It’s only during the last week or so that the site has been featured in European magazines and national press, so extending the promotion will mean that readers of those publications will have the chance to try it out.

And if you haven’t checked it out yet, it’s worth a look. There’s some great stuff there, including Pixelmator, CSSEdit and Aquafadas’s brand new BannerZest, which I think is pretty cool. The way the discount works, it’s actually difficult to spend too much money. You often find the total goes down when you add a new app.