Sunday 13 December 2015

Electronic Arts have the worst support portal EVER!

I'm incredulous at EA's very bad support process.

I had purchased some in-app content for my son's tablet, and after an app reinstall it would not resume the content.

So I tried, repeat, tried to contact EA.

Their Contact Us portal is horrific. It is a "fake" contact us, wherein it pretends to offer you an ability to contact but in reality forces you down the check forums and raise a ticket via the portal.

But the portal was horrific.

Trying to raise a new ticket on this URL didn't work.
1. Go to
2. Scroll down and select "Contact Us"
3. Click on Android Tablet and select Next
4. Select "Missing Content" and "Had content and lost it"
5. In the "Please tell us a little more about your issue" box type "In-App Purchases"
6. Press Next
7. You get dumped on Step 3 above. You cannot complete the support request.

Eventually I chose a different selection option and got to the end screen. But if I attached a PNG to the ticket whilst raising it - it dumped you back at the beginning.

Eventually I figured I had to raise a ticket under the wrong option and submit it. And then attach the JPG after.

During this process I was in an email conversation with a support guy who was adamant I should attach the PNG to a support ticket that he had raised of which I had no access to.

In all, this whole debacle cost me 1.5 hours of my life, to fix a problem with my son's in app purchase. It is enough to put me off in-app purchases for life!

NB: I contacted Google and they refunded it within 5 minutes. They've got the right customer experience.

Monday 7 December 2015

Port exhaustion on Windows server

We had a set of servers that started showing what seemed to be random connection errors. They ran across services and across servers.

Our first thought was it was a hardware or centralised switch problem, but the network guys assured us the switch had no problem.

Then we started leaning towards configuration problems on the boxes. These servers ran multiple services, all heavy socket consumers.

Whenever a socket connection is made to a known port, Windows also uses a temporary socket for the return communications. These temporary sockets, known as ephemeral or short-lived sockets, are assigned from a pool which can be configured.

netsh int ipv4 show dynamicportrange tcp
Protocol tcp Dynamic Port Range
Start Port      : 50001
Number of Ports : 255

This is an incredibly low number for a server high in comms. It shows that when a socket is created, only 255 are available. Bearing in mind when the communication has completed the socket remains open for a short while (known as the TcpTimedWaitDelay) for efficiency in reuse. This defaults to 30 seconds.

Also the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters showed  a MaxUserPort of 1279, which conflicted with the StartPort + Number of Ports range.

In a state of port exhaustion MS documentation says that you can get non-specific errors that just look like general connection errors.

System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send.


Sunday 6 December 2015

Installing gpiozero on the Raspberry Pi (Wheezy)

I found it troublesome to install the gpiozero package in order to interface to the Rasbperry PI IO.

In the end the following commands worked:

sudo apt-get update
sudo apt-get install python3-pip

sudo pip-3.2 install gpiozero

Test it with
sudo python3 -c "import gpiozero"

Running the program within IDLE raised the exception about not able to access /dev/mem. To fix this I added the IDLE shortcut to the desktop, ran the nano editor under sudo to edit the shortcut and ran IDLE with the sudo prefix.