Tuesday, December 2, 2008

SIM Unlock iPhone 1G/2G with 2.1/2.2 firmware for Free using Quickpwn

I just successfully unlocked and jailbroken an original iPhone (2G or 1G as some call it, with the aluminum back) after having upgraded it to 2.2 firmware.

Using Quickpwn 2.2 for Windows to jailbreak and unlock the iPhone. The Mac OS X version doesn't seem to have the unlock option, and Quickpwn doesn't support running inside of VMWare/Parallels. Follow the on-screen instructions and make sure you select at least the Cydia and Unlock options. For more guidance, see these instructions.

After going into DFU mode, rebooting, and updating the bootloader, then another reboot. If you're lucky, you're done. Or you may encounter the error message "Different SIM Detected", which means the SIM unlock isn't completed yet and you need to do the following:
  1. Open Cydia and scroll down to OpenSSH and install it.
  2. Follow these instructions to delete the Lockdown folder on the iPhone, recreate the folder (mkdir lockdown), and scp the 3 files into the new Lockdown folder.
  3. Reboot

Sunday, September 28, 2008

Database / Sqlite on iPhone

Here's a tutorial discussing how to create and read a simple sqlite database on iPhone.

There are several ORM efforts to make it easier to easier to access the db without writing SQL. For example: Persistent Object

Friday, September 12, 2008

Beta Testing on the iPhone

The current supported method for beta testing iPhone apps is through Ad Hoc distribution. You need the Device ID of each iPhone that you want to test your app on, then sign the apps.

I had trouble getting the ad hoc distribution profile to show up under "Code Signing Provisioning Profile" in Xcode, until I tried the following:
"Apple's instructions have two steps reversed. The step that says "In the project window, select the Distribution Active Configuration from the overview popup and set the Active SDK to Device..." must be done FIRST, before you can choose your provisioning profile." (original thread)

Friday, August 22, 2008

Fixing iPhone Xcode (0xE8000001) Error

It took me several hours to figure out how to sign an app and deploy it to my iPhone. Apple's developer documentation is still stuck in the 2.0 beta firmware days (as of today).

What solved the problem for my "verifying application" error in Xcode was:
  • In Xcodes project organizer expand the Resources section.
  • Find the Info.plist file and double-click to open it.
  • Enter your App ID into the Bundle identifier field. Do NOT include the 10-character random string Apple generated for you.

Thursday, August 21, 2008

Travel time map

Travel time visualization from the Flickr office in San Francisco.
http://flipzagging.livejournal.com/465859.html

Tuesday, May 6, 2008

Django cron jobs

A script to set up Python environment properly to get to Django view/model/templates for cron jobs.

Monday, April 7, 2008

Unlocking iPhone and Reconfiguring Home Screen

If you need to unlock your iPhone, ZiPhone is a one-click solution that works on both Macs and Windows PCs. To modify files, including system files, on the iPhone, iFuntastic, works well. 

Wednesday, March 12, 2008

Updating X500 to WM6 in any Language

E-ten X500 is a light-weight GPS-enabled Pocket PC that comes with Windows Mobile 5 installed. They provide updates to WM6 but the download page limits you to downloading the language version that comes with your device.

Here are the direct links to the World-wide English WM6 and Traditional Chinese WM6 ROMs. Or you can try these custom ROMs.

To cross-flash your device to another language, say English (WWE) to Chinese (CHT), you'll need to flash the ROM using the microSD card technique instead of using the PC-based USB approach. You'll also need to patch the ROM (temp.bin) file at offset 0x38 with the bytes: 0A 3D 72 F4 to disable the device check. You may be able to use the technique in this thread if you're not comfortable with patching the binary file.

Monday, March 3, 2008

Ajax wait icon

http://ajaxload.info/ generates custom wait icons in a variety of form, color, and shapes.

Designing Websites for the Wii Browser

I'm surprised at how little information there is on designing web pages for the Wii browser. Even the article at dev.opera.com ("Making Wii-friendly pages") has been denying access to Opera developers for months (since August, 2007). Postings on the forum also suggest that submitted articles take months to get approved and posted. Strange that Opera doesn't do a better job supporting a great marketing opportunity.

Fortunately, the Internet Archive comes to the rescue.

More related articles:

Wednesday, February 27, 2008

Javascript photo effects

Reflection, round corners, and instant photo. Wow!

Django and Ajax

Excellent tutorial on Scriptaculous and Django to get your started on Django + Ajax.

Managing multiple Gmail accounts

Discovered MailPlane (Mac OS X only) today that lets you easily switch between multiple Gmail accounts and see the number of new emails at a glance. It works by overlaying desktop functionality on top of the embedded WebKit/Safari core. For example, you can drag and drop photos, auto resize photo prior to sending, and copy/paste images directly as attachments.

It's not free or open source but overall feels like a high quality app. The time saved in attaching images/files alone is worth the (current price) of $25, and it's a must have for people who use multiple gmail accounts.

Thursday, February 7, 2008

Subversion / Trac / Project Management Hosting Services

Code Spaces, Assembla, and Springloops appear to be the more mature Web 2.0 ones.

Overall: Assembla has the easiest to use UI and integrated project management functionality.
UI interaction: Assembla.
Visual design: Springloops.
Project management: Assembla feels the most integrated. Springloops relies on users' own BaseCamp account.
Web 2.0 feel: Springloops. Code Spaces feels more like Yahoo Mail's definition of web 2.0 interaction than 37 Signals sites.

Assembla also aims to create a market place that easily connect coders to project needs.

More are listed at
http://snook.ca/archives/servers/hosted_subversion/

Wednesday, February 6, 2008

Geocoding IP addresses with GeoIP City (GeoLite)

First install both the GeoIP C Library and the Python bindings.

Download the GeoLite/GeoIP City binary data file, and install the .dat file::
$ mv GeoLiteCity.dat /usr/local/share/GeoIP/GeoIPCity.dat
In a Python shell:
>>> import GeoIP
>>> geoip_lib = '/usr/local/share/GeoIP/GeoIPCity.dat'
>>> gi = GeoIP.open(geoip_lib, GeoIP.GEOIP_MEMORY_CACHE)

>>> print gi.record_by_name("google.com")
{'city': 'Mountain View', 'region': 'CA', 'area_code': 650, 'longitude': -122.05740356445312, 'country_code3': 'USA', 'latitude': 37.419200897216797, 'postal_code': '94043', 'dma_code': 807, 'country_code': 'US', 'country_name': 'United States'}
>>> print gi.record_by_addr("64.233.167.99")
{'city': 'Mountain View', 'region': 'CA', 'area_code': 650, 'longitude': -122.05740356445312, 'country_code3': 'USA', 'latitude': 37.419200897216797, 'postal_code': '94043', 'dma_code': 807, 'country_code': 'US', 'country_name': 'United States'}
Some quick tests showed that GeoLite City correctly geocoded 4 out of 6 (somewhat random) samples I threw at it, compared to the GeoIP web service, which presumably uses their full GeoIP database. For example, it wasn't able to geocode Microsoft.com (207.46.197.32) and matched my work IP address to LA when it should be in the Bay Area.