Monday, September 10, 2007

Communication Arts: Interactive Annual 13 Winners

Wow! That's my reaction after seeing this year's Interactive Annual winners, which have two mobile-related/inspired sites:
  • Motofone: "More documentary than advertisement, Motofone tells the story of a team of designers who traveled to three continents to develop a phone suited to the harsh conditions of emerging markets. Video, audio and animation come to life through an interface inspired by dust storms."
  • Urban Silo: "With a mobile-inspired interface, this portfolio site for writer and creative director Jim Elliot serves as a storage facility for the past and an incubator for future ideas. Along with print, Web, TV and radio work, it also features an archive of personal projects."

Sunday, August 26, 2007

Geotagging Photos

This is my N-th try at automating the geotagging my photos using GPS. I've tried a variety of utilities and web-based tools and found them having too many steps/clicks and don't deal with timestamps very well.

In order to batch geotag photos using GPS data, the timestamps on the camera must be matched to the GPS. Timezone is an issue here because cameras don't generally record timezones. A more minor issue is clock drift, which can often be ignored unless you're traveling at very high speed.

On the Mac OS X, GPS Photo Linker is a well written tool that supports timezone adjustment, batch stamping, and manual stamping. It looks up city/state/country information and adds those to EXIF along with lat/lon data. It also links to Google Maps so you can view the location for each of photos.

Sunday, August 19, 2007

Mobile apps for dating

Match.com updated the mobile web version of their site. When will we see mobile versions of the up and coming Engage and Journey of Yuan?

Thursday, August 9, 2007

Click Analysis

Not quite clickstream analysis showing you the click paths, but a few company offers heatmaps: ClickeDensity, ClickTale, and Crazy Egg.

Wednesday, August 1, 2007

Tuesday, July 31, 2007

MMS Photo Upload

MMS photo upload is really a multi-part email with photo attachment sent from a phone. To receive and process MMS photo on a server, one can either run procmail locally or use a POP/IMAP fetcher.

"Stress-free Incoming E-Mail Processing with Rails" describes how to process incoming email with Rails. MMS2R can then be used to process MMS, stripping out ads and other junk that a network provider (e.g. Sprint) may insert into the message. Sprint even goes a step further and stores the photo on their servers instead of in the message itself.

"Experimental Mobile Gateway" talks about SMS processing in Python and MMS processing to post blogs to LiveJournal.

Monday, July 30, 2007

Caltrain Schedule for Mobile Phones

Go mobile and save some trees and polar bears at the same time! Now you can access Caltrain schedule on your web-enabled cell phones at http://m.iCaltrain.com. It's a simpler version of the iPhone site that should render well on most modern mobile browsers. I've tested it on Palm, Windows Mobile, Nokia, and Samsung phones.

Tuesday, July 24, 2007

iCaltrain: Caltrain schedule for iPhone

I released a version of the Caltrain schedule for the iPhone at http://iCaltrain.com using a mix of Python, PHP, and the iUI toolkit.

Friday, July 13, 2007

3 Steps to Activate the iPhone without AT&T Service

This is a step-by-step guide to activate and unlock your iPhone without AT&T service. It will let you use Safari and other iPhone apps (except YouTube) over WiFi.

On July 3rd, DVD Jon published techniques to unlock the iPhone and activate it without AT&T service. It is not SIM unlock so it won't let you use your iPhone on other GSM networks (e.g. T-mobile). On July 10th, PQ DVD streamlined the techniques into a single, one-click Windows app.

Step 1: Install iTunes 7.3.0.54. No other versions of iTunes are currently supported. Apple released v7.3.1.3 on July 11th, so you'll need to find an archived version. At the time of writing, you can find v7.3.0.54 here.

Optional step: Connect your iPhone over USB and verify that it's detected by iTunes, then quit iTunes.

Step 2: Run iPhone Unlock Toolkit, and click the "Unlock iPhone" button. It streamlines the process of patching iTunes, adding an entry for albert.apple.com to your etc/hosts file, and running a local server to respond to the activation request.

Step 3: Disconnect and re-connect your iPhone. iTunes will detect the iPhone, start automatically, and ask you to activate your iPhone. Click "Cancel" and you're done!

Thursday, June 28, 2007

Flash Maps

A few ActionScript-based client-side maps: FlashDynamics and ModestMaps.

Wednesday, June 27, 2007

Best Practices for Performance and Memory for Flash Lite

Adobe Flash Lite online live seminar: Best Practices for Performance and Memory for Flash Lite and Developer Center article.

Some takeaways:
  1. Help the garbage collector by explicitly deleting objects (e.g. XML) and setting local objects to null. It's unclear how setting local objects helps because the reference count should go to zero once it's out of scope.
  2. fscommand2("GetFreePlayerMemory") returns the size of the largest contiguous block of memory that can be allocated by the player, not total free memory.

Monday, June 18, 2007

iTunes/iPhone's Cover Flow in Flash

http://www.n99creations.com/vieweg.php?id=5

Example that use Flash 8 features: AS2, more, and more.

Tuesday, June 5, 2007

Flash Lite Memory Size

Total available memory allocated by Flash Lite player, using
fscommand2("GetTotalPlayerMemory");
  1. FL 2.1 (standalone), Windows Mobile 5: 4096KB
  2. FL 2.0 (built-in), Nokia S60 FP3: 2297KB
  3. FL 2.1 (standalone), Nokia S60 FP2: 2296K

Friday, June 1, 2007

ROM Images for HTC Tornado

The HTC Tornado has been branded as iMate SP5, Qtek 8310, Dopod 577W, etc. This page shows the various versions of ROM with download links from different manufactures. For example, you can flash a iMate SP5, which is English-only (2.5.331.2), to Chinese/English (and also get AKU 2.0) by flashing it to the latest Taiwan (2.5.37.0)/Singapore (2.5.39.2) Dopod ROMs.

SPV-developers.com has some useful utilities to SIM unlock and application unlock the phone after a ROM upgrade.

Thursday, May 31, 2007

Cookie Support in Flash Lite Players

Cookie support in standalone Flash Lite players varies by platform. For Flash Lite content accessed through a web browser, cookie support will be provided by the web browser.

Here is a partial list of the platforms I've tested. I'll update them based on feedback and as I get access to more platforms.

Cookie support:
  • FL 2.1 player on Windows Mobile

No cookie support:
  • FL 2.0 player on Nokia S60 FP3 (N95)
  • FL emulator (Adobe Device Central)

Wednesday, May 30, 2007

Flash Lite Player Error Codes

FlashDevices.net posted error codes for Flash Lite 1.1 and 2.

/// Flash Lite 2
1: Out of memory
2: Stack limit reached
3: Corrupt SWF data
4: ActionScript stuck
5: (there is no error code)
6: Bad image data
7: Bad sound data
8: Root movie unloaded
9: (there is no error code)
10: URL too long
11: Insufficient memory to decode image
12: Corrupt SVG data
13: Insufficient memory to load URL

Wednesday, May 9, 2007

Google Calendar Sync for Windows Mobile

Found GMobileSync to directly synchronize Google calendar with WM5 without a PC. It's open-source, too!

The first synchronization worked without a glitch after entering my login. There are a few limitations in the current, v1.2, release. For example, it only synchronizes the main calendar, and deletion is not fully supported. You'll need to delete on both ends before the next sync. Also, the timezone setting is not as intuitive as it could be. For example, you need to select "-7" in the Settings menu for the Pacific timezone.

Overall, it works and is open source. I look forward to the future enhancements.

ActionScript Editors

The ActionScript editor hasn't improved much in Flash CS3 compared to Flash Professional 8. For example, there is no auto-completion and refactoring support.

The two most popular ActionScript editors seems to be SEPY and FlashDevelop. Both are open-source and available for Windows, and SEPY recently released Mac builds as well.

Tuesday, May 1, 2007

Platform Detection in J2ME

J2ME provides system properties which can be used to detect the platform you're running on. This is useful for writing platform-specific code such as serial communication.
System.getProperty("microedition.platform");
On a Windows Mobile 5 smartphone, the IBM J9 VM returns "Windows CE 5.1,Smartphone" followed by the phone model. However, the built-in JVM returns "intent JTE" instead. On a Nokia N90, it returns "NokiaN90-1/5.0607.7.3".

Serial Port Communication in J2ME

Serial port communication was introduced in MIDP 2.0. For example, on a Windows Mobile device, the COM port (e.g. GPS) can be opened as "comm:COM7;baudrate=9600".

Monday, April 30, 2007

J2ME server socket and camera API

MIDP 2.0 introduces support for running a local server using ServerSocketConnection, as well as support for camera capture (photo and video).

Friday, April 27, 2007

S60 Python (pys60) vs Python

Although pys60 provides a nice Python environment for phones, there are some small discrepancies to watch out for.

1) Different packages: e32 and graphics are available on the phone only. So you'll have to test on the device. You can check which OS the script is running on:

import os
if os.name == 'posix': # OS X/Linux
path += "/"
elif os.name == 'e32': # Symbian
path += "\\"

2) thread.start_new_thread() seems to freeze the v1.2 and v1.3.21 interpreter on the N95. The sample RssReader in the docs does use threading, so I'm not sure why it doesn't work for me.

3) sleep(): "In python for series 60, the use of e32.ao_sleep is encourage over time.sleep. AO stands for 'Active Object' approach to cooperative multi-tasking. When an object go to 'ao_sleep' other active objects can run."
 import e32
e32.ao_sleep(5) # sleep for 5 seconds


Thursday, April 26, 2007

Remote Display for Nokia S60 and Windows Mobile

For S60/S80/UIQ devices, SysOpenDigia's ImageExpo enables you to have a remote display on Windows or Mac. The pricing model is one licence per device, currently at 82 Euro/license. The installation instruction is a little sparse. For example, it doesn't explain that you need to install the phone app and then initiate the connection from the phone.

Other connectivity option are available on specific phone models. For example, the E-series and the Communicator 9x00 series support Screen Export, which supposedly allow you to send the screen directly over Bluetooth to a "compatible" projector. The N95 and N93 have TV-out.

For Windows Mobile, you can get the tools as part of the free, Windows-only SDK.

Wednesday, April 25, 2007

GSM + Python on S60

Python on S60 provides an easy API to access the attached GSM cell:
>>> import location
>>> loc = location.gsm_location()
>>> print loc
(310, 170, 270, 21001)

GPS + Python on S60

Lots of code examples by Nick Burch.

Useful Nokia Shortcuts

*#06# - IMEI Number

*#100# > Options > Send service command. (gives own number on some Networks)

*#92702689# - Life timer ?

*#2820# - Bluetooth Device Address

*#0000# - Firmware Revision (mine is v 5.0607.7.3 16/02/06 RM-42)

*#7780# - Soft Reset. (Restores ini files from rom but preserves user data (photos, 3rd party apps etc)

*#7370# - Hard Reset. (Reformats the C: drive. All applications and files stored on this drive will be lost and clean default files will be rewritten.)

Tuesday, April 24, 2007

Loading Images Programmatically in Flash

This tutorial explains how to load images using the MovieClipLoader and how to grow its size when mouseover.

Watching for New Files in Python

Here is a comparison of three techniques in Python to watch for new files on Windows. The polling approach is portable across platforms.

Monday, April 23, 2007

Launching the Camera App from Flash Lite

The fscommand can be used to launch applications. For example, to launch the camera app on Windows Mobile 5 phones:

fscommand("Launch", "\\Windows\\Camera.exe");

To find out the path to the camera app on your Nokia phone, try the 2 methods mentioned here.

Thursday, April 12, 2007

Nokia Camera Photo Location

Nokia N90 stores photos taken by the built-in camera in "c:\Nokia\Images" using the phone's built-in memory and "e:\Images" on the memory card.

Tuesday, April 10, 2007

Launching Flash Lite v2.x Content on Nokia phones

There is a serious, documented issue with launching Flash Lite v2.x files (SWF) on Nokia phones. In short, v2.x content can only be launched by opening the SWF file within the v2.x players. If you just open the SWF file from the file browser, it will be played back by either the player in the ROM (typically v1.x) or you will get a "unknown file format" error. For more details, see the discussion at the Adobe forum and Nokia blog. One workaround is using the SWF2Go Professional tool (not free) to build an SIS installer.

On Windows Mobile 5, opening SWF files launches Flash Lite (v2.1) player as expected.

Flash Lite Examples

View hundreds of Flash Lite apps on Adobe Flash Lite Exchange.

Nokia Screen Resolution

Useful explanation of the various screen resolution of the S60 series and S40 series phones.

Monday, April 9, 2007

Remote Nokia Device Testing

Want to test your app on as many phone models as possible without spending lots of $$$? Nokia just opened up their Remote Device Access service for free to the registered Nokia developers. There are a few limitations: for example, no SIM cards are provided so no messaging (SMS/MMS) is supported and only devices that are WiFi capable are networked.

Monday, April 2, 2007

Flash Lite 3

The mobile flash player, Flash Lite 3, is "expected to be available in the first half of 2007". The major feature it introduces is support for the Flash Player video format, which ensures video format portability across phones. Compared to Flash Lite 1.x and 2.x, the formats they currently support are only those natively supported by the phones.

I hope FL3 will also introduce access to some fundamental functionalities to the underlying mobile phones, such as API for the camera, bluetooth, SMS, etc., eliminating the need to write platform specific workarounds. This will make FL3 a much more exciting platform beyond games and multimedia players.

Friday, March 30, 2007

Providing Mobile Views of Web Sites

You're building a site in Ruby / Django. How do you provide a mobile version of your site? For Ruby, check out HowToProvideAlternateViewsForMobileDevices. For Django, see the entry on Acknowledging the Mobile Web with Django.