Sunday, July 29, 2012

Accessing BBC Coverage from the U.S.

You live in the U.S., you don’t have a cable subscription but you want to watch the Olympics live? Here’s how to do it.

If you have a Mac, you can just follow these excellent instructions by Brad Gessler.

If you’re a Windows user, follow the instructions below, which I’ve adapted from Brad’s post after a good bit of tinkering. I’m also including some details that he left out.

  1. Brad writes1: “Signup up for a Linode account. After you enter your credit card information and select a Linode server, you’ll be asked where you’d like to boot the server. It’s important that you select London, UK during this step so that you get an IP address from inside of London.” Note that the $20 (least-expensive) server option should be plenty for your needs.
  2. When Linode asks which distribution you’d like to use, leave it at the default (Debian). You can also follow all the defaults for the other setup settings (disk space, swap, etc.). After configuration and setup are complete, follow the steps on the web interface to boot your server up.
  3. Download PuTTY (just download the putty.exe file listed first). This is the program you will use to connect to your Linode server in London.
  4. Configure PuTTY:
    • Main PuTTY screen: Under Host Name enter the IP address of your server, leave Connection type as SSH.
    • In the tree view at left, click ConnectionData. In the auto-login username field, enter the text root
    • In the tree view at left, click ConnectionSSH. Make sure enable compression is checked.
    • In the tree view at left, click ConnectionSSHTunnels. Under Source port, type 8080. Select the Dynamic option and leave the other settings as default, then click Add.
    • Return to the main PuTTY screen by clicking Session in the tree view at left. Type a name under Saved Sessions and click Save (so you won’t have to go through this whole rigamarole every time).
  5. Set up your proxy.
    • If you use IE or Chrome, configure this by going to Network and Sharing Center, and clicking Internet Options. Go to Connections tab, click LAN Settings button. Make sure Use a proxy server for your LAN is checked, and click the “Advanced” button. Enter next to the “Socks” field, and enter 8080 for the port. Leave the other fields blank as shown (HTTP, Secure, and FTP).
    • If you use Firefox, go to “Connection Settings”, select “Manual proxy configuration” and follow the same procedure, entering next to the “Socks host” field, and 8080 for the port, and ensure the other fields are blank.

Now every thing is set up.

Whenever you want to watch Olympics on BBC:

  1. Make sure the proxy is turned on as in step 5 above — these settings will be saved from last time, all you have to do is turn it on again.
  2. Open PuTTY, double-click on your saved session, and enter your password when prompted. You can minimize the terminal window once you’re sure you’ve logged in.
  3. Browse to to watch the Olympics live, or go to to pick and watch specific events.

When you’re done: Tunneling all your web traffic through a London server will make the rest of your browsing slower (and waste your Linode account’s bandwidth) so you should close PuTTY and turn off the proxy server setting from step 5 above when you’re not watching the Olympics.

Thanks to @mja for the original tip about Brad’s post, and the one about where to go directly to watch specific events.

Other approaches

I did attempt to use a VPN service to do essentially the same thing, but it was far too slow.

Update, July 30 2012:

  • If you use Chrome or Firefox, installing a “proxy switcher” extension for your browser will make between enabling and disabling the proxy setting much easier. Use Proxy Switchy for Chrome, or QuickProxy for Firefox.
  • A couple more good articles about this issue have popped up:
    • A post by Colin Nederkoorn, in which he initially advocates the VPN method, but also mentions the Unblock Us service. He’s not sure how it works (and neither am I) but he says it works great.
    • Dan Parsons advocates setting up OpenVPN on your Linode server, but I haven’t seen any reason why one should go to the additional step of installing OpenVPN when a simple SOCKS proxy seems to work fine.

  1. Full disclosure: I’ve copied the Linode signup link from Brad’s original post, which means it still includes Brad’s referral code. I thought this was fair since he was the one who first posted the basic solution. In his post he expresses a wish to find some way to use his referral code to donate to the EFF; I’ll keep an eye out, and if he finds a way to do that I’ll update this post’s link as well. 

Tuesday, July 10, 2012

How To Get Inexpensive Data Roaming For International Travel on Verizon

Update, Sep 17 2012: Also read this excellent article: Which iPhone 5 for a Global Traveller?

If you’re a U.S. Verizon customer with a smartphone, here’s the lowdown on keeping data roaming charges to a minimum for any trips outside the country.

Keep in mind, it’s not uncommon for Verizon to alter the options they offer. If this article hasn’t been updated in more than 6 months1, things may have changed; in that case, look around further online or call customer service and ask them how best to handle it.

Be sure to leave a comment with your findings!

The penny-pincher method (for trips of less than three weeks)

My wife is from Canada and we do this regularly during our visits to family there.

The way Verizon charges for data outside the U.S. is (currently) very simple: They charge for global data in chunks: $25 gets you a somewhat-measly 100MB. You can’t pay in any smaller increments.

Here’s what to do. Call customer service ahead of time2, and ask them to add one 100mb block of Global Data, but only for the days you’ll be outside the US. Give them the days you want it to go on and off your account (i.e., the days that you’ll be crossing the border). This will pro-rate the cost by the number of days you are on the plan, but it will also pro-rate the amount of data you get.

For example, supposing you’ll be out of the country for 11 days. Here’s how the costs for this method would work out (for each line, remember):

  • Cost: ($25 / 31) x 11 = $8.87
  • Data: (100MB / 31) x 11 = 35MB (round down to nearest MB)

Now (in this example) you’re only paying $9 extra per phone instead of $25. On a two-phone account, that would be a savings of $31.

The trick is staying under that low data ceiling (35MB in this example). If you use more than the chunk of prorated data you’ve already paid for, you’ll automatically get an additional 100MB — and charged the additional $25 as well, meaning you’ll probably pay more than you needed to3.

If you’re going to be out of the country for more than 20 days, the savings from this method become too small to be worth the hassle; you might as well just get the 100MB.

Either way, here’s how to make sure you don’t use up your “cheap” data:

  • Save your data usage for when you’re at a wifi hotspot (any data you use over wifi doesn’t count against you). This includes websites, email, Instagram, Facebook, etc. — pretty much app that communicates in any way. Some games don’t use data, but many do. Light usage of these things is ok, but the more you can save for wifi, the more likely you won’t break your data cap.
  • Don’t watch videos when not on wifi (Netflix, YouTube, Vimeo, etc.)
  • Don’t stream any music when not on wifi (Spotify, Pandora, iCloud, Amazon, etc.)
  • If you’ll need maps during the day, look them up ahead of time while on wifi, making sure to zoom in and out to download the tiles at various zoom levels
  • (For iPhone users) Turn off Push for email — instead set it to Fetch Hourly (or Fetch Manually).
    Go to SettingsMail, Contacts, CalendarsFetch New Data, turn off the Push option and set the frequency to Hourly or Manually.

What about the inconvenient and totally free method?

Depending on your phone, it’s possible that you may be able to avoid any extra overseas data charges altogether by turning off cellular data.

When your phone is connected to a network of any kind, it is constantly “sipping” data. True, it’s a miniscule amount, but as soon as it sips even one kilobyte while you’re out of the country, you get that $25 charge for a block of 100MB of roaming data.

On an iPhone, you need to turn off cellular data under SettingsGeneralNetwork. (Turning off “Data Roaming” will not work — it’s notoriously unreliable.) Another option, if you want to avoid voice roaming charges as well, is to turn on Airplane Mode and then re-enable WiFi. Remember you can’t place or take any cellular calls in Airplane Mode, but you could use Skype or FaceTime to make calls while connected to WiFi.

The catch with this method is that it can never actually eliminate your risk. Unforeseen circumstances can very easily require you to grab an email or place a call when you’re not near wifi, and even if it’s technically possible to change your phone’s settings back and forth in just the right ways, you always risk slipping up even for a second and incurring that $25 charge. Personally I’d much rather be realistic and plan ahead so I can be flexible without breaking the bank. For short trips especially, I really don’t believe it’s worth the mental hassle, unless you want to take the challenge as sort of a game with yourself. Shoot, if you can prove you did it, I’ll personally send you a $10 Starbucks gift card.4

What if I’ll be out of the country for more than three weeks?

Then you really need to read this article: World travel with the unlocked US Verizon iPhone 4S — check out the comments as well.

  1. As I said, I have family in Canada so I shouldn’t have a problem keeping this post updated with any changes I encounter. 

  2. From your Verizon phone, dial 611, or dial (800) 922-0204. Press 0 at the menu to just get right to a live person. You’ll be asked to state your reason for calling and told about higher-than-normal wait times, but this is just to deter you into trying the website instead; the wait usually isn’t very long. 

  3. Supposing you did use up your “small” chunk and got hit with an additional 100MB chunk, but your total roaming data for the month was still under 100MB, you should be able to call customer service and at least get credited for the “small” chunk. I’ve had to do this once, with no problems. 

  4. Here’s the rules: No Purchase Necessary. There’s only one prize, a $10 Starbucks gift card given away by random drawing. To enter the drawing you must blog or tweet something positive about this blog (referencing my Twitter account @joeld) and provide me privately with proof that 1) you’re a paying U.S. Verizon customer in good standing with a smartphone data plan as part of your regular account, 2) that you incurred $0.00 in data roaming charges during any given billing period, and 3) that you personally were out of the country with your smartphone ( powered on ) for at least two days during the billing period in question. The ideal way to satisfy these requirements would be a copy of your driver’s license, a copy of your Verizon bill, and a photo of you holding your powered-on smartphone open to an information screen showing that phone’s own number, and clearly showing an identifiable non-USA landmark in the background. The photo should be signed and dated by the person who took it (not you), along with their contact info. The drawing will take place within 1 week of the first qualifying entry. Good luck! :-D 

Friday, June 1, 2012

Fix severe delays when loading Excel 2003 files from network drives

I was recently made aware of a problem where Excel 2003 would take several minutes to load a spreadsheet from a network drive. What made it even worse was that several of these sheets were referenced inside a CAD drawing (meaning AutoCAD would open Excel in the background for each spreadsheet referenced), and the load delay for each individual spreadsheet made it was near-impossible for the drawing to ever finish loading.

I found three possible solutions to the problem.

The first (which I used) was to create or modify the following registry key using regedit:


The second option is to uninstall the Microsoft Office File Validation Add-in from the Control Panel.

The third is to upgrade to Excel 2007 or later.

Friday, May 25, 2012

The iPhone Hot Battery Drain, Fixed with a Lightweight Email Setup

Recently my iPhone 4S suddenly began exhibiting symptoms of the famous “hot battery drain” problem, where the phone would become much warmer to the touch then normal, the battery would drain more quickly, and the phone would charge much more slowly than normal.

It’s been known for some time now that this is often an iOS 5 bug caused by a contact sync process that gets out of hand1. In the process of fixing this problem for myself, I discovered an alternative to the commonly-used practice of using an extra Exchange account for syncing Gmail contacts. This new setup has dramatically increased my battery life even beyond what it was before I started having the battery drain issue.

Note: I use Gmail, and I like all my contacts to be available from there. These instructions are thus somewhat Gmail-centric, but you should be able to improve your battery life by following the general principles shown. If you have tips for other email/contact setups, please let us all know in the comments.

First, solve the battery drain issue. The following steps solved the problem for me2:

  1. Remove all the messaging accounts on your phone, including iCloud. Remove all Calendars, Contacts, Notes and Bookmarks from the phone (so you don’t have duplicates when you re-add the accounts later).
  2. Power down your phone (the normal way, by holding down the power button and sliding to power off).
  3. Let it cool off, and start it up again.

You now have a blank slate: no email, calendars, or contacts. A blank slate means a chance to clean up and streamline.

  1. Re-add your iCloud account. Wait long enough for contacts and calendars to sync, check to make sure.
  2. Re-add your Gmail account as a Gmail account. This means it will only pull in mail (and calendar), not contacts.
  3. Clean up your Gmail contacts by opening your contacts in Gmail (i.e., open the website on your computer), clicking the More button at the top, and clicking Find and merge duplicates...
  4. Purchase the Contacts Sync For Google GMail app. Yes it’s $4.99. It’s worth it.
  5. Run the app, making sure to read the User Guide to make sure it will be syncing contacts the way you want it to. (I used 2-way, so all my contacts live in both my iCloud and my Gmail accounts.)
  6. Finally, go to the Settings app, and go to the Mail, Contacts, Calendars section. Click on Fetch New Data. Make sure Push is turned off, and select the Hourly fetch schedule.

Now you have all your contacts synced by an app that knows how to do its job better than iOS does (seriously, check out the reviews), and you have an email connection that is lightweight and uses minimal battery life.

For what it’s worth, I also have an Exchange account for work that syncs mail, contacts, calendars and reminders — also on the hourly fetch schedule.

Wait, won’t there be a big delay for receiving emails this way? No, not really. The fact is that whenever you open an email inbox in the Mail app, your iPhone instantly re-checks the account for new mail anyway. The Fetch setting only limits the background checking that the phone does when you’re not looking, so setting it to hourly just means the red “new email” number on the Mail icon won’t update itself more than once an hour3. You can always get an up-to-the-minute check by just opening the Mail app.

  1. No one seems to be sure why, however. The most extensive troubleshooting that has been made public seems to leave a lot of unanswered questions. 

  2. I based this off of this thread at Apple support — they seem to work even though they were posted as a solution to a similar problem that was before iOS 5. 

  3. Seriously, how often do you really need to check your email? More than once an hour and I’d say you have serious productivity issues. 

Monday, April 23, 2012

How to Easily Use OpenType Fonts in LaTeX

I became interested in LaTeX out of a desire to be able to produce high-quality PDFs for self-published books. Someday I hope to be able to produce books of comparable quality to these humanities books typeset in TeX. This idea became even more feasible when I discovered the text content could be written in Markdown and converted to LaTeX with pandoc (More information in this article).

Typographically, the example books I linked to above are more the exception than the rule: the vast majority of LaTeX documents use the same boring default font, Computer Modern, that was originally packaged with the software in the 1980s. Using Computer Modern in a self-published book would be almost as bad as using Times New Roman or Arial.

If you try to figure out whether and how you might be able to use your computer’s normal fonts with LaTeX, you will soon come across a lot of extremely complicated and incomplete documentation about how to convert TrueType or OpenType fonts into a format LaTeX can use.

The happy truth is that these instructions are now obsolete: you now have easy access to OpenType fonts on Windows and Mac platforms, thanks to a new version of LaTeX called XeTeX. XeTeX includes a package called fontspec that gives full access to all system fonts, as well as advanced features for OpenType fonts, such as ligatures and small caps. XeTeX is available for Mac, but what most people don’t say is that this font-accessing goodness can also be used on Windows since XeTeX is included with Windows distributions such as TeX Live and MikTeX.

That being understood, here’s how to use your system fonts in your TeX documents (source):

  1. Use the xelatex command in place of pdflatex
  2. Add \usepackage{xltxtra} at the beginning of your preamble (some XeTeX goodies, in particular it also loads fontspec, which is needed for font selection).
  3. Add \setmainfont{Name of OTF font} in the preamble.
  4. No step 4.

Note: If you are using the aforementioned pandoc to generate your TeX documents, you do not need to do step 2 — pandoc already includes the fontspec package in its default template. Also, you can set the main font by adding the option --variable=mainfont:"font name" when calling the pandoc command.

Thursday, April 19, 2012

Publish multiple Markdown files to HTML in Windows

I wrote this script as a means of setting up a dead-simple “knowledge base” in HTML format.

The idea is to write documentation as a collection of plain-text files in Markdown format and have a no-fuss way to publish them as HTML, re-publishing changes as necessary.

In order for this script to work, you need to be on Windows, and you need to install a program called pandoc.

How to use it:

  1. Save a copy of this script file in any folder containing a bunch of Markdown-formatted text files. Include a stylesheet.css file in this folder as well if you want the HTML files to have CSS styling.
  2. Run the script (double-click it) — it will silently create updated HTML files for every text file in the folder. Only text files whose HTML counterparts are out of date or nonexistent will be processed.

You can either copy and paste the code below into Notepad and save it as a .vbs file, or you can download the latest version in a zip file. The code in the download will be more extensively commented, and may also contain enhancements developed since this post was written.

Here’s the basic code (provided under the terms of the Artistic License 2.0 —

Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

strThisFolder = objFSO.GetParentFolderName(Wscript.ScriptFullName)
Set objStartFolder = objFSO.GetFolder(strThisFolder)
strConverterCommand = "pandoc -f markdown -t html -c stylesheet.css -o "

Set objFilesToUpdate = CreateObject("Scripting.Dictionary")

Set colFiles = objStartFolder.Files
For Each objFile in colFiles
    If objFSO.GetExtensionName(objFile.Name) = "txt" Then

        ' Check if HTML version of this text file exists in this folder
        strHTMLName = strThisFolder & "\" & Replace(objFile.Name, ".txt", ".html")
        If objFSO.FileExists(strHTMLName) Then

            ' If it exists, compare the timestamps
            Set objHTMLFile = objFSO.GetFile(strHTMLName)
            If objFile.DateLastModified > objHTMLFile.DateLastModified Then
                'If the text file is newer, add this text file to the list
                objFilesToUpdate.Add objFile.Name, strHTMLName
            End if

            ' If the file does not exist yet, add this text file to the list
            objFilesToUpdate.Add objFile.Name, strHTMLName
        End if
    End if

' Update all the text files in the list.
colFilesToUpdate = objFilesToUpdate.Keys
For Each strSourceFile in colFilesToUpdate

    objShell.Run strConverterCommand & objFilesToUpdate.Item(strSourceFile) & " " & strSourceFile, 3, True

Possible Future Improvements:

  • The script isn’t very helpful about telling you how long the process is going to take. I looked at several options for providing a progress bar or some kind of status output, but ultimately VBScript is just really sucky at this.
  • Pandoc is a very powerful converter. One could easily tweak the script to add options for producing LaTeX or even PDF files.

Tuesday, March 13, 2012

Retro click-beep sound from InstaGamer - now an iPhone text alert tone

I just downloaded the new free iOS game InstaGamer and its retro click-beep snippet of a sound effect is just exactly what I’m looking for in a text alert tone. So I made it into a ring tone for the iPhone. Download it here, then load it into iTunes and sync your phone.

Backstory: I’ve long been in search of the perfect “text alert” tone for my iPhone. The ones that come with the iPhone all seem too long; to me, a good text alert tone lasts a half second or less. You potentially end up hearing it dozens to hundreds of times a day, so all you need is a slippy little audio cue, not a prolonged gag or music riff.

(Play the game too, it's fun.)

Monday, March 12, 2012

Formatting and Typesetting your Book in MS Word

Format your page and text block

It starts with your page size. If you are self-publishing with a service like Lulu or CreateSpace, you select the size of your book, and this will give you a set of constraints (margins, etc.) to start with. Your page size and maximum margins will generally determine roughly how wide your text block can be.

Next, you want to find a matching set of values for your final font size, line height, and line width. The method I’m going to give you here is based on the fact that there is a set of ideal proportions between font size, line height, and line width, that give maximum readability and aesthetic appeal. See this article about golden ratio typography for more information.

  1. Take the width of your text block in inches and multiply by 72. This tells you how many “points” there are in one line of text.
  2. Take the square root of this number and divide by 1.618 (the golden ratio). This gives you an optimal font size, in points, for your main text.
  3. After rounding this font size to within half a point, multiply it by 1.618 again. This will give you your optimal line height in points.

You may need to reiterate a few times until you get a matching set of numbers that fit well on your page and do not need too much rounding.

Configure Word’s typesetting

You can actually get book-quality typesetting from Word if you just change a few options.

A couple of points about paragraph formatting:

  • Make sure your main text is set to “justified”, and not “flush left.” While it is currently better to set text flush-left on the web, books look better justified and are nearly always set that way.
  • Don’t have spaces between paragraphs in your main body text.
  • Paragraphs should have a first-line indent of the width of about 2 or 3 characters, but only where two or more paragraphs are joined together: the first paragraph of any group of paragraphs should have no first-line indent. (This could be a pain to manage; I tend to handle it by making all paragraphs indented by default, then going back and manually removing the indent from first paragraphs at some later stage in the editing.)

Make sure the following settings are enabled under the “Compatibility” options. To get to these options, click on the circular “Office Button” in the upper left corner, and then click Word Options at the very bottom of the menu. Then click Advanced, scroll down to the bottom of that section, and click the + next to Layout Options. On older versions, click the Tools menu, then Options (or EditPreferences on a Mac) then click the Compatibility tab.

  • Put a check next to “Do full justification like WordPerfect 6.x for Windows.” This allows justified text to contract as well as expand, making the automatic adjustments look a lot better.
  • “Don’t add extra space for raised/lowered characters.”
  • “Don’t expand character spaces on the line ending SHIFT+RETURN.” This ensures that lines you end with a soft return will still be properly justified.
  • “Suppress ‘Space Before’ after a hard page or column break.”

Configure Word’s hyphenation settings. On the toolbar, click the Page Layout tab, then Hyphenation drop-down button → Hyphenation Options. (On older versions, click Tools menu → LanguageHyphenation.)

  • Put a check next to “Automatically hyphenate document.”
  • Set “Hyphenation zone” to about half an inch.
  • Set “Limit consecutive hyphens” to 3.

Finally, enable ligatures. If your font is of good quality and has alternates for character combinations like fi and ffi, this will tell Word to use them automatically. This can only be done in MS Word 2010 or later.

  • Open the Font settings window. You can do this by selecting some text, right-clicking and selecting Font from the menu, but I recommend setting this up in whatever “style” you use for your body text (e.g., “Normal”): Home tab, right click the style, select Modifiy, then Format button → Font.
  • Click the Advanced tab, then next to the Ligatures option, select Standard Only.


These tips are compiled from many sources, and in many cases updated for clarity or accuracy with newer versions of Word.

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 ( 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
  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.


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


  • 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.


  • 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.


  • 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.