Thursday, March 8, 2012

WriteMonkey: Tips and Tricks for Writers

I use WriteMonkey for almost all my writing. It’s the best Windows-based text editor I have found for writing prose (as opposed to programming code).

WriteMonkey is extremely Markdown-friendly — useful if, for example, like me you write all your blog posts in Markdown format.

Not all of WriteMonkey’s features are well-explained or documented, so I’m writing them up here.

Configure Markdown features

  • Markdown highlighting will not work unless you have Markdown set as your “Markup Standard” — set this in the Print & Export section of your Preferences screen.

  • Set the font size/weight/style used on headers: in the Preferences screen’s Colors & Fonts tab, click the button labeled ... in the upper right section (why they didn’t label it more clearly is beyond my understanding).

  • Make your exports look great. Download the template in this zip file and place it in WriteMonkey’s templates folder. It’s a version of this Markdown stylesheet with the following changes:

    • Removed padding: 0; margin: 0 rule for the ul and ol elements - this preserves indentation in multi-level lists.
    • The max-width was widened to look better on bigger screens.

Some undocumented features I found by accident

  • You can toggle whether WM will use normal quotes or “smart quotes” with CTRL+SHIFT+' (apostrophe).

  • Out of the box: type /now to insert the timestamp. You can format this timestamp in the Preferences screen.

Use WriteMonkey to write your book

WriteMonkey has a number of great features for writers:

  • It lets you set and monitor progress goals for your writing based on either word count or time or both.
  • Hit F5 to toggle between your main text and the “repository,” which works as kind of a scratch pad for the current file.
  • You can use the Jump screen to set navigate around your text’s headings, bookmarks, and todo items.

The upcoming version (2.3.5.0 as of this writing), however, will have some great project management functionality. (See here for more info)

  • Folders will be treated as projects, and all the files within it will be part of the project. You’ll be able to switch quickly between text files in the same folder using a new Files view in the Jumps window.
  • You’ll be able to quickly merge all of a project’s files into a single text file.
  • You’ll be able to mark a file with “tags” using a comment line (starting with \\) at the top of the file, and filter the project file list by tags.
  • Special tags affect how the file is treated in the project window
    • Tagging a file with a color name will cause that file to show up with a colored star in the jump screen. Multple colors mean multiples stars, e.g. // red red red will add three red stars.
    • Adding the “draft” tag will move the file to the “repository section” — the file will be presented with lighter color and excluded from total word count.
    • Tag with a percentage, e.g. // 50% to add a grey progress bar
    • Tag with a date in order to add a deadline; the border of the file will turn red when it becomes past-due

Let us know of any additional tips in the comments!

Friday, February 17, 2012

Siri: Slow, unreliable, and maybe not a priority at Apple

Siri had a lot of promise when it was released as a feature of the new iPhone 4S. It wowed everyone at the WWDC keynote in October 2011.

I’ve had an iPhone 4S since November 2011, and I would describe Siri as gimmicky, flaky, and useful only within a narrow subset of the things it was promised for.

The biggest killers of my enthusiasm for using Siri are laggy interaction and flaky availability. Interaction misses plus plain old network lag combine to make Siri slow, slow, slow.

There are five possible outcomes to each Siri interaction:

  1. Siri misunderstands what you said due to you speaking incorrectly, or
  2. Siri misunderstands what you said because of a voice recognition error, or
  3. Siri understands what you said but misunderstands what you meant, or
  4. Siri is unable to connect to its servers, or
  5. Siri connects and responds correctly

Four out of these five outcomes result in a failed interaction. While you can get better at speaking correctly, there are few to no workarounds for the other three error conditions.

Since Siri goes out over the internet in order to analyze each spoken interaction, it can often take a good 5-10 seconds to offer a response to what you’ve just said1. In addition, at least every other day Siri’s servers seem to go dark for a period of time, resulting in “really sorry, but I can’t take any requests right now, please try again in a little while.”

Add this delay, and a random but sizeable chance of connection failure, in between each incorrect response, and you soon get used to doing most things the old way rather than gamble on an unreliable Siri.

Someone’s bound to respond that Siri is still officially beta software. I am aware of that, and don’t expect it to be perfect2.

But it’s also worth noting that Apple, like most software companies, has introduced many apps and features that they then failed to improve upon or even abandoned3. My gut feeling is that Siri is in danger of ending up as the next Mobile Me, especially given that it has received almost no improvement or attention since its release so far.


  1. Connection failures are especially common when you are on the outer edge of a known wifi network, such as when in the driveway or parking lot, or walking to/from your house. The iPhone seems to think it is connected via wifi for some time after you have left range, causing Siri to attempt using a nearly non-existent connection. 

  2. Although I do expect beta software to be at least feature-complete, which I don’t believe Siri is. 

  3. See the Calendar, Weather, Music and Stock apps, iTunes Genius, Ping, and of course Mobile Me. 

Friday, February 3, 2012

Recommended Calendar Apps for iPhone

The calendar app that comes with iOS is plain, and has many shortcomings: the interface for creating new appointments is clumsy, the colour-coding is not visible in month view, and there’s no week view at all, to name a few.

Here are some notes on popular calendar apps I’ve tried and can (mostly) recommend.

  • Calvetica Classic is what I currently use and recommend for iPhone. As far as I can tell, it’s identical to Tempus (made by the same developer) but for some reason costs less. (Tempus may be the one that gets more maintenance attention from the developers in the future, however). Calvetica Classic’s interface is designed to be quick and easy to use, and to look attractive. It also happens to be reasonably prompt about automatic syncing — which, surprisingly, not all apps are (see below).

    The reason for the “Classic” version is that the makers of Calvetica made a New-Coke-style error when they redesigned and rewrote the app for the new version 4.0. The regressions in the interface and buggy experience of the new version apparently left a lot of users clamouring for the old version, and from what I can tell, the developers responded by offering both Calvetica Classic and Tempus. I haven’t used the new version, but the reviews on the App Store currently show that it still needs a good bit of bug fixing, especially on the iPad.

  • The other really good option out there is Week Calendar. I haven’t tried it personally, but this one has been recommended by Lifehacker, and has hundreds of great reviews (many more than any version of Calvetica), so it must work well. The only reason I didn’t go for it was that Calvetica is faster for adding events1, and Calvetica just looks more cool and elegant.

  • Agenda was recommended recently on Daring Fireball and was actually the first calendar app I used after getting our phones’ sync configured. It’s not as quick to use as Calvetica[^1], but it looks gorgeous, and swiping between month/week/day view is almost too good to give up. The app otherwise great except for one major thing: it’s terrible at automatic calendar syncing, especially when an event on a shared calendar is being deleted. In my experiments Agenda would not automatically sync until I had either shut down the app and restarted it, or until I had opened the default Calendar app (which triggers its own sync). You can also use the “shake phone to sync” feature of Agenda, but honestly, all three of these things are ridiculous.


  1. Note that if you have an iPhone 4S, you can set up new events very easily on your default calendar with Siri, no matter what app you use. 

How to Sync Calendars on Two (or more) iPhones or iPads

My wife and I each use an iPhone, but it wasn’t until recently that I got around to syncing our calendars. Now that we actually have a synced calendar system that we can both view and update from our phones, we’ve begun actually using it for planning and apponintments. In this how-to, I’ll show you how to do the same thing for yourself.

These instructions assume that each iPhone user has their own, separate Apple ID and iCloud1.

1. Use iCloud for Your Calendar Account

I’m not saying you have to use iCloud. I’m saying it’s by far the simplest and easiest way.

Make sure each user has iCloud set up on his or her device. If you have iOS 5 or newer on your phone or iPad, you likely have signed up for iCloud: to make sure, grab your device and go to SettingsiCloud and check that it shows something next to Account. Also check that Calendars is set to On.

If iCloud is not set up on your device, read these simple iCloud setup instrctions from Apple.

Other Calendar Accounts

Gmail accounts come with a pretty useable calendar system, so a lot of people use those; but I found the instructions and process for syncing GMail calendars between multiple Google accounts/iPhones very clumsy, complicated, and unintuitive, even for a geek like myself. If you have tips on that, let us know in the comments.

Exchange accounts also include calendar functionality. I have one of these at my job, and it syncs to my phone also, but I don’t really need to share it with my wife so I haven’t tried. I expect the only way to do this would be to add my exchange account to her phone with my own password, and turn off the mail part of the account in the iPhone’s settings. Again, let us know in the comments if you’ve experimented with this.

2. Share Your iCloud Calendar(s)

This is an easy process, but not entirely obvious because you have to use a laptop/desktop computer, and not your iOS device, to start the process.

  1. First of all, pick which iCloud account is going to “own” the shared calendar(s). It really makes no difference because both parties will have full access.
  2. Open your web browser on your desktop or laptop computer and go to icloud.com.
  3. Sign in using the account of the “owner” and click on Calendar.
  4. Click on the small circle to the right of the calendar you wish to share. Under Private Calendar, enter the email address for the user of the “other” iPhone/iPad. It can be any email address for that person (it doesn’t have to be the one they use to sign in to iCloud) but it should be one that they have set up on their iPhone/iPad.
  5. After entering the email address, click Share.

Now the other user can grab his or her device, open the email, and click the “Join Calendar” button.

Voila, you now have a calendar shared between two devices. Any events or appointments you create or change on the shared calendar on one device will automatically show up on the other device pretty quickly, and without any additional steps.

Some additional notes:

  • You can of course share multiple calendars with this process, and you can even share them with different multiple people. My wife and I share three calendars, because this allows us to easily colour-code different kinds of events simply by putting them on different calendars. (There are some calendar apps that let you colour-cde different events within the same calendar, but not the one we happen to use.)
  • When creating/changing an event that you want shared, you do have to make sure it is in fact created on one of the shared calendars. That should seem obvious, but it can be an easy step to miss. You can make it easier for yourself by setting your default calendar on your iOS device to the shared calendar you use most often: click Settings, then Mail, Contacts, Calendars, and then scroll down to the Calendars section and click on the Default Calendars setting to change it. Otherwise (if you’d rather not default to sharing all your events) just be aware that your iOS device does have multiple calendars and remember to pick the right one when setting up an appointment.
    • If you use Calvetica Classic as your calendar app, you can have it ask you which calendar to use every time you set up an event, which is nice.

3. Get a Better Calendar App

The calendar app that comes with iOS is plain, and has many shortcomings: the interface for creating new appointments is clumsy, the colour-coding is not visible in month view, and there’s no week view at all, to name a few. For notes and recommendations on iOS calendar apps, read my post on iOS Calendar App Recommendations.


  1. If you happen to be using the same Apple ID/iCloud account on two phones, I would assume you don’t need this article since everything is already syncing across all devices within your single account. 

Monday, January 9, 2012

Personal finance software: chucking Mint for YNAB

A cousin recently put me on to You Need A Budget — a personal finance software package. I just spent some time this weekend setting it up with my wife. Maybe we’re still in the ‘honeymoon phase’ of budgeting, but it feels really good to be on top of our finances and to have a flexible plan for our spending.

YNAB feels refreshingly like a “Quicken Rebooted” would feel. After a couple of years trying “finances in the cloud” a-la-Mint, returning to using a traditional program that just runs on your own computer feels like the right thing to do. I once again have control of my own financial data, and will never have to worry about potential security breaches at unregulated third-party services like Mint.

YNAB insists that you manage your transactions the Old Way: by entering them yourself. The fact that this feels very right was/is quite a surprise to me, but when it “clicked,” it felt like it had been a long time coming. When I signed up for Mint, the automatic behind-the-scenes importing of all my transactions seemed like a brilliant way to streamline things, but it turned out to have some fatal downsides. Mint’s connection with my bank was always spotty, and their automatic categorization of my spending was never more than about 60-70% accurate. This meant I had to go in and regularly sift through all my spending, making sure each transaction was properly categorized — a process even more unpleasant and tedious than just entering them myself. It wasn’t long before I stopped using it altogether. So when I read this on YNAB’s website, it jived a lot:

“We do not directly connect with your bank, log in with your username and password, and download transactions for you. That kills awareness and promotes a “set it and forget it” mentality that lets you not revisit your budget for months, leaving you right back where you started. We’ll import downloaded transactions (OFX, QFX, QIF) to make sure you’ve captured every transaction, but bank importation should not be the primary means of entering data into YNAB. (Use your phone and record it as the transaction happens, or make entering receipts a 5-minute daily ritual. Your money will thank you for it. Promise.)”

But the biggest difference between YNAB and the Mint approach is that while Mint is geared towards passive capture of past spending, YNAB’s workflow puts planning future spending at the center1. I won’t dive into that here, but you should know that this approach is what will make even using finance software worth your while. If you are familiar with the increasingly-popular envelope system of budgeting, or with financial planning evangelists like Dave Ramsey, YNAB will fit right in with those paradigms and help you implement them.

Coming down from the cloud

YNAB’s non-cloud approach means you won’t have completely seamless access to your main financial data store from any browser or from your iPhone. When you think about it, that actually might not be a problem. Do you really need that kind of access? Financial planning isn’t one of those things that inherently benefits from being decentralized.

YNAB tries to strike a middle course by supplying iPhone and Android apps that let you record transactions on the go for easy syncing later. I haven’t yet tried these apps out; I’m not yet sure whether it’s even worth the added complexity for me personally. I can just as easily keep receipts or type transactions into a note app on my phone.

Ideally, a YNAB mobile app would allow automatic background syncing between two phones, so that my wife and I would have quick, seamless access to where our budgets are at, but YNAB’s app isn’t there yet2. But in my view, it all goes back to a focus on planning rather than capture. If my wife and I actually have a plan in place for our monthly spending, we pretty much know going into the day where our money is going to go, and up-to-the-minute syncing becomes much less important. Again, I wonder if this is one of those situations where automatic syncing — an inherent “feature” of the cloud approach — would actually be counterproductive in this field, by allowing you to take the easy road and react to spending events, rather than relying on proactive planning.

NB: I’m not an affiliate of YNAB in any way, nor am I being compensated in any way for this overview.


  1. Mint had budgeting tools, but they were clumsy to use and always felt like something of an afterthought. 

  2. YNAB’s website says that they “are actively working on ways to improve the entire synchronization of your budget data across not only the mobile apps but multiple desktop installations as well,” but they decline to offer a timeline. 

Wednesday, January 4, 2012

Encryption and DropBox: Comparing TrueCrypt and BoxCryptor

If you’re a DropBox user, you may have heard about the security weakpoints associated with their cloud storage service (or any such service):

  1. DropBox has had security issues that left users’ information exposed to hackers for hours at a time. Could it happen again? Certainly.
  2. DropBox staff have the ability to access your files without your knowledge. They have acknowledged that essentially the only thing between their staff and your data are internal company policies. This is much weaker than zero-knowledge systems like SpiderOak, where it is not even technically possible for staff to access users’ files without the user’s key.

Even knowing these weaknesses, I use DropBox anyway. Having access to some (not all, obviously) potentially sensitive files on multiple computers/phones is helpful enough for me to find some way to mitigate the security risks.

It’s important to note that if you’re putting sensitive files on DropBox purely as a backup solution, you should just stop. Find some other way to back those files up. But if, like me, you find it extremely helpful to have access to certain moderately sensitive files from multiple devices, you should find a way to add a layer or two of security to those files before storing them on a cloud service like DropBox.

There are two good ways that I have found to do this. Both are free, and neither involve sending any of your data or keys to an additional third party — all the magic happens on your computer or device. However, there are trade-offs associated with each.

The TrueCrypt Option

The most commonly offered solution is to place your sensitive files in a TrueCrypt volume and save that volume file into your DropBox.

Pros:

  • TrueCrypt is open source, making it the most trustworthy and future-proof option
  • For extremely sensitive info, TrueCrypt allows you to maintain plausible deniability.

Cons:

  • There is currently no way to use or access TrueCrypt volumes on your phone. This is true both for iPhones and Android phones.
  • TrueCrypt volumes need to be given a fixed size at the time of creation, forcing you to guess how big it’ll need to be in the future and usually resulting in wasted space.
  • You need to be careful not to have the volume “mounted” on more than one computer at a time to avoid corrupting it. Because there’s nothing to prevent you from doing this, you can easily end up corrupting the volume or creating a lot of large “conflict copies” of the volume by accident if you forget this.
  • Because DropBox can’t back up changes to any of your encrypted files until you actually unmount the whole volume, you have to remember to unmount it periodically, which can be cumbersome.

The BoxCryptor option

BoxCryptor is a newer solution that works by encrypting individual files on your computer, before they are sent to DropBox. Like TrueCrypt, the software runs on both Windows and Mac OS.

Pros:

  • BoxCryptor has an Android and an iPhone version of their software, making it possible to access encrypted DropBox files from your phone.
  • The software has limited compatibility with the open-source EncFS encrypted file system, making it at least somewhat future-proof
  • File-level encryption makes it much less clumsy to use, and allows DropBox to sync encrypted files just as seamlessly as normal files, and without additional likelihood of conflicts where multiple computers are involved.

Cons:

  • The iPhone app is $8 for non-commercial use. This seems stupidly high, considering the Windows and Mac versions are free and they have no back-end infrastructure to maintain.
  • No form of plausible deniability is available in either the desktop or mobile versions of the software.
  • BoxCryptor is not open-source, so ultimately your trust in the software comes down to your faith in Robert Freudenreich’s ability to correctly implement the security algorithms, to keep maintaining the software, and not to spy on his users. I’m not saying he’s untrustworthy, just that non-open software comes with risks and weaknesses. The security community at large does not have a way of thoroughly and independently evaluating the software, and that represents a security weakness, for one. Furthermore, if Robert or his company lose interest in the software (which can happen for any of a dozen reasons) you will need to take notice and migrate to another solution before you lose all ability to support the now-defunct software.

Tuesday, November 8, 2011

The Best Data Collection App (And Format) for iPhone

I’ve long been intrigued by Nick Felton’s Annual Reports. Felton has become the poster child for a new kind of a subculture growing up around this idea of “personal metrics.” Measuring and reporting esoteric and insane amounts of data about your personal habits can be a great way to Meet People And Make Friends.

Creating these reports will involve coming up with your own solutions to an interesting set of problems: how to capture all that data, how to store it in an analytics-friendly format, how to actually analyze it, and how to design the information displays. In this post I’m dealing mainly with the first two parts of that list: capturing data and storing it, with some hints about analytics afterwards.

In data collection, your smartphone is your friend. You want to make sure collecting data is easy and frictionless, so that you get it all. Your phone is always with you, so you can jot things down and not worry about having to get it later. And as much as I love pen and paper, if you go that route you’re going to end up collecting the same info down twice when it comes time to get it into your computer for analytics.

There are a lot of apps out there for collecting and reporting various kinds of data — running times/length, weight loss/gain, sex, sleep and eating habits — and these can be great if you’re only interested in tracking one or two aspects of your life. But as soon as you begin to raise your sights a little and think about comprehensive Felton-scale data collection, you realize what a pain it’s going to be to have a herd of seventeen apps to manage. Another problem with most of these apps is that they don’t provide any access to the actual data.

Daytum

For awhile, Felton was working on a project called Daytum that would help people create their personal reports similar to his. Daytum has always had a lot of promise, but there are a few major problems with it that need to change before it can be really useful:

  1. Felton was hired by Facebook recently, and doesn’t seem to be actively maintaining the service anymore
  2. The web interface is clumsy for entering anything more than simple quantities
  3. The iPhone app — which would ordinarily be the ideal channel for collecting data — is buggy, infrequently updated, and (worst of all) has been known to randomly erase data

The Format is Text

I found what I was looking for in Ben Lipkowitz’s lifelog project. He developed a simple text format that allows you to quickly capture personal events and data as they happen. A self-explanatory sample is below:

date 2011 01 08
0000 0851 sleep
0851 0902 domestics
0902 0904 walking langton-labs
0904 0906 setup kitty
0906 0907 science guinea-pig
0908 0920 food cookie-cereal 2c soy-milk 0.6c peanut-butter-ice-cream 1c
0920 1000 net thermal-clothing, food donut-hole 2pc oatmeal-cookie-dough 3pc
1000 1052 net thermal-clothing
1052 1100 riding kaplans
1100 1145 shoppin, act tour-kaplans
1145 1155 riding langton-labs
1155 1200 chat rachel-?
1200 1210 riding rei
1210 1445 shoppin, domestics test-clothes
1445 1451 stupid rei-membership-form

The syntax is pretty self-explanatory. Each interval is given an activity (e.g., net or drive) followed by any number of tags that add detail (e.g. drive commute-home). Multiple activities and their tags are separated by commas.

The advantages of capturing data in this way are obvious:

  • Both the time length and frequency of activities is captured
  • It’s easy to add custom data to different kinds of activities (such as the quantities given in the food activity above)
  • You can easily enter and read the data without any special software
  • The data will still be easy to read ten or fifty years from now

How to actually use the data: Creating any visual displays of all this data is going to involve brushing off your script-writing chops. The good news is if you have any programming ability whatsoever, you should be able to cobble something together quite easily for whatever you want to do. Check out the lifelog project for examples of scripts for parsing and displaying the data. Ben currently produces graphs showing time intervals colored by activity, but you could just as easily build a script in your favourite language to build reports for things like average commute times, top five conversation topics, or total times you had to look for things and how many of those times you found them, etc. If you have your script output the results in a CSV format, you can open those reports directly in Excel and create charts from there.

This format doesn’t work well for capturing broader categories of events that span over multiple time intervals. For example, there’s no clear way to record that everything you did this afternoon was part of Brother Mike’s Wedding, for example. There are a couple of ways to extend this, such as adding mark, start or end keywords to mark the beginning and ending of these types of things, or simply recording that info elsewhere.

I don’t recommend trying to record your moment-to-moment moods for any reason whatsoever. That way lies self-referential madness.

The App is Nebulous Notes

  

Nebulous Notes has a couple of great features that make it great for this kind of data collection:

  • Shortcut keys: You can set up shortcut keys to quickly insert date and timestamps in right format, as well as skip forward and backwards by word or character (see screenshots above)
  • Dropbox support: Store your text file on your Dropbox account and it will be auto-saved to the cloud every time you edit it, and you can easily pull it into your laptop for analytics.

I recently switched to the iPhone, so if you have an Android or Blackberry you’ll need to find your own favorite app for that platform. (Personally I can’t imagine attempting anything like this on my laggy old Blackberry.) Let me know in the comments if you find anything!