Archive for the ‘Software’ Category

Wordpress.com

Tuesday, September 6th, 2005

Niall hooked me up with a Wordpress.com invite, which I converted into miker.wordpress.com. I wanted to check out how they had it setup, there seemed to be some interesting slickness in and about the admin area. It’s a nice setup, but I’m a pre-biased Wordpress fan. I didn’t want to just use up an early invite to play with stuff, so in the interest of helping out here’s how to setup Vagablog to post to a wordpress.com blog:

  • Go to the Server settings under the Options menu. The Host to enter is the domain name of your blog (in my case this was miker.wordpress.com), set the URL to “/xmlrpc.php” (don’t forget the leading slash), and set Type to Wordpress.
  • Now go to Identity, also under Options. Set your username and password.
  • Tap on the Blog List button, and then the Refresh button on the screen that pops up. Refreshing the list of blogs is the first time Vagablog actually hits the server, so if you now see the name of your blog in the list everything should be working fine. Select your blog in the list, it’s probably the only one, and tap OK.
  • Now you should be able to enter in a post title and text and post it. The category stuff should work, though I haven’t tried it. It used to be that the XMLRPC calls expected the number of the category and name didn’t work, not sure if that’s the case still or not.

There ya go! Image upload would rock. It would rock like ten times as much if someone else wrote it and gave me a patch for it. I’m kinda busy these days.

Gahbunga Launch

Tuesday, August 30th, 2005

I saw info of the Gahbunga launch over at Techcrunch. Sounds very much like the Fotochatter app we saw during the Mobile Monday demo day. Not that I’m complaining, two companies working in largely the same direction normally means there’s some validity to the model they’re trying to fulfill on. Overall the mobile communications options are largely person to person. The applications that open up the communication to a larger group normally do it with a set of known friends and help you stay connected to them. They’re introverted for the most part. There’s a bunch of interest these days in extroverted mobile applications. Mobile social software (Nokia Sensor, 6th Sense, Bluedar) seem to be popping up all over the place. The Fotochatter method is interesting in that it lets you form a community with whom you share your images, rather than sending to one person. And it facilitates an ongoing discussion of that image. The Gahbunga app is more goal oriented however. It’s not just “images from friends” that you’ll be getting, but images of people that someone else is looking for help rating. It’s voyeuristic, the people doing the voting get to look at some hotties, and it’s instant. Sure has the makings of a great app there.

However they don’t seem to have put any thought into the starting problem. The problem with most social applications is that it’s hard to get a whole group of people in at once, and when people sign up one at a time they quickly get bored cause they have no friends in the system. I signed up and there was nothing, I don’t have any friends in there (not that I know of at least). Give folks an easier way to start out. When then first show up there should be interesting stuff for them right off the bat. I signed up. There were two checkboxes I could use: “I wish to get rated by the whole gahbunga community” and “I wish to help others rate their dates”. I toggled both of them, as far as I could tell nothing happened in the interface. I have no messages on my phone. Apparently I don’t even have a notification email at the address I signed up with. More more more! I like your idea, reward me for looking into it. I’m out of time now though, and I don’t have a positive association built up yet. Oops.

Google Jabber Based IM?

Tuesday, August 23rd, 2005

After I was joking just yesterday that it would be great to have a major player with an open IM platform, along comes speculation that the Google release will be a Jabber based IM service. I have to admit I’m pretty intrigued. I’ve always liked XMPP, the protocol underlying Jabber. There have been all sorts of disputes about licenses and patents and who has the right to use what. And there are lots of XML purists out there who think that using streamed XML makes you a servant of Satan. But I thought XMPP took some great principles and blended them together. In particular, allowing for namespace divsion of messages and advertisement of capabilities in a way that was decoupled from the underlying transport. Just like, well, that whole internet thing. Deploying a new application on the Internet doesn’t require protocol changes to the core routers, and deploying a new application on top of Jabber doesn’t require changes to the core servers. I like that, I think that’s the way it should be. If Google deploys messaging services that build on those principles I’ll have to give them at least a little bit of respect. I think that would be a really fantastic and strong play.

More Location Based Messaging

Monday, August 22nd, 2005

The Social Software Weblog says Meetro is releasing versions for PSP and Nintendo DS. I like the part where companies are thinking about the new sources of input that mobile technology brings. Computing devices are more and more situated in their environments, which carries additional information that should be factored into software. However I don’t like the software release parts of all of these. Why are all these companies releasing software instead of APIs? When you’ve got a social application, like location based IM is of course, network effects dominate the uptake of your service. So why limit your users to a few platforms you have the resources to port to? Figure out how to make your business work with an API available instead of just software, and let anyone who wants to hook up to your backend. If you take a look at the overall outlines of Google and Yahoo, this seems to be what they’re going for. There shouldn’t be a silo of “online info and services” and then “location based info and services”. One store of information, increasingly including location information for everything. And the location based software just provides a different view and filter than the standard online version, but it should all flow back into the same system. What happens if I meet a great new friend with my location based IM and want to continue the conversation at some other point when I’m sitting at my desktop? Keeping a gulf between normal services and location based services is just adding to the switching cost as well.

Would be great if those big IM providers would open up their APIs for the messaging backend so that location based IM didn’t have to exist as a different system. Sure would be huh?

Fwing Photo Upload MIDlet for 6600 and 6680

Sunday, July 17th, 2005

One of my long standing pet peeves is that I can’t set tags when I send a photo from my phone. There were some postings a while ago about a MIDlet that posted to Flickr, but I couldn’t find it. And I haven’t written any MIDP code since early 2003. That’s a long time ago in Internet time. It translates on the Great Internet Timeline scale to somewhere around the Tiassic period. I really needed a quick refresher. So I fixed both problems by making a MIDlet that uploads images to Flickr using the POST based API. It’s ugly, it’s full of bugs, it doesn’t start up right the first time you try it, it can’t capture images unless there’s practicly nothing else running. But for me at least it works. So I’m going to invoke the “Release early, release often” mantra and just toss this one out there. If you want to give it a shot download here. Here are the basic steps for use:

  1. Start the app and bring up the settings form. You might have to start and exit and start again the very first time in order to get it to work correctly. There’s probably a problem there with the values for the defaults… I would test it out and find the bug. But that means uninstalling it to clear the record store, reinstalling to test out a fix, uninstalling again to retest. You see the problem there? The whole thing smacks of effort.
  2. Fill in your username (that’s your email) and your password. Fill in the defaults with new values if you want. Please keep the “fwing” tag as part of the tagset you use. You don’t have to, but consider this a kind request from the guy who released the project. I want to see how many people use this.
  3. Go back to the main form and fill in the title, description, and tags you want to use. Remember to please keep the fwing tag, see above.
  4. Select capture to go to a camera preview screen.
  5. Once you have a picture you like framed select capture again to snapshot it. Pressing in on the joystick should capture an image as well. But look at that, it doesn’t! It used to do that in the original sample from Nokia, but that one only captured images at 160×120. I’m sure it could be added back in. That is, it is theoretically possible to add it back in. The theory does not account for my laziness however. I’ve found that to be a general issue with theories.
  6. Select send if you want to send the image to the server, or back if you want to grab a different image. There should be a progress dialog there to let you know how far along it is. But the upload can take a long time, and I was sure people would get bored. So I included a little mini-game. It’s called “Guess How Long the Upload Takes”, and you play by staring at the screen until the info dialog comes up informing you of success or failure. You can even play multiplayer using a single handset!

You can keep looping and capturing and sending images with the same set of tags and description/title. That’s about all it’s good for, cause that’s what I normally do. You don’t like it? Think it should allow you to return to the top level and tweek description for each photo? Think there should be an option to pull images from the filesystem? Think it should spool images and upload in a batch? Think the bugs are too annoying to deal with? Good. This is the code for the initial version, download it and fix it yo’ damn sef. If you want to be really cool, send me patches or release your version and send me a note. License is GPL.

I’ve personally tried this out on the 6680 and the 6600, and it works on both. I’m assuming it should work with the 6620 and maybe a few other models. The image source is the back camera on the 6680. I have yet to find a way to capture from the front camera via Java. Images are captured at 640×480, try for any larger and the snapshot call consistently returns an exception. Not that I’m a Java programmer or anything, but there are some bits of code which may be of interest to some folks:

  • I had heard that the image resolution for captured images on the 6600 had to be the same as the display resolution when you’re working in Java. Not true. If you initDisplayMode() on the VideoControl with USE_DIRECT_VIDEO then just about any parameters you pass to getSnapshot() either cause an exception or get ignored. But if you init with USE_GUI_PRIMITIVE then you can getSnapshot() in the size you want. Well, not quite the size you want. I can’t get a full rez 1.3 megapixel image from the rear camera on the 6680, and I REALLY WANT ONE! The code I started with came from a sample on the Nokia site.
  • The 640×480 image is resized to 160×120 using a quick hack of an image downsampling routine I found online. Check out the scaleImage() routine in DisplayCanvas. It takes an immutable image and a width and height, and returns another image with the given size. J2ME doesn’t have an image resize available as far as I can tell, so that little routine might find it’s way into my standard toolkit.
  • The submission to Flickr is done as a multipart form POST. There’s a horrifically simple cover called MultipartHttpConnection that covers HttpConnection. Create the class giving it the URL to use, then you can addParam() and addFile() as necessary, and send() it when you’re done. I tend to do a metric buttload of server interaction on just about every project, and if it’s not XML it’s multipart forms. So that one is probably another keeper.

Vagablog Released as Open Source

Thursday, June 9th, 2005

I won the Treo 650 in the raffle at Palm DevCon a few weeks ago. I’ve also been bitching to folks at Palm about how they need to do a better job seeding their developer community. Not serving, seeding. There definitely is a difference. So of course I needed a way to show how a good toy in the hands of the right person could potentially make a difference. There were a bunch of people blogging the event with software that cost $25 per copy. Lightbulb over the head, halo of light, cue the organ music. That seemed like the logical place to start! Especially given that I had blogging software of my own to start out with. For a while (since 2003) I’ve been selling a simple Palm blogging app through online stores for a few dollars a copy. It wasn’t making me any money anyway, and I think a good blogging app for the 650 would really kick some ass. Something people could hack on and extend and come up with novel usages for. I figured I would toss my hat into the ring and release a free version of Vagablog along with the source code. There’s another tool out there called Plogit, maybe we can merge in some of that stuff. I’m assuming I don’t even have to really mention the really obvious stuff, like getting Vagablog to download pasts posts and store them in a local DB or getting it to support image uploads. I’m more interested in the not obvious stuff like audio and video blogging, scheduled uploading, calls to a service like the AJAX spell checker or other server side checker, or extending forms to allow mixing in microformats when posting.

Hackers Notes for the Treo 650

Monday, May 30th, 2005

Lets say you find yourself in possession of a nice new Treo 650. You’re no slouch. you’ve owned just about every form of PDA that’s come down the line. You know cellular well enough to sit up and pay attention when someone says EDGE, and to start drooling when informed that UMTS is available in your area. Your idea of bling is getting your device signed by Jeff Hawkins. So of course you can’t have just the standard list of applications on your Treo. You need the kind of application list and demo potential that will immediately establish your dominance as the alpha geek you are and send the lesser geeks scurrying off for their sync cables. Here’s my list of ultra geeky stuff I’ve thrown on my 650 in preparation for the countless showdowns that seem to happen whenever some hapless person asks “so what do you use that thing for anyway?” at the Mobile Monday meetings.

Before we start off at all, let it be known that you will need an expansion card. Hard to say if it’ll be for documents or audio or video or applications. But you will need one, and probably pretty soon after you start throwing stuff into memory on the device. Like many of the Palm devices before it (and completely unlike the Clie I currently have, grrr) the Treo takes both Secure Digital (SD) and Multi Media Card (MMC) formats. So what kind of card do you want to use with this thing? The first misperception is that the Secure Digital cards will somehow make your data more secure than Multi Media card. Not true. The “secure” part of Secure Digital applies to content put onto the cards when they’re used as a distribution media. It’s DRM, and therefor it sucks. It does absolutely nothing for you, and will actually keep you from doing what you want in some cases. I get MMC instead of SD when all other things are about equal specifically to voice my opposition to DRM.

There is another reason to go with MMC if you use lots of gadgets. Newer phones and some cameras have started using something called RSMMC (Reduced Size MMC, it’s described in the Wikipedia article). No one really needs another format, so that’s kind of a pain in the ass. But at least they threw us a bone in that RSMMC cards can be snapped into a little adapter and used in normal MMC devices. That’s decent enough. And if you do use a bunch of devices it might be worth it to get the more expensive RSMMC so that you don’t have to get another card when you do start using an RSMMC device. Got it? BUT WAIT! Of course, now that we’re getting close to an obvious answer for the alpha geek multigadget folks, it can’t be that simple. Nokia has thrown in another twist. For some reason they decided that the physical compatibility available with MMC/RSMMC was an evil that needed to be dealt with, so they went out and broke electrical compatibility. Yay! I was really afraid that I was going to be able to use the same media format in more than one device, so thank you Nokia for putting those fears to rest. Nokia have introduced the Dual Voltage Reduced Size Multi Media Card (DV-RSMMC). Groan. Eyeroll. As you might expect, the format is backward compatible, but not forward compatible. If you have a DV-RSMMC you can use it in a RSMMC device or with the adapter in a normal MMC device. However, your normal RSMMC card will not work in some of the newer Nokia phones (such as the 6630 or the 6680, two devices you’re pretty likely to run across if you run with the Nokia pack as well). So the answer would seem to be getting the DV-RSMMC, but there are two problems. One, the DV version can cost more than twice as much as the standard version. Two, up until just a few days ago the largest size DV was 256 meg, and it’s still only 512. I’ve seen RSMMC in sizes up to 1 gig, and there might be bigger for all I know. So take the two times multiplier in price, limited availability, and current limit in overall storage capacity and you’re back to making a real value judgment. I went with a large RSMMC, it was relatively cheap and I was able to walk in to Fry’s and get one off the shelf.

So what is one to put on this neat little device bristling with unfilled megs of storage space? One could purchase all kinds of software from one of the online stores, there are literally thousands of titles spread across the different commercial online Palm stores. Yawn. Not my style. I recommend one of the Palm open source sites, like the aptly named PalmOpenSource.com for all of your code and coding needs. Here’s a bunch of stuff that I either had on my Clie and have moved over, or picked up recently.

FileZ actually isn’t open source, it’s freeware. But we’ll forgive it that shortcoming because it’s such a useful application and really a base requirement. It allows you to view a list all the databases in the built in memory and the files on the expansion card, get information and attributes, sort and filter, move, copy, or delete. Basic filemanager functions, for some reason not built into the Treo but definitely essential. The document reader of choice is Plucker. Plucker uses an optimized compressed document format, which is another way of saying “no, you can’t just transfer documents over from your desktop.” For Plucker it’s worth it however. Lots of content meant for the PDA is already available in Plucker format (open source projects do make their docs and readme files available in Plucker format frequently). And there are a bunch of Linux friendly tools available to convert files to Plucker format and crawl web sites to generate snapshots for reading offline. They have a bunch of interesting stuff in the samples area of their site if you’re looking for something quick to try out. Sites like MemoWare provide fantastic catalogs of free documents if you’re looking for content instead of generating it.

FileZ on the 650 Plucker on the 650

The most recent addition to my list of programs is TCPMP, a multiformat media player. It handles a bunch of audio and video formats. A lot of the video content I pick up off the net ends up being AVI, and I’ve had fantastic luck with that so far. Video has a lot of wow! effect even with the nontechnical crowd, so it’s just good stuff to have around to show off. And it works well as a podcast player as well, with support for mp3 audio content. I’m listening to a lot of audio on my daily trips on Caltrain, but I haven’t used it for long enough to get a feel for how the audio player impacts battery life. It does support background playback however. Startup a file and press the power button, the screen goes off and the audio keeps playing. The LCD is really the big power drain in Palm devices, so playing back with the screen off should buy you a lot of battery time. And speaking of commuting, for those in the Bay Area you’ll probably want to grab Caltrain+ and Quickplanner. Caltrain+ is a Caltrain schedule, and Quickplanner is a BART trip planner. Simple, but extremely useful to have. And finally there’s pssh for the time when you absolutely positively MUST SSH into some system right away. For some of us that’s pretty much a daily ocurance, so this is an extremely valuable tool. My personal favorite experience was SSHing into my server using pssh so that I could compile the palm chat application I was looking for and then moving it out to my public server so I could install it over the air. An excellent reason to do the happy dance. I’m not sure why they haven’t added a related question into the geek code, major oversight in my opinion.

TCPMP on the 650 Screenshot of pssh on the 650

Okay, all those are great tools and applications, we had a little productivity, a little entertainment. Now it’s time for some pure and unrefined nerditry. Welcome to on-device development tools. We’ll start off with my personal favorite, LispMe. LispMe is a scheme interpreter with extensions for the Palm platform. You can actually script up GUI applications, although you have to generate the resource files outside of the scheme environment. It does have sockets support, so scripting up little network apps is a cinch. LispMe has been around almost since the beginning of Palm time, fantastic app, but I would still replace it with Pippy in a heartbeat if Pippy were just a bit more up to date. Pippy is Python for the Palm, but it’s based on a very old (1.5.2) version of the language. Compiling the system and getting it working requires very specific versions of the Palm compile tools and a host system version of Python 1.5.2. The project is old however, and seems to be stalled. With all the geeks picking up 650s I’m really surprised no one has thrown down yet and picked up the project. Nokia has Python for the Series 60, it would be dead sexy if Python could be a cross platform dev language for mobile devices.

LispMe on the 650 Pippy on the 650

Right about now some of the old school hackers are saying something like “You people are all spoiled. Running dynamic languages on systems with megs and megs of storage space and more processor cycles than I can shake my walking stick at!” I’ve always had a soft spot for those guys. I do a lot of embedded systems work, and I got involved with personal computers when they did have just a few kilobytes of RAM (two kilobytes if you want to be precise). So I understand the yearning for the good old days when you flipped on your system and you were presented with a usable interface running out of a few K of prom. Fortunately when that urge hits you can just fire up Frodo and hack away on everyone’s favorite 6502 based micro. Frodo is a Commodore-64 emulator with support for saving multiple sessions and loading up disk images. The keyboard support used to be a little lacking on my TG50, but on the Treo it works fantastic. Finally, there’s the project that should not be. The Frankenstein monster of the development options - the OnBoardC suite of tools. Yep, that’s right. OnBoardC provides a C compiler, assembler for m68k, and a text editor app. All running on the device, so you can hack on the code, compile it, test it out, and end up with a real honest-to-goodness 68K palm application needing no support libraries or runtime environment. Unfortunately most work requires a commercial resource editor, but most of the time you’re not starting an application from scratch if you’re playing with OnBoardC. The toolset includes some host side scripts so that you can package up GCC or Metroworks based projects and work on them on your device when you’re on the road. The SrcEdit editor is a pretty decent general tool on it’s own as well, reading from and writing to a common Palm format called simply Doc. Apparently the world was a much simpler place when they came up with that name.

OnBoardC on the 650 SrcEdit on the 650

This isn’t a complete list by any means, just the stuff I happen to have with me most of the time. There’s a ton of stuff out there still. The Palm environment used to be a thriving ecosystem of open innovation and sharing, and I thought it was destined to become as widespread and strong as the Unix culture. Lately it’s been pretty dead however, and the old freeware and open source sites feel more like abandoned strip malls than hotbeds of innovation. Palm has a chance to get back into the game with the Treo 650. PDAs are a small and saturated market, but phones are seeing fantastic growth. If Palm can recapture the minds of developers the way it did with the early models of the Palm Pilot and ample support for the open tools used to hack it I think they could start making waves again.