My Foray Into the World of Smartphones

Ok, so I might be a little behind the times when it comes to mobile phones and SmartPhones. It was a big advance for me when I got one with a color display and MIDI ringtones two years ago. Well, my contract was ending and I’ve been doing some mobile development recently, so I got curious. If I want a SmartPhone, what should I get and why?

To start with I want a phone naturally. Because of that it’s important for it to have a good address and phone book. Secondly I want email. I’m picky about email, so I run my own mail server using IMAP over SSL and I want it to work with that. Next, I would like to get maps and directions. I like to look up how to get places, even when I’m already on the go. I also want to get on the web once in a while. I’m not planning on doing most of my browsing, but when someone asks me “What 5 countries border the Caspian Sea?” (You know who you are), I want to get online and check it out. Of course there are some other random applications that I might run since this thing will be more powerful than the computers that put a man on the moon. Finally it has to work with Mac OS X.

The Options

  • Blackberry
  • PalmOS
  • Symbian
  • Windows Mobile 5

Blackberry came onto the scene as the first service to provide a push technology for mobile messaging (as far as I know). You didn’t have to constantly check an email box to see if something had arrived, but instead you would be notified when you had a new message. This of course was a hit with the dot com bubble set. Now Microsoft and its Windows Mobile platform offer the same functionality, so it’s no longer a differentiator. As a software geek all that is well and good, but more important is how can I write my own apps?

Blackberry

Blackberry’s latest offerings are built on top of a Java platform. MIDP and JavaME for some phones is very limiting. My last phone had a JVM, but it could not access any of the phone’s functions or the address book for example. That made it good for one thing basically, playing games. A mobile phone is not exactly what I’d call a platform for playing games. The Blackberry implementation is fully integrated into the phone. They offer a full SDK to do everything from manage address book entries, access the file system to respond to call events. Blackberry has the Blackberry JDE which is an OK environment. You can also integrate the JDE with Netbeans for mobile development.

PalmOS

PalmOS started life as the PDA operating system.
The primary PalmOS development languages are C and C++. They do have a Java development platform (as well as Pascal, Forth and SmallTalk). The C based tools are built on top of the Eclipse platform which is nice. Palm has started using both their own PalmOS as well as Windows Mobile. That worries me a little bit that they might be ready to abandon their own OS development and just become a hardware manufacturer?

Symbian

Symbian is the most popular SmartPhone OS in the world with something like 75% of the market. In the US though, it’s almost impossible to find one. They basically only want to support GSM, the standard of everyone in the world but the US (don’t get me started on that rant). Symbian OS uses a C development environment for writing applications. I honestly didn’t look into it much be cause there are only a couple of available devices in the US.

Windows Mobile

Windows Mobile is another popular handheld OS. Being an Operating System from Microsoft, it uses the same development tools as the Windows OS, namely Visual Studio. Windows Mobile has both C APIs and .NET APIs for you to use. Windows Mobile is a popular platform and there are a wide variety of devices for it as well.

My Decision

I like Java. I know C#. I’ve done C++, but I really don’t want to ramp up with C++ for what would be once-in-a-while development of personal apps. If I want to do Java or C# that basically put me in the Blackberry or Windows Mobile camps. PalmOS was definitely tempting, but I wanted to use the main development environment and not an also ran.

I decided to go with the Blackberry. Specifically, I chose the Blackberry Pearl. First and foremost, it’s a phone. It’s not too big, it’s the size and shape of a phone. It’s got buttons that you can use while you’re on the phone (unlike the kinds where you slide the keyboard out).

The first thing you should download are all of the Google Mobile Tools. They offer a great application for Google Maps that includes lots of goodies like searching for local businesses and a traffic overlay for highways. It’s a great mapping solution. They also have a GMail app that gives you a nice interface to GMail. Of course you can set up GMail as one of your email accounts and just use the built in editing features. But if you want to get at your mail for searching and archival, then check out the GMail application.

Opera Mini is ok as well. I’ve been trying it a bit, but mostly I’ve been using the built in Blackberry Browser. Opera Mini feels a little bit less integrated (as might be expected) because things like the menu system does not feel native to me. Either one works though. Most sites are not optimized for mobile of course (this one is a perfect example, which I hope to fix) so your mileage my vary.

The mail system works great with my setup. All of my messages are forwarded to my phone. If I read them on the phone, then they show as read in my Mail inbox. I can also delete them on both at once. This of course works with my own personal IMAP over SSL server.

Blackberry supplies PocketMac for syncing your Blackberry. It’s not the best application in the world and it’s a little buggy. But generally it gets the job done and lets you sync your phone with AddressBook, iCal, etc. Hopefully we’ll get native support for iSync at some point. There’s no native Mac OS X support for Windows Mobile either, so you have to use Missing Sync. I haven’t tried it, but maybe they could get on board?

Conclusion

Did I make the right decision? Should I have gone with PalmOS? What are your experiences being a geek who wants more than a random business person with your SmartPhone?

Coming soon, hopefully some more info on developing for Blackberry.

References

Getting Started with Blackberry Pearl on Mac OS X
PocketMac Download
Use Netbeans for Blackberry Development

How Do You Deal With Blog Spam?

I assume that many of my readers are technical people and as such are likely to be bloggers themselves, so I post the question to you: How do you deal with blog spam?

I’m currently getting on the order of 30-40 blog spam posts a day. While WordPress does a good job of catching them, and I can mark them as spam (so no one ever seems them), like email spam, I’d prefer not to have to deal with them at all. In the past I’ve tried reporting blog spammers based on IP addresses to their hosts, but that’s even more work and it seems to have little or no effect on the volume.

Do that many people need Viagra? I didn’t even know what Hoodia was until I looked it up? (Oh and if you use any of these terms in replys, you’re going to get caught in the spam trap. So don’t.)

I’ve considered using a CAPTCHA but have not found a good plugin that will do it for me, and I generally find them annoying. Registration seems like too high a barrier to entry for casual posting. I’ve seen, but haven’t tried Akismet which is service that checks out your comments before it posts them. Anyone use Akismet? Does it work?

Are we stuck with blog spam? What other things can I do so that I don’t have to deal with these annoying posts? (Oh the irony, we’ll see if I get spam attempts before I get real comments.)

Thanks for the help…

Update:
In addition to CAPTCHA, I’ve heard of people doing things with JavaScript under the idea that the automated blog spammers don’t use tools that understand JavaScript. Some people have the actual form submit happen with JavaScript. Another option is to have JavaScript do some simple algorithm for the user and check the result. That’s the idea behind
Hashcash. I haven’t tried it, but it sounds like an interesting idea.

So, CAPTCHA, Hashcash and Akismet … and no more spam!

MKE Ruby Group

The Milwaukee Ruby User’s Group had it’s first official meeting last night. A few people showed up and we talked about some of our favorite ruby features. I talked about Metaprogramming a bit. There was also a good discussion about the Ruby Object Model. (Classes are Objects and Object is a class – holy recursion!)

Check out the site:
Milwaukee Ruby User’s Group

Sign-up to the email list if you want notification of meetings, etc.

Milwaukee Wisconsin Ruby Brigade

Ok, so I don’t know what the name is really going to be, but it looks like there is going to be a Ruby User’s group in Milwaukee. There was a kick-off meeting tonight that was well attended for a “getting things started” meeting. Check out the temporary website at http://ruby.georgey.org/

The first official meeting is going to be July 12th at 6PM.
The meeting will be held at the SpiderLogic offices at 10000 Innovation Dr. in Milwaukee (really Wauwatosa near 45 and 94).

The topic so far is going to be “Favorite Features of Ruby”. We’ll have a tag-team presentation with 4 or 5 people speaking for 5 – 10 minutes each.


Sorry for the lack of posting, we’re buying a house and work’s been busy.

Ohhh . . . the MacBook Pro

So I finally broke down and got a new Mac laptop the MacBook Pro to replace my 3ish year-old PowerBook. The initial impression I have is very positive. It’s got a very Buttery ™ experience. It feels way more responsive (as would be expected with dual core CPUs, each of which is faster than my single CPU in the old one) than my 1 GHz PowerBook G4.

Darwin Ports

I’ve been using Fink for quite a while, but during this transition I decided to check out Darwin Ports instead. Both of these systems provide an easy way for installing and maintaining a wide variety of the Unix utilities that are available. They handle dependencies and offer an easy interface to update to the latest version, uninstall, etc. Fink is based on the Debian apt/dpkg scheme. The Mac on Intel support for Fink is a little lacking currently and the packages seem to be rather out of date. They have Rubh 1.8.1 for example, which is even older than the one supplied by Apple.

Darwin Ports is a source based system fashioned more after the BSD ports collections. Darwin Ports has always been focused on the OpenDarwin project which ran on both PowerPC and Intel architectures, so the “transition” to the Intel architecture was much less of an issue for them. Darwin Ports was easy to install and easy to use. In a matter of minutes (did I say how fast the MacBook Pro is?), I had downloaded and compiled the latest version of Ruby, readline, openssl, etc.

Photo Booth

The MacBook Pro includes a built in iSight (branded) camera. The surprisingly fun Photo Booth utility is included. This is a simple little application that lets you take snapshots with the built in camera. It includes some simple effects which make the thing hilarious. You can take Fun House pictures of yourself that will have you cracking up.

So far I’ve found a couple of applications that I use that are not yet Universal Binaries like QuickBooks. No major complaints though, they are at least as fast as my older laptop which is fine for me.

I just can’t wait for the weekend so I can get some unintterupted playing time. :)