iPhone 2.1 software update - Not so good after all

Since I updated my iPhone 3G to 2.1, I’ve had the following issues:

- Occasionally: The phone goes into “Call Ending…” mode after a call is finished or “End Call” is pressed and doesn’t come out of that for some time.

- Rarely: Call is made but the screen is blank. As if you’ve held your hand in front of the proximity sensors.

- Often: GMail IMAP “Push” (15 minute pulls) doesn’t work. A manual kick (starting the mail app) is needed.

All and all, it’s made my iPhone less stable.

UPDATE: Gmail push/fetch has stopped completely after a couple of restarts. Here is a thread at Apple support forum on the iPhone 2.1 problems with email fetch/push.

Software from hardware vendors

Why is it that all hardware manufacturers (for PC) write the most crappiest software ever? ASUS builds good hardware, but when it comes to software, their website support section is one of the worst and slowest (from here in the UK at least), and this is their BIOS updater: I have no idea why a BIOS updater for a motherboard should look like a spaceship why can’t they just use normal Windows controls like EVERY BODY else? 

ASUS BIOS UpdaterOr which idiot approved the use of a picture of a Mac on a Windows tool to update PC motherboard BIOS? 

But this is not why I’m so pissed off with ASUS. The problem is a software developer uses “funky” graphics for his application as if it is going to be used by 12-year olds, but leaves options like a list of ASUS FTP servers to choose from or PASSIVE/ACTIVE and Proxy connection settings in there. Couldn’t you bloody used a normal blooming HTTP for that? Was it not possible to try PASSIVE and then ACTIVE if that didn’t work and then show a link for a direct download if everything was unsuccessful? Is upgrading a BIOS somthing that people do every afternoon after picking up their kids from school?

Why should I care about which one of your FTP servers to use? Why should I care which FTP connection method I have to choose? Why should it be my problem that a company as big as ASUS can’t sign a contract with a hosting provider so I don’t get “Too many connections, try again later” in a middle of a download? 

Where do they find there “developers”? Which planet they live on? Haven’t you heard of anything called Apple? Oh wait a second, you idiots make Apple laptops in your factories. Open one up before it goes into the box. You might get something into your thick skills by chance.

More on iPhone Push

OK. So in my quest for a good push solution for my contacts and calendars, I signed up for a MobileMe trial account, imported all my contacts from Google to it (export to VCard and import it in Me), and started to export my emails to it as well (using Mail.app on my MacBook via IMAP). But I decided not to go ahead with MobileMe for the following reasons:

  1. It doesn’t support custom domains (like sajadi.co.uk which is mine) at the moment so I have to keep my hosting for this email address and forward it to Me and then setup the outgoing SMTP server to send it from my host or use the Reply-to solution which is even less elegant in my opinion.
  2. Google (Google Apps in my case) does a brilliant job in filtering spam. I hardly get any passed the filters these days. Forwarding from my Google to Me can benefit from filters though.
  3. The search features are not as strong as Google’s. No need for proof I guess!
  4. The interface is still buggy. Not much but not as good as Google’s.
  5. There are loads of tools out there for Google integration: Calendar Synchronises and more. This means I can use my Google calendars with my work Outlook and lots more (like subscribing to iCal feeds,…)

All this means that shelling out £60 for a MobileMe account is not a good idea. Also the sync on Mac and PC is not instant but every 15 minutes (you wonder how they can do it on a mobile device but not a PC or even Mac)

I mentioned earlier that I am a bit skeptical about NuevaSync because it is in beta, but I still gave them a shot and I’m glad to say that they’ve surprised me nicely. The service has worked flawlessly so far, it syncs my contacts with Google seamlessly (including pictures which is very nice) and is quick and responsive. As for the calendar, since I have 5 different calendars in my Google account and NuevaSync displays them in one iPhone calendar I’m still holding out of that service, but they’ve promised to fix this in future.

I wish NeaveSync best of luck and hope Google buys them (if they want the money!)

Push email from Gmail to iPhone

I’ve been looking for a good push solution from Gmail/Google Apps to iPhone. Not necessarily the email push since I’m not really bothered with the 15/30 minute delay caused by pulling it (except its effects on the battery life), but having push for contacts and calendar events. Quite often I get someone’s mobile number and add it to my phone’s address book. Then I need to have that on another computer. At the moment, I have to sync my iPhone (iTunes) with Google contacts. Sync is always problematic. There are duplicates, and also if you have more than one sync client (like another PC or Mac) then you’re just asking for trouble. I quite like the MobileMe solution but don’t want to move all my contacts, emails since 1997 and calendar events to MobileMe just for this purpose. Plus, MobileMe does 15 minute syncs on PC and Mac instead of instant push (which it does on iPhone) and also it does not support custom domains (at least yet). I am quite happy with my Google Apps hosting for email, contacts and calendar and would like to see a real over-the-air sync solution from Google. Something like Exchange ActiveSync would be ideal, so you can see Google Apps like an Exchange server.

I know there are services like NuevaSync, but firstly they are in beta, secondly you will be exposed to the risk of their business going down (which is much more likely to happen compared to Google’s), thirdly they are still syncing with Google.

For now, lets just sign this petition: Push Email for Gmail

Two suggestions for iPhone 3G

After using the new iPhone 3G for a week, I can say it definitely is the best gadget I’ve had so far. I’m not going to praise the user interface and functionally of the device, but I can think of two suggestions to make it even better:

1. Notification light: An indicator light on the device can be very useful. This can show if there are any emails, SMS or voice messages waiting on the phone. The best place for it? The white rectangle on the Home button can flash an Apple white.

2. GPS Quick Fix: Living in London, I’ve noticed that it take a long time for the iPhone to fix it’s position (find where it is) when I come out of the Underground (Tube, Subway, Metro,…). TomTom provides a software for its devices called QuickFix which downloads the predicted position of GPS satellites so the device can fix it’s position much quicker. For TomTom it means you have to connect it to a computer or use Bluetooth and a mobile to do the weekly download. With iPhone a small weekly download can happen on the background.

The Headphone Effect

I don’t have any solid statistics but I can be fairly confident and say today most of the music is listened to by iPods or other MP3 players (as opposed to Home HiFi or other devices). And that means most of today’s music is listened to by headphones/earphones.

Taking this and applying some evolutionary theory (or Memtics) to it, I think it means songs that sound better in headphones/earphones are doing better than the ones that don’t. Thus if you want to make a music that has a better chance of getting to the top of the charts, make it sound good in headphones: Focus on higher pitch tones rather than base and frequencies that get distorted in the average headphones/earphones!

Meritocracy in Silicon Valley

Evan Williams , the founder of Twitter has made his millions in Blogger. He is very well connected in Silicon Valley and Web 2.0 ecosystem. I also admit that Twitter can be a useful tool: Integrating it with other social networking websites like Facebook or even personal blogs can have good uses.

Everyday there are tens of new websites popping up on the internet providing different services: From URL shrinkers to Corporate collaboration tools. Now if each one of them had the problems Twitter has had for the past couple of months, it would have been dean in the water. Very dead indeed.

It was revealed recently that Twitter has only 1.5 million users. It might sound a lot but compared to many other websites, it is not a lot at all.

I guess Mr. Williams should be very lucky to have such good friends in the media to fan his hype so feverishly so he can manage to increase the number of the users of his service like that.

Parse free text to names

This code is a C# port of this VB code that parses free text into a person’s name. The result includes Title, Pedigree, First name, Middle name, Last name and Degree.

I’ve used this code in iContact (Google contacts for Windows)


using System;
using System.Collections.Generic;
using System.Text;

namespace DataLoad.iContact.WinClient
{
public class NameParser
{
private string _title;

public string Title
{
get
{
return _title;
}
}

private string _firstName;

public string FirstName
{
get
{
return _firstName;
}
}

private string _middleName;

public string MiddleName
{
get
{
return _middleName;
}
}

private string _lastName;

public string LastName
{
get
{
return _lastName;
}
}

private string _pedigree;

public string Pedigree
{
get
{
return _pedigree;
}
}

private string _degree;

public string Degree
{
get
{
return _degree;
}
}

private string[] _titles = new string[] {"Mr.", "Mrs.", "Ms.", "Dr.", "Miss", "Sir" , "Madam", "Mayor", "President"};

private string[] _pedigrees = new string[] {"Jr.", "Sr.", "III", "IV", "VIII", "IX", "XIII"};

private bool IsIn(string text, string[] values, bool caseSensitive)
{
foreach (string v in values)
{
StringComparison compType = StringComparison.InvariantCulture;

if (!caseSensitive)
{
compType = StringComparison.InvariantCultureIgnoreCase;
}

if (text.Equals(v, compType))
{
return true;
}
}

return false;
}

private string CutWord(string text, out string remainder)
{
int p = text.IndexOf(' ');

if (p != -1)
{
remainder = text.Substring(p).Trim();
return text.Substring(0, p).Trim();
}

remainder = string.Empty;
return text;
}

private string CutLastWord(string text, out string remainder)
{
int p = text.LastIndexOf(' ');

if (p != -1)
{
remainder = text.Substring(0, p).Trim();
return text.Substring(p).Trim();
}

remainder = string.Empty;
return text;
}

public NameParser(string text)
{
// title
string word = CutWord(text, out text);
if (IsIn(word, _titles, false))
{
_title = word;
}
else
{
text = string.Format("{0} {1}", word, text);
}

// degree
int p = text.IndexOf(',');
if (p != -1)
{
_degree = text.Substring(p + 1).Trim();
text = text.Substring(0, p).Trim();
}

// pedigree
word = CutWord(text, out text);
if (IsIn(word, _pedigrees, false))
{
_pedigree = word;
}
else
{
text = string.Format("{0} {1}", word, text);
}

// rest
_lastName = CutLastWord(text, out text);
_firstName = CutWord(text, out text);
_middleName = text.Trim();
}
}
}