Category Archives: Tech

Technology-related topics.

Speedtest.net – My Own Results Satisfy Even Me!

Ultimate High Speed Internet

Internet Access is so important. 3 short years and a half ago, I had 1 megabit per second download speeds on DSL. Then I had a technician come to my home and set up a dedicated line so that there would be no interference within my houses wiring, and my speeds increased to 2.5 mbps. I was fairly happy with this at the time. Except I still had trouble getting the modem to sync at that rate on occasion, so there were intermittent disconnections.

Then, my internet provider, Teksavvy (an independent ISP that resells service leased from the incumbent providers), began offering cable internet. Having already well understood the coaxial cabling of my house, I jumped on the cable offer as soon as I could. I gave up a 200 GB download cap for a 90 GB one. I was able to achieve this by switching from BitTorrent to Usenet, which instantly cut my usage in more than half. From that point on, I was rocking a respectable 7.5 mbps down. Gradually, the limit increased from 90 to 120 GB and the speed to 8 mbps.

I do go over my cap occasionally. In September I hit 155 GB. But usually, I hover around it. Teksavvy has never charged me a penny of overage, and I decided to take the plunge and increase my speed to 30 mbps, not knowing how reliable the service would be or if I would get that speed. I also did this because there was a recent CRTC (Canada’s telecom regulator) which should decrease prices for cable internet here in Quebec.

As it turns out, not only do I get 30 megabits down, but I get 60. See, Videotron (the incumbent provider) offers a 30 down/2 up 120GB tier, as well as a 60 down/3 up 150 GB tier, and it seems as though my line was provisioned by Teksavvy as the latter. I’m extremely happy, and now that I have a taste of freedom, there’s no way I would take any speed less than that. I can download a full HD TV episode in 2 and a half minutes. Having the entire content of the internet available to me in instants, I feel as though a door has been opened. In some cases, it’s as quick to download a file from the internet as it is to get it from a computer on my network. It’s revolutionary! The kind of services that can be offered at this speed boggle my mind… and I think it’s so important to have affordable, high speed internet (above 5 mbps). It should be considered  human right. Information wants to be free, and this calibre of internet service liberates it.

Migrating Gmail: From Gmail to Gmail or to anything else

I decided, since I was fed up with the older versions of everything and the lack of Google profile, that I would migrate all my stuff over from my Google Apps account to my regular Gmail account. I use Gmail to consolidate all my accounts, so I send out mail as many people and I have a couple of labels that allow me to easily see how important a message is to me, where it was sent, etc all at a quick glance of my Inbox. I’m pretty organized, and I don’t consider myself a power Gmail user. Still, with 4500-ish messages and about 1.25 GB, there’s a lot of crap to move from one account to another.
I’m here to tell you that it’s possible to migrate email accounts and that you shouldn’t let that stop you.

The easiest way to move email is probably to just set up both IMAP accounts in your favorite email client and drag everything over. In the case of Gmail, you want to drag over the All Mail folder, then re-apply your filters (which you may handily import/export thanks to a nifty tool in Gmail labs). The nice thing about Gmail is that mail is mail is mail: there are only messages (and no duplicates!), not mailboxes. My problem with this method is relying on your internet connection to migrate everything over one message at a time, which is time consuming and during which time you can’t close your laptop! I would rather offload this to Google’s servers if possible.

Well, indeed, it’s very possible.

You’re going to want to take advantage of a simple feature built into every respectable online email interface: pop3 checking.

- First, make sure the current Gmail account has no messages left to be read. Then, go into All Mail and mark every message as unread. Go into Mail settings > Forwarding and Pop/IMAP and enable POP for all mail. Then set When messages are accessed with POP to mark them as read.

Now, as we access through POP with another client, we will know where in the process the other client is at (by seeing which messages are still unread) and if anything fails, we know yet which messages need to be downloaded.

- Next, go into the new Gmail account and set it up to check for new email through POP… you should be able to figure out the specific settings on your own.

Really, that’s it! It will import all messages from your other account. I sugget that you don’t use the old account until the process is complete. It can take a very long time, but at least there is no onus on your computer and if the process fails, you’ll know which messages still need to be transferred. The process works equally well for migration to non-gmail accounts, with the caveat that it may be harder to organize the mail afterwards. One more note: You can’t move messages to the Sent Mail label within Gmail. Within Apple Mail (Mac) I moved (not copied!) them instantly through IMAP. Just Select from All Mail, right click and Move To > Sent and it moves right away (no lengthy copying required…).

Mac, cheap SSDs, TRIM, and Safari

OK, here’s the deal: I’ve got a Mac, I’ve got an SSD. My SSD’s firmware supports the TRIM command, which means that on operating system’s that support said command, deleting files actually causes files to be deleted, rather than marked as deleted. The benefit of this is that next time something has to be written to that spot, it can just be written, rather than deleted and written. Mac OS X does not support this command. Furthermore, my SSD’s firmware isn’t the brightest of things: it doesn’t intelligently know where to put new files… at least not when the drive is 75% full. It also doesn’t have a feature called Garbage Collection, which essentially performs something similar to TRIM when the drive isn’t in [much] use, without the OS knowing a thing.




To summarize, I have a cheaper SSD and it’s not the brightest, best thing on the block. Had I known about all these problems before I bought it, I would have sprung for a more expensive one, with all the bells and whistles that I need. But here’s the thing: it’s still really fast for reading files. Given that I have a MacBook Air, the alternatives to SSDs are extremely slow 1.8″ hard drives, so while I’ll eventually get a better SSD, I’m not going back to mechanical hard drives. Even when I change my computer, to whatever I chose, my SSD is coming with me or I’m getting a new one. Applications literally launch instantly, it’s unbelievable. I can’t go back to a spinning platter!




Now, all these things out of the way, you’re probably wondering what the problem is. The problem is that the biggest limitation of the drive is when writing dozens of little files to disk, because with the deletion of a tiny file and re-creation of the same file, the system slows down to a crawl. In mast applications, this isn’t a problem at all. When writing code, it’s a tiny bit of a problem (on small programs, anyway) but not the biggest problem in the world.




Where the SSD utterly fails is




A- write performance degradation over time


and


B- applications that are very generous with small cache files




The second I will get into first, because it is actually very specifically talking about one app in particular: Safari.








B – Solutions:




Safari (4, 5… whatever!) is a little cache monster. I have studied its behaviour and even with caches turned off in the ‘Develop‘ menu (which you can get in Safari > Preferences > Advanced > Show Develop menu in menu bar) it slows down after enough time has passed.




Safari is quite fast on other computers, but on my SSD (and other cheap SSDs) the constant writing of little files makes it unusable over time. It stores many things: bookmarks, history, cookies, extensions, web forms and passwords, but most importantly: webpage previews (screenshots of every site you visit!), and your cache. These two items are what are constantly being written to disk , and the way Safari does it mocks us cSSD (cheap SSD, you heard it here first!) users: it creates a tiny file, presumably reads the tiny file, then deletes the tiny file. Over, and over, and over again.




B – Solution 1: other browsers




Use Chrome, or Firefox, both of which manage cache more intelligently. How to do this seamlessly? Install X-marks for every browser you wish to use, enabling your bookmarks to sync between all your browsers, and in Firefox install the Add-on “Keychain Services Integration” to allow it to use the system keychain for passwords. And there you go: all your passwords and bookmarks available system-wide!
The caveat is that the Safari bookmarks are in their own folder. Where most browsers have 2 bookmark locations: a bookmarks menu and a bookmarks bar, Safari has three: an additional ‘Bookmarks’ location. What I have done is within the bookmarks bar, created a folder called ‘BOOKMARKS’ and put everything in Safari ‘Bookmarks’ in that folder… here’s a screenshot:

Move BOOKMARKS elsewhere

So now, I can use any browser I want at anytime. Oh, and my Bookmarks still sync with MobileMe, so if I add a bookmark in Chrome, it shows up automatically on my iPhone within minutes. This is a great tip for anyone, really. It gives you more options, and is quite transparent. I have done this, even though there is a second solution to help me out…

B – Solution 2: stop using cache + webpage previews

The two culprits that slow Safari down are, as I mentioned, webpage previews, and cache.
Shall we remove them altogether? Safari won’t know the difference, and you probably won’t either. But you will notice a huge performance increase with a cSSD. First quit Safari, then run the following shell commands by launching ‘Terminal‘ in your Applications > Utilities folder:

rm -f ~/Library/Safari/WebpageIcons.db
rm -f ~/Library/Safari/WebpageIcons.db-local
rm -f ~/Library/Caches/com.apple.Safari/Cache.db
rm -f ~/Library/Caches/com.apple.Safari/Cache.db-local
rm -fr ~/Library/Caches/com.apple.Safari/Webpage\ Previews




touch ~/Library/Safari/WebpageIcons.db
touch ~/Library/Safari/WebpageIcons.db-local
touch ~/Library/Caches/com.apple.Safari/Cache.db
touch ~/Library/Caches/com.apple.Safari/Cache.db-local
mkdir ~/Library/Caches/com.apple.Safari/Webpage\ Previews 

The first set of commands deletes all the files, and the second set re-creates them. the .db files are the actual database files in which things ore saved, the -local files are the scratch files that Safari writes things to before writing them to the database files (we have to consider these because otherwise the disk will still be written to for no reason once the caches are disabled), and the folder ‘Webpage Previews’ is deleted, with all the snapshots that Safari takes (you’d think it’s a photographer if you looked in that folder before deleting stuff…).




Next, navigate to your Home folder > Library > Safari, and you’ll see WebpageIcons.db and WebpageIcons.db-local. Right click on each, goto Get Info and check Locked. A little lock should appear below the icons for these files. You may close the Get Info window. Do the same for the files Cache.dbCache.db-local, and the folder Webpage Previews in your Home folder > Library > Caches > com.apple.Safari

Locking files: commanding with an iron fist!




…and there you have it! Safari is fast again! If there’s anything I missed, I’ll eventually stumble upon it and post it here, but so far it seems that I can BREATH! Safari will still need to write to disk to update your history, top sites, bookmarks, and other settings, but it doesn’t do this constantly and so it shouldn’t be a problem. Alternatively, I have found that creating a RAM disk, and placing both folders Caches > com.apple.Safari and Library > Safari in it, then creating symlinks and placing those where the original folders should be. The speed increase is technically faster, but in practice there’s not much difference. Certainly nothing insanely noticeable. The problem with a RAM disk is that it needs to be unmounted eventually, and so if the full folders are there they need to be saved elsewhere first, and if something crashes you could lose your bookmarks. You could also put only the files we played with above in there, but then you take up a lot RAM needlessly, though there are some speed benefits from loading things from cache. Overall, the above is a great way to muck with as little as possible while using Safari (my favourite browser!) with a cSSD.








If that’s the only slowdown you notice with your cSSD, you can stop here. Otherwise, there are additional methods I have found that work to ‘TRIM’ your SSD, without installing Windows and running a TRIM utility for your drive. These solutions cost money, but may be worth it if you feel like your SSD isn’t what it was when you first got it.







A -Tonino Trim – Solutions for TRIMming your SSD in Mac OS X:

It’s a two or three part solution, really. If you really want all your speed back (remember, cSSDs degrade over time) then you’re going to want to find a way to empty your SSD completely. Otherwise, you can trim most of the free space on the SSD with an additional application.

Wipe Drive method for -tonino trim:

Step 1: Clone your SSD. If the SSD is internal to your Mac, get a USB drive (or firewire, if you have any still around) that is at least as big as your SSD and using an application like SuperDuper! (free) clone it to the external drive. If it’s external, find some way of saving all the data that’s on it somewhere else.

Step 2: Boot from a different drive and erase your SSD by deleting and re-creating the partitions. If internal, then you can boot from the clone you made to do this, or you can boot from a Mac OS X Install DVD. Basically, format the SSD now that all your data is safely backed up elsewhere.

Step 3: Buy DiskTester ($40) and run the Recondition SSD command on your drive according to these instructions.

Step 4: Put whatever was on your SSD before you -tonino trimmed it back on. If you had cloned it, re-clone back to the SSD, for instance.

On-the-Fly method for -tonino trim:

Step 1: Buy iDefrag ($30).

Step 2: Either by making a bootable DVD, or by booting into iDefrag’s special mode, or by booting from another install (like the clone you may have made in step 1 of the wipe drive method) run the ‘Compact’ algorithm on the drive. This will compact all the data on the drive together, so that your have one large chuck of free space. This is necessary for DiskTester in step 4 because it requires a large, un-used chuck of free space to recondition your SSD properly. 

Step 4: buy DiskTester ($40) and run the Recondition SSD command on your drive (from Mac OS X) according to these instructions.


…and that’s it. You’ve restored your SSD its original speed. If you followed the On-the-Fly method, then you sped up the unused part of the drive. Otherwise, the whole thing is back to normal. Note that it will degrade over time again, but at least now you can restore it. This was all possible because of the Mac Performance Guide’s article here.

If you have doubts or questions, leave a comment. What I can say is that I do this every few weeks and between a speedier Safari and regular maintenance, my Mac is quite fast. It takes some work, but it’s completely possible to keep the speeds of your SSD stable over time. That said, don’t buy a cheap SSD. Buy one with garbage collection built-in, like the ones from RunCore or OWC which don’t degrade over time. I should also note that while I have followed some guides to tweak my SSD and have found the noatime tweak works, but not as dramatically as the Safari one that I describe here. The reason is that Safari is pretty much always open on my Mac, and even though Chrome is a close second in my opinion (and manages cache better), it’s still slower and I prefer Safari for its lower CPU usage. 

Hopefully this helps someone out there!

iOS 4 vs Android 2.2: No comparison

I’m an Apple fan. I’m not blinded by them, and I hate how they react in so, so many situations. They have a sad “take it or leave it” approach… which I detailed in a forum post on HowardForums.com:

[on the iPhone 4 antenna issue]…

I completely agree that Apple’s response has been arrogant through-and-through. It makes me hate them. They have this stupid ‘take it or leave it’ approach, without realizing that sometimes the reason that people complain isn’t because they hate a product, it’s because they love it so much that they wish a flaw to be fixed. I mean, Steve says that if you don’t like it, return it. He’s right, of course, but what if you don’t like one aspect of it? Return it? If this is his response, then he truly lives in his own world. The whole Apple-attitude drives me crazy at times, and I say this as a fan.



[And to not leave anyone hanging, here's the rest of the post]



BUT: this issue has been blown out of proportion. My old Razr had its antenna in the chin, and covering it up would degrade the signal. Ditto with my old Blackberry, and my old Siemens. In a VERY low signal strength area, even my iPhone 3G doesn’t like to be held, and if I’m streaming a video over wifi in bed while griping the bottom part of the phone (turned on my side…) it tends to slow down the stream. That’s life. I hope they find a permanent fix, but I will still be getting an iPhone 4 because it excels in many, many ways, and I don’t expect the antenna issue will affect me too much. I suppose if you think it will affect you, and you don’t expect to be able to put up with it, you shouldn’t get it.



I’m not defending Apple by any means, but I do think this will still be a great phone. I played with one in the States last week and it has a fantastic feel to it, and the screen has to be seen to be understood. (Like, you know those little dots that indicate what app page you’re on, on the home screen? On the iPhone 4, THEY’RE REAL CIRLES, no matter how close you look. I’ve never seen a real circle on a digital display before in my life at so close a distance…)

So there. If it matters, if you believe me, and if you even care, I hope to convey that I chose Apple in many circumstances because they make the best product for me. Yet, I am still the kind of consumer who can appreciate knowing what processes are running and exactly what my devices are doing at a given time because that’s just who I am. Somehow, Apple removes the pain away from doing that (sometimes frustrating me in the process by hiding things completely) and usually I can appreciate it. It’s sort of a process: giving in. It’s what happened when I switched full-time to Mac OS X six or so years ago. Back then, it was the difference between knowing the software is too stupid to organize your photos, and thus placing them in categorized folders (*cough*WindowsXP*cough*) and letting iPhoto (’05 or something I think) take away all of that pain, and actually giving you a breath of fresh air in the process.


Still, it wasn’t very, shall we say, generous, of Apple to reject Google Voice from the App Store. It sucked when I had to jailbreak iOS to run things in the background. And it was a travesty when apps couldn’t communicate between eachother, working in such a sandbox that they weren’t even allowed to save photos to the camera roll. (And an even larger travesty when there was no app store at all!)

These are the things I tended to hate about Apple. They are stubborn, insolent, and for the most part anti-geek.

I can now say with absolute certainty that I am gratefully for all of these qualities.

In my mind, the truest competitor to iOS (the OS that the iPhone, iPod touch, and iPad all run) in Android, an open-source linux-based mobile OS. It has many advantages over iOS from a manufacturer standpoint: anyone can build a device that runs it, whereas iOS is Apple-only. A new version of Android, 2.2, is waking its way into Android phones and is (supposedly) finally going to give Apple a run for its money. I have tried out a previous version, and abhorred it… but I think that was mainly due to cheap hardware. Because it is open-source, some developers managed to get the latest version of it running on the original iPhone and the iPhone 3G (which I own at the time of this writing). Today, I installed it for the purpose of testing it out.

My iPhone now dual-boots iOS and Android. It is slow in Android. This is due to the fact that much of the hardware drivers are still being worked on. Full disclosure: Android on iPhone is still very much an experiment, and can’t be used daily.

Android 2.2 sucks.

Where iOS pampers users with a good looking, consistent UI, Android hurts my eyes with cartoonish icons. I hate the stupid dedicated buttons to go back, home, and the contextual button. It’s ugly. It lacks proper inertial scrolling. The app store on Android is bland. I know that it is a product created by engineers, as opposed to Apple’s artists, but that really is no excuse for such a terrible user experience. The messaging app is like the iPhone’s, only uglier. This goes for almost everything on the phone. Where in iOS you hold on a picture to get a nice menu that saves it to the camera roll, on Android apps have no consistency and there will sometimes be a direct button that can do that, while other times there will be a menu to bring up the choice. This makes switching between apps confusing and frustrating. In order for things to look better, I would need to download a skin, which various manufacturers (Motorola, HTC, etc) create. While it is true that this is a matter of taste, and that this cannot currently be done on iOS without jailbreaking, I truly would never want to. iOS is gorgeous, and Android simply does not live up to my expectations in the entire UI/usability department. Sure, I’m a quick learner and it doesn’t take a rocket scientist to operate and Android device, but that really isn’t a reason to forgo the beautiful, fun, and easy UI that iOS presents. I must admit that this is my single largest reason for me choosing iOS over Android. And it isn’t superficial: it affects how quickly and seamlessly I can use the OS. It’s largely the same reason that I chose Mac OS X over Windows XP, Vista, and now 7. It’s not simply about beauty, it’s about easiness: less mouse clicks, less finger swipes, less page flipping, whatever! It’s the difference between flying first class and economy. Sure, it works. Sure, you still have a little video player to watch in-flight movies. Yeah, you can still buy an overpriced drink. But the seat in which you consume these things is cramped, public, and subject to constant adjustments thanks to the guy in front of you adjusting and re-adjusting his reclining position. (And did I mention the woman next to you who just won’t shut up!) I hope I don’t have to say which OS is which.

Now then, I know that by this point Android lovers may hate me, and iOS lovers are cheering me on, but there are quite a few things that I wish were available on iOS. In fact, part of why I will stick with iOS is because I trust Apple to someday implement these, and do it at least as well as Android. Likewise, one could, if they didn’t mind the Android UI, trust Google to fix Android’s default UI in time.

The notifications in Android are superb, perfect examples of how notification systems should work. I consider notifications to be a major part of a mobile OS, and iOS does it all wrong. You get a text message, and then a Facebook notification, and then a We Rule notification, and all you know by looking at the lock screen is the We Rule one. That’s got to change. With Android, you know of all three because the status bar slides down from within any app to show them to you in list format, where texts can be responded to instantly, and other actions can be taken to deal with different messages. You can poo-poo messages away if you want, or you can leave them to be acted on later. And a nice little icon alerts you to the fact that, yes, you actually have notifications. It’s much, much better than the way iOS does it. Also, while both OSes can multi-task in similar ways, Android handles background tasks better: downloads are treated like notifications for instance, so when Dropbox is syncing a file, you see the actual progress by swiping down on the status bar.

Another area in which Android excels is the home screen. While (as I said before) I abhor the physical buttons mandatory on Android devices for the standard UI to work properly, I like being able to use the home screen in the same way that I might use a computer desktop: put widgets that give me important information, put shortcuts to things within apps, put controls for music, or wifi, and then have a separate menu (or perhaps just different pages) for my apps. It’s not a perfect implementation though: iOS4′s app folders shine as a prime example of letting me organize myself, and easy badges show me notifications in a different way, but still a way that works. I like the idea of Android’s more functional dock too, one that isn’t constrained to simply app icons.

And that folks, is the word of the day: constraints. It seems to me like Google wanted to make an OS that was free of constraints (but that unfortunately many phone makers are building in… requiring people to root their phones in order to lift many ‘constraints’ eerily similar to how iPhones are jailbroken). They, in my opinion, succeeded. Apple, on the other hand, staggers out its features and gradually un-restricts iOS once it has come up with what it deems the perfect way to do something, eventually building up its arsenal of features.
I prefer, without even the slightest doubt, the Apple approach. The Google approach seems to build things in without regard for user experience, and it lacks a sense of professionalism. I shouldn’t ever have to free my RAM to use my cell phone, but Google runs out of memory and forces me to close apps I have opened. Apple does this for me. But, of course, it doesn’t stop there. I mentioned the only things in Android that I thought were better than in iOS above. In my opinion, iOS has the advantage in every other regard. The advanced media player (iPod app!), the ability to quickly buy whatever multimedia content I want from the huge, all-encompasing iTunes store on the device itself, the thoroughly awesome Mail app, and the simple, perfect, Messages app. Each are but small pieces of a detailed, refined experience, that no one seems to be able to copy as of yet. I hope it is eventually simulated, because it would force Apple to step-up its game, but truly there is nothing like iOS for a touch-based OS.

I’m going to keep Android, and update it when I can. I will look out for cool features, and continue to hope that it evolves into a better experience. I will say this though: if Google is unable to create something as seamless as iOS, and instead leaves that task up to handset makers, then Android has failed in its original mission statement to create a single OS for a plethora of devices, when the same OS could feel so different on different devices. Fragmentation is already a problem, and unless Google offers up something so good that companies won’t have to even try to improve it, we’re simply going to see the same thing as the world of Linux on the desktop. They need to be more solid in their design and approach, perhaps asking companies to install a specific variation of Android to achieve a similar experience across different devices, in the same way that Microsoft sells Windows. The problem is, Google doesn’t sell Android, so they probably can’t solve this problem alone. Apple, on the other hand, never has to worry about something like this. As they expand iOS to other gadgets (like the iPad, running iOS4 in the Fall and 3.2.1 currently) it will be fun to see how versatile it is. And as long as Apple continues to sell millions and millions of iOS devices, they won’t have to worry about a competitor controlling a huge segment of the market, like Microsoft in the computer space.

One thing is certain: this is where it’s at. This battle, this space, is burgeoning. What we are looking at is not the phone of tomorrow. We are looking at the changing face of computing as we know it, and that alone makes testing out different products and tracking each’s evolution fascinating. They might all fall to a single solution, or all could be a part of tomorrow. This is the growth of software that will eventually become ubiquitous enough to run the world. These operating systems will give birth to a shift in ideology. 20 years from know, when we think computer, we won’t think of the beige boxes of 10 years ago, or the laptops of today, we will think of products that are easy to use with our fingers.

It’s all very exhilarating!

Fix for non-hacktivated iPhone push service

[update, May 2nd 2010] Please see below for my *new* results. I have fixed the issue, at least for me.

      Here’s an issue that has plagued me for a very long time, and I think I’ve solved it. Time will tell, of course, and though I have a few ideas for what caused the problem I can’t say for sure what it was. 

      Here’s the backstory: I have three email accounts: MobileMe, MS Exchange, and an IMAP that does not support push. The MobileMe account is absolutely crucial to my everyday life: contacts, schedule, email, and I like having “Find My iPhone”. The other accounts are simply convenient.       I like it when all of my info is pushed to the phone, it adds a dimension to my whole workflow. I also like push notifications, chiefly for Sportacular and Facebook. Neither push nor email have worked properly for a very, very long time. Too long, in fact, and I absolutely had to fix it. Email wouldn’t even fetch, and push notifications would usually only come if my phone was in use/not locked, and every now and again they would come through normally. From time to time I would get an email or two around the times that I got a notification. It just wasn’t cutting it.
      There was a time when they did work, though, and what’s more is that it worked on (and was broken on) a different phone: I had brought my original 3G in to Apple because of a GPS problem and got a refurbished replacement. I had jailbroken a few times, but push used to work on my iPod touch which was also jailbroken and it followed me (push, not the touch!) throughout firmware upgrades from 1 to 2-point-something. Trust me, the hardware isn’t the problem. I decided the other day that I had had enough and learnt as much as I could about the problem and through trial and error have managed to get it working. I should mention that I have never hacktivated/unlocked my phone(s) to run on a different carrier. I’m with Fido here in Canada and have no reason to switch carrier. And many months ago, I un-jailbroke my phone because I found that it was slower jailbroken.
      So there you have it: I have a phone that has never been seriously hacked, service that I pay for in every sense (MobileMe and my cell service!) but no push of any kind.

Here’s what I’ve tried, and (so far) succeeded. I am currently in testing stages for at least the next few days. I did this on an iPhone 3G with firmware 3.1.2, freshly downloaded by itunes. Also, just some observations: the same problems are reproducible whether new MobileMe accounts (I opened one to test) or Exchange accounts are added, and the old ones deleted, etc. Push apps were installed, uninstalled to no avail, and the phone was restored, re-configured with all my accounts from scratch also without solution… so it isn’t the remote servers that are misconfigured. A friend with a 3GS also confirmed that her Exchange push (which is on the same servers as my own account) works just fine. I attempted to restore from restore mode, re-jailbroke and deleted things found in /var/root/something.

Steps:

1- Put into DFU mode, NOT RESTORE MODE, and restore from scratch
2- When iPhone is restarting, it needs to be connected to itunes for activation. Don’t connect it right away.
3- Create a new iTunes library and sign out of any itunes accounts in the store section.
4- Sign out of any iTunes accounts in the store section.
5- Connect iphone only to activate (don’t chose to set-up as new or restore, don’t even touch that screen, just disconnect when the phone is usable)
Now it’s time to test the push notification service and push email.
6- Do nothing but configure MobileMe on iPhone (try your own stuff if you don’t have MobileMe, I suppose)
7- Lock the phone for half an hour and don’t touch it, then send yourself an email from your computer and see if the phone reacts. If it does, great! Now you know that the next thing you do that breaks push is your problem!
8- Revert to usual iTunes library, connect phone, set as new, sync nothing (uncheck sync applications in the set-up wizard). It would be a good idea to test it again and make a back up that you know works, so that you can revert to it in case something breaks.
9- Add everything to your phone gradually. One app at a time, one setting at a time, and between everything test by locking the device for ~15 minutes and then sending yourself an email. I bought the awesome app PushMail so that when I would email myself, at once I could test notifications AND email reception, and it’s great that now I get to actually see my emails on my lock screen when my phone is in silent mode, as opposed to unlocking it first to check my mail.

The things that, for me, broke push are what I’m still trying to figure out. I had tried restoring my phone, and push worked for a while (half an hour?), then stopped. Possible causes are that I had installed all three of my email accounts… or perhaps that I had simply restored and not restored through DFU mode. Both sound equally improbable. Then, the other day, push had also worked until I configured all three. The odd thing about that is my friend’s push worked just fine with the same Exchange account. Right now I’m at the stage of reinstalling all of my apps. It sucks that I lost all my preferences, but the payoff, having fully working push notifications and push mail, is far greater. I have taken a look at Pushfix 2.0, which is meant for hacktivated/unlocked phones, but I have read multiple reports and even contacted someone who never unlocked their iPhone and was able to fix push with it. When it comes right down to it, it’s not just a push notification service problem, for me anyway, since push notification and push email through IMAP Idle are not the same thing. However, I have found that when one doesn’t work, neither does the other. This would indicate that, at least, there is a common preference file or something. It seems that I truly am in the minority, though.

I will post results here as they happen, if I discover precisely what the problem is. I think, however, that it leans towards the mail accounts and not the push notification service. This is because I read far more reports online about MobileMe push not working than push notification. Furthermore, when mail push does not work I would still get some push notifications, albeit delayed and sometimes only when the phone was actively in use. If anyone out there stumbles on this post and has any info to offer, please, enlighten me!

[update, May 2nd 2010]
I have fixed the problem for me, but I can’t say for sure what caused it. I know only what it is related to, but not more than that.

After I set everything up as described above, push notifications and push mail were working great for 3 days and I was the happiest person on earth. The only email account set up was my Apple MobileMe account that syncs everything: calendar, contacts, bookmarks, and email, plus it lets me do a few other things. (paid service FYI)

I backed up my phone and decided: here we go. I set up my school Exchange account (McGill). Bingo! All forms of push stopped working yet again. I would only get notifications when the phone was actively in use, so my much-studied hypothesis is the following: there is a push certificate for the Exchange account that when added fails to allow push to work properly. I also know that the actual McGill Exchange implementation in general is just fine, since my friend’s iPhone 3GS has her McGill Exchange account set up and her push notifications as well as push email are working just fine. My laptop and desktop, however, do not get push McGill Exchange emails, only MobileMe emails! Thus, push doesn’t work properly for (my) Exchange account! I have since compared the details of both my and mf friend’s account and everything was the same, except the server our accounts are hosted on. I cannot be certain that this is the problem.

I also cannot be certain why push works when the phone is awake and in use, but not with it’s screen locked. A theory is that the push certificate constantly calls home (the McGill servers) to try and get the go-ahead to push email but is failing. To conserve battery, (and I know this one from my ipod touch days…) the phone abandons this check when the phone is locked (passcode or not) and this somehow brings down all push services too. But when the phone’s in use, calling home is one of the many things the phone is doing, in addition no working normally for my other accounts. Yes, I have a data plan. No, I’m not sure whether or not this theory is even remotely possible, and the iPhone OS is constantly changing anyway, so take that with a very large grain of salt.

And, for my final act, I restored my backup without the Exchange account set up and all is well again. I have been using my phone without this particular Exchange account for many months. In the interim, I added a Gmail Exchange account and it pushes just fine, just like the MobileMe account. I added my McGill email as an IMAP account, as most Exchange servers also implement IMAP. The iPhone currently only seems to support some IMAP push implementations, like Yahoo’s, so for Push email I use a great, highly recommended app called PushMail, which gives me a nice dialog box with the content of the message, subject, and sender. I also deleted my McGill Exchange account on my computers, and added the email as Exchange IMAP instead, and now it pushes to my computers just fine.

As I said, I can’t be sure what the problem is but there’s either a bug in Apple’s Exchange Server 2008 implementation, or a bug in McGill’s standard config for new Exchange devices. Most likely, though, the reason for all of this is not Apple, not Microsoft, and not me; I’m quite sure this is a problem isolated to my (and possibly several other) school’s Exchange account, seeing as other Exchange accounts work beautifully, both other accounts outside and inside of McGill.

Some day, I may try to re-add the account but in the meantime, I have the email I want and the push I craved.