Archive for the ‘Uncategorized’ Category

Backup to your OneDrive account with Arq!


March 30th, 2015

Arq can now back up to your Microsoft OneDrive account!

OneDrive Arq Backup

OneDrive accounts come with 1TB of storage, and if you’re an Office 365 subscriber you can get unlimited storage.

So if you’ve got a OneDrive account, put that extra space to use by storing your encrypted Arq backups there! Arq backs up whatever files you want, encrypts the data to maintain your privacy, and stores it directly in your OneDrive account.

As always, all your data are encrypted before they leave your computer, using a password that only you know, so your files are safe and secure; and the backups are in an account that you control. All the other features of Arq apply as well, including versioned backups, full OS X metadata backups, email notifications, and the ability to restrict which wifi networks Arq uses.

OneDrive integration is a free update for Arq 4 customers. Just pick “Check for Updates” from Arq’s menu to install the update. Or download it from here.

Backup to Google Cloud Storage Nearline


March 18th, 2015

Before you connect Arq to Google Cloud Storage, you’ll need to set up your Google Cloud Storage “project” and billing info. Arq’s help has a page explaining that.

If you’re setting up Arq for the first time, it asks you to choose a destination and enter credentials. Choose “Google Could Storage”:

Backup nearline 10

Click the “Log Into Google Cloud Storage” button and enter your Google credentials.

Next, enter your Google Cloud Storage project’s project number. If you haven’t set up a Google Cloud Storage project and billing for your Google Cloud Storage, click the question-mark icon and Arq’s help page will appear with step-by-step instructions on setting everything up at Google:

Backup nearline 40

The project number is shown on the project overview page in the Google Developers Console

Backup nearline 50

Choosing What to Back Up

If this is the first time you’re adding a destination to Arq, you’ll get a window like this:

Backup nearline 60

Click on “Set Up Backups”. Arq will configure itself to back up your home folder. You’ll be prompted to choose your encryption password. Once you’ve done that, you can quit Arq. Arq Agent does the backup work in the background.

Adding a Second Destination

If you’ve already got 1 destination and you’re adding Google Nearline as a second destination, you’ll be asked more questions. Instead of automatically creating a bucket for you, Arq will ask which bucket you would like to use. Choose to create a bucket, and check the “Use nearline storage” option and click Continue:

Backup nearline 100

Once you’ve added the destination, pick “Add Home Folder to Backups” from Arq’s menu (or, to add other folders, choose “Add Folder to Backups” and select a folder). Arq will ask which destination you’d like to add the home folder to. Choose your new Google Cloud Storage destination:

Backup nearline 130

You’ll be prompted to choose your encryption password. Once you’ve done that, you can quit Arq. Arq Agent does the backup work in the background.

As always, if you have questions, please send mail to and we’ll help you out.

- Stefan

How to Archive To Glacier


February 27th, 2015

Lots of people have emailed me asking for a way to put their stuff on Glacier and then delete it from their hard drives, because they’re running out of disk space. I used to think that disk space was becoming so plentiful that this would never be a problem, but the disk-space growth graph started over with the advent of SSDs, so I guess we’re not there yet!

Arq is our backup app that reliably backs up your files to your own Amazon Glacier account. It has always expected the files to remain on  your disk. But now we’ve changed that! You can pick a folder and mark it as an archive.

Add a folder to Arq, and choose “Glacier storage class” when prompted. (This is assuming you’re using AWS as your backup destination). When it’s been backed up, select it and click the “Detach” button:

Archive Folder to Glacier

The icon for the folder will change to a box, and the backups of that folder will stay in your AWS account, but Arq won’t try to back it up anymore. Now you can delete your files from your disk, but restore them from Glacier if you ever need them!

To “re-attach” the folder so that Arq starts backing up again, select it and click the “Attach” button (where the “Detach” button used to be):

Attach to Archived Folder

By the way, you can do this no matter what destination type you’re using, whether it’s Amazon Glacier, S3, Dropbox, Google Drive or SFTP.

As always, if you have any questions please email and we’ll help you out.

- Stefan

How to Recover Your Things Database with Arq


February 14th, 2015

The other day Wendy emailed me because Things crashed and she lost a lot of work, and she couldn’t figure out how to get back her data using Arq.

We traded a few emails over the next few hours, but it quickly became clear to me that she wasn’t wasn’t comfortable digging into her Library folder and move files around. So we jumped on Skype and did it together. She shared her screen with me so I could follow along with what she was doing.

The support person for the Things app had emailed her a web page with the location of the Things database, and we actually found some backups that the Things app had made by itself, but the newest one was a day old and the work she had lost had been added that morning.

So Wendy and I found a more recent Things database in her Arq backups and restored it.  Here’s how to do that:

  1. Quit the Things app.
  2. Click the Finder on the Dock.
  3. Click “Go to Folder” from the Finder’s “Go” menu, enter the path ~/Library/Containers/com.culturedcode.things/Data/Library/Application Support/Cultured Code/Things/ and click “Go”.
  4. Click the “ThingsLibrary.db” file once to highlight it.
  5. Click it a second time to rename it. Change the name to “ThingsLibrary.db_old”.
  6. Open Arq.
  7. Click the triangle next to your home folder.
  8. Select the most recent backup record (or whichever backup you want to use).
  9. Click the triangles to drill down to the same folder as mentioned in Step 3: Library/Containers/com.culturedcode.things/Data/Library/Application Support/Cultured Code/Things/
  10. Select the “ThingsLibrary.db” file and click the “Restore” button:
    Screen Shot 2015 02 14 at 10 30 40 AM
  11. Wait until Arq finishes restoring the file.
  12. Launch the Things app. You’ll see your Things data as of the backup date that you chose in step 8.
  13. To look at your Things database as of a different point in time, repeat the above steps, choosing a different backup record in step 8.

If you want to go back to the Things database you had before, quit Things, go back to the Finder, delete the “ThingsLibrary.db” file, and rename the “ThingsLibrary.db_old” file back to “ThingsLibrary.db”.

If you run into trouble with an app and you’re not sure how to restore the app’s data from a backup, send me email at and we’ll figure it out!

Arq backs up to Google Drive storage


August 12th, 2014

The latest update to Arq includes support for backing up to your own Google Drive storage plan!

This is exciting for a few reasons:

  1. Google offers 15GB free storage, so if you don’t need to back up more than that, the storage is free.
  2. Google Drive for Work now includes unlimited storage for $10/month (if there are at least 5 users in your account — otherwise 1TB/user).
  3. With Google, there are no additional fees for requests, network transfer, or anything else.
  4. It’s super-easy to connect Arq to your Google Drive account using your email address and password; no key pairs to deal with.

As always, all your data are encrypted before they leave your computer, using a password that only you know, so your files are safe and secure; and the backups are in an account that you control. All the other features of Arq apply as well, including versioned backups, full OS X metadata backups, email notifications, and the ability to restrict which wifi networks Arq uses.

You can even combine Google Drive with other destinations in Arq. For instance, you can back up all your files to both Google Drive and your SFTP server. Or back up some files to your Google Drive storage, some files to your Amazon account, and some files to your SFTP server. It’s entirely up to you.

This update is free for all Arq 4 customers. Pick “Check for Updates” from Arq’s menu to get the update. Or download it here: Download

- Stefan

Why you shouldn’t sell Mac apps through iTunes


June 11th, 2014

Ryan Leslie gave a great talk at IdeaLab last year explaining his approach to avoiding the iTunes Store for his music and his clients’ music. He gave some fantastic insights, but one struck me particularly hard.

Distributing Mac apps through iTunes is a really bad deal, financially speaking, and it’s not because Apple takes 30% of the sale. It’s not even because Apple might limit your album’s price through iTunes or restrict your products in other ways. It’s because Apple prevents you from owning the relationship with your customer.

Owning the Relationship

When a customer buys your album from Apple, Apple has that customer’s contact info and there’s no way you can reach that customer. You spent all that time and money driving customers to buy your album, but they bought it through iTunes, so when your next album comes out, you have to spend time and money to re-acquire those customers!

Ryan gives an example of an artist that Jay-Z produced whose first album sold 630,000 albums. They were only able to directly reach about 30,000 people, so for the next album they’ll have to spend millions acquiring customers again. He then gave an example of another new artist who said he’d have to sell 1 to 1.5 million records with his current record deal to make $1 million. With Ryan’s system that artist could make $1 million with only 10,000 customers — only 1% as many customers.


Distribution isn’t hard. If you’re selling apps instead of albums, then you’ve probably already got the skills to set up your own store front. I built mine using the awesome Potion Store as my starting point. It’s pretty close to maintenance-free. I use Braintree for payment processing, which has been rock-solid.

I’ve been selling Arq, my Mac backup app, for over 4 years using this method. I recommend it!

Arq 4 SFTP critical issue


April 8th, 2014

Please read this if you’ve been backing up to an SFTP server with Arq.

Potential Incomplete SFTP Backup Data

If you used Arq versions older than 4.1.1 to back up to an SFTP server, you may be affected by an issue that was fixed in Arq 4.1.1.

Arq 4.0, 4.0.2, 4.0.3, and 4.1 could potentially have written incomplete data files to your SFTP server. This issue would not show up until you tried to restore your files, and that is obviously not the time you want to find out that your backup data aren’t complete!

What Is Affected

Only backups to SFTP created by the above versions of Arq are affected. Backups to S3, Glacier, Greenqloud, DreamObjects, or other S3-compatible servers are not affected.

Steps to Resolve the Issue

If you used Arq versions 4.0, 4.0.2, 4.0.3 or 4.1 to back up to an SFTP server, please do the following:

  1. Open Arq and pick “Preferences” from Arq’s menu to open the preferences window.
  2. Select the “Targets” tab in the preferences window.
  3. Select your SFTP target and click the “-“ button to remove it.
  4. Click the “+” button to add your SFTP target.
  5. In the main window, add your folders to the SFTP target as you did originally.
  6. Click the triangle next to “Other Computers”; select your computer in the list, and click the button to delete the now-unused SFTP data.

Arq will back up your files again from scratch. I sincerely apologize for the inconvenience, which I realize is potentially a massive one if you’ve already uploaded a large amount of data.

The details of the issue and how it’s been fixed are explained below.

- Stefan


Details of the Issue and the Fix

The issue was that Arq would write a file to the SFTP server, and if the connection was lost and never recovered, or Arq was restarted, an incomplete file would be left on the SFTP server. Arq assumes that objects on the SFTP server are complete, just as it does for objects written to S3 or Glacier. The difference with S3 and Glacier is that those APIs are “atomic”; either the file is completely stored, or the transaction fails. With SFTP there’s more than one transaction — Arq opens the file, writes many chunks of data to the file, and then closes the file.

The issue never cropped up during a lot of internal testing and several weeks of heavy beta testing. I think this is because SFTP (SSH) re-establishes the network connection whenever it’s lost, and the writes eventually succeed. In some conditions however, such as if the app (or the computer) is restarted, the file could be only partially written.

To resolve the issue, starting with version 4.1.1 Arq writes each file to a temporary directory called “temp” on the SFTP server. The file has a random name (a UUID). When the file is completely written, Arq then moves the file to its final resting place. The move is an atomic operation, so there’s no risk of a partially-written file in the final resting place.

Why I used Java servlets instead of Rails


November 4th, 2013

Back in 2010 I set up an online store for Arq, and it’s been working well ever since then. It’s based on the excellent Potion Store, which was generously made open source by Andy Kim (thanks Andy!). Potion Store is a Ruby on Rails app. When I first used it, I didn’t have to modify anything about it, which was good because I knew nothing about Rails.

A few years later I wanted to offer discounted multi-license SKUs, so I had to modify the app. I had my Rails book and I walked through the code, or more often the lack of code, since the framework did almost everything by default. In 3 days I learned enough Rails to complete my changes. It worked great, and I wrote almost no code. It was a profound experience — I had never written so little code and gotten so much functionality.

A month ago I needed an online store so people could purchase licenses for Filosync, my new file sync and share product. An obvious option would be to reuse the Potion Store code again. But I decided to write my store from scratch using Java servlets, MyBatis and JSPs, for several reasons.


One reason is speed of change of the framework. Google is nicely tuned for answering programming questions and troubleshooting error messages, but for Rails it was harder for me to get clear answers to my questions. I was never sure which version of Rails was required, or which patch to which module I had to add to my environment. The Java stuff is older and more stable, which makes it easier for me to deal with. Trailing-edge technology FTW! :)


Another reason for choosing Java is obviousness. I was amazed by the Rails approach and how much the framework did for free, without my having to write any code. On the other hand, I felt I had to remember all the things the framework did since there was nothing on the screen showing me what would happen. If I worked with Rails every day I imagine this wouldn’t be a problem, but I don’t work with Rails every day. With the Java approach there’s a lot more typing, and more code means more bugs, but I think it’s easier to follow what’s going on.

I wish there were a Rails IDE that would somehow show me all the things the app is really doing, not just my code — something like the “Show Paragraphs” function in word processors that shows all the hidden characters, except in this case it would show all the hidden functionality.

So, did I do the right thing?I’d like to think that I made the right choice for sound technical reasons, but it could be that Rails was just too far outside my personal comfort zone.

Maybe the problem is just that I prefer libraries to frameworks for this stuff. Java is very simple but it also has everything under the sun if you need something. I just create very simple servlets and then include the libraries I need for database communication, sending mail, and talking to Braintree.

Or maybe the real point of this blog post is it’s hard to take over someone else’s code base and make it your own :)

P.S.  The other day I saw a graph on Twitter showing a decline in Ruby and increase in Java. So I guess I’m on trend?

Please Build a MIME/IMAP-Backed Note-Taking App


October 29th, 2013

There are zillions of note-taking apps available today. Some of them are excellent. I don’t use any of them because my notes/ideas get stuck in them and I can’t get my notes back out. My fear (possibly unfounded) is that I invest months or years storing all thoughts in an app and one day the app stops working, or the app developer stops supporting it, or the app loses my data, or the app morphs into something I don’t want.

I think the apps-contain-data approach used currently by Apple among others is backwards. Data live longer than apps. App should work on data but not contain the data.

I want an open data format for my notes, and an app that helps me manipulate my notes. I think MIME messages and IMAP are perfect for this. I wish someone would build a note-taking app that used MIME and IMAP as its database. Why? Here are some reasons:

  • Every computer and device already has a free IMAP client: the mail app. Lots of free web-based IMAP clients exist as well.
  • IMAP data stores are sync’d across devices.
  • Everyone has already configured their email, so they already have a sync’d data store set up. There’s no need to get your users to sign up for iCloud or Dropbox or anything else.
  • MIME messages are multimedia, and all my devices already have an app that can create, read, edit and delete multimedia MIME messages — the mail app.
  • Everyone already manages the lifecycle of their emails. They protect them, they migrate them to new providers, etc.

I wish someone would create an awesome note-taking app that uses MIME and IMAP. It could store the notes in its own IMAP folder. It could store the metadata about each note within the MIME message, and cache all the notes’ metadata locally so that lookups are faster. Whenever I’m on a system that doesn’t have the app installed I can still read my notes because my mail reader can show them to me, and I can create MIME messages and save them in the note-taking app’s folder. The note-taking app could later add whatever metadata it wanted to those items.

My notes are going to outlive any note-taking app. If my notes are in MIME format in my IMAP account, then they’re not trapped in any particular app.

I would build the app myself if I had time, but I’m working on both Arq and Filosync. So I’m throwing the idea out there hoping someone else builds it.

Maybe one of the excellent existing apps could be modified to use my IMAP account as its data store?

5 lessons learned from starting and running an indie software business


September 17th, 2013

It’s been a few years since I’ve had a “real job”, and almost 4 years since I started selling my first product, Arq. I’m amazed at how much I’ve learned through this process. I see now why the conventional wisdom is to “just do it.” Nobody’s going to map out the plan for you. It’s all up to you.

In preparation for an interview I made up a list of lessons learned. Without further ado:

1. People don’t want to change the front end they’re using

Don’t try to replace it. I learned this by spending a year (in 2008) on an application for multiple people (specifically me and my wife) to work on a shared photo collection. I built it because I was tired of plugging the camera into both computers, worrying about duplicates, etc. It had most of the features of iPhoto, plus it automatically synchronized albums of photos among our computers and a web site. No more waiting around for uploads! At the end of 2009 I said to my wife, “Great news! The app is finally ready for us to start using it.” Her reply (she was a little stressed at the moment): “Does this mean I can’t use iPhoto anymore?”

Hmm. If I can’t get my own wife interested in it, that’s not a good sign!

Eventually I realized I should just build something that copied new photos around to both our iPhoto libraries, and that would get us most of the way there. That product is called SyncPhotos. It does 1 thing, it does it well, and it’s been pretty successful so far.

2. Bug-free products make support almost a non-issue

I used to worry that once I got a number of customers, supporting them would take up too much time for me to move the ball forward on new releases and new products. The only strategy I had to counteract this was to ship products that are as simple as possible and as bug-free as possible. It seems to have worked so far. As a side benefit, I found out that people much prefer super-simple products that don’t have bugs :)

3. You don’t need an enhancement-request database

I heard someone from 37 signals once say that they don’t bother tracking enhancement requests because if it’s important enough, people will continually ask for it. It sounded arrogant to me at the time, but he was right. Version 2 of Arq was easy to plan, as was version 3. I just added the items that I most frequently got emails about. If no one is emailing asking for more, that might mean no one cares, which to me would mean moving on to a new project.

4. Super-fast email response adds tremendous brand value

I seem to have developed a great reputation simply by being very responsive to customers. People have tremendous patience and understanding if you just take the time to communicate with them. I try to answer emails immediately, though lately I’ve been trying to do it only in the early morning and late afternoon, so that I can get more programming done.

I don’t understand why any company would outsource customer support. Talking to customers is the only way you’re going to find out what customers want (to buy)!

5. You’ve got to enjoy helping people

If your passion is putting great software out into the world that makes people’s lives better, people can tell. They can feel the love you’ve put into the product, and they’ll come to love it too. They’ll tell their friends. 

But if your passion is just making money, people can sense that as well. They won’t love your products as much, and they won’t tell their friends as much.

There’s so much bad software in the world — you can make a difference by adding some great software. You’re the boss, so there’s nothing stopping you. Just do it!