Let us NEVER forget!

N800 icon Python applications for the Nokia N800

These apps require Python 2.5 to be installed on your N800. 2.4 won't do.

Still recovering after my failed upgrade to Diablo

These applications are written for OS2007/Bora. I keep a pending bug/enhancement list in bug_list.txt and the site update list is available as well. I do frequent releases, so check often for updates in Application Manager.


Sources
setup.py
spend_it
spend_it.png
spend_it.desktop
spend_it.service

Spend It! icon Spend Itclick to install

A financial account management system. It includes "quick buttons" to enter frequent transactions with just a couple of taps. It also handles transfers between accounts.

Change log
screen shots
readme.txt


Sources
setup.py
to_do
to_do.png
to_do.desktop
to_do.service
To Do iconclick to install

A replacement for the PalmOS "To-Do" application.

Change log
screen shots
readme.txt


Sources
setup.py
info_on_tap
info_on_tap.png
info_on_tap.desktop
info_on_tap.service
 
Report Module Example
rpt_completions.py - Simple module code
rpt_bikelog.py - Complex module code
bike_log.tbl - Main "Bike Log" data table
intervals.tbl - "Bike Intervals" lookup table
Example report output
Info On Tap iconclick to install

A lightweight database application and replacement for the Palm built-in "memo" application. Note that the "date format" setting for tables uses the "strftime" syntax from the Python time module.

To try out the simple report module example, click to install, restart Info On Tap, and there should be a new "Completions Report" entry in the "Reports" submenu for any table.

To try out the complex example, place the module and two tables in the /home/user/MyDocs/.info_on_tap directory, restart Info On Tap, select the "Bike Log" table, and there should be two new entries in the "Reports" submenu. The example module is fully commented and demonstrates how to:

Change log
screen shots
readme.txt


Sources
setup.py
net_safe
net_safe.png
net_safe.desktop
net_safe.service

Net-Safe icon Net-Safeclick to install

This is a utility to backup the MyDocs directory to a UNIX machine. All you need on the host is a login account. It uses the tested and reliable rsync protocol over ssh instead of something home-grown. This is a replacement for Nokia-Sync, which is now obsolete and I won't be doing any more development on it.

The host should be running sshd, and have the standard UNIX commands ls, echo, rm, ln, mkdirhier, readlink, and rsync available. It does NOT need Python installed.

It depends on the OpenSSH client and rsync packages, which can be found in the Nokia Extras repository.

Change log


Sources
setup.py
iCalendar setup.py
python-dateutil setup.py
patched iCalendar prop.py
calend
calend.png
calend_alarm.png
calend.desktop
calend.service

Calendar icon Calendclick to install

This is my replacement for the Palm OS calendar/appointment/agenda application. Not only can you define alarms, you can also create to-dos from an event. For instance, you could create a "Pay Rent" to-do that appears automatically on the last day of the month. It does not require the to-do application to be installed.

In addition to the files below, you need install dateutil to deal with repeating date rules, and iCalendar to read/write iCal files and do general event handling. I've created packages and put them in my repository so they will be installed automatically. Version 1.2 of the iCalendar package needs this version of prop.py in /usr/lib/python2.5/site-packages/icalendar to fix some issues with alarm intervals and pickling calendar objects.

Change log
screen shots
readme.txt


Sources
setup.py
pyalarmd.py
pyalarmd.png

pyAlarmd icon pyAlarmdclick to install

This is a module which handles the alarmd interface until there's an official module. It's used by calend and will be installed automatically if needed. I have an install button for folks that want to use it in their apps.

Please note that alarmd has a bug where it goes comatose after about 18-36 hours if you don't do anything alarm-related. Doing an alarmd.get_alarm() will restart it, and any pending alarms will trigger immediately. This also affects the built-in clock application, if you're wondering why alarms sometimes don't go off. You'll notice that calend does this call periodically.

Also notice that if you use the "exec_name" parameter to run a script, alarmd calls g_shell_parse_argv() and NOT system() as you would expect. This function is retarded and doesn't support many of the shell-style expansions that system() would perform, such as searching $PATH, variable expansion, globs, operators, filename expansion, redirection etc. Everything gets passed literally.

Change log


Sources
setup.py
nokia_utilities.py
nokia_utilities.png

Nokia Utilities icon Nokia Utilities

The nokia_utilities.py module is about 250 lines of code common to all the scripts. It will be installed automatically if needed.

Change log


Sources
setup.py
postinst
usbnet.py
usbnet.png
usbnet.desktop

USB-Net icon USB-Netclick to install

This is a quick script to give you a convenient menu item that toggles USB networking on and off. This was interesting to write in that it has no GUI other than a system info message, and it must run as root to load the kernel module and bring the interface up and down. Notice that there is no usbnet.service file.

Change log


Sources
setup.py
start_all.py
start_all.png
start_all.desktop

Start-All icon Start-Allclick to install

This is a quick script to start up all my normal applications. It simply does an "application_top" of Calend, To-Do, Spend-It, and Info-On-Tap.

Change log


Sources
setup.py
led_flash.py
led_flash.png

LED Flash icon LED flash libraryclick to install

This is a very small library that performs the necessary DBUS calls to cause the LED to flash in predefined patterns. See /etc/mce/mce.ini for legal pattern names. Legal patterns for OS2007 are:

Note that you can have multiple patterns active, and the priority determines which of the currently active patterns will be used. You can edit mce.ini to create your own custom patterns (and turn off annoying patterns) but if this file is corrupt, it can keep your device from booting, so be very careful. You also need to enable the LED in the "Display" item in Control Panel.

Run "/etc/init.d/mce restart" to reload mce.ini after you edit it.

Change log


Sources
setup.py
bt_on.py
bt_on.png

Bluetooth-On icon Bluetooth-Onclick to install

This is just a small app to easily turn on Bluetooth. That's all it does. If Bluetooth is already on, it just exits. If I was Nokia, I would have put a menu item under the Network globe to turn on Bluetooth, instead of burying it 4 levels deep in Control Panel. I discovered the issue when I bought an Apple Wireless Keyboard. By the way, there's an excellent page on pairing and configuring this keyboard by Sean Luke.

Change log


Sources
setup.py
ding.py
ding.png
timer_alert.wav

Ding! icon Ding!click to install

This was orignally a repackaging of Christoph Würstle's "eggtimer" since it was no longer available for OS2007, but then I wanted it to run on the desktop as well. I totally rewrote it and now it's less than half the line count.

Change log


Sources
update_nokia

update_nokia

This is a very small rsync script to do the opposite of Net-Safe, i.e. it copies modified data from the desktop to the N800. Set $MYDOCSDIR to where you have Net-Safe place your backups (e.g. /root/.N800_backups/backup) and you can edit your latest backup set using the same scripts on the desktop. You can then use the update_nokia script to quickly transfer just the modified data back to the N800. Note that it stops all the utilties on the N800 to avoid data loss.

You need to set the password for the "user" user, so that you can log into that account via ssh. The update_nokia script will automatically generate and transfer your SSH public key, if necessary.

Change log


Sources
bdist_debian.py

bdist_debian

This is an extension to Python Distutils which creates .deb packages without the hassle of the standard Debian utilities or using Scratchbox. It supports the Nokia "Maemo" extensions and can create the Base64-encoded Application Manager icon field automatically, if you specify an icon file.

This is to enable distribution of your own apps. This module should be installed on your development machine in /usr/lib/site-packages. See my hints & tips page for details on how to use it. Surprisingly, creating and updating the packages was harder than learning to code pyGTK and Hildon.

Change log


GIMP template for wallpapers

For folks wishing to make their own wallpapers, I've created background.xcf, which is a GIMP file you can use as a guide. It's the same 800x480 pixels as the N800 screen, and has the areas for the side nav bar and top title bar masked off so you can better judge where to place your image.

Open this in GIMP, then use "File->Open as Layer" to open your image. Move this new layer below the "Areas" layer, and slide it with the "Move" tool so it's properly centered. You can use "Layer->Scale Layer" and "Undo" to resize it as necessary. Once you're satisfied with the layout, hide the "Areas" layer, flatten the image, then save it as a .jpg file.


OS2008/Chinook & Diablo

I tried Diablo and it was a disaster. There were some real show-stopper bugs so I downgraded back to OS2007 after a couple of days. It was a shame because I wanted to use Python-Launcher and the new ability to write desktop applets in Python.


Replacing my Palm devices

I have gone through quite a few Palm PDAs, including a Palm III, a Palm V, 2 Palm Vx units, a Palm m505, a Zire 22, and 4 Tungsten T|X units. I had 4 T|Xs because the screen digitizer kept failing, so Palm kept having to replace it under warranty. The glue holding the V/Vx cases kept failing, and the motherboard died on one Vx. I got tired of every single device having a different proprietary cradle and charger. I got tired of the previous generation being totally orphaned so that you could no longer find accessories or get repairs. I also got tired of buying hardcases which then disintegrated when the glue failed. Each generation had less battery lifetime, so that I started out with two weeks between charges on my Palm V and finished where I had better not forget to charge my T|X every single night. I love the operating system and user interface, but the hardware is a dismal failure.

Finally my last T|X started rebooting every time I tried to use the wi-fi. That was the last straw. I managed to get one last backup out of it.

The problem is that the Palm to-do list and calendar runs my life and rules my world. I bought an app called PocketMoney and made it a habit to immediately record groceries, gas, lunch, etc. in it, and it has literally kept me from making debit card overdrafts since 2002, when I used to make 3 or 4 a month. Washington Mutual's stock went down when I bought a Palm. I keep all my passwords in there. I write stuff down that I do only once a year and which takes 3 days to rediscover, so that when I go "how do I do..." I can look it up on my PDA. I use HanDbase to track the contents of my parts boxes, tool boxes, and book collection, and to remind me of local restaurants. I use Jpilot and I wrote my own daemon to do wi-fi hotsyncing on Linux so I can easily back it up every day with one button press. It plays a big part in keeping my daily life on track.

So I had to find a replacement. I use Linux so a WinCE/Mobile Windows unit was right out, because it's impossible to sync the data and back it up on anything but a Windows machine. I drooled over the Nokia 770 "internet tablet" for ages, but it didn't seem "programmable" or developer-friendly, and I had no idea what an "internet tablet" was supposed to do for you. Finally the Nokia 800 came out and I discovered you could run Python on it so I bought one. It turns out that you can easily write nice user interfaces with pyGTK if you take a little care to respect the limits of the CPU.

One other nice thing I discovered is that the built-in Opera browser is capable of handling my bank's website, the RoadRunner webmail page, and the Oracle Collabsuite email system at work. The Palm T|X web browser failed with all of these.

For me, my N800 is my "very tiny Linux laptop that fits in my pocket" and goes with me on my motorcycle and other places where I wouldn't carry a regular laptop.

So far the only downside is that I have no way to protect the screen. Knowing my past history, it's only a matter of time before it gets cracked. NO ONE makes a hard case for it that works. The 770 had a hard case that also turned the device off/on when you slipped it on or off. Why they abandoned this great idea, I don't know...

(Actually, I've had my unit for over a year now, and it's survived just fine. I'm impressed!)

Valid HTML 4.01 Transitional