Archive for November, 2006

December 2006 Silicon Valley MoMo

This Monday is the December 2006 Silicon Valley Mobile Monday meeting. I haven’t been out and about nearly as much as I used to be, I’ve been busy getting us to half a billion ad impressions served with as few issues as possible. That’s Mike Mettler who wrote that message by the way. So to those who asked, no, I am not a product manager. I remain firmly planted on the engineering side of the house.

I’m definitely looking forward to connecting with a bunch of people who I haven’t been able to keep in touch with, many of them who I met at Mobile 2.0 but haven’t spoken to since. I was actually considering putting together a presentation of my own for this MoMo when the topic was proposed. I’ve been meaning to spend some time digging into SIP and Asterisk in particular, and I figured that trying to put together an overview presentation would be a great way to force myself to take a look at the lay of the land and draw some conclusions. But even as of last month I knew I wouldn’t have the time to do that myself. However if you’re working on stuff of the sort definitely swing by the meeting. I’m sure you’ll find a bunch of interested folks for conversations.

Bloglines Mobile and Opera Mini 3

With the official version of Opera Mini 3 out now I removed the beta version and installed 3.0 release over 2. And then a half hour later as I was waiting for breakfast realized that Bloglines mobile isn’t working in the new 3.0 version. If that’s one of your common stops you might want to hold off on the update for a bit.

Mini 3 does have it’s own feed reader, which I fooled around with for a bit. I’m not really sure I like it though. There were a few feeds already in the reader when I started it up and they were kinda cumbersome to delete, I got some errors when trying to load the feed for my blog (which were solved by just hitting reload, server hiccup maybe?), and the functions I use a lot like “keep unread” and “send this link” stuff isn’t there. I’ll probably stick with Bloglines Mobile for now.

That said however, the rendering is great. The small font seems smaller than before, and there’s a TON of readable text on the screen on my E61. The content folding seems to work very well also, pretty impressive.

Voice Unpopular?

I found this comment about cellphones kinda amusing:

Today, it almost seems that voice calls are the least-used function of most phones, while Wi-Fi and WiMax use ever-growing amounts of network bandwidth.

What world is that? I wanna go there. To me it seems like everyone I talk to outside of technology and say something like “mobile website” or “mobile web” or “websites meant for mobile phones” the common response is “You can get the web on cellphones?” Penetration is still very very very small, especially in the US. Things get dangerous when people start to assume that the behavior they see out of the four people with whom they share an office in SOMA is the way that everyone behaves. It is most certainly not. I live in Silicon Valley, I know a handful of people with wifi enabled handsets of some form. Taking a look at overall data usage, most of my data still flows through cellular with occasional bursts through wifi.

Don’t get me wrong, I would love for it to be time to change the name of the cell phone to something like Navi. I just don’t think we’re anywhere close to that vision yet.

Non-SMS Mobile Messaging

Since it looks like carriers in the US aren’t really interested in people building SMS applications, I’ve been trying to figure out alternative ways to get messages to my handset. I registered Agile Messenger and played around with that. It used to be free, but now it’s a subscription product. Well worth it for Symbian devices, it’s a great messenger client. However it’s not quite working for what I want to do. I would like to deliver my messages over Jabber (Google Talk), cause I’ve done too much development in the past against Yahoo and AIM only to have the protocol change underneath me and get stranded. So I want to build on top of a public open standard. However my handset does tend to get lost, as in it looses the connection and doesn’t realize it.

Most of the time it’ll reconnect after a while, but not all the time it seems. And I want my handset to let me know when something is up, and not have to send a test message every once in a while to make sure that the link is really active. However, if that connection handling was cleaned up some this would be a decent way for me to get notifications to my phone. Certainly not great for the average consumer, but with Agile up in the background and the notification sound turned on it’s perfect. A little popup comes up saying I have a message in Agile, fantastic. Hopefully the Agile gods will smile and future versions will handle that XMPP connection in a way that detects disconnects more reliably.

I was thinking about trying to hack something together myself to handle the networking, just a simple read from a socket, some kind of ping/pong to make sure we have reliable activity on some schedule, and make a noise when you get real data. I have to imagine people have stuff like this floating around somewhere that I can just grab and use. Pointers anyone?

Mac Mini on the big screen

Mac Mini Digital Optical Output

I had a Mac Mini hooked up to my LCD at home the other day while I was testing some stuff, and I really liked it. I had my laptop hooked up via DVI before, so I was prepared for what the display would like like in full digital 1920×1080 native glory. It’s nice and compact and unobtrusive and quiet, stylish even. “Too bad this thing doesn’t have a digital optical output I can use with the stereo, I would use it to drive DVDs and then I could play music through it also.”

I don’t read specs online all that much, I tend to play with stuff to figure out what I like. So when I looked at the Mac Mini I had I made the mistake of assuming that the little headphone jack thing on the back of the mini is just that, a headphone jack. Not so! Check out the bottom of the Mac Mini specs page: “Combined optical digital audio input/audio line in (minijack)”

If you’re anything like me you’ll ask yourself “what the hell does that mean” and then to searching around online. I knew about only one style of optical digital audio connector, the JIS F05 version of TOSLINK. Which up until I read that article I thought was the only connector style that TOSLINK used. Then I stumbled across this mention of digital optical audio output that included a picture of the cable. Hey, that looks familiar. I saw one of those for some ridiculously low price at Fry’s labeled something like MiniDisc connector cable.

So zoom off I go to grab one, quiet the voices in my head that tell me this isn’t possible, and jam the optical connector into the socket that just seconds before hosted a headphone jack, swap my receiver to the digital input and the two active speakers plus sub are joined the the center and two satellites. w00t! So of course I zoom off once again to get myself one of these magical Mac Mini boxes so that when I have to bring this one back tomorrow I have a toy still.

Mac Mini on the big screen

There were a few other things I picked up, wireless keyboard and wireless gyroscopic mouse. Some growl plugins to make sure the important messages come up (I would actually like them to come up and have the dock icons bounce out even when I’m watching a DVD in full screen mode, haven’t figured that one out yet), quicksilver, etc. Even without the Frontrow stuff it makes for a great system for combined media and traditional desktop use. With Frontrow it’s pretty killer. I just wish the remotes were in some way keyed to the unit, or had some kind of channel. Using the remote with my Mini keeps bring up the media function on my laptop, so I had to shut off IR completely for my lappy.

Opera Mini 3.0 Beta

I saw Andrea’s post about Opera Mini 3.0 Beta being out and hopped over to grab it and fool around (beta.mini.opera.com on your mobile browser to download it directly, it installed alongside the 2.0 version instead of over it for me, sweet). It’s cool that Opera is now passing along some device information with the request, but I agree with Andrea that an alternative format is pretty crippling to have to deal with as far as developers are concerned (us at AdMob included).

So I dumped a request sent by Opera Mini 3 to see what was in there:


X-OperaMini-Features: advanced, download, folding, inputhints
X-OperaMini-Phone-UA: NokiaE61-1/3.0 (2.0618.06.05) SymbianOS/9.1 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
X-OperaMini-Phone: Nokia # E61

Which compares with the user agent sent by the services browser on my device:


User-Agent: NokiaE61-1/3.0 (2.0618.06.05) SymbianOS/9.1 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1

My guess would be that they just picked out the user agent used by the browser I downloaded with and they’re using that as the original phone UA in the header they pass along. If they had changed or munged the user agent I could see that being an issue, but from what I’ve seen so far it appears to be unaltered. So actually I’m pretty happy about this, there’s something there at least to hold onto, we just need to update some tools to deal with it.

E61 and Putty

Putty for S60 is one of the coolest apps out there. There’s a relatively short list of apps that run directly on my phone that I consider critical. Putty is both critical in itself so that I can get to servers from anywhere for administration, as well as serving as access to a ton of applications meant to be used from the command line. I’ve tried out just about every free IRC client that I can find for S60 or Java, but my favorite so far is still the terminal app irssi. If you’re a Linux geek (which I am) there are probably a bunch of apps you’ve used before that would suit you well on the E61.

When I was using the 6680 putty worked out decent for running a quick command or two in a pinch. But with no real keyboard and a really limited screen it wasn’t really workable for something I didn’t expect to do and have scripted up in advance. The E61 has a full keyboard and enough resolution to make for a more than respectable display. It works more like a terminal emulator now, so you can actually do things like use VIM on the server. Kick ass.

However, there were a few issues with my Debian server. On some servers the key two to the left of the spacebar on the E61 generates a tab, but not all servers. Unfortunately I wasn’t able to figure out what the difference was between the servers on which it generated a tab and those that didn’t. There were some other oddities as well, like the ctrl key. I expected that to work just like control on a regular keyboard but it didn’t. However, after much poking around I noticed that it does work like a control key when I’m running screen on the server. So if I’m running screen I can generate tabs using ctrl-I, and ctrl-a works as expected. But generating an escape (ctrl-]) when using VIM is still pretty cumbersome.

So I’ve started using mapchan and let it start screen when I’m using my phone. I found mention of mapchan in the text terminal faq, and I wasn’t sure if it was older than dirt or just unpopular. But I compiled it and it’s been working fantastic, using this mapping for my particular server config:


input
0xe7 0x09
0xf1 0x01
0xbf 0x1b

I have no idea what those keys that I don’t use are supposed to be, but that mapping makes the C with the thing under it into a tab, the accented N on the other side of the space bar into a ctrl-a, and the upside down question mark (bluekey+l) into an escape. Fantabulous, now using just about anything on my server is pretty convenient.

Remapping additional keys is pretty easy. To figure out what the keys I didn’t use were I just ran xxd on my server (hex dumps whatever it gets on standard input), hit the keys I want to find the values for, hit return, and select send ctrl-d from the putty hotkey menu (or just his ctrl-d if I’m already running screen).

Of course I would love my phone to do all sorts of interesting stuff on it’s own, but for now having good terminal access to my server is the equivalent of how most folks think about remote desktop. I live on the command line quite a bit, so this opens up a whole set of tools for me.

US Carriers Requiring Shortcodes – Developer Hostility Hits a New High

The SMTP gateways provided by US carriers kinda suck. Sure, at least we have something, European carriers don’t even have SMTP available. But that’s no excuse for the sucking. I need to deliver messages to myself from production servers, I’m currently doing operations and need to get the notifications as the events happen. I would really like to deliver them to other members of my team. Seems like it should be a simple enough thing.

So even though I’m paying for getting the messages, I decided to swallow my anger and pay an SMS aggregator to deliver me messages. First I started out looking at SimpleWire cause I had used them before. But found that the require a shortcode now:

Simplewire Starter Packages are for non-US and non-Canadian traffic only. All U.S. and Canadian carriers now require a short code to be provisioned for all Simplewire customers.

A shortcode in order to send SMS messages, that’s just stupid I thought. So instead I went to Clickatell, which seemed to have no restrictions of the sort…. except I wasn’t getting some of the messages I sent through Clickatell. I contacted support and got this back:

The US has introduced strict control over messages sent from applications to handsets through the use of short codes. All traffic to US handsets require a valid short code registered with the different networks. Clickatell’s short code has been blocked by T-Mobile due to more than one service(different content from multiple users) sent over one short code which is not allowed and we can not say when other providers could take the same action.

I’m just blown away here. Seriously, this is insane. Just when the mobile environment seems like it can’t get any more hostile toward developers the carriers go and do something like this. People always ask me why we don’t get more carriers involved in the Mobile Monday events, this is demonstration of their mentality. They do not care about you developers and application providers. I don’t know why it’s hard to believe when there are fantastic examples of their hostility like this.

Now I have to map out a route from my house to the office that has 100% wifi coverage. Fuckers.
More >

Email Clients – Java vs Native App

The other day I decided to try out the GMail mobile app, and hell, since I was trying that I might as well give FlurryMail a shot as well. Both are really good applications actually, comparing pretty favorably to the mail client built into my E61. Not sure if that’s a complement to the Java based apps or a swipe at Nokia’s application development capability. There are definitely differences between all of them, FlurryMail will let you access just about any email account you have out there. I set it up to use IMAP with my bitsplitter address and it worked great, although fetching new mails didn’t happen as quickly as I would like it to. For some reason a new message wasn’t getting picked up by the client even though I knew other IMAP clients were grabbing it. GMail of course only works with a GMail account, and is relatively slim and lacking in setup options… but that’s cause it just works and you probably won’t need to futz with it. Slick.

I was surprised to find that the Java clients in this case were just as good as the native client. The Nokia client takes FOREVER to connect to a mailbox and sync. So the startup time normally complained about with Java apps wasn’t felt in this case. Sure it took the Java apps longer to start, but it took them less time on the network part. So all of them ended up being usable after about the same wait time. Normally the Java stuff is kinda memory heavy compared to a normal app, but the Nokia mail app crashes out from underneath me all the time due to what I can only assume is memory exhaustion. I can’t leave it up in the background either, it always quits out at some point when I try to do that, so the Java version is just as good there as well. And the user interface was probably better on both Java versions than the native app. All of them handled attachments well – with the ranking of ease of use between all of them being GMail the most pleasant, then Flurry, and last by a long shot the Nokia mail client.

Poor, very poor indeed. I look at the Blackberry as an email device and can’t help but think that someone just completely does not grok the concept at Nokia. The messenger functionality is not well integrated into the device, the service is not always on, the user interface is at times hostile enough to make it hard for even me to work the thing, there are tons of display quirks, and when it does work it’s S L O W – A S – H E L L. Fortunately I’m not really an email user, that’s not the primary mode in which I use my device. And then I realized that email really is kinda dead to me. Most of my communication goes on through IM, blogs, SMS. I use email but it’s always kinda a pain. It doesn’t do what I want it to when I want it to. It’s stuck in these archaic applications and stranded places like Exchange servers… god, how horrible is that? Email is kinda broken… or is that just me and my odd worldview?

Python S60 Flickr Upload

The Flickr Authentication docs have said that authentication for mobile applications might be available in the future. Apparently the future has not yet distributed to Flickr. The authentication interfaces rely on punching out to a browser to give permission to the application. Pretty lame. Makes me wonder how ZoneTag manages to upload. I thought there was a simple post interface to Flickr at one point… I’m quite sure I developed against it at one point. I can’t find any docs about it now though, and the examples I have don’t seem to work any more.

The E61 I’m using includes the Nokia open source browser however, so I was curious if I could use it for the Flickr authentication API from a Python script on my phone. I would love to be able to take the card from my camera and upload the images on it over wifi from my phone without involving my laptop. I haven’t made the script run on it’s own yet, but here it is. I loaded both of the files in the zip (a hacked version of uploadr python tool, and a urllib2 I pulled out of my desktop Python install and removed stuff from till it loaded and ran without exceptions) into the lib directory of my python install and tested it out like this:


>>> import uploadr
>>> flick = uploadr.Uploadr()
>>> flick.uploadImage('e:\\Images\\miker.jpg')

It outputs a bunch of debugging info, and should startup the browser at some point and ask you to login and allow the app access to your flickr account. When it’s done, you should have a new photo up on the site. Getting the browser popped up was a bitch, apparently there’s a lot that’s changed in 3rd edition. I picked up the tip for how to do this from a forum posting somewhere:


def openurl( self, url ):
    browser = 'BrowserNG.exe'
    e32.start_exe(browser, ' "4 %s"' %url, 1)

What’s that 4 do before the url? Not really sure, but trying it without that number or with other numbers didn’t work at all. Also, I didn’t realize that P60 was up to version 1.3.13 until I hit the sourceforge download page directly. There are 3 or 4 pages that served as homepage for P60 over time, and the one I had bookmarked said 1.3.8 was the most recent. In 1.3.13 the library path problems seem to be fixed, so I would highly recommend grabbing the new version to avoid some annoyances that made debugging and testing pretty difficult.

It is kinda cool that the open source browser works well enough to perform the authentication. I’ll have to get the upload list stuff working again, and make sure it pulls images from the mmc card for my camera by default.