Why I no longer want one of Apple’s stupid phones

Well I’ve just had one of the worst retail experiences of my life at, where else, the Apple shop in Westfield White City.

I reserved an iPhone 4 while in Apple’s Regent Street store a few weeks ago expecting to have to wait some time for it. I was quite happy with this (they are popular) and fairly excited about the prospect of getting one since they are rather shiny.

I signed up for it with my other email address (which happens to start with the letter a – this is important) and settled down to wait.

Well today I received an email from Apple chirpily informing me that my phone was ready to collect (from their Westfield store, since I’d reserved it there as it’s closer to me). I was quite excited about this and set out immediately to collect it. The email was sent at 9:06am, and I got it at about 7:15(ish) when I checked my email. I got to the store at about 8:15, 45 minutes before the store was due to close and found a blue-shirted employee to ask about it.

He asked me for my email address (which seems to be the only piece of information that they require to go and look up your iPhone eligibility. He took his time, and returned to tell me that he’d go and find my phone. Yay, excitement.

He eventually came back some time later and his tone had changed. He didn’t spell this out very clearly at first (and I thought he was winding me up, which is pretty unprofessional behavior…) basically telling me that someone else had already bought my phone. The undertone (which I only really recognised in hindsight, since I at the time thought he was winding me up) was clearly an implication that I had already come in and bought the phone and was trying to get a second one. Quite why I’d want to do this is beyond me. He did not apologise at any point during this exchange. The end result of this conversation was him telling me that the only thing he could do is to put my name back on the waiting list. He also offered to let me speak to the manager. Damn right I was going to.

After having to wait about 10 minutes for her to finish helping someone else he finally got around to explaining the situation. She asked me to type my email address into their system so she could check the status, and here’s where it gets interesting.

She logged into a customer-facing terminal on the shop floor using her employee account. I was standing over her shoulder and could easily have shoulder-surfed her password. She then asked me to type my email into a search page which had a list of email addresses and names on – the iPhone reservation list. The page I saw had maybe 10 emails and names. All at the start of the alphabet – I’d be willing to bet quite a few people with email addresses starting with the letter a have had similar problems! I typed my email address into search, and the status came back saying they had already sold my phone.

She then left the console (which was logged in with her store manager’s account) for around 30 seconds, during which time her back was turned and attention distracted. I am not a criminal and I respect other people’s privacy so I ignored this while making a mental note that it had happened. If I had been less honest I could’ve both shoulder surfed her password and had 30 seconds to take as many screenshots of their customer details as I wanted. I strongly suspect that this is the method someone else used in order to obtain my email address.

She asked me for ID, which I showed her. She also asked me to log into my email account to show her the confirmation email, which I did. She claimed that all customers would’ve had to have either a) brought in a print-out of the email in order to confirm (which would be easily faked) or b) signed in to their email account in-store. I would refute this claim, I doubt very much anyone is asked to provide this confirmation if their iPhone hasn’t already been sold! It’s also not listed on their list of things to bring with you when collecting.

She vanished for about 15 minutes (who knows why, she’d already said they didn’t have any more phones to sell… I did see her helping other customers during this time!), before coming back and basically accusing me of trying to scam them and of lying to them. She claimed once again that someone would’ve had to have had access to my email account to claim the phone, and when I pointed out to her the list of email addresses she showed me (which is in direct contravention of the Data Protection Act) she repeated the same thing. She was also unable to produce a receipt for the sale of the phone to this mysterious other party (who she said purchased the phone at 5:57, when I was still at work…)

I could cope with this happening, and slightly less cope with their shoddy shop-floor security and completely lax attitude to their commitments under the DPA. What I cannot cope with is the complete lack of apology from either the employee or the store manager either for the situation occurring or for them a) assuming that I was lying and b) accusing me of lying.

I do not expect to be treated like a criminal when trying to buy a £500 device from a premium retail company, especially when it is they that have committed criminal acts and their system which has failed. I explained this to the woman and then pretty much walked out. This was after 50 minutes and the store had closed…

Sufficed to say my enthusiasm for buying one of their phones has been completely destroyed and I think I’ll just keep my money. I am also going to write a letter outlining this situation to the appropriate people.

Not impressed Apple, not impressed. I can put up with a lot of shit but this is too far.

Less Windows, more Cygwin

Microsoft doesn’t ship Windows with a log file viewing application built-in (unless you count Notepad, which I hope you don’t). The closest you can get is Trace32, which is an ugly program lacking even the ability to open a file without reading the whole of it. Try opening a 120MB log file with Trace32 and you’ll see the issue here.

My solution is to use the Less utility, which is found on pretty much all Unix-based systems via Cygwin, which is a Unix environment for Windows. First step is to install Cygwin, from http://www.cygwin.com/. You can then open a Cygwin shell (which works through the Windows command prompt) and then run “less ” easily enough.

The real special sauce comes from being able to open log files directly from Windows Explorer, by right-clicking on them (which is the typical Windows idyom). This also makes it the default action when opening a log file, so all log files will open with less however they are opened.

As with (almost) all Windows settings which application opens which files is controlled from the Registry. The following changes need to be made:

HKEY_CLASSES_ROOT\.log
HKEY_CLASSES_ROOT\.lo_

Under both of these set the (Default) REG_SZ key to:

“Log.File”

HKEY_CLASSES_ROOT\Log.File\shell\open\command

Set the (Default) REG_SZ key under this to:

“C:\cygwin\cygwin_less.bat” “%1”

Then you need to make the file above (note that if you install cygwin somewhere else you’ll have to change this path). The contents of the batch file are:

@echo off

C:
chdir C:\cygwin\bin

set CYGWIN=nodosfilewarning

less %1

This will give you the right-click context menu under the “open with” entry in the context menu when you right-click on a file in Explorer. It’ll also set the default way of opening log files to be your script (which opens a Cygwin window with less already pointed at the correct file). The line setting the CYGWIN environment variable to “nodosfilewarning” prevents less from complaining about the DOS format filename being passed in.

Works nicely, and a lot better than crappy old Trace32…

Facebook IPv6

Apparently Facebook, the English-speaking world’s favorite “social networking” website has been making a half-assed effort to be IPv6-reachable (though commendable that they’re even thinking about this). You can try it out here:

http://www.v6.facebook.com

And read more about the technology involved here:

(pdf) https://sites.google.com/site/ipv6implementors/2010/agenda/06_Lee_IPv6atFacebookgoogleconference2010.pdf?attredirects=0
https://sites.google.com/site/ipv6implementors/2010/agenda

Shelling out

I like to have the same shell format for all my machines, this is typically done by setting the PS1 environment variable. I’ve recently learnt a thing or two about this.

Firstly, .profile is used for login shells, whereas (e.g.) .kshrc is used for all interactive shells. The distinction being that login shells are ones you log into using SSH etc., and interactive shells are the ones you get by running ksh while already logged in.

The line to set up your prompt is:

export PS1=’\u@\h:\w\$ ‘

This goes in the .kshrc file, and produces a prompt that looks like this:

username@hostname:~/somedirectory$

The escape (backslash) before the $ symbol indicates that this should change if you’re logged in as root, e.g. when as root it’ll show as:

root@hostname:~/somedirectory#

Pro Tip: On OpenBSD root shells won’t accept the PS1 environment variable unless it contains either a hash (#) character, or the escaped dollar sign (\$). This caught me out for a bit!

The other thing you’ll need to do to get this working is to edit your .profile (which is run whenever you log in, e.g. via SSH) to set the ENV environment variable to be your .kshrc file, e.g.:

export ENV=$HOME/.kshrc

When new shells are thusly spawned they will read the contents of the ENV variable to get their initialisation parameters. You can also put aliases in here, e.g.:

alias vi=vim
alias ls=’ls -F’

(To invoke vim rather than vi, and to invoke ls -F (which adds characters to listed files to indicate their type) rather than vanilla ls)