General

I can hear you now

When the retina iPad with LTE came out I picked up the Verizon model, largely as means of determining whether it would be worthwhile ditching AT&T when it was time for my inevitable switch to this year’s iPhone. I’ve been with AT&T since 2007 and have generally been happy with the service (aside from the near-zero signal in my office at LucasArts). When it’s good it’s really good, and when it’s not I can usually live without it.

Over the past year though I’ve become increasingly cheesed off with various AT&T antics that are frustrating, or simply seem designed to wring more cash from customers. Delayed hotspot features on iPhone, lack of hotspot on iPad, removing messaging bundles, forcing plan changes to use Facetime over 3G etc etc. It just tastes bad.

So, since getting the LTE Verizon iPad I’ve been running 3G/LTE tests whenever I feel I’m in the type of environment that would usually result in the “full bars and no signal” behavior often seen on AT&T. Airports, hotels, downtown SF etc.

Here’s what I’ve found –

  • LTE is so fast there isn’t likely to be a of difference between carriers when if you have reception. It’s doubtful you’d even notice a “poor” 8-10mbps connection compared to a good 20mbps one most of the time. (Side note: Verizon have by far the largest LTE network)
  • With purely 3G, with equivalent signal strength AT&T seems to be 3x-4x faster due to their support of advanced 3G technology such as HSDPA.
  • With 3G 3-4mbps on AT&T versus 0.9-1.5mbs on Verizon seems about average when running bandwidth tests
  • Strangely AT&T doesn’t feel that much faster for webbing/facebooking. My guess would be HSDPA only comes into play for sustained transfers (like bandwidth tests..)
  • Several times at airports (and prior to take off!) I’ve had the old “full bars and no data” with AT&T on my phone, while Verizon on my iPad has either been fine, or slow but working.
  • Signal at my desk is better :)

Given all this, tonight I pre-ordered the iPhone 5 through Verizon – I figured that this was the best path to avoid anything going wrong with switching. Afterwards I heard from a friend that he’d had to pay the full phone price (as opposed to the “your-contract-is-not-up-let-full-price which is usually $200 more). Out of interest I went to Apple’s site and checked my eligibility, and sure enough if I had wanted to stay with AT&T I’d have had to pay $850, instead of $400 + $300(?) early termination fee to AT&T.

In fairness that rigorous adherence to annual renewal rates may not be exclusive to AT&T, but it is a good example of why I feel zero loyalty to them, even after five years of service.

Programming

NSHTTPCookieOriginURL is broken on iOS :(

A quick tip that might save someone a good few hours of bug hunting:

Under iOS it seems that when creating cookies via [NSHTTPCookie cookieWithProperties] that using NSHTTPCookieOriginURL will cause creation to fail. Instead you should pass the URL as two parts using CookieDomain and CookiePath.

E.g this will silently fail:

[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:
  [NSHTTPCookie cookieWithProperties:
    [NSDictionary dictionaryWithObjectsAndKeys:
      @"Name", NSHTTPCookieName,
      @"Value", NSHTTPCookieValue,
      referringUrl, NSHTTPCookieOriginURL,
      nil]
  ]
];

But this will work (referringUrl is an NSURL such as http://example.com/foo/bar)

NSHTTPCookie* cookie = [NSHTTPCookie cookieWithProperties:
  [NSDictionary dictionaryWithObjectsAndKeys:
    @"Name", NSHTTPCookieName,
    @"Value", NSHTTPCookieValue,
    [referringUrl host], NSHTTPCookieDomain,
    [referringUrl path], NSHTTPCookiePath,
    nil]
];
CBD_ASSERT(cookie);
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];

And you can see, this time there’s a handy assert to catch any problems early on. Sometimes it pays to break your code into multiple statements even when not strictly necessary.

General

Whiist plans, past and future

A question I’ve been asked fairly often is “will there be a version of Whiist for Vail?”. Before yesterday, my reply has been along the lines of:
Absolutely! Infact there’s going to be two versions :) “Whiist Classic” will essentially be the current version of Whiist, upgraded to Vail and with some usability and feature tweaks. “Whiist XXXXX” (where XXXXX is a designator I haven’t thought of yet) is a different take on the same concept. It still solves the same problem – sharing your home content with the outside world – but is simpler and more elegant. It’s a complete rewrite. There’s no ETA (mostly because Vail has no ETA!), but I have most of the features working in prototype/proof of concept form on IIS7 & .NET 3.5 machines.

After yesterday’s news, this would be my answer today:

No. As it stands today, Vail is not a product I find enticing or can see being useful in my home. I believe that to deliver an excellent product, particularly one developed in your spare time, it must be something you will use on a regular basis. At this point it’s unlikely I would use Vail (if I bought a new WHS box it’d be for the hardware and I’d put WHS V1 on it), so I would not feel comfortable creating an add-in for it.

My personal thoughts:

I feel that saying “Microsoft have dropped drive extender” does not do justice to the magnitude of what’s been removed:

  • No data duplication to ensure against drive failure.
  • No “just plug in a new drive to add extra space”
  • No single-storage area.

These three features are at least 50% of what made the original WHS such a killer product, and so easy to recommend to family and friends. It would be hard to suggest these people invest in a product like Vail that doesn’t offer easy storage expansion, and will likely require a subscription to some cloud backup service to guard against data loss.

What really kills me though is that an amazing foundation for a new product range seems to have basically been sacrificed, with the marketable parts harvested for the Small Business edition. It’s hard to see where the “Home” in Windows Home Server V2 is anymore. Media Center is gone, drive extender is gone, and in return they’ve added….64-bit support? For all those machines with 8GB RAM that OEM’s will never ship?

There’s an old joke that it usually takes Microsoft until version 3.0 of a product to get it right. At the moment, Windows Home Server seems to be going in the opposite direction.

Posted via email from Andrew Live!

General

Clever App Update

Love what the guys at Debacle did with the latest Pano update.
Whenever you update an app you can enter a list of what’s new that will be shown in the Updates section of the AppStore. Every developer I’ve seen (including me) uses this for a simple list of changes, but the Pano developers have used it as an opportunity to write a note to their customers that’s more akin to a blog post.
Very clever, and a great way of establishing rapport with your customers.

Posted via email from Andrew Live!

General

Syncing missing/modified files to a specific version in Perforce

I think this is the 5th time I’ve had to figure this out in the past few years, so this time I’m going to preserve it here for posterity :)

The problem is usually one or more of:

  • You have files missing from your workspace that need replaced.
  • You have locally modified (i.e. not opened for edit) files that need replaced.
  • These files are large in either size or number, and on a slow or remote server, so a complete force-sync is not an appealing option.

Normally this could easily be solved with something like p4 diff -sd/-se //depot/path/.. | p4 -x – sync -f, which finds all the missing/outdated files and then force-syncs them.

The problem with this approach comes when you need the files from a specific revision or label. While you can pass in a label/revision to ‘p4 diff’, the sync part will always retrieve the latest version of a file. To fix this we need to save the list of files we need to a temporary location, then postfix each line with the version we want, then feed that new list back to p4 sync.

But there’s one final catch. If your filenames are local paths instead of Perforce paths, you cannot specify a label, only revisions. E.g. c:tempfoo.dat@SOME_LABEL will not work, but c:tempfoo.dat#999 will. Fortunately we can use the pseudo revision ‘have’ for our purposes.

@echo off

REM Could optionally pass these as %1 and %2 from the cmd line

set LABEL=@SOME_LABEL

set BASE_DIR=//depot/path/…

del p4sync.txt

echo Setting 'have' to %LABEL% for %BASE_DIR%

REM do a nop sync that sets our 'have' version to the label we want

p4 sync -k %BASE_DIR%%LABEL%

echo Finding modified files..

p4 diff -se %BASE_DIR%%LABEL% > p4diff.txt

echo Finding missing files..

p4 diff -sd %BASE_DIR%%LABEL% >> p4diff.txt

echo Building sync commands

REM Append #have to each filename and put them all in a list of files to sync

for /f %%i in (p4diff.txt) Do echo %%i#have>> p4sync.txt

REM Now sync everything

if exist p4sync.txt (

echo Syncing..

p4 -x p4sync.txt sync -f

)else (

echo It seems no files need updated!

)

Voila!

General

Just a little test…

Testing publishing via the WordPress app for iPad… :)

It’s very buggy, and you can forget about including any images or formatting :(

General

What the f… Nvidia!?

So that’s where my hard disk space is going these days…

image

Ho hum.

General

Media companies STILL don’t get the internet?

Last night Liz and I discovered that for some reason the first episode of the new Bing Bang Theory, our premium "watch together" show, hadn't been recorded. No problem, we just flicked on AppleTV, went to the TV section and…. couldn't find it anywhere.

Infact there was no sign of season two either, just season one. Very odd. (next-day googling reveals that Warner Bros are withholding it from online distribution to try and increase the value of the show for syndication).

This of course led to a small dilemma. Missed show, no scheduled repeats, no way to buy it online or watch it in Hulu/CBS.com. Hmm. In this day and age do content providers REALLY think people will wait for the repeats/syndication/dvd? I mean really?

No of course not. Instead they* head over to somewhere like The Pirate Bay or the other zillion torrent sites and grab the episode for free. The content owners lose out on the money people were willing to pay (or advertisements to watch), and viewers have to go through a bit of hassle to obtain a copy of variable quality (although one that's almost always better than SDTV).

Nobody wins, aside from the torrent sites with all the advertising. It's quite sad really.

*(by they I mean everyone else, and this is not at all what I did…)

Posted via email from Andrew Live!

General

Fix for broken Time Machine backups under Snow Leopard

Since upgrading to 10.6.1 (and possibly before) Snow Leopard has consistently failed to perform Time Machine backups to the Time Capsule on my network. The backup starts but quickly fails with the message “The backup was not performed because an error occurred while copying files to the backup disk.”

After rebooting both my laptop and Time Capsule, and even trying to create a fresh time machine image I finally discovered a way to fix this issue – downgrading to 7.4.1 of the Airport Extreme / Time Capsule firmware.

To do this open Airport Utility, hold down the “option” key on the keyboard and choose “BaseStation->Upload Firmware…” from the menu bar. You should now be able to downgrade your Time Capsule / Airport Extreme to previous firmware versions, and 7.4.1 works flawlessly with Time Machine / Snow Leopard 10.6.1 for me.

Hopefully this will save others from lots of head scratching :)

General

Dear AT&T

Dear AT&T,

Instead of sending me spam email advertising your new GPS service, how about pulling your finger out and providing the MMS service that Apple have been dubiously promoting for around six months now? (“Late Summer” my arse).

The moment I can get an iPhone on Verizon, you guys are toast.

Bests,

Andrew

image