Updated: Japan iPad 3G is NOT “not exactly” SIM-locked – Jobs says so

There is a massive hullabaloo about Softbank’s exclusive deal with Apple for the 3G iPads here. Currently, you cannot get a 3G iPad without going through Softbank and signing up for a data plan (either 2 years or some terrible 4,000 yen per 1GB “offer”). This is in stark contrast to the fantastic deal Americans get in the US with AT&T.

Softbank appears to be announcing to the press that there will be a “SIM Lock” (SIMロック).



“According to information released by Softbank on May 8, iPad wi-fi+3G models sold from Softbank shops will be SIM locked so that they can only connect to Softbank Mobile’s network.

I think they are lying. I don’t believe that the devices are SIM locked in any way. The only “lock” is that you must sign up to Softbank to get one, and they won’t sell you a microSIM for an international model.

Mobileinjapan.com reported a response from Steve Jobs stating that

Actually, the version of iPad sold in Japan does accept international SIMs.

I decided to email him myself and I got a reply:


An email reply from Jobs appears to be a rite of passage for bloggers now – I have replied asking for clarity but he doesn’t appear to get into conversations unless you are really interesting (which I’m not).

Based on the reply above, are we meant to believe that they have developed a new SIM-locking system that unlocks your device when you leave Japan? Of course they haven’t, that would be stupid. If the devices are SIM-locked, then international microSIMs simply would not work in them. Therefore, they are not SIM-locked.

What I believe Jobs is referring to by “locking” is that you can only buy a 3G iPad after “locking” yourself into Softbank. Docomo and E-mobile (both with networks that would support the iPad) are now unable to sell wireless plans. Not because of any technical reason, but because they cannot sell the iPads themselves, and all 3G iPad owners will be locked into 2 year contracts.

This is why I don’t think the iPads are SIM locked – simply because they don’t have to be. Normal Japanese phones have carrier specific settings built in (access points, MMS gateways etc) with no way of changing them so switching a SIM card would never work. Softbank must be very scared of the prospect of the market opening up like Europe.

Update: Well, he replied.


Not exactly SIM-locked? What does that mean? Maybe they HAVE developed a new SIM locking system that uses the GPS to determine the country you are in, or iTunes unlocks the device when you insert a non-Japan microSIM.

Another update: The Softbank Sucks blog appears to think that there is a software lock on Japanese iPads (possibly all iPads?) that is only active when the SIM Mobile Country Code is Japan’s. Meaning, if the SIM is a Japanese SIM, it must be a Softbank SIM. Absolutely appalling if true. The only way Docomo would be able to get around it is if they lied about the country code on their SIMs.

No native Japanese text in Windows Phone 7 … yet

The first preview version of the Windows Phone 7 SDK is out and it doesn’t support Japanese (or non-Latin) text in the English ROM. This is a huge disappointment.


One of the major advantages the iPhone has over almost every other smartphone platform (and the major reason I bought mine in the first place – I needed Japanese language support) is the built in support for non-Latin languages and their input methods. This allows Apple to provide one single worldwide firmware edition.

Previous versions of Windows Mobile have required users to hack in Japanese fonts using the registry and rely on some awful third party hacks to get Japanese IMEs working. I seriously hope that before WP7 is finished, Microsoft just install worldwide fonts and IMEs like they started to do with Vista. There is no excuse. We are unlikely to get low-level access to the registry this time around to hack the support in ourselves to non-Japanese ROMs.

One of their slides is supposed to imply that the Metro theme “Celebrates Typography”


— more like it totally ignores it. I suppose screens of square boxes fits the “Authentically Digital” principle.

Avatar Kart update

Finally in playtest on Xbox Indie Games, Avatar Kart now has:

  • 8 CPU racers
  • Avatars sit down and actually steer their cars
  • Race restarting
  • Cool loading animation
  • Drift handling improvements

Done some optimisation to get the framerate to a steady 60FPS, definitely still much more I could do. The floating point performance on the 360’s .NET Compact Framework is pretty dire..

Ed-7  Ed-8

XNA QR Codes

imageI’ve just pieced together a renderer for QR codes that outputs a texture instead of System.Drawing.Image objects (the Xbox .Net Framework version does not have access to the Drawing namespace). I’ll be using this as a way of uploading times on Avatar Kart to my server instead of copying a code which you had to do in Lines, my previous game. I will release the code once I’ve tidied it up a bit.

Avatar Kart – now with avatars!

My Avatar Kart game now has:

  • A skybox
  • An original track
  • a floor for the world
  • Debug and chase cameras
  • A starting countdown

I also finally got Avatars in the code (Xbox 360 only so no videos yet). Microsoft has not decided to release the bones for the avatars, so I cannot do custom animations or poses yet. Therefore they are standing in the karts at the moment…

image image

Symfony – from 1.0 to 1.2

I’ve now had the pleasure of developing two line of business applications using two very contrasting versions of the Symfony framework in PHP/MySQL. Whereas symfony 1.0 allowed you to generate custom CRUD (create, read, update and delete) interfaces by editing simple human-readable config files and overriding simple functions, new symfony 1.2 systems require you to understand badly documented APIs (more on that later), PHP’s OO programming quirks, the exact method call order of the new forms framework and write completely new classes to provide custom filter functionality. 1.1 was an interim version that left in backward compatibility.

Imagine you want to add a custom filter to the standard object lists that require custom joins or subselects on columns not in the object’s table. We want an extra filter called “is_missing_address”:

Symfony 1.0

  • Add “is_missing_address” and boolean type to the list in generator.yml
  • Override the addFilterCriteria() method in the actions.php file to add the custom SQL when the “is_missing_address” filter is active

Symfony 1.2

  • Add “is_missing_address” to the filters list in generator.yml
  • Add the sfWidgetFormChoice() Widget with all the select tag values to the list of Widgets in the Filters form class’s configure() method
  • Add the sfValidatorChoice() class to the list of Validators
  • Override the getValues() method of the filter form to include “is_missing_address” and a custom criteria method name
  • Add a method such as addMissingAddressColumnCriteria() to the filter form class that adds the custom SQL

There are benefits to doing it the 1.2 way once you know what you are doing, but it is extremely complicated before you get your head around it. 1.0 was vastly more accessible partly in due to its amazing documentation.

imageI learnt symfony 1.0 by reading The Definitive Guide to symfony, written by the two lead developers. This was a fantastic book, detailed and simple. It was also clearly written (mainly by Francois Zaninotto) and obviously properly proofread before publishing.

The two lead developers have appeared to have a massive falling out after 1.0 was finished and massive changes brought in. The main author of the book has quit the project entirely after attempting to document the new changes and realising that 1.2 is only powerful and not simple. Simplicity and speed of development is probably the only two reasons anyone would want to use symfony in the first place (and probably PHP) – both of these points have been removed. The new documentation is full of French-lish such as “Softwares” and the homepage has what can only be described as non-native english. I believe parts of 1.0 were written with the documentation in mind (Documentation Driven Development), but 1.2 appears to have been made as powerful as possible, gaining maybe 10% more functionality at the expense of being easy to learn.

You do get what you pay for however, and symfony is free to use. I would not pay to use it when money gets you access to something like ASP.NET MVC now with fantastic MSDN documentation (there are free versions but it still requires a Windows server to host with). The symfony developers offer expensive training workshops – if the framework was still designed with simplicity in mind, you wouldn’t need training workshops or “symfony camps”.

The standard response to negative comments on open source projects appears to be “why don’t you volunteer to fix some bugs or correct some documentation?”. If I did that, it wouldn’t be free now would it?

Avatar Kart work in progress

During my down time I’ve been cracking on with XNA and am developing “Avatar Kart” – essentially Super Mario Kart on the SNES with Xbox avatars (we have to wait until XNA Game Studio 3.1 this summer for avatar support). In a couple of days I’ve managed to finish:

  • CPU Car AI
  • Physics and wall collisions
  • Terrain effects
  • Lap counts and car rankings
  • Split screen

The track is still from SMK and the cars are empty but it does the job. Although its in 3D, I’m trying to get a 2D mode7 type handling feeling, really tight controls and simple graphics. I’ve already hit the performance wall of floating point operations in the compact framework on the Xbox so will need to spend some time optimising later. I will be replacing the Mario Kart track with my own design soon.

Below is a video of how its looking so far:

Fullscreen flashcard program

image I’ve put together the first version of a simple program for displaying flashcards in fullscreen, mainly as an exercise in WPF but also because its damn useful for all sorts of teaching environments. Flash cards are simple text files that anyone can edit – just load them up and hit spacebar to cycle through them. “Big Flash Cards” is now at version 0.1 🙂

It supports Unicode so is perfect for Japanese lessons, for which I designed it. Example flash card files are included – they are very easy to edit and are simple text files. This is a very early version so there will be bugs.


Download Big Flash Cards (117kb zip)

Vista and Windows 7 users: just unzip and run BigFlashCards.exe
Windows XP users: You need at least version 3.0 of the .NET Framework. Download it here.

For those that care, this was developed in Visual Studio C# 2008 solely on a tiny little Dell Mini9 laptop.