Its been a while since I last blogged (not that nothing exciting had been going on). Maybe it is not a natural propensity, more like blogging when my job needs me to. Previously it was a tool to reach out to the maemo community, now it is to reach out to developers who may find the following open positions in my team interesting
All positions are based in Tampere, Finland. Some interesting facts and figures related to Tampere and surrounding region can be found here.
Planet maemo: category "feed:32c459979288a47ce7db402c789bf756"
Off late I have not been able to put much time to this project. Today I manage to uploaded first initial version of the port to mistral/Maemo 2.x (have not tested it for Maemo 3). Give it a spin.
Known problems
Known problems
- I have not been able to fix maemo/sapwood theme related problem, probably related to Gtk program running as sudo (caution, this is a bad idea ). This happens only when invoked as sudo :( but theme works ok, when for e.g synaptic is launch from xterm. So for now when invoked from the desktop, you will be welcomed by good old gtk look and feel :)
While cross compiling binaries for maemo, I wanted to enable the thumb compile option, but didnt really knew how to, jumped to #maemo irc, and there I could quickly get the info I needed. (Thanks to tko), so I documented it (I hope it will act as a starter, for other to add info). It would also be nice if this kind of info is also available in official maemo documentation
I had been playing around with Synaptic for maemo, just ran into some use cases where i wanted to remove and reinstall some pre-installed packages. I picked up few theme and locale packages. To my surprise, uninstalling a theme package would uninstall quite a few important packages!! (check some xterm screenshots, showing the symptoms).


I think before packages are released by each team, it should be MANDATED to try simple use cases of install and uninstall there packages on device to atleast get rid of ridiculous package dependencies. Atleast it is quite a valid use case atleast for me to remove language localizations for languages I dont need like french or italian and themes,sounds, preinstalled videos and media, which just occupy my much needed and useful flash space.
Maybe maemo community can come to help here and file bugs against improper packaging.


I think before packages are released by each team, it should be MANDATED to try simple use cases of install and uninstall there packages on device to atleast get rid of ridiculous package dependencies. Atleast it is quite a valid use case atleast for me to remove language localizations for languages I dont need like french or italian and themes,sounds, preinstalled videos and media, which just occupy my much needed and useful flash space.
Maybe maemo community can come to help here and file bugs against improper packaging.
I would like to welcome Quim Gil as my successor :) and wish him lots of good luck as the next Maemo Development Product Manager. People active in the GNOME community know Quim quite well already.
When I now look back, I think it has been a tremendous adventure where we did many things right, many things that didnt go as well as we planned and lots of learning. I thank all the community members (i am including here Nokia internal developers also) who made working on maemo so enjoyable. Good luck ! I will now continue my journey as a community member.
When I now look back, I think it has been a tremendous adventure where we did many things right, many things that didnt go as well as we planned and lots of learning. I thank all the community members (i am including here Nokia internal developers also) who made working on maemo so enjoyable. Good luck ! I will now continue my journey as a community member.
I have been working on porting Synaptic for Maemo. Here are some screenshotsI have tried to make it as friendly without sacrificing any of the features. I would have to say that porting had been a lot quicker and easier (except the time wasted on designing hildon related workarounds) due to well structured code and UI seperation using glade files.
I have also incorporated some great feature IMHO from the osso-application-installer, the default (and a lot more user friendly) application manager on IT OS 2006.
- Added ability to show application icons
- Ability to see a brief description about the package in the main row view

This is still very much a work in progress so not yet ready for public release :(
Keep tuned.
Latest Nokia 770 media campaign takes maemo community applications center stage. I think the campaign hit bulls eye to emphasize in my opinion the most unique sell point for Nokia 770 Internet Tablet - Hackability. Now that would not mean so much to technology agnostic end consumer, but it sure means a lot to technology savvy consumers (especially those, who have an itch and know how to fix it :) .
This campaign further highlights how vitally important an active development community is for device success, especially when different consumers have different expectation from the device (read itch). Therefore it is hugely imperative for Nokia to listen, nurture and be truly a part of this community.
I don't know if Sean Egan would like to be associated with the Maemo GAIM as been pointed out here :) which is pretty much a quick port of mainstream GAIM by me and Santtu Lakkala for Nokia 770.
This campaign further highlights how vitally important an active development community is for device success, especially when different consumers have different expectation from the device (read itch). Therefore it is hugely imperative for Nokia to listen, nurture and be truly a part of this community.
I don't know if Sean Egan would like to be associated with the Maemo GAIM as been pointed out here :) which is pretty much a quick port of mainstream GAIM by me and Santtu Lakkala for Nokia 770.
I was pleasantly surprised to find that maemo-gaim has been nicely packaged by Santtu Lakkala (and some bugs fixed too) for IT OS 2006 edition. Thanks Santtu. You can get the instructions how to install here
It would also be cool if the packaging could further be broken down at IM protocol level e.g gaim-protocol-irc or something like as done for locales.
Things I am planning for maemo gaim (only if I get some time off enjoying my summer :)
- integrate gaim-galago (I guess only thing that need to be done is package it)
- enable gnome-presence-applet for maemo as a status bar plugin [ I have already now kind of ripped off the libpanelapplet to make a bonoboo-less lite version]. I have it kind of running on desktop but need to clean/fix up stuff. As an idea maybe this presence status bar plugin can be further enhanced to communicate with gaim using gaim-remote to do simple things like sending quick message to a contact etc.
It would also be cool if the packaging could further be broken down at IM protocol level e.g gaim-protocol-irc or something like as done for locales.
Things I am planning for maemo gaim (only if I get some time off enjoying my summer :)
- integrate gaim-galago (I guess only thing that need to be done is package it)
- enable gnome-presence-applet for maemo as a status bar plugin [ I have already now kind of ripped off the libpanelapplet to make a bonoboo-less lite version]. I have it kind of running on desktop but need to clean/fix up stuff. As an idea maybe this presence status bar plugin can be further enhanced to communicate with gaim using gaim-remote to do simple things like sending quick message to a contact etc.
Last week I had a great time to talk about the Nokia 770 and the Maemo Story at MIT, and as usual Nokia 770 evoked a great response. It was also great to meet and discuss with the handheld guys about maemo. This was also my first time to Boston and weather being excellent I enjoyed the city and especially the duck tour ,which is basically a world war II amphibious vehicle which gives a great tour of boston on and off the road (when it plunges into the charles river)
Some time ago just to dig into hands on maemo programming I started to write a control plugin which would allow me a easy way to rip streams. So I started with Streamripper and modified it to run as a daemon and controlled by DBUS. Then wrote a simple UI and control panel plugin to rip streams
I started a berlios project here https://developer.berlios.de/projects/streamripper-ui/ which still awaits for me a cleanup code and import in SVN. some day !! (well code is quite dirty, so I dont think it will every get into mainstream, but the changes to streamripper itself are quite small, just modification to the console utility). Code could also be useful to people looking for sample D-BUS code and sample code for writing Maemo Control Panel Plugin
At some point I thought I could also put some nice feature like the Streamripper32 where it can list the stations and tracks available for ripping.
I started a berlios project here https://developer.berlios.de/projects/streamripper-ui/ which still awaits for me a cleanup code and import in SVN. some day !! (well code is quite dirty, so I dont think it will every get into mainstream, but the changes to streamripper itself are quite small, just modification to the console utility). Code could also be useful to people looking for sample D-BUS code and sample code for writing Maemo Control Panel Plugin
At some point I thought I could also put some nice feature like the Streamripper32 where it can list the stations and tracks available for ripping.
This had been pending for a while, gathering dust. I wrote a small utility originally intended for Maemo , but I found it quite useful for my Linux desktop too, especially when I have to transfer tons of pics from my phone to laptop. There are offcourse other utilities and tools for the same purpose, but then I just decided to test how quickly can I write one.
Now on Nokia 770, the device announcement is turned off, but now with so many developers with root access, can simple turn that on in their /etc/bluetooth/hcid.conf
BtXfer
- Simple UI for discovering devices
- Select a device and select files (you can select multiple files), and send. It will send if the other receiving device has OPUSH profile. The utiltiy also has SDP query capability to get the right channel number on the receiving device
- You can also receive
- Nice little progress bar for send/receive progress
- Multithreaded so, send and receive happens independent of each other
I ripped most of the code from the obex-apps
Some features I really would like
- a simple tray for droping files for transfer
Code exist here : https://stage.maemo.org/svn/btxfer
so feel free to hack
Now on Nokia 770, the device announcement is turned off, but now with so many developers with root access, can simple turn that on in their /etc/bluetooth/hcid.conf
BtXfer
- Simple UI for discovering devices
- Select a device and select files (you can select multiple files), and send. It will send if the other receiving device has OPUSH profile. The utiltiy also has SDP query capability to get the right channel number on the receiving device
- You can also receive
- Nice little progress bar for send/receive progress
- Multithreaded so, send and receive happens independent of each other
I ripped most of the code from the obex-apps
Some features I really would like
- a simple tray for droping files for transfer
Code exist here : https://stage.maemo.org/svn/btxfer
so feel free to hack
Ok, whats happening on Maemo GAIM
1. I opened berlios project for maemo gaim, so now if someone wants to join in improving the port for maemo feel free https://developer.berlios.de/projects/maemo-gaim/
2. Made another minor update release which is available from http://download.berlios.de/maemo-gaim/maemo_gaim_1.5-dk-1_arm.deb
New features
- Hildon stype toolbar and menues (did a real bad hack) more on that in a bit
- Preference dialog is now a Appview, so its quite convinent to use
- App should now be able to also work in non-fullscreen mode
- Should be more stable :) [since when has stability become a new feature ;)
Ok, now about the hack
GAIM makes extensive menues using the factories, and I just couldnt find to sew the existing menu widget to the appview. while there is an API to get the menu widget e.g to attacj menuitem etc, there is no API I could find for repacing the menu with a user provided menu.
So I started to dig into the hildon_appview.c file to see what is the magic. The widget is having a pointer to priv struct , the first member of it is the menu widget, which I wanted to change, so using brute C pointer force, I just changed the pointer of the internal structure to contain pointer to my menu widget :)
void **ptr = HILDON_APPVIEW(app_buddy_view)->priv;
*ptr = gtk_item_factory_get_widget(gtkblist->ift, "");
Hopefully I wont have to rely on this hack and HildonAppView widget would have an API to enable this.
1. I opened berlios project for maemo gaim, so now if someone wants to join in improving the port for maemo feel free https://developer.berlios.de/projects/maemo-gaim/
2. Made another minor update release which is available from http://download.berlios.de/maemo-gaim/maemo_gaim_1.5-dk-1_arm.deb
New features
- Hildon stype toolbar and menues (did a real bad hack) more on that in a bit
- Preference dialog is now a Appview, so its quite convinent to use
- App should now be able to also work in non-fullscreen mode
- Should be more stable :) [since when has stability become a new feature ;)
Ok, now about the hack
GAIM makes extensive menues using the factories, and I just couldnt find to sew the existing menu widget to the appview. while there is an API to get the menu widget e.g to attacj menuitem etc, there is no API I could find for repacing the menu with a user provided menu.
So I started to dig into the hildon_appview.c file to see what is the magic. The widget is having a pointer to priv struct , the first member of it is the menu widget, which I wanted to change, so using brute C pointer force, I just changed the pointer of the internal structure to contain pointer to my menu widget :)
void **ptr = HILDON_APPVIEW(app_buddy_view)->priv;
*ptr = gtk_item_factory_get_widget(gtkblist->ift, "");
Hopefully I wont have to rely on this hack and HildonAppView widget would have an API to enable this.
