Development

Sauna Talk

August 22nd, 2008  |  Published in Development, Errata, Mobile, Nokia, Nseries, S60

I read a lot of blogs many of which are heavily devoted to technology, mobile, and the developers who love them.

This week I came across a new video series for N-Gage targeting developers and it’s strangely brilliant in a Finnish way. It’s called Sauna Talk because all the interviews, well, take place in a sauna. Beware though, clicking this link will force you to watch a lot of video content starring this guy.

The only thing that’s really lame about it is that there’s no RSS feed and there’s no way to easily share/embed the video. If there were RSS, I’d probably go back to the site more. And this totally needs to be on YouTube.

Children’s PressLine - RSS and widget for S60

August 10th, 2008  |  Published in Development, Mobile, Nokia, Releases, S60, Thoughts

I’ve been doing some pro bono web work recently for Children’s Pressline, a youth news service that trains kids to be reporters and editors who write articles for mainstream media partners. It’s a non-profit open to any child in NYC, and currently their news stories are being run in the NY Daily News, Metro, and the Amsterdam News.

The work I’ve done involves some basic tweaks to their website, setting up a Children’s PressLine Facebook page and creating a Children’s PressLine RSS feed that shows you their latest stories and links to the major media outlet running the story.

There’s not a mobile website, but just by having an RSS feed, that’s all you really need to get started reading the content on your mobile. If you’re reading this on your S60 device, you can just click on the RSS feed, and automatically subscribe to the latest news articles.

If you’ve got one of the newer S60 devices, though, then you can get a richer experience using this widget I made which pulls in the RSS feed and displays the latest news stories directly on your phone.

S60 widget (WRT)

You can download the Children’s PressLine widget directly, or scan in this QR code to get it straight to your mobile:

Get the widget

Total development time for this widget was less than an hour, and most of that time was just deciding which colors to use in the CSS. If you haven’t seen the Nokia Web Run Time, then I’d recommend checking it out as it’s going to be a great way to build quick applications for S60 devices. Right now, it’s only drawback is that it has almost no access to the device itself (e.g. GPS, Contacts), but Nokia has already announced these features will be included in the next major release.

If you want to see the source code of the widget, then just download the file to your PC and change the file extension from .wgz to .zip. Then open the zip file and all of the source code is there. It’s a very simple setup with one HTML page, and one XMLHttpRequest call to retrieve the RSS feed.

Let me know if you have any questions about how the widget was built, and I’m also interested to see how other people are using widgets not just for their personal use, but also to help promote causes they believe in.

MobileCampSF - June 14th

June 6th, 2008  |  Published in Development, Errata, Mobile, Thoughts, mobilecampnyc

If you happen to be in the SF area on Saturday June 14th, be sure and check out MobileCampSF at the Swedish American Hall. If you’ve never been to a BarCamp before they’re lots of fun. It’s completely free, and as of this post, it’s already around 70% full so RSVP now if you’re going to come. I’m hoping to talk some about this simple little project I’ve been working on lately. If you want a sneak peek at it, just scan the QR code below. Otherwise, wait until after BarCamp when I’ll post a full writeup of the project.

qrcode

Chumby widgets on the Nokia N82

May 20th, 2008  |  Published in Development, Mobile, Nokia, Nseries, S60

So I recently purchased a Chumby. According to UPS, it’s on its way here, and in anticipation of its arrival I’ve started reading about how to make your own Chumby widgets. Turns out, the widgets are all just 320×240 FlashLite 3.0 movies.

This is wonderful news.

Why? Because my phone also runs Flash Lite 3.0. So now if I’m going to go to the trouble to make a Chumby widget, I can design it to work on the Chumby and on my Nokia device. As a quick test, I grabbed some of the existing Chumby widgets and tried to see if they would run on an N82.

Out of the box, two widgets worked great — the MTV News widget and the Chuck Norris Facts widget. Some of the other widgets like weather and NY Times launched correctly, but I need to pass them some configuration details so they know what content to download from the web. That’s the next step.

Bottom line is that if you have an Nseries device that runs FlashLite 3.0, then check out Chumby as a source for games and things that you can load straight on your device. And in case you need proof, here’s Chuck Norris Facts running on an N82.

Yeah, yeah the video is kind of fuzzy, so here’s what it looks like on a real Chumby.

Blueprint CSS framework — and new Wordpress theme

May 12th, 2008  |  Published in Development, Errata, Thoughts

My co-worker turned me on today to Blueprint, a CSS framework that’s based on typography rules so it helps you design websites in a clean way. Needless to say, I think it’s brilliant and beautiful.

A quick Google search turned up a few Wordpress themes that had been developed using Blueprint, but the Blueprint theme by Fire and Knowledge stood out head and shoulders above the rest, so I’ve added it to my site. I still need to tweak a few things like the color palette of the Google ads, but if you’re like me and you typically just read RSS feeds in Bloglines or your favorite reader, then pop back to my site for a change and check out the theme.

the real dangers of xkcd.com

January 11th, 2008  |  Published in Development, Errata, Thoughts

There’s a great edition of xkcd today that talks about the different DANGERS indexed by the number of Google results. Brilliant and funny as always.

But not entirely accurate.

Here’s a little thing I wrote which will display the current stats for these particular search results. It’s set to update once an hour, though I’m not sure Google even updates their results that frequently. Love to hear what you think.

 

Nseries Workshop - good stuff for your N95

January 10th, 2008  |  Published in Development, Mobile, Nokia, Nseries, S60, Thoughts

I noticed over on Nseries.com that they have a new section of the site with a lot of articles about how to do cool things with your N95.

So I made a Google Gadget for it.

Non-Google users can just grab the RSS feed here, but Google users can just click here to add it to their iGoogle webpage.

Here’s a preview of what you’ll get.

 

 

Android Development - How to add a new contact, phone and email with the Contacts ContentProvider

December 21st, 2007  |  Published in Android, Development, Mobile, Thoughts

I’ve been dabbling lately with Google’s Android platform for mobile development. While there aren’t any announced devices for the marketplace yet, it’s an extremely open platform, and one of the simplest mobile platforms to develop for that I’ve encountered.

The Android SDK still isn’t “officially” released yet, which means there are lots of undocumented quirks in the system and a few inconsistencies. Some of them you can figure out through trial and error. Some are just annoying. I recently managed to triumph over one of these quirks and thought I would share the fruits of that labor. In this case, it’s specifically how to add a contact, phone and email address into the built-in Address Book using Google’s Contacts ContentProvider.

Let’s start by adding a new person to the address book. Just a name and nothing else.

// create a new name
ContentValues values = new ContentValues();
values.put(Contacts.People.NAME, "Test Name");
// add it to the database
ContentURI newPerson = getContentResolver().insert(Contacts.People.CONTENT_URI, values);

The newPerson ContentURI that’s returned by the insert() call is null if something went wrong. If it’s not null, then it might look something like this
content://contacts/people/1
where the number 1 indicates the new ID of the person you just created.

If you don’t get back an ID number, then you can’t proceed, but assuming all went well, then you can use that new ID number to add other information to the existing record. For example, to add a phone number:

// assign the new phone number to the person
values.clear();
values.put(Contacts.Phones.PERSON_ID, newPerson.getPathLeaf());
values.put(Contacts.Phones.NUMBER, "(800) 466-4411");
// insert the new phone number in the database
getContentResolver().insert(Contacts.Phones.CONTENT_URI, values);

and to add an email address:

// assign an email address for this person
values.clear();
values.put(Contacts.ContactMethods.PERSON_ID, newPerson.getPathLeaf());
values.put(Contacts.ContactMethods.KIND, Contacts.ContactMethods.EMAIL_KIND);
values.put(Contacts.ContactMethods.TYPE,Contacts.ContactMethods.EMAIL_KIND_HOME_TYPE);
values.put(Contacts.ContactMethods.DATA, "test@test.com");
// insert the new email address in the database
getContentResolver().insert(newPerson.addPath(Contacts.ContactMethods.CONTENT_URI.getPath()), values);

Adding an email is tricky because it’s doesn’t match the same coding convention as adding a new contact or adding a new phone number. To make matters worse, this mismatch/inconsistency is not documented well in the existing docs, so it required a lot of trial and error to figure out how to do this without causing an internal error in the emulator.

Essentially, the issue is that for contacts and phone numbers you can use a ContentURI like this:
content://contacts/people
content://contacts/phones

to retrieve existing records or to add new records to the system.

However, for emails this is not the case. For emails, you have to use different URIs for each function, specifically:
retrieve emails - content://contacts/contact_methods
insert new emails - content://contacts/people/1/contact_methods
where the number 1 is the ID of the person you want to add the emails for.

I’m sure this will become documented more clearly as Android starts reaching a wider developer community. Until then, hopefully these code snippets will save some time for those Android developers struggling to get their apps finished before the March 2nd deadline for Google’s $25,000 Android competition.

Have fun coding.

OLPC Unboxing

December 17th, 2007  |  Published in Development, Errata

Another co-worker got one of the new OLPC (One Laptop Per Child) machines in the mail today at work. We made another quick unboxing video so you can see the form factor of it.

Nokia N95 apps show how easily it trumps iPhone

December 10th, 2007  |  Published in Development, Mobile, Nokia, Nseries, S60

Today I was downloading the new Channels Media Service application from Nokia Beta Labs to test it out and see what it has to offer. The interface is pretty clean, but one of the nicest things I noticed is that Channels makes use of the N95’s built in accelerometer. I recently showed you the Lightsaber demo, but Channels automatically orients the UI based on how you’re holding the device, similar to what Apple always shows off in their iPhone commercial. Here’s a demo of it in action.

When the N95 came out it didn’t have this functionality. In fact, it didn’t even talk about the accelerometer. But you know what? Nokia is slowly releasing software updates for this device, and they’re slowly showing people more and more things that can be done with this device. Every time there’s a new firmware update or I find a cool new application, it’s like getting a whole new phone. And I’m just not seeing that with the iPhone. Web apps? Yeah, they’re okay and can be helpful, but they’re more like widgets that sit on top of an internet connection rather than something that truly integrates with the device. The N95 is showing me more and more that it’s retaining its value over time, whereas the iPhone price drop just says that it was overpriced to begin with.