Archive Category: development journal

January 18, 2007
GPS Chimes

gpschimes.jpg



GPS Chimes are wind chimes that are triggered by my proximity to home -- built with Mologogo and a Phidget Servo. Think of it as mile-wide radius around the wind chimes, where my networked presence and GPS location send a virtual breeze to announce my travel home.


More photos, instructions, background info, and source code available here.


January 12, 2007
Of the browser road ahead

ff_v_ie.jpg


Read/WriteWeb has an interesting post about the road ahead for both Firefox and Internet Explorer:



Mozilla recognizes that its strengths for normal users are its extensions and customization....So Firefox is aiming to be the best general Web browser - e.g. it wants to be faster for AJAX apps.

...

Among the mandatory requirements listed for FF3 are improving the add-on experience, providing "an extensible bookmarks back-end platform", adding more support for web services "to act as content handlers" - all of which show that Firefox wants to be an independent information broker rather than a simple HTML renderer in its next version.

...

Looking ahead, it's obvious that IE will continue to hook into the advanced functionality that Vista offers.



It's certainly no surprise to anticipate that IE will deepen it's hooks into the OS, making advanced features of Vista available. As long as that doesn't make it a giant security liability, then it seems like the obvious choice. Firefox, meanwhile, opening more directly up to web services could face similar security issues.
Either way, there is too much of an install base for the countless javascript/AJAX apps out there to have either new browser break what works now....in the depths of the browser wars years ago, sites were forced to adapt -- in todays environment, if a new browser release doesn't work with core online applictions, such as gmail, yahoo, or hotmail, expect that users won't upgrade.




Read the rest at: Firefox 3 Plans and IE8 Speculation - Browsers Heading Apart Again

January 3, 2007
Dropping the Ball in 2007
fireworks.jpg

In a discussion with my son last night, way-too-late-youshouldstopaskingquestionsnow-late, he asked what "dropping the ball" meant (in relation to New Year's at Times Square). Of course, we also talked about winter in Antarctica and the governing system of Finland (constitutional republic, if you wanted to know).

Dropping the ball means more than that -- it means leaving things, goals, responsibilities behind that you didn't mean to abandon. So, equally in the spirit of the New Year, I share the great MEX manifesto for mobile user experience. Let's hope this is the year that there's at least some semblance of motion towards these goals -- my favorites are #2 and #9, and I offer my humble tweak to #8:


#2) Tearing down the walled garden will enhance the mobile content experience and release value for the industry. The objective should be a free market for content and applications, based on open standards and accessible to all. We think the current fragmentation of formats and channels to market is holding back growth.

#9) The mobile experience is limited to voice and text by in-efficient search and discovery mechanisms. We think any service should be accessible from the standby screen and it should be as simple as dialling a number.

#8) Mobile devices are the natural choice for interacting with communities. Sharing experiences through your mobile device should be as simple as making a voice call. Wegravitymonkey thinks the success of user-generated content, social networking and community interaction through mobile devices will depend on enhancing developing innovative, mobile-specific paradigms of communication rather than replicating the desktop experience.


Go read it all, and don't drop the ball in 2007 (unless you're this guy, in which case, drop it!).

photo by c0nd0r2
May 17, 2006
Google Web Toolkit

Laugh out loud, snarf the coffee, great idea: The Google Web Toolkit.


Google Web Toolkit (GWT) is a Java software development framework that makes writing AJAX applications like Google Maps and Gmail easy for developers who don't speak browser quirks as a second language....

GWT lets you avoid many of these headaches while offering your users the same dynamic, standards-compliant experience. You write your front end in the Java programming language, and the GWT compiler converts your Java classes to browser-compliant JavaScript and HTML.


March 20, 2006
tags + auto-classification + 3D : "cloud brain"

I've been toying with some concepts about tags, shared tags and the ability to uses tags as an engine for various things...trying to find any sort of emergent behaviour that may mesh well with my various interests. While it's easy through del.icio.us to see the crowd, I'm wondering how I can dig up the wisdom (see also, Clive's Slate article and his recent pong post).


So I tossed together an experiment in processing, using some of the parsing code I had from Shrunq, and a java library called Classifier4J. It grabs each and every URL available from my del.icio.us feed, and parses and classifies each. The result is a 3D representation of my tags, where their Z-location is based upon the "ranking" of the tag -- much like a tag cloud -- with the actual terms used for classification pulsing behind. Once it's loaded you can click to have it grab pages to test, to see how well random webpages match up to the classification that we've created.


I've already written about this, so I'll do an incredibly silly thing, and quote myself:


I've started to amass a bunch of links in my del.icio.us account. It's not just a bunch of random junk, but it's stuff that I made a point of noting that I had to remember -- at least enough to go to del.icio.us to post it. Tag clouds are cool, and it's a nice way to quickly see the tags, and thus, topics that are most interesting to me.

But I wanted to know more about each tag, to know more about what's under each: What makes that topic more important to me than that topic? How are my tags interrelated? Are there things that connect seemingly disperate topics -- such as "buddhism" and "J2ME" and "wifi"? That is, other than me?

There. I make a lousy quote. See the applet in action, read more, or watch the thrilling video. There are certainly some next steps to this -- just not sure exactly what.

If you'd like to check out a cloud brain based on your tags, let me know, I can build it from my laptop. I've thought about building it out so that people can request it online, and my server will automatically queue and create the necessary data files -- but I'll only write that if enough people are interested...

March 9, 2006
Sprint and the Location API

Stumbled on an interesting Slashdot post from Sprint about their developer program. I do believe the author is the guy behind Nextel's program -- hopefully Sprint will be able to adopt the openness of the Nextel position some time soon.

JSR 179 & OEM Location APIs: Location is a tricky one. The APIs themeselves don't require signatures, but getting the SDKs and tools with which to compile apps that use them on CDMA phones require additional approval. Nextel historically opened up the GPS APIs on the phone to anyone, and the only requirement was a phone-triggered privacy consent for location transmission; that's still the practice we're following for all Nextel phones. On CDMA phones, it's different--the location infrastructure that allows the GPS chip on the phone to get a location fix uses the data network more extensively than does the infrastructure on iDEN, and every location fix carries an actual monetary cost to Sprint. Our position determining equipment (PDE) servers on CDMA are sized based on certain usage assumptions, and a sudden spike in the frequency of location fixes that could result if that SDK were freely downloadable. We're working on changing all of that so that it's no longer a problem to distribute the SDKs, but it'll take some time.


...


I know that these things don't necessarily say what many would like to hear -- that it's all free, that all you have to do is get a cell phone and go for it, and that there's nothing standing between you and mobile glory. But there are options:

  • Try it on an iDEN phone....
  • Try it on a non-phone...
  • Drop us a line....

  • Link.

    November 21, 2005
    Camera Code

    ferris_wheel.jpg

    So, you wanna develop in Java for your Nextel camera phone? Let's say it's something simple like a simple snapshot program, much like Jonathan Knudsen's early tutorial: Taking Pictures with MMAPI. There are a bunch of particulars of the current crop of Nextel iDEN phones to consider, and the best source for that info is currently available at the iDEN developer site, in the form of the "Developer Guide 2005".

    There's a lot of sample code out there, even in the examples above, to get you started. Although the i830 emulator claims to be able to use a webcam to provide functionality in the emulator, I have never been able to get it to work, nor find any information about how to get it to work.

    However, I wanted to document just one aspect: how to get the app on the phone to test it. First of all, just to test the app on your phone, you'll need to sign it. Why? Because by default the phone will require explicit user permission to access the getSnapshot method -- thus if you don't sign the MIDlet, it will pause the MIDlet to ask permission, then restart, making for an awful lot of coding specific to handling the pause to get to see your app to work. Luckily most of the iDEN emulators and the iDEN J2ME 2.0 SDK include a tool to temporarily sign your MIDlet for 48 hours.

    Here's how you do it:

    1) Go to the bin directory in your iDEN SDK directory. For me, this was C:\program files\motorola\iDen SDK for J2ME (MIDP 2_0)\bin\.

    2) In this directory you'll find a batch file named util.bat. Run it! If it doesn't run, that's probably because the keytool accessory isn't in your PATH. Typically this tool is in the bin directory of your JDK or JRE install. Add this to your path (i.e. To set the system path under Windows NT, 2000, XP, right click on My Computer and go to properties. Click advanced, then environment variables. From here, go to the system variables window and click path, and then add the full path to your JDK or JRE bin directory. Notice that the directories are separated by semi colons).

    3) Once you run utils you'll see a little application that can do a few things for you. All I care about now is the "Sign Midlet Suite" button. Hit that.

    4) Use domain "OPA". Enter the IMEI from your phone -- I found that the full IMEI from my phone was one number longer than the numbers the app would accept, but I found that removing the last number in my IMEI (which was a 0) was enough to make it work.

    Okay, so that'll do you enough to build and debug a camera app on your Nextel phone. Lovely. It would be nice if the emulator worked, but this is better than nothing, right? Now that you've got it working well, the next step is certifying the code then distributing. Well, those are two decidedly non-trivial steps.

    To have your MIDlet code certified you'll have to get a code-signing certificate from someone like Thawte or Verisign. And they require:

    A. Valid Business License or Business Registration document

    B. Articles of Incorporation or Certificate of Incorporation

    C. Articles of Organization or Formation

    D. DBA (Doing Business As), Fictitious Business Name, Trade Name, or Assumed Name registration

    F. Charter Documentation (For Banks, Universities and Government Agencies)

    Uhh, crap. None of the above match up for me, some little individual developer without a commercial entity to support. Besides, it's about a $400 cost to get the little digital ID, so that's a bit much for a guy who's mostly interested in giving applications away.

    Anyway, there's always the hurdle that even if I get a DBA from the state of New Jersey, buy the certificate from Verisign, I would still need to get approved by Nextel as a certified partner in order to be allowed to access camera features without having to ask for permission (perhaps at all, perhaps every time...I'm not sure). Even getting that kind of buy-in from Nextel is not a given -- as the stuff I want to build with the camera are mostly software features that I don't want to charge for. That kind of flies in the face of any credible business model, including the need at Nextel to profit off of any software delivered through their networks.

    So, there you have it. Some concrete advice to get a camera app on your phone, but still some hurdles left to overcome -- not technical, but perhaps all the more daunting. Let me know if you have any feedback on issues like the MMAPI emulator or the whole code-signing/certification process.

    November 16, 2005
    DIY Cellphone

    surj.jpg


    From C-Net News.com, an article about homebrewed cellphones:

    Surj Patel is building his own cell phone, bit by soldered bit.

    ...

    Patel says he has lost patience with even the slimmest Motorolas and most advanced Nokias. He has been trying to build new features for cell phones for years, and he--like a growing number of other impatient developers--has concluded that phones have to be as flexible as ordinary computers if he's going to make progress.

    "I want the phone to be much more open," Patel said. "The world's best research and development lab is all the hackers out there. Enable them, and they'll do it."

    ...

    Patel is helping organize an Emerging Telephony Conference with tech publisher O'Reilly Media in January, where he hopes to show off as many grassroots development projects as he can find.

    Man, do I need to comment? How about a simple -- "Hooray!". Go get 'em Surj.

    October 11, 2005
    Mologogo

    If you're using Phapper, you should really move on over to Mologogo (MObile LOcation). Not only did I finally address the North America only issue (which means this one has satellite maps), I'm working with a brilliant partner who's taken care of all the server-side issues and provided a ton of great ideas. You can now view friend's locations, follow a friend, annotate locations, etc. etc. Phapper is officially unsupported -- Mologogo is now the way to gogo.

    Did I say "free"? Yup. Go sign up now!

    August 19, 2005
    Phapper

    updated 8/29: fixed library problem with both versions, so if you experienced any problems installing (verifying) phapper so far, please try again!

    A new app from the labs at Gravity Monkey: Phapper. By now you may have figured out that one of the only reasons I like building stuff is so I can name it. Like, for example, the "liver". Who the hell named that? 'Cuz you need it to 'live'? Pretty literal, but nevertheless, must've been fun coming up with that one.



    Back to the topic, and not just of rather literal names -- this new app I've got here is a PHone mAPPER. I thought about naming it "Elizabeth's View" after this classic (that is, a view from the heavens), but it got the "I dunno about that..." response from the missus.



    Basically, with Phapper and your Nextel GPS enabled phone, you can see Google Maps on your phone [not in all it's AJAX'y scrolling goodness, but as a map, OK?]. Or, if you don't have a Nextel GPS enabled phone, you'll have to type in your address -- or whatever address you want, really. The phone figures out what zoom level and what tiles match up with your position, then grabs a composite image made up of Google Maps' tiles from the server (so you'll need internet access from your phone). Your current position is plotted with a little flag, and older points (if you're using GPS) show up with red squares. As the plots get older, they get lighter -- so you'll leave a trail of ever-lightening GPS spots about the map as you move around.

    But, here's the trick. It's free, of course. Because it should be, and because I wouldn't want to step on Google's rights. Hopefully this falls within the sense of "fair use", and "Don't be evil". The other trick to it is that it's based on the tile scheme from the initial rollout of Google maps, before the integration of the Keyhole satellite imagery, which means there are some important caveats:

  • North America only
  • Will work only as long as Google Maps chooses to support the plate carrée projection


    Thanks to a bunch of folks who documented this stuff --including Jeremy Dunck, Ajay Shekhawat, and a nice explaination of the satellite tiles and the projections from the incredibly talented Mark Pursey.

    If you've got a regular old (no GPS) cellphone, you should also check out Cristian Streng's Mobile GMaps, as he includes satellite images and Microsoft's maps, too!

    Where to get it? Go to the new Gravity Monkey download page to grab a copy. It's free, so I'll do the best I can as far as installation support and app support -- contact me if you want.

    Next steps? Oh, there are plenty. Sharing locations between users, implementing an integration of local data and locations, perhaps through shrunq. Push-style notifications when someone is in your area. Games. Lotsa stuff. Lemme push Shrunq off into release and I'll come back....gimme some thoughts and feedback and I'll see how far we can take this.

  • May 9, 2005
    Trojan.Vundo.B Gone!

    How much of a pain in the butt was that? Somehow my home computer (XP Pro) got infected with the Trojan.Vundo.B virus. Not sure how I got it, but I don't really have a solid excuse -- hadn't yet installed SP2, been clicking "Later" on the reminder to renew my Norton subscription. Not that I'm so sure it would've stopped it either, as I started seeing symptoms -- the telltale hijacking of Google searches redirected to Search42.com, the CD Rom running at strange times and at all times all by itself -- a few days before anybody identified it, and about a week before any fixes started to surface.

    There are a few solutions floating out there, and while it seems like some of 'em do work (at least for others), I would say conclusively that for me, running XP Pro, with SP2, that the following solutions plainly couldn't work:

  • The Symantec Removal Tool: This can identify the Trojan, and remove and repair most of it, including fixing the registry. It is able to identify the problemmatic DLL, which for me was placed at in the WINDOWS\APPPATCH directory, named nutinfo.dll. However, even running the tool in safe mode, it wasn't able to remove this DLL. The DLL lodges itself in the winlogon process, so it was always "in use" by the computer, and protected from deletion. So, upon restart, no matter what kind of restart (even in safe mode), the Trojan propagated once again. Basically, following their instructions, time and again, it failed to remove the Trojan from my computer.

  • Various groups and boards noted another solution, using the McAfee command line app, and a few bat scripts. I was more than a bit reticent taking advice that included getting a fix of a BAT file used to FTP down files...sounds like a prescription for further infection. However, this was a bit more promising, and the app identified and removed a few apps that it decided were suspicious. However, in the end, the result was the same -- it was unable to remove the DLL because it had masterfully hidden itself in winlogon, and was shielded from removal tools under guise of XP's "security". Who knew that Windows new security was actually designed pretty well? Who's surprised that it was able to harbor and protect a trojan?

  • It's clear the key to it all was killing the DLL. Now this Trojan was taunting me -- with searches on Google it would pop-up an ad for some kinda Windows antivirus application. Some pointed to this great app Process Explorer, which allows you to see threads and DLLs that are executing on your machine. While it seems that this app worked for some (perhaps NT users?) to suspend or stop the winlogon process, it couldn't do it for me.

    I wasn't able to install the XP Recovery Console from my existing install, so digging up the original CD was my last hope. That, or running Linux, of course -- and yet, I doubt that I would be allowed to live without the Sims 2, or any of the series of Tonka or Thomas games that fill the harddrive. But one last rummage through the desk drawer revealed the actual Windows XP install CD that came with the computer, still sealed in it's prophylactic plastic wrapping!

    Booting from the CD allowed me to run the XP Recovery Console, which despite requiring a administrator log on, didn't run winlogon and block access to nutinfo.dll. A simple del from the command prompt, and the DLL was gone. Another run in safe mode of the Symantec tool, and an all clean was proclaimed.

    Simply put, if you've got a similar set up -- Windows XP Pro, with Service Pack 2 -- you may experience a similar hassle with trying to get this evil nuisance off your computer. I would suggest running the Symantec tool, following their instructions. If that doesn't solve it, note the full path of the DLL it can't delete. Then run the XP Recovery Console and delete that DLL by hand.

  • March 10, 2005
    Broccoli

    tree.gif

    A fun processing applet: tree from texone.org. It takes a URL and converts the site, including links and content, into a tree, with external links creating other trees, and thus a forest of information. The trunks reflect a unique color for each domain, and the branches (I believe) represent pages, and leaves are individual bits of tags or content. The image above is the output of this site -- which looks like a few stalks of black broccoli with a touch of blue ink.

    A nice example of the power of processing (with more examples in the exhibition). What truly sold me on these guys is that they also did a midi output of this information, and the resulting mp3s (a few sample versions available on the site) are awesome.

    March 9, 2005
    Mark Pursey's Zen Point

    333.gif


    A beautiful concept demo, and heck, a beautiful concept from developer Mark Pursey called "Drivey" -- a NPR [Non Photo Realistic] driving simulator, found via the Indie Game Dev blog.


    It was conceived as a driving simulator for old farts like myself, who are kind of nostalgic for the "old days" [ca. 1985] but are not so thick as to believe that the games from the 80s were actually in any way superior to the games we play today. They weren't. Their greatness was all in our imagination. Try playing them now and if you're anything like me you'll be surprised and mildly disappointed that what once seemed so amazing can now appear so boring and ordinary. And I'm talking about gameplay as well as graphics and sound here.

    That is not to say that I think modern games are so great. In fact I consider most of them overly complicated, expensive and demanding. So what Drivey is supposed to help me explore is that zen point between realistic and symbolic representation, some concept which might engage your brain in the same way that perhaps a graphic novel might, giving the reader only the visual essence of a world, and letting imagination do the rest, leading [hopefully] to a more engaging experience.

    I love Mark's point here about a more vivid reality somehow being less real. We've all driven from one place to another, perhaps a well travelled commute, and arrived and realized they have no recollection of actually driving or seeing a damn thing. There's just so much to focus on when you're behind the wheel, one of the first things we learn to do is to figure out what to focus on and what to ignore. And when you try to cram it onto a screen, without the G-forces, the wind, the true reality of it all, the result is probably more of your brain realizing what's missing from what's real -- instead of filling the gaps with your imagination.

    The venerable Clive Thompson has mused about this point, over at Collision Detection, specifically in reference to faces. And, it's hard to get in a discussion about "creepy computer generated faces" without going back to point to Ward Jenkin's critique of "The Polar Express".

    But, back to Drivey. It's so darn beautiful, I wish I could actually drive in that world -- no obnoxious lane switching, phone yakking, W bumperstickered jerkoffs -- and perhaps that's a better goal than trying to replicate some extended reality into a game. But to make a game that's better than reality.

    Even with the keys for all the whole arcade, Pole Position was always my favorite. Thankfully there are a few of 'em left.

    January 13, 2005
    Dumb Questions

    bberry.jpg
    In the best interest of both reminding myself of stupid mistakes, and getting a googled answer out there for the world to also avoid said mistakes, here are two stupid errors I've encountered in developing with the RIM Java Development Environment and the Blackberry Simulator:

    1) If you're using the Blackberry simulator and connecting to the internet, turn on the MDS Simulator. This seems straightforward, once you realize the issue, but if you're getting your feet wet with using a connected Blackberry by developing for it, you may not realize the need for a Mobile Data Server, nor the need for running the MDS simulator when running the device simulator.

    2) VerifyError: If you call a primitive that is not a part of the MIDP package (such as double or float), the app will compile fine in the development environment, but it won't verify and won't run in the simulator. Basically, if you run into verify errors with your Blackberry app, check to see that you're in compliance with any libraries or primitives you may be using. In my case, I was running into a problem with a graph that was looking funky because of overzealous int rounding, so I changed 100 to 100.0. Duh! After a lot of fuss trying to find the problem, including cleaning up my project and workspace, etc., I figured it out through a post on the Blackberry developers message boards (not google-able).

    October 8, 2004
    blogged up

    So, the single post on the eyebeam reBlog unleashed a wave of attention to red | blue -- and while getting slashdotted didn't knock over the server, a little mention from Wonkette clocked the most traffic on Tuesday. Since then, it's nice to see the reaction, and especially nice to see all the people installing and running the app. In case you're wondering, the servers generating the most references as of today are from the United States Congress (for obvious reasons), and Sun's proxy servers (probably from this little mention in Jonathan's blog).

    An article in C-Net is here (note to others -- avoid embarrasment, don't confuse C-Net and C-SPAN when someone calls), and I've talked to other journalists, too. Unfortunately, I feel like a stumbling...well, I guess, uhhm....geek, when talking about this stuff. Luckily there are people a lot more eloquent explaining why it's so fascinating (from v-2):


    Most even mildly attentive people have considered, from time to time, the fact that we're continually bathed in latent data about place. Any given point on Earth you should happen to visit has an all-but-infinite series of correlated facts by which it can be characterized. We're literally living in a sea of ambient information.

    All kinds of ambient information: facts about climate, about geological history and composition, and so forth. Some of the most interesting stuff is, of course, about the human makeup of a given point on the map: who lives here? What do they do? What do they believe? For the most part, though, this data is difficult or impossible to access, least of all when you're actually at the place in question.

    Go read the rest of it here, Adam does a wonderful job explaining some whats and whys I have barely been able to mumble. I'll be updating download information as the days go on, and I plan on releasing source once the election is over. Let me know if you run into problems -- I *think* there are at least 500 users out there, so there are solutions to most issues.

    October 4, 2004
    red | blue, from sea to shining sea

    red | blue is now available in three flavors -- the original Nextel GPS version, a version for Blackberry, and a quasi-generic version for any Java/Internet enabled cellphone -- just in time for the stretch run to the election.

    With inspiration and data from Mike Frumin and FundRace.org, red|blue transposes the experience of looking up individual campaign contributions onto a Java-enabled phone. With a GPS-enabled phone, the application will take your current location and figure out if you're in a Democratic area or Republican area. The app will also take this information and plot it around you -- in a compass -- to show which direction the money comes from. It's fun to walk or ride about the city, and see how the money changes -- and see how that's reflected in nature of the neighborhood or your surroundings.

    For the many without GPS capability, you can enter in your current address, or your current zipcode to get the same data, if you use either the Blackberry or generic-java-cellphone version. These versions aren't quite tweaked out to optimize for the device, it's more of a general J2ME version that will be subject to the whims of your handset's implementation. You get the idea, tho'. It would seem silly to do something like this without a Blackberry version, right?


    You can find out more, and download files for installation. The apps are also available on Handango, which will give you more support and structure to manage the install process -- which is varied by phone and carrier. Use the Free Trial Version -- it's fully functional, no need pay any money (I need to offer a version for $$ so that they will list it). If you install it and run into any problems, or can share any phone or carrier specific tips -- lemme know!


    September 22, 2004
    Browse About

    Mike Maskin has a note on The Feature about downloads of Opera's Symbian OS-based browser, now with download numbers over a million, and points out the silliness of comments from 3 UK's COO that "Anyone in their right mind who tries to do anything on the Internet with a screen that size has to be nuts."

    We've all long known about the success Opera has had in carving out a unique, albeit small, space in what was once a crowded field of browsers. People can't be limited by rinky-dink WAP browsers stuck in a carrier's walled garden. The WAP experience is merely functional, at best. But for anyone who's craved access to information and been stranded with only a phone -- WAP can be handy, if the site you need supports it. Or then again, maybe I'm nuts to access the internet with a screen that size. Or maybe my nuts are the size of the internet screened. Something like that.

    Reqwireless has been out there with their J2ME browser for some time, and seem to regularly place near the top of Handango's popular product listing -- at not a cheap price, I might add. There are aspects of their approach, or at least the results of their approach, that are strong, and yet -- even having written and discarded a few Java based web browsers, I'm feeling that itch again to build another one, to build my own browser. Maybe open source, maybe focused on performance and usability adaptations for mobile devices -- how can the browser affect page-to-page navigation so that it's easy to use?