PayPal's Dubious Business Practices

Over the years I've had many encounters with PayPal. I use their service to process payments from my products and services, especially for international customers. PayPal is well known for its dubious business practices, seemingly freezing accounts at random without notice, leaving small businesses stranded and their money held hostage.

This morning the company may have overstepped the line when they froze the account of Regretsy, a site which was running a massive Christmas gift exchange program for children in their community.
What did PayPal do? They decided to shut their entire operation down and insisted that buyers are refunded, stating that it was ok to raise money for cats but not for children. It beggars belief.

Please check out the conversation the Regretsy site owner Helen Killer had with a PayPal employee. Then ask yourself: is PayPal a company you want to do business with in the future? I know I will reconsider, and have already started to offer Google Checkout and Amazon Payments to my customers.

In the meantime PayPal seemed to have been busy deleting comments on its Facebook wall - with limited results. Check out the comments on the latest posts made by Paypal: hundreds of angry customers venting their views.

PayPal: shame on you!

Enabling Google Checkout for Google Apps Accounts

This is worth a blog post since it turned out to be a task that took me 15 minutes to complete...
I wanted to sign up for Google Checkout as a seller and tried to sign in with my Google Apps account. The error message I got told me that my account was not enabled for Google Checkout and that the administrator for my Google Apps domain had to enable it.
Luckily that administrator is me so I went on the hunt for the option that enables Google Checkout for my Google Apps account... 15 minutes later I found it, and to save you some time here it is:
1) Go to your Google Apps account at and log in as the domain admin. You may find it easiest to simply log into your Google Apps GMail account instead in which case you now need to click on 'Manage this domain' at the top right.
2) You're now on the Google Apps homepage for this domain. Click on 'Organization & users' (second option, top left)

3) Next click on 'Services' (next to the selected 'Users' tab (it's easy to miss).

4) Scroll down to 'Other Google Services' and past it until you find Google Checkout. Turn it on.

You are done!

IIS Error 500.19 When Using Virtual Directories

I've just encountered an annoying error with IIS 7.5 when using virtual directories. Since it took me a while to find a solution I am sharing it here.
I needed to add a virtual directory to an IIS site which allows me to access a bunch of flv files to deliver via progressive download. The virtual directory pointed to a folder outside my webroot and inside the Flash Media Server applications directory.
When I tried to access a file inside this directory via the web browser I ran into an error 500.19 'Cannot read configuration file due to insufficient permissions'.

It took a while and some Google searches until I figured out that the IIS_IUSRS account needed read permission for that folder. To add these I right-clicked the folder in Windows Explorer > Properties > Security > Edit > Add > Advanced > Find Now > Search for IIS_IUSRS > Select > Ok > Ok > Ok > Ok (yes, 4x Ok...).

What a palaver. Why I use IIS? Don't ask, but yes it is a pain to work with at times, as are Windows file permissions. If you want to implement something similar when the virtual directory target is in another Windows domain then you're in for a world of pain.

And one last tip: if you need your IIS site to display detailed error messages then this post by Mike Volodarsk has all the details:

How To Lose A File Despite Three Backups

Here's a little tale for you, it's the tale of a lost file.
I'm quite obsessed with backing up my files: I run a TimeMachine backup from my iMac to a local NAS drive, run Carbonite locally which backs up my entire machine to a remote location and in addition I also have a Carbonite subscription for one of my servers (the one with the most files on). Therefore what usually happens is that I create and edit a file (say a server script) locally, it gets backed up via TimeMachine locally, Carbonite pushes it into the cloud and if I then upload that file to the server it gets backed up to yet another Carbonite account.
Pretty solid I hear you say. Yes it is, unless you are a lazy fool like myself and often use Transmit to open a file locally directly from the server via right-click > open. That's convenient, right, because every time you save that file it gets pushed up to the server automatically, saving you from having to drag/upload that file before refreshing the browser to test.

So here I was working for several hours on a CFM script that did some complex ninja-level type operations. Finally I cracked it and everything was working as it should. Off to bed I go - having forgotten to pull down the server copy (which now was the latest revision) to the local dev machine.
The next day - and I clearly wasn't thinking straight - I dragged the local copy of that same file to the server. Poof. All the changes I made the day before were overwritten.
No sweat. Fire up TimeMachine and browse back a day... oh shoot, there's no local copy of that file since I made all edits on the server. The local Carbonite service would also have no record of it. A quick check confirmed that.
Well lucky me, I've got Carbonite on the server too so I logged on and... crap, the file was marked for backup but (for one reason or another) had not yet been backed up, maybe because the time window of that particular file existing on the server had been too small. Long story short, I had lost all the changes I made to that file the day before.

The lesson here: be careful when editing files on the server. Always make sure to 'commit' those changes back down to your local dev environment afterwards. and before you ask, yes I have heard of version control but whilst I keep most of my projects in SVN I did not do so with this particular one. And anyway, all things considered SVN would not have helped in this situation either... And I am aware that the title of this post is slightly misleading - I *thought* I had three backups, turns out I didn't have any :-)
BTW if you do not have a remote backup solution then I strongly advise you set one up. Local backups alone are useless if the worst comes to the worst and you have a fire, are burgled or similar. I can recommend Carbonite, but have also heard good things about Crashplan. My one gripe with Carbonite is the fact that the OSX client does not currently support backups versioning - however the Windows client does.

Stay safe folks.

Cheap Mobile Broadband When Visiting Germany

I've recently traveled around France and Germany with my family and needed to get online cheaply whilst there - yes, the idea of 'switching off' is nice in theory but if you have paying customers who aren't pleased when a server goes down then you know the importance of being online to least check your email. As you probably know, roaming charges for data are charged (for no apparent reason tbh) at ridiculous rates, mine being £3 per MB via my provider which is O2. If you know me then you'll know that I'm no fan of being ripped off so I looked for a cheaper solution - read on for more info.

We had free WIFI at our accommodation in France but since my father (with whom we stayed in Germany) neither has a landline nor a mobile broadband tariff ('Interweb? What do I need that for') I had to find another solution - and I quickly found one (but read on to the end for an even cheaper one).

› Read Full Article

Downgrading Apple iPhone OS 4.0 to 3.1.3

I've had major performance issues on my iPhone 3G (which is over 2 years old) after upgrading to the new iOS 4.0. Apps took much longer to launch, password entry forms did not respond quickly enough and the whole experience was just much much worse than using the 3.1.3 firmware version. Unfortunately I quickly found out that Apple does not like you to downgrade the OS and firmware for reasons that are only known to them, regardless of the fact that the new OS clearly does not perform well on a 3G model.
I tried the 'normal' downgrade process using iTunes 9.2, a 3.1.3 firmware file which I downloaded from this site and entering the phone into DFU mode as described in various guides. However at the end of the restore process I always got Error 1015 which basically translates to 'Nice try my boy'.

Fortunately after unsuccessfully trying a few different approaches I came across this guide which uses the iRecovery tool after Error 1015 has manifested itself and this worked a treat. I managed to downgrade to 3.1.3 without issues following the steps described. So if you too are stuck at Error 1015 then give that guide a try - but you do so at your own risk of course.

Hope this helps someone.

Creating A GMail Filter For Unread Emails

Hmm so after using this filter for a few days it now appears that whilst it catches all email already in your inbox it does not apply the same filter to newly received messages. This makes this entire tip pretty useless... I'll keep looking for a solution to this but for the time being I don't recommend you use the filter described below. If you have any tips please leave a comment.

If you are like me you may be using Google Apps (or GMail) in combination with an IMAP enabled email client such as Mail or Outlook. Recently I noticed that I was missing some emails which were not caught by any of my filters: in a nutshell, I filter emails for each domain I want to receive email for by applying a label which then shows up as an IMAP folder in OSX Mail. However some senders, particularly bulk emails such as newsletters, specify the 'to' address as either undisclosed or even as the sender address rather than the actual recipient's email address (in this case that'd be mine) which in turn causes the emails to sit in my inbox amongst thousands of other emails where I may miss them.
I thought it would be easy to simply create a new label for unread emails in GMail but unfortunately the label 'unread' is reserved by Google (it did not use to be). You can of course also run a search for unread emails but that does not give you the ability to automatically label the matching messages. To workaround this you can do the following:
1) create a new label such as '_unread'
2) create a new filter with the criteria of 'label:unread' in the 'Has the words:' field
3) Test the filter: all your unread emails should show up
4) click 'Next Step' and ignore the warning
5) apply the label you created in step 1

You should now have a new folder in your email client that shows you all unread emails in GMail. One thing to note is that your local folder may also show any corresponding read messages which are tied to the same conversation as an unread message.

My Letter To Apple: Objection To Section 3.3.1, Request For Exclusion

I've just sent the following to the EU Dev Support at Apple.


Dear Apple,
As a developer who has successfully used Adobe Flash CS5 to build, submit and publish iPhone applications via the App Store I am unable to agree to the new Updated Program License Agreement you wish to impose on me.

Section 3.3.1 of the agreement states:
"Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited)."

Since my application has originally been written in ActionScript it is now in violation of these terms. This brings up two questions:

› Read Full Article

Grab It While You Can - Now Only £114.99

I know this is childish, but it's oh so satisfying. This morning I've updated the description of my only published iPhone app (which was built with an early version - check the release date - of the now banished CS5 feature), and to my surprise the copy actually showed up this afternoon. Does this count as an App Store hack?

Expect the app to disappear anytime now. Oh, and the price has gone up recently too. You must understand that I need to fund a lot of Objective-C training now... In order to protect you from accidental purchases I won't post the iTunes link here :-)

The reason I am doing this? Because I'm no longer interested in having my game up there. Sure, it was nothing ground breaking or particularly innovative (yet still better IMO than some of the 'native' junk that hits the App Store), nor has it made any money (the price was free for most of the time), but nevertheless I did enjoy using some of my favourite tools (namely Flash and ActionScript) to port it to a mobile platform. It was a good experience. Which apparently ends here. For the iPhone platform at least.

Apple Is Acting Like A Dick Spoiled Kid

Excuse my French, but that's the most fitting way of describing Apple's latest move of deciding to 'ban' any cross-compiled applications from its App Store. If enforced this could mean an effective block of Adobe Flash CS5's flagship feature which is the ability to export native iPhone apps written in ActionScript.

I'm annoyed by this for many reasons. The primary one is that this directly sends a message to me personally as a developer who has already launched a Flash based iPhone app onto the App Store. That message reads: "We do not value your work. Whilst technically there's nothing wrong with your application and you have complied with all the rules we have given you already we've decided to move the goal posts now and deemed that your work adds no value to our platform."

Well guess what Apple, your platform does not add any value to me either. Not that I had any plans to develop more iPhone apps anyway anytime soon, but the fact that the effort I put in already is effectively discredited does cheese me off. Who does Apple think they are? Do they really believe that this is going to drive adoption of their own tools? I predict the opposite will be the case.

I don't think even Apple is that stupid. Instead this latest development is nothing more than a cheap shot at Adobe, but with a lot of collateral damage. They seem to forget that most developers are skilled in several languages, and many Flash devs also code in Objective-C. Will they reconsider their investment in Apple now? I certainly will.
Having already sold my Apple TV and replaced it with an Acer Revo, replaced my MacBook Pro with a netbook I'll most certainly not be renewing my Apple Developer agreement, nor agree to their updated terms. MobileMe can also go f**k itself. And my decision about upgrading to the next iPhone has just been made for me too: the HTC Desire is what I desire.

Granted, when it comes to desktop hardware I'll have to consider my options as I do like OSX and my iMac. But the bottom line is that I'll vote with my wallet and feel mighty good about it.

PS: I have updated the description of my game on the App Store - will let you know if/when they publish it. But I feel they may not :-)

More Entries