Together is 10

August 3rd, 2014 by Steve Harris

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: http://reinventedsoftware.com/notebook/ 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.

Notes

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

August 3rd, 2014 by Steve Harris

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.

Together for iOS 1.0.2

July 30th, 2014 by Steve Harris

The changes I made in 1.0.1 created another problem that could show duplicate libraries in the list and only one would be in sync with iCloud.

I couldn’t see a workaround that was going to happen without an awful lot of pain. As such, I had to request another expedited review, and to my relief Apple was gracious enough to grant one, so now version 1.0.2 is available on the App Store.

About the worst thing that can happen after requesting an expedited review is needing another one; expedited reviews are one-time exceptions intended for emergencies, and never guaranteed.

While the main problem 1.0.1 fixed to do with finding libraries was definitely an iOS issue that I’ll be reporting as soon as I have time, the problem fixed by 1.0.2 was all my fault, and actually an older bug in Together that would never have been triggered until today, and which wasn’t part of my testing. I can only apologise for any inconvenience.

Together for iOS 1.0.1

July 29th, 2014 by Steve Harris

Together for iOS 1.0.1 is now on the App Store. This version addresses the main issues since the app’s launch, along with some more minor ones. Here are the main changes:

Looking for Libraries

Version 1.0 would wait to get a list of libraries from iCloud, but sometimes the info didn’t seem to arrive. This version is far more flexible about it, showing libraries as they become available and making more rigorous attempts at downloading the information.

Opening Libraries

Where a library is taking some time to open, cancelling the process could create issues that could only be resolved by reinstalling the app. The app now better handles situations where libraries can’t be opened and, thanks to not needing to reinstall and the above changes locating libraries, you are no longer knocked back to square one, so this whole process should now be less troublesome.

Diagnostics & Tactics for Fixing Issues

One huge problem has been working out what’s going wrong where. The app now shows a Help button during the startup sequence, which can be used to access support resources and send diagnostic information. Previously this was only available in the Libraries sheet / popover after the startup sequence had been completed.

Finally, this version prevents a potential data loss scenario by ensuring all files are downloaded before moving things out of iCloud, as moving out and back in again is an approach used to resolve problems, but not one I could recommend until this was fixed.

Thank You

I am extremely grateful to everyone whose been patient and kind enough to get in touch, plug in devices and send crash reports and generally hang in there. I’ve managed to help almost everyone who’s got in touch and has not walked away so far, and I’m still at it. If you have an issue you’d like me to look into, please get in touch.

You can read about all the changes in the App Store or on the release notes page.

Issues with Together and iCloud for iOS

July 26th, 2014 by Steve Harris

Together for iPad and iPhone has been well-received, but while it’s working perfectly for some, issues with iCloud are making it very difficult for others to open their libraries.

At the moment, the main problems are currently one of these two things:

Existing iCloud Libraries are Never Found

Together keeps an index file of its libraries, but sometimes this can fail to download from iCloud, despite a good connection, so the app just sits there “Looking for iCloud Libraries”. Why the file doesn’t download is unclear, but following Apple’s instructions to Reset Documents & Data typically solves it. Sometimes, it’s also necessary to reinstall the app, so full instructions to do this are available on the Together for iPad and iPhone Support Page.

Libraries Do Not Open

In other cases, the library appears, but cannot be opened. Similar to the above problem, Together just sits there showing “Opening iCloud Library” while waiting for iCloud.

In this case, it’s sometimes the above issue, where it’s necessary to follow Apple’s instructions to Reset Documents & Data, and sometimes it’s because the library is large, having been freshly moved to iCloud or with data imported from another app, such as Yojimbo or Evernote.

In this case, a more gradual approach appears to work, where you first create an empty library, open that on iPhone/iPad and then import the data. Again, full instructions to do this are available on the Together for iPad and iPhone Support Page.

Differences Between Mac and iOS

Together for Mac has been syncing successfully with iCloud for over a year now, and although not flawless, the only real issue that sometimes occurs is that syncing stops. In this case, moving the library out of and back into iCloud usually solves it.

iCloud on iOS works differently to Mac. On Mac, everything is downloaded automatically, whereas on iOS things are only downloaded on demand. In theory, this makes sense and isn’t much of a difference provided you have a reliable internet connection. The reality has been very different for some people.

So far I’ve managed to help everyone who’s written to me for help (at least who haven’t walked away), and sometimes the problems just seem to clear up, suddenly and mysteriously.

While the app has its inevitable 1.0 teething problems, at the moment there aren’t actually any bugs to fix related to the above problems, but now I am aware of the unique ways iCloud on iOS can go wrong and finding reliable solutions, I can at least advise people quickly and tweak the app to handle some of these unexpected scenarios better.

I intend to submit updates to both apps next week to deal with the issues reported so far that I can fix, along with changes to better handle the above scenarios.

If you are experiencing any difficulties, please get in touch. It’s especially important to do so if the instructions do not work for you, as this will mean it’s something I haven’t yet encountered.