Today, I had an epiphany.
I’ve had my new HTC Desire for about two weeks. It’s a very nice Android phone, looks awesome, and for the most part it’s a delight to use. I have, however, been cursing the difficulty of text input. I’ve been using Nokia smartphones and communicators for ages, with solid and usable physical keyboards or numpads, and getting used to the touchscreen is not very easy. What made things worse is that the virtual keyboard on the Desire was not localized, and typing characters such as Ä and Ö was not very fast. (English speakers would call them ‘accented characters’ and bury them behind tricky UI maneuvers, but they are in fact very common vowels in the beautiful Finnish language.)
I had no idea what to do except try and learn to type even just a little bit, and accept the idea that this is not a very good device for text input. Oh well, I can always use the netbook if I need to write a long email or notes. It never even dawned on me to complain to fellow Android users about this, or ask for survival tips and tricks. They were probably just trying to cope and enjoying YouTube and the marvelous Web browser.
Only today, after two weeks of usage, I learned something that blew me away. Browsing the web, I stumbled upon a Finnish Android forum discussion about the relative merits of different options for Finnish typists on Android. Turns out there’s an app called ‘Scandinavian Keyboard‘, and it’s Free Software and all.
I launched the Android Market on my phone, and downloaded this new keyboard.
I downloaded a keyboard.
I also downloaded a Finnish dictionary for it, so that predictive text works both in Finnish and English (unlike before).
So then it dawned on me. The Nokia Way that I have learned since getting my first Communicator, working through all my life with Nokia devices, is the paradigm of shipping a very powerful ESeries smartphone to you that does everything out of the box that most people ever need. You only download a few special apps that geeks need like PuTTY.
The iPhone Way (and the Android way) is all about shipping a nice, lean system (and don’t forget to make it pretty!) and making everything available as apps.
And when I say “everything available as apps,” i mean everything! When I got my Desire it certainly looked good, and it paid due attention to importing my Facebook friends, but I had no SIP calling. I had no password manager. I had no system task manager (worth mentioning). The RSS reader sucked. I didn’t even have a damn task list to go with the calendar! And worst of all, no Finnish keyboard layout or dictionary.
But there sure was an app for all that.
P.S. I have no idea which way is better. I always enjoyed a new Nokia device, because it was so powerful right from day one. But the way of the Android might be a good idea as well: just try and ship a nice, lean base system and let users add their own bloat.
P.P.S. In case you’re wondering, I fixed SIP with Sipdroid, passwords with KeePassDroid (yay!), processes with Advaced Task Killer, RSS with … nothing! the iPhone version of Google Reader rocks. For a Task list I use Astrid, which has very nice Remember The Milk sync and a friendly and funny nagging feature. Feel free to suggest better/more!
Ploughing through my feeds today, I came across Jonny’s post about the Telepathic goodness he’s playing with on his N900. Very nice.
Which brings me to one simple question. Why can’t we, with our powerful computers and full-blown GNOME desktops have any of these nice things? We run the same stuff: evolution-data-server, D-bus, mission-control and the Telepathy connectors. Yet, we have an address book that doesn’t know whether or not our friends are online. Nor can we send IM and email from the same application based on this presence information.
Nothing has happened since I last pondered this question in November 2008. Maybe I should start running Maemo on my desktop? Does the N900 support high resolution external displays? Clearly it is superior.
I have been using p3nfs to mount my Nokia 9300 and later the E70, and it has worked pretty well. However, all this time the fuse and bluez hackers and Nokia’s open source team have been busy behind my back and provide a couple of alternative solutions.
The easier of these is using fuse and obexfs. I initially found this tip on Google Groups, and later David’s more thorough HOWTO. Here’s the drill:
- Find out your phone’s Bluetooth MAC address if you don’t know it already:
- Find out the OBEX FTP channel it uses
sdptool search FTP
- Load the fuse kernel module:
sudo modprobe fuse
- Make a suitable mount point for your phone:
obexfs -bXX:XX:XX:XX:XX:XX -BYY ~/Phone
(where XX:XX:XX:XX:XX:XX is your phone’s MAC and YY is the OBEX channel)
- Unmount when you’re done with your file transfers:
fusermount -u ~/Phone
The other method is more exciting and far more geeky. It doesn’t actually involve mounting your phone’s filesystem at all, but making its contents available by running a web server on it. I’ve known about Nokia’s mobile Web server for some time already, but was inspired to try it out recently by Mikko‘s comment on a blog entry of mine involving phone/linux synchronizing.
You can selectively make all your phone’s information available on the Web for yourself, for a group of friends, or globally. Register on mymobilesite.net, download the Mobile Server software, and away you go. It works very well, but eats far too much RAM to be running permanently at this stage (it’s advertised as beta). For temporary access it’s a viable solution though, and here’s the strong point: no setup is needed on the receiving side, all you need is a computer and a Web browser! I will certainly keep an eye on the server’s development and play with it more in the weeks and months to come.
Linux users with smartphones and PDAs are familiar with the narrow definition of a “supported PC” most mobile device manufacturers have: a Windows PC, and perhaps a Mac. I have tackled this problem from many angles in the past, from the struggle to achieve simple file transfers between Nokia phones and Linux boxen, to the quest for calendar and address book sync, to accessing email.
There are two main routes to solve the sync problem: the Web2.0 Way and the Old School Way. Both have one thing in common: if you’re a Linux user, you should keep your data online. Forget about plugging your Nokia smartphone via the USB cable and pressing “Sync”. While software such as OpenSync and Gnokii exist, I’ve never had complete success with them. Also, when your data lives on a centralized server maintained by professional Other People, you get backups as a bonus!
There are three main things that I need to be able to access at all times: email, calendar, and todo list. I’ll describe my sync methods below.
The Web2.0 Way
The hip and the cool among us enjoy Gmail and other online apps and services, and I do like them as well. For example, Gmail’s user interface changed the way I looked at webmail forever, and in some ways it’s superior to any desktop email client. Who has better search than Google, after all? When you have a mail archive of hundreds of megabytes, it’s safe to say that the network is no longer the slowest part of your system when you search for that message from Charlotte she wrote in 2004, saying she doesn’t love you anymore. We’re generating increasingly large amounts of information, and as Paul Boutin noted a while back, you would never allow a system in your house that would compete with Google’s search.
Sync-wise, the Web2.0 Way has one obvious advantage over the Old School Way: there simply isn’t very much to synchronize! Gmail has an awesome interface for your desktop browser, as well as for the puny WAP browser on your mobile phone, so that’s a no-brainer. Even better, Google’s Java mobile client application is top notch.
Google Calendar is a very nice web app as is, and it has a more-or-less adequate mobile version as well. Google doesn’t give you a todo list of any kind though, so I recommend Remember The Milk. RTM has all the features you can hope for and then some, and comes with a very nice mobile version for your WAP browser.
On the desktop, you can integrate all these apps into your GNOME environment with read-only access. GCal and RTM provide standard iCal interfaces you can subscribe to with Evolution. This allows you to view your appointments and tasks right from GNOME’s Clock applet. You can also make a smart bookmark for Epiphany to search Gmail, and have it accessible from the deskbar applet if you like: 1) Go to your Gmail inbox. 2) Switch to “basic HTML” mode. 3) Search Gmail for a recognizable string like FOOBAR. 4) Bookmark the results page. 5) Edit the bookmark, replacing FOOBAR in the URL with %s and give it a descriptive name such as “Gmail search”. You will now be able to search your Gmail archives from the Epiphany location bar and deskbar-applet. (Firefox version is left as an exercise to FF users.)
Old School Way
In a nice paradox, the good old fashioned computing lifestyle demands much more from your tools than the “more advanced” Web2.0. However, if you have such tools, they are usually more comfortable and flexible to use than web apps. They will also survive network outages, which naturally is a tremendous benefit. My gear is Evolution on the desktop and the native Messaging and Calendar applications on my Nokia E70. The phone has to support the SyncML synchronization standard (sometimes called OMA these days) and IMAP for mail.
On the server side, we need an IMAP account, which rules out every free email provider I know of, including Gmail. We also need a SyncML server. ScheduleWorld offers this one for free, so we’re in luck. Evolution does not speak SyncML, but we can use a simple command-line tool called SyncEvolution as glue.
The benefits of IMAP are obvious: multiple clients can connect, even at the same time, and all mail is accessible to all of them. One can argue we can achieve the same with Gmail, but synchronizing local folders is far from trivial using POP.1 Also, since mobile phones usually don’t have lots of storage (mine can handle 2GB at best,) it is nice to work with only the mail headers and download and delete message bodies as needed.
SyncEvolution doesn’t come with Ubuntu, and I haven’t seen any suitable Debian packages floating around the Internet. Not to worry, the source builds nicely on Ubuntu, and you’ll be up and running soon enough. There is a nice tutorial on the Ubuntu Forums as well. I’ve setup a bash alias syncevo=’syncevolution scheduleworld’ and run that whenever needed. Works like a charm.
Which Path should i take, Master?
Whichever you like more! I’ve been using and loving both, and the best thing is they don’t rule each other out. ScheduleWorld not only syncs your phone and Evolution but Google Calendar as well, and recently introduced experimental support for syncing Gmail contacts. It also has quite a usable web interface too. Mail can be duplicated between your IMAP server and Gmail via simple forwarding.
Ultimately, the more advanced your mobile phone, the more you will like old-fashioned “native apps and sync” approach, while the Web2.0 applications’ mobile versions will work in your old phone’s WAP browser, and even have SMS interfaces.
1. But see the “recent hack”, which is useful for other things as well: I use it to backup my Gmail with fetchmail.
My Nokia E70 smartphone came with some nice software like MS Office compatible office apps and the regular PIM stuff that smartphones should include. However, I’ve made the thing much more useful with some cool pieces of freeware (mostly not open source though) leeched from around the Internet. Here’s a shortlist of favorites:
First of all, a mobile phone is a communication device, right? So let’s pack this thing up with apps to really talk to people in all ways possible! Let us see what we want to do and how to do it.
- To talk to people, there’s fring which supports VoIP calls over Skype, Google Talk, MSN and SIP. Not much of a chat client but chat does work. (note to self: bother fring support about chat functionality improvements)
- For real chat, there’s a new IRC client called mIRGGI, a native S60 app. mIRGGI is very young but works well.
- The best Jabber client around is probably Bombus_mod but it’s a Java app, meaning it eats more RAM than fring and mIRGGI combined. It does support every aspect of Jabber though, including transports which also makes it an awesome multiprotocol chat tool.
- I let my friends know about my presence status and activity updates via Jaiku. As fun as twitter but also genuinely useful for keeping in touch with people you actually care about. As Marko says, Jaiku is “not about celebrity” but about “silent sociality” among small groups. (I do share presence with a group quite a lot larger than that though, via the Jaiku badge in the sidebar of this blog. Lurk away!)
Then there’s always the fun side of the device. First off, we need music!
- If I get inspired to buy a large memory card for this phone, I’ll probably enjoy OggPlay a lot, since I don’t have many MP3 files to play with Nokia’s own media player. Currently I use it to play “We Are The Road Crew” every morning at 8 for wakeup alarm. Works very well.
- Currently, I don’t feel a huge pressure to carry my own music around since I can use Nokia’s own open source Internet Radio app to listen to my favorite channels.
Since things do sometimes slow down, I want to be able to enjoy games.
- There’s no nethack like there used to be one for my old Communicator, but luckily we have DOOM!
- Tetris should be required by law or standard on every device sold, but Nokia doesn’t care. There’s S-Tris2 though and it’s great with very cool graphics and fantastic gameplay.
And of course whenever I miss my Linux box, I’ll simply call home with PuTTY. Armed with these, the phone is more useful and fun than it was when I bought it.
So far I’ve had to browse the files as root in order to be able to modify them. (That’s why you’re seeing the good ol’
mc file manager instead of Nautilus.) Also, unlike the nfsapp I used on the 9300, this one binds to channel 5, which almost got me tricked. (The python nfsapp is very fresh indeed, which means there’s no documentation at all.) Otherwise, life is good!
I’ve been thinking about Professor Anthony Joseph’s talk at the CITRIS in Europe meeting in June. He talked about IP and Telco network convergence and presented the ICEBERG Universal Inbox system his research group had implemented at the UC Berkeley. In brief, the system transforms and redirects communications between cellular and landline phone systems, email, instant messaging and VoIP.
A system such as the ICEBERG Universal Inbox looks like a very potent cure for our communications frustration by removing our need to handle multiple systems and replacing them with “any-to-any” communications. The system makes the person the communication endpoint by doing transformations of
- Speech to text
- Speech to voice email attachments
- Call to SMS or email notification
- Email to speech
- And all combinations of those
So, User1 could contact User2 with any device she has at hand at the time, and the system would dynamically redirect the connection to any of User2′s devices, based on precense sniffing: desk phone, mobile, VoIP, or a voice Email attachment, whatever is most convenient to the recipient. Sounds like a nice, futuristic vision, but Anthony’s group has already implemented a working system with 80 users at Berkeley’s testbed site.
I chatted with Prof. Joseph afterwards over coctails and foamed over how cool it would be to see a commercial implementation of a similar system. I asked him if such a system would be feasible, and according to him it’s not “completely unfeasible”, and that it would “definitely be a commercial system.” What I’ve been thinking about lately, however, is Google.
Over the CITRIS cocktails, Anthony and I talked a bit about Google and how they are mixing Google Talk and Gmail in a manner not so different from Berkeley’s ICEBERG system, albeit not in such a comprehensive way. When I mused about how Google would probably enjoy a situation where your Google ID would be the key to your Universal Inbox, Dr. Joseph said, “Oh, Google would love that.”
I’m sure they would.
In fact, some people think Google would like even much more than that. Google already has my mail and my Jabber/Google Talk logs. I have even made backups of my entire home directory on Google’s servers with the handy Gmail Space Firefox extension. I don’t see why Google couldn’t do speech to text conversions and vice versa in the future, and store all my VoIP calls if i let them. My Google ID might very well become not only my Universal Inbox, but much, much more.
In his Slate article entitled “Where’s my Google PC?” Paul Boutin notes, “We might not realize it, but we all already have Google PCs,” and he might be right. Google is slowly gathering a pretty impressive combination of online applications that already are powerful enough to replace some of the regular home user’s desktop applications. “Technically there’s no reason Google couldn’t build the world’s best network computer.”
Boutin goes on to explain some of the clear advantages of networked computers, including one that may seem counterintuitive at first but if you think about it, it’s true: “Dollar for dollar, network-based computers are faster,” since
Home computers are marketed with slogans like “Ultimate Performance,” but the truth is they’re engineered to run cool, quiet, and slow compared to commercial servers. Google’s Web search is blindingly fast because your requests get handled by a sprawling array of loud, hot, power-hungry server racks that you’d never allow in your house. All your home computer has to do is draw the results of Google’s massive data-mining process on its screen—that’s the easy part.
There are problems with the Google OS too, of course. First, it relies on fast and reliable networks. We don’t have those, and the vast majority will not have them for a long time to come. The other, of course, is this simple question: Do you trust your data to Google? Microsoft holds the data of many people, companies, and even nations hostage with their omnipresent systems and proprietary file formats, but Google could actually host it on their servers.
Back at the CITRIS meeting, another of the more interesting talks came from Microsoft’s VP Jonathan Murray, who flatly noted that MS and others will inevitably build very powerful information systems but governments are not willing to deal with their implications. The questions are simple: If I opt out of integrating my life with computed environments, will I get health care when I’m old? Can I vote if I’m not on the online loop? Do I have access to the data my government gathers about me? How much data is it if the first place, and how can I be sure? Does my own government even control my data? What about Google Search itself? Should the Finnish government insist that if a search query originates from Finland, Finnish businesses and culture be given priority, or is it OK for Google to suggest the most popular American ones? And so on, enldessly.
How do you regulate such systems when they become even more powerful? According to Jonathan (who is responsible for Microsoft’s public sector relations), governments don’t even want to think about such things. Maybe such issues are too difficult, or maybe they do not seem pressing enough in the short lifetime of an elected government.
(Edited July 28, 2006. Fixed a couple of typos, expanded the Boutin quote a bit, added a couple of questions to the part about govenments and the lack of clue, made the text flow more sane by moving a sentence between paragraphs.)
This is how I made my Nokia 9300’s file system available to my Ubuntu Dapper box. I can now copy/move files around, as well as edit files on the phone just like I could earlier with the 9210.
You need a working Bluetooth setup. See my earlier Bluetooth related HOWTO on how to find out your phone’s Bluetooth address with the hcitool and how to setup a PIN so you can pair the devices in a friendly fashion. You need to have portmap installed (in order to use any kind of NFS shares). Then you need the key ingredient, p3nfs. Download the ARCH Linux binary package and the corresponding nfsapp SIS installer for the 9300/9500.
1. Install nfsapp on the phone (send the file over via Bluetooth, or browse to the p3nfs homepage with the phone’s browser and download it)
2. Convert the ARCH linux binary package of p3nfs into a debian package and install it:
sudo alien -i p3nfs-x.xx.pkg.tar.gz
3. Set the suid bit on /usr/bin/p3nfsd so that you don’t have to be root to access the phone’s filesystem:
sudo chmod+s /usr/bin/p3nfsd
4. Bind an rfcomm device to your phone. The nfsapp uses the Bluetooth channel 13:
sudo rfcomm bind /dev/rfcomm0 XX:XX:XX:XX:XX:XX 13 (XX:XX:XX:XX:XX:XX being your phone’s address)
5. Start nfsapp on the phone. Check that it’s using Bluetooth/13 to communicate. If not, press ‘p’ to change it
6. Make a convenient mount point in your home directory, such as ‘Phone’
7. Start p3nfsd:
p3nfsd -series80 -tty /dev/rfcomm0 -dir /home/<username>/Phone
8. Browse to the Phone directory with a file manager or in the terminal
9. when you’re done, exit any application, file browser or terminal accessing the ‘Phone’ directory and unmount the phone:
ls /home/<username>/Phone/exit — wait for output confirming that p3nfsd has exited cleanly
You would probably prefer not to type all those commands by hand every day, so make a few nice aliases in your ~/.bashrc:
alias bindcomm=’sudo rfcomm bind /dev/rfcomm0 XX:XX:XX:XX:XX:XX 13′
alias mountphone=’p3nfsd -series80 -tty /dev/rfcomm0 -dir /home/username/Phone’
alias umountphone=’ls /home/username/Phone/exit’
NOTE: Do not mess with files on the E: and Z: “drives” on the phone. They belong the running system’s internal memory and touching that stuff may crash the phone and perhaps make it unbootable.
NOTE: This HOWTO is just a quick list of steps to get this working. It is not a substitute for actually reading the p3nfs README file. The p3nfs documentation also deals with situations when things are not working. I won’t, so don’t call me for support :)