Step 2 is the hard part.

Matt Ginzton writes here.

Phil Libin on Data Protection at Evernote

| Comments

Phil Libin on data protection at Evernote

Evernote’s Three Laws of Data Protection:

Everything we do at Evernote follows these three basic rules:

  1. Your Data is Yours

  2. Your Data is Protected

  3. Your Data is Portable

Like what I said about Flickr’s similar pronouncement, this is totally the right approach for companies that want to be trusted with your data. I almost hesitate to heap praise on these companies for just doing what’s right, since (as I said before) this is basically the minimum standard that should be acceptable and it should be the norm, but it’s not really the norm, and Evernote and Flickr are two companies that treat their users and their data better than the norm, so, sure, let’s continue to praise them.

On Long-term Thinking

| Comments

As we think about the next 50 years, I remember a story President Kennedy told a week before he was killed. The story was about French Marshal Louis- Hubert-Gonzalve Lyautey, who walked one morning through his garden with his gardener. He stopped at a certain point and asked the gardener to plant a tree there the next morning. The gardener said, “But the tree will not bloom for 100 years.” The marshal replied, “In that case, you had better plant it this afternoon.

—Newton N. Minow on taking a long-term view, in A Vaster Wasteland.

Re: Browser Ui

| Comments

puntium:

Dear browser designers. Please find a way to put my bookmarks bar next to my URL bar.

Increasingly, the tab bar is becoming the equivalent of the taskbar, with each app taking up a slot. So IE9-ish combining of URL and tab bar seems constraining.

What is easier to constrain, is the layout of my bookmark bar. Being able to put that up by my URL input bar makes a lot of sense. They’re both navigational, and both are right now bigger than they need to be.

Seems reasonable. I barely use bookmarks and often turn off that bar entirely, so I don’t really care, but certainly the tab bar needs all the space I can give it, the address bar is also important, and I agree the bookmark bar is the place to regain vertical space.

Something’s funny here though — IE4 could do what you asked (IE4 was also a new version of the Windows shell, basically, and it introduced the rebar control, and this was before tabs but each of address/bookmarks/some other stuff was its own toolbar, each of which could be dragged around in the rebar, sharing rows or not, and I typically would dock the bookmarks toolbar at the right end of the address bar, so they’d share a row). Too bad this ability got lost in the sands of time.

Actually it’s worth thinking back on what the main browser UI elements have been, over time, besides the content — in 1997 it was menu bar, address bar, control buttons for back/forward/home/stop/reload/maybe some other stuff, and bookmarks. Since then we gained a search box and tabs, then lost most of the title bar and (except for on Mac OS) the menu bar, and now we’re trending towards simplifying the control buttons to just back/forward/reload+stop, and merging the search box with the address bar.

Geolocation Against a Mobile Base Station - How Does It Work?

| Comments

I just saw these two posts describing how an iPad tethered to an iPhone still gets accurate and up-to-date location information without GPS (via DF, citing this ability as “another reason to consider a Wi-Fi-only iPad”).

(As background, location information on mobile devices generally comes from some combination of 3 sources, each of which may or may not be available: (1) triangulation against GPS satellites, (2) triangulation against the cellular network towers, (3) triangulation against Wi-Fi base stations. On cell phones, GPS is often implemented as A-GPS, which means “assisted GPS” and is often confused with #2, but is actually a combination of #1 and #2 — that is, A-GPS is a superset of standard GPS. The reason for having 3 different methods is partly that each one requires a separate radio, and partly that different methods work better in different situations — GPS is most accurate and covers the whole globe but is slow and only works outdoors; the other two only work in areas with cellular or Wi-Fi coverage and are less accurate.)

Recent smartphones generally support all 3 of these methods (the original iPhone lacked a GPS chip, and used #2 and #3). An iPod Touch has only a Wi-Fi radio, no cellular radio and no GPS radio, so it can do only #3; this is also true of most current laptops. The iPad is sold in two versions, branded as Wi- Fi and 3G; Apple also adds a GPS chip only in the 3G models, so the Wi-Fi iPad can do only #3, and the 3G iPad can do all 3 methods (this is true of both the original iPad and iPad 2).

So. Clearly the 3G iPad is better equipped to know its location — the question is how well the Wi-Fi only iPad can know its location, especially, say, if you’re driving around using it for navigation, and its data connection is coming from Wi-Fi tethering to a mobile hotspot (in the examples above an iPhone 4, but in theory this could also be another cell phone with mobile hotspot feature, or dedicated mobile hotspot device — I wonder if that works too).

This is a Wi-Fi only iPad, so clearly it can’t use techniques #1 or #2. It can use #3, but the standard query — “I can see the base station with this MAC address; where am I?” doesn’t work in a straightforward way when the base station is a mobile hotspot with no fixed location. That’s why the fact that it does work is news.

After brainstorming with friends we came up with 4 possible ways this could work:

  1. Collusion between the iPad and the hotspot: Some new protocol/secret channel between the iPad and the mobile hotspot, where without using any of the standard techniques listed above, the iPad can just ask the mobile hotspot where it is. (The mobile hotspot has access at least to technique #2, and probably #1, so it knows where it is.) This would be easy for Apple to do, but somebody would probably have noticed if there was a new network service on the iPhone whereby you could query its location. (NB 1: this might have privacy concerns, though if all you can do is ask an iPhone where it is when you’re already right next to it, these concerns are minimal. NB 2: this would only work with Apple hotspots, not, say, a Mi-Fi.)

  2. Collusion between the hotspot and the service that implements base station –> location lookups: This would make modify technique #3 to cooperate with base stations that move around frequently, i.e. mobile hotspots. This is believable, since Apple originally licensed said service from Skyhook and then later moved to their own implementation. Maybe the iPhone in personal hotspot mode is constantly updating Apple with its location, and the iPad can then do the normal “where is base station with this MAC address” query and actually get up-to-date results. (NB 1: this might also have privacy concerns, if anybody can query the database by MAC address and follow your iPhone around. NB 2: this would also work only with Apple hotspots, at least initially.)

  3. Collusion between the location service and the cellular network: the cell network knows where your mobile hotspot is (using technique #2), and it knows what IP address it’s assigned to your mobile hotspot. All of the data from your tethered iPad is being routed through that IP address. Thus, it’s theoretically possible for the cell network to implement a service that answers the question “I sent you a data packet, look at its IP source and map that to a mobile hotspot and tell me where I am”. This doesn’t seem to have any privacy issues, and doesn’t require any changes to the hotspot so would work with all hotspots, and would be a neat service for the cell networks to offer, but you’d have to get every cell network to offer it, and I’m not aware of any such thing.

  4. None of the above; the iPads in the posts above aren’t getting location information from the iPhone they’re tethered to; they’re also seeing other (fixed) base stations in range as they drive by, and are using those MAC addresses to implement technique #3 the normal way; that is, nothing new is happening here, and this works as long as you’re in range of fixed base stations (i.e. in a city) but not otherwise (i.e. on the open road, hiking trails, etc).

Without going out somewhere where there are no other Wi-Fi signals available, it’s impossible to distinguish case #4 from the others. We tried this in San Francisco today with an iPad tethered to a Palm Pre on Sprint, and its location updated in real time as we walked around. I also tried tethering my MacBook Pro to a Palm Pre on Sprint, then using Google Maps inside Chrome (which supports geolocation services for web apps), and Google Maps was able to correctly determine my location — but again, it’s impossible to tell whether this was case #4 or one of the others.

Further research needed: does the iPad get up-to-date location from all personal hotspots, or only an iPhone 4? And does this work in the boonies, or only in range of fixed Wi-Fi base stations whose location is already known?

Why Is the iPhone So Expensive?

| Comments

Why is the iPhone so expensive?

To be clear, it doesn’t seem expensive when you buy one subsidized by a network contract, but the actual price is much higher, and, if you compare it to its unsubsidized cousins like the iPad or iPod Touch, or to non-Apple devices with roughly equivalent hardware and manufacturing costs, seems unjustifiably high.

This chart from asymco shows what I’m talking about: Apple gets about $200 per iPod Touch and $600 per iPad, on average (which price is paid directly by the real customer), and also about $600 per iPhone, on average (which price is paid by the network operator, and then subsidized before customers ever see it).

If you compare the iPhone to iPod Touch and iPad, in terms of things like the hardware included, what it costs to build, how and where you use it, and what you use it for, the iPhone is much more similar to the iPod Touch, yet the selling price is much higher — about what the iPad sells for. And actually, the cost to you the actual user is much higher for an iPhone than an iPad, because (in the US) the iPhone is only available locked to a network and with a really expensive service contract (at least another $1600 over the life of the contract). (Also, in countries beyond the US where the iPhone is available unlocked and contract-free, such as Canada and France, the price is much higher than we’re considering here, and even higher than local iPad prices.)

This matters to me because I’d love to have an iOS device that is truly portable and has ubiquitous network connectivity. Of Apple’s current devices, only the iPhone meets those criteria:

  • iPod Touch lacks the ubiquitous network (and other useful features like GPS and a good camera)
  • iPad is too big to be pocket-portable (but offers ubiquitous network at fair price, starting at $15/month)
  • iPhone is the right size and has nice GPS/camera/screen hardware and ubiquitous network but requires $70/month minimum over 2 years minimum; theoretically I could get an unlocked one from France and avoid the contract but then it’s a ridiculous $900 up front and I still need to find someone to sell me a data-only plan which doesn’t really exist in the US, though maybe AT&T can be tricked into it using an activated SIM from a 3G-capable iPad?

If the iPod Touch is profitable at $200 (including most of the right hardware) and the iPad is profitable at $500 (unlocked, with contractless data available, and a way-too-big screen that surely drives hardware prices up), surely Apple could sell the iPhone for $400 for an unlocked device and carriers could offer data-only plans for the same price as they do for iPad. And I’d totally buy one. But no.

(And if you’re thinking I should just buy an iPhone and suck up the contract and monthly fees by using it as my only phone, that’s possible and that’s what most people do but it’s beside the point. I already have a phone, and am under contract on a network which doesn’t currently offer iPhones, and I think it’s silly that we have to choose networks based on which phones are available, or phones based on what’s available on a given network, instead of just making everything work together and allowing people real choice. Calling that silly isn’t going to change the situation, but anyway, I’m not buying a new $70/month phone now, but I would consider buying a new $15/month pocketable tablet. The point I want to draw attention to here is that compared to the iPhone, the iPod Touch is severely crippled or the iPad is priced really low or both.)

Mac OS X Bugs Apple’s Never Gonna Fix

| Comments

Mostly the OS X user experience is really good and getting better, and Apple’s famous for fit and finish and general polish and avoiding dreary annoyances that other platforms make users put up with.

That said, here are a couple problems which I experience sporadically, and have been seeing for years, and at this point don’t really expect to ever see fixed:

  1. Sleep Mac, do something else, later wake it up. Usually this works great (Mac OS on Apple hardware has by far the fastest and most reliable suspend/resume code of any general-purpose OS I’ve ever used). However, on resume sometimes I’ll be unable to dismiss the screen saver after entering my password. The OS itself is healthy at most levels (compare with Windows which used to frequently BSOD on suspend/resume, or Linux which seems to like to resume most of the hardware but leave the graphics hardware in a useless state): processes are running, input devices work, the rendering stack works. It’s just that there’s this all-black topmost window which won’t go away. I can ssh in and use the Mac like any other Unix machine, but that’s small comfort. Reproducible: randomly, occasionally. Fix: reboot.
  2. Leave Mail.app running on two different Macs connected to the same IMAP account served by courier-imap. Sleep one Mac, use the other, wake first the first one, return to Mail.app, and it it won’t see changes that happened (new messages that arrived, old messages moved to another folder, etc.) while it was asleep. This bug showed up in Snow Leopard and persists in 10.6.7. Reproducible: always. Fix: quit/relaunch mail.
  3. My desktop background sometimes disappears (and is replaced by the configured background color instead of the configured background image). Reproducible: randomly, frequently. Fix: launch “Desktop & Screen Saver” prefpane and toggle any setting.
  4. Log into headless Mac mini via Screen Sharing.app (VNC), try to use Fast User Switching to switch to another user account. Display stack gets completely screwed up; I can still ssh into the Mac and use terminal-based processes, but can’t use the GUI either remotely via VNC or locally if I attach a screen. Reproducible: always. Fix: reboot.

I’ve reported most of these to Apple, to see them either languish for years or get resolved as a dupe of some older bug that’s been languishing for even more years. Oh well.

Comcast Data Cap Doesn’t Apply to On-network Transfers?

| Comments

For the time being, I have a residential cable connection from Comcast as my connection to the Internet. One of the things that Comcast gets a lot of criticism for is their 250GB monthly transfer limit, aka “cap”.

(As an aside, the cap is pretty silly, especially because it’s the same for all the different speeds Comcast sells. That means if you pay more for a faster connection, you can hit the cap even faster. For their cheaper “Performance” plan, at 15mbps, you can transfer 250GB in about 46 hours, or less than 3 days. For their fastest “Ultra” plan, at 50mbps, you can hit the cap in under 14 hours.)

However, one silver lining — they don’t appear to apply the cap to transfers inside Comcast’s network. I use CrashPlan for backup, swapping storage with a friend in another city who also gets his Internet connection from Comcast. (CrashPlan is pretty neat — free automatic backup to any combination of your own computers or computers your friends offer to share storage on, or, for a price, CrashPlan the company will store your backups for you.) In January I managed to backup over 300GB across the Internet to his house, and checking in Comcast’s usage meter, it says I’ve only used about 100GB from my 250GB cap.

Storytlr/Tumblr Import Failures, and Fix

| Comments

I installed Storytlr on my own server for personal use, and then started adding the sources where I have accounts — Flickr, Twitter, Delicious, and a few others worked right away, but I couldn’t get it to add Tumblr at all. Every attempt yielded an error message that just said to try again later; looking in Storytlr’s messages.log, I saw more detailed errors like

2010-12-24T03:50:55+01:00 ERR (3): Exception updating tumblr (21): Tumblr API returned http status 503 for url: [http://metamatt.tumblr.com/api/read/json?callback=wrap&num=50&start=0](http://metamatt.tumblr.com/api/read/json?callback=wrap&num=50&start=0)
2010-12-24T20:07:38+01:00 ERR (3): Exception updating tumblr (22): Tumblr API returned http status 503 for url: [http://metamatt.tumblr.com/api/read/json?callback=wrap&num=50&start=550](http://metamatt.tumblr.com/api/read/json?callback=wrap&num=50&start=550)
2010-12-24T20:08:10+01:00 ERR (3): Exception updating tumblr (23): Tumblr API returned http status 503 for url: [http://metamatt.tumblr.com/api/read/json?callback=wrap&num=50&start=0](http://metamatt.tumblr.com/api/read/json?callback=wrap&num=50&start=0)
2010-12-24T20:09:28+01:00 ERR (3): Exception updating tumblr (24): Tumblr API returned http status 503 for url: [http://metamatt.tumblr.com/api/read/json?callback=wrap&num=50&start=50](http://metamatt.tumblr.com/api/read/json?callback=wrap&num=50&start=50)
2010-12-24T20:27:05+01:00 ERR (3): Exception updating tumblr (25): Tumblr API returned http status 503 for url: [http://metamatt.tumblr.com/api/read/json?callback=wrap&num=50&start=1150](http://metamatt.tumblr.com/api/read/json?callback=wrap&num=50&start=1150)

Note that the “start” parameter in the request varies each time, and sometimes got quite large — Obviously it’s looking for too many posts and doesn’t know where to stop, since my Tumblr blog has < 100 posts. My theory is that Tumblr rate-throttles requests, so when Storytlr makes a few or a few dozen requests at once, Tumblr returns 503 (temporary failure, try again later) and Storytlr treats that as a more serious error.

Looking at the Storytlr source, I quickly found the code that imports from Tumblr, and the problem. Here’s the answer:

--- protected/application/plugins/tumblr/models/TumblrModel-orig.php     2010-12-24 11:39:38.000000000 -0800
+++ protected/application/plugins/tumblr/models/TumblrModel.php     2010-12-24 11:40:05.000000000 -0800
@@ -53,9 +53,9 @@
      }

      public function updateData($full=false) {
-          // Fetch the data from twitter
+          // Fetch the data from Tumblr
           $username   = $this->getProperty(username);
-          $pages          = $full ? 50 : 1;
+          $pages          = $full ? 2 : 1;
           $count          = 50;
           $result      = array();
           $curl = curl_init();

So it’s hardcoded to always ask for 50 pages of data (2500 posts); hardcoded is probably not the way to go here. (It would be wasteful, but not inherently wrong, as long as the Tumblr API were happy to return 50 pages of empty posts, or if the Storytlr import code would understand 503 status codes and retry; however since the Tumblr API is currently unreliable enough that you’re lucky to get a couple consecutive reads to succeed, and Storytlr doesn’t know to retry, it’s important to only ask for what you really need.)

I just hacked it to ask for 2 pages since I knew that would account for my posts; a better fix would query Tumblr for the actual number of posts, and stop there, and/or just recognize an empty response and stop there.

(Note: I tried posting this to the Storytlr-discuss mailing list, which is backed by a Google Group, but the group is broken or a moderator is eating the post, because it will temporarily show up and then disappear, with commensurate bugs in the unread-post count. So I’m posting it here.)