Geon

ProcrastinationOn: Apply Directly to the Forehead!

It was almost 9 months and 200 posts ago that I thrust my pre-alpha version of Geon into the world for everyone to see. Thanks to my innate shyness I didn’t go the whole hog and release it into the wild for the whole world to see and I’m still glad for that as the first version was, to put it lightly, a smoking pile of crap. Had anymore than about 5 users got on it at once (the record stood at 2) my server would have fallen on its face trying to deliver all the content over my poor little 1Mbps connection. The saving grace of Silverlight taught me that I could use my client side programming skills to do what I wanted on the web without having to completely relearn everything and the next few versions of Geon came along that much faster.

Right now I’m comfortable enough to let every reader of this blog know that there’s a new version of Geon up (those adventurous amongst you would’ve noticed a link to the new version in a previous post) and it comes along with a UI change that I had been alluding to a while back. In essence the change was done in order to increase the readability of the information streams you’ve selected as prior to this you just had the one bar that would scroll along madly if you dared to look at multiple locations at once or just so happened to add Twitter from anywhere that was mildly populated. In addition to the UI changes I have also made the switch to Silverlight 4 which added in things like native scroll wheel support (I can’t tell you how happy that made me) and a slight performance improvement over Silverlight 3. Thankfully none of the breaking changes they made in the transition affected Geon so the upgrade was only a few clicks and a restart of Visual Studio away.

The new UI works similarly to the old one as you select your location first by clicking the location button on the left hand side and then clicking the location on the map you want to see. Then you can add in information feeds from the same bar in a similar way and they’ll automatically add themselves to the closet location circle on the map. As of right now all the feeds available work apart from Facebook (you’ll get a pop up asking it to connect with your Facebook account but no information will appear) because their geolocation is still not fully implemented and I’m not keen to do a whole lot of mangling to get results that are more than likely irrelevant anyway¹. Once you’re done adding the streams hit the button up in the left hand corner to see your streams in all their glory. Rows are locations and the columns are the feeds, all titled properly so you can tell what’s what.

Having all that done means however I’m now out of options for procrastinating. You see whilst this version included some new streams (videos and Wikipedia), a much better UI and a cleaner back end (mmmm JSON) most of the heavy lifting had already been done in previous versions. After getting the initial hard parts out of the way with the UI most of it could have been done inside of a week, although I casually programmed it over the course of a month or so. The next thing on the list is the real meat of Geon: the request system.

That pretty much means I have to start diving into something I’ve never coded before: webservices. Whilst I can’t really say I’ve been avoiding this I haven’t been actively looking to do anything about it either, apart from the casual search for tutorials on how to build user authentication systems. I know I’m just being a big baby about this and I should just suck it up and do it but it’s just been so darn easy up until this point I’ve been wondering why no one has done it before. As it turns out the rudimentary parts that most netziens have come to expect are the most complex and tiresome parts which is why it hasn’t been done (and also explains why some services don’t have logins at all).

I’ve decided to suck it up and just start hammering away at it until I get the thing going. It’s much like when I first started out coding Geon and I was using RSS feeds for everything, it was just the first way I found to do things. After fiddling around for a while and getting some advice from a real developer mate I found that had I just taken the time to research it the whole idea of using other formats was so much easier. I’m sure with an afternoon of searching under my belt I’ll be ready to tackle the big bad demon that is the client/server architecture of Geon.

¹I thought I should elaborate on this a little bit. There’s been rumours of a geo-api from Facebook for a while now but with their developer conference f8 over and done with I haven’t heard anything solid about its actual implementation. They’ve tweaked their privacy policy to allow the storage of geo information in Facebook however the API as of right now remains unchanged. There are a lot of apps out there making use of geo data and Facebook but there’s no way to extract that out of Facebook currently. You can kind of figure stuff out by finding out a user’s hometown location, reverse geo-coding the location, figuring out if that’s within your bounding box and then displaying messages from them if it’s within your area HOWEVER that’s an incredibly messy way of doing it and honestly isn’ the kind of thing I was looking for. I’ll be integrating Facebook information when they finalize their geo-api but until then it won’t work.

Greenfields and Analysis Paralysis.

Take a good look at any big IT system and you can usually trace its roots to one of two places. The first is the one that all of us like to work with: the Greenfield project. In essence this is brand new work that has been born out of a requirement that didn’t exist before or a complete rethink of a current implementation. Talk to any consultant who’s trying to sell you some new tech and you can be guaranteed that they’ll be looking to sell you a greenfields solution, mostly because it’s cheaper and much easier for them to implement.

Sadly, and especially for those of us employed by the government, the majority of the projects that us IT guys will work on will never be greenfield situations and will usually be encumbered by some form of legacy system. This poses greater risks and constraints on what work can be done and ultimately you’re probably working to fix problems that someone else created. It’s been rare that I’ve been given the privilege of working on a project that was aimed at fixing my own mistakes, but I could put that down to my insatiable appetite for job hopping.

My own projects are a different beast as they are all my own work and thus all my own mistakes. Take for instance my intial foray into the world of web programming, Geon. Initially I decided that I’d code the whole thing in ASP.NET mostly because I could do it in C# (something I’m very familiar with) and there appeared to be a whole lot of resources available for doing the things I needed to do. For the most part that worked quite well and I was able to get the majority of the components up and running within a few weeks. Sure some of the subtleties of the design I had in my head didn’t quite work but for the most part I was able to get what I needed done, and even launch a few improvements along the way.

However after a while the limitations placed upon ASP.NET became painfully apparent. Coming from a background of desktop programming it became obvious that the majority of the functionality I was used to using was either simply not available or hidden behind a wall of mysterious Javascript. Whilst I’ve had some experience with Java in the past I wasn’t too happy about having to relearn another language in order to be able to accomplish what seemed so simple in my head. After blathering around for a while I came across Silverlight and whilst I knew that it was just Microsoft’s answer to Flash the promise of being able to code for the web as if I was coding for the desktop was just too good to pass up and I relegated myself to transitioning to it.

The transition was in fact a greenfields approach to the application. The initial iteration of Geon in Silverlight was, for the most part, a like for like system built upon a completely new code base. Whilst they share a common language the frameworks available and the UI design are wildly different. Still with a little effort I was able to replicate Geon into Silverlight in less than a weekend and everything seemed right with the world.

Then one day I had a fit of inspiration about a new layout for Geon. I quickly fired up Visio and started playing around with visual elements and cobbled together a better design. Everything seemed to be falling into place and I could see how it would be so much easier with this new design. Unfortunately this meant that the current code I had written for Geon in Silverlight was effectively unusable as the visual elements drove the underlying objects and thus couldn’t be used. The internal logic of some parts remained though and the new design took considerably less time to develop.

You might be noticing a couple patterns here. The first is (I’m going to start with the good here) that for the most part a lot of what I’ve created is reusable which is a classic example of modular programming at work. There was a bit of massaging between ASP.NET and Silverlight but thanks to Microsoft’s libraries this was fairly minimal. The second is I’m getting into a bit of a habit with starting a fresh each time I think of a new and better way of doing something, despite the amount of work that that entails.

I put this down to a form of analysis paralysis. In essence every time I’ve taken a long hard look at my code after a break from it the first thing I start to notice is how difficult it will be to get everything working just the way I have it in my head if I want to keep the current code. It stems from the way that I work on problems, by intensely focusing on a single problem until I have the solution. Whilst this usually ends up with an adequate solution to the problem I’ve often found myself spending a good 10 minutes on a function figuring out how exactly it does something. Repeat this for every function and in the end it becomes easier to just start over again instead of trying to rewrite everything so it fits together perfectly.

This all came to head when I started looking at the layout of Geon and realised that it had some inherit problems with viewing large amounts of information. Subsequently I’ve drawn up yet another design that is, you guessed it, almost wholly incompatible with the way I’m doing things now. I’ve since dedicated my weekend to developing the design and seeing how it works out but as you can imagine when I’m looking at dropping the code base for the 3rd time I start to question whether I’m really making any progress. Or maybe I’m just avoiding coding the real meat of Geon because it’s, you know, hard.

The good news is that the project manager in me isn’t going to be happy with feature creep and deadlines falling by the wayside so I firmly believe that this iteration of Geon will be the last major UI redesign before its final release on the world. This time I’ve made sure to include those “little things” like a user control panel which were strangely absent from my last 2 designs and hopefully I’ll achieve my goal of making the information much more visible than it currently is.

It really doesn’t help that my to-play list of games is getting longer every day either ;)

Good, Good. Let The Geo Flow Through You.

After losing around 6 weeks of my life to a project I’ve only vaguely referred to as “The Plan” I promised myself a month off to catch up on my backlog of games, relax and then hit Geon hard with new features so that I could release it upon the world. That month is now closer to 6 weeks mostly because there were just so many good games out at the moment (I still have 4 to play through, ugh!) and I was thoroughly enjoying slacking off. I’ve justified putting off the development because in all my research around the web I haven’t found anything quite like it. That was until I happened across this:

Facebook is allegedly planning to roll out location sharing capabilities next month, once again playing catch-up to other services that have gained popularity thanks to location data. The rumor comes courtesy of anonymous sources who have been “briefed on the project” speaking to the New York Times, who said that Facebook will announce the feature at Facebook’s annual f8 conference in late April.

The company’s plans for such a feature have not been entirely secret—Facebook hinted at location features when it updated its privacy policy in November. Like other postings made to Facebook, location information will only be made available to the people you decide to broadcast it to.

Great news right? I toyed with Facebook integration a while back but I never got the authentication working right and after a night of tinkering I found that I’d have to do some pretty heavy handed guessing to get the data in the right places. With services like Twitter and Flickr having beautifully easy geo-apis available I wasn’t too keen to muddy the information feeds unless I could guarantee a certain level of actual geo accuracy. So Facebook introducing a true blue geo api means more work for me, but also yet another hook for potential users.

But further down the article there comes a list of four services that have built their success based around user data that has geographic information in them. They are:

  • Foursquare: A location based game where you get points for going to certain places and checking in. Not even in the same league as Geon and I’ve known about them for quite some time. It’s a cool idea though and definitely has a dedicated following, something which made me confident that there would be at least some demand for an application like mine.
  • Google Latitude: Google’s attempt at a geo-oriented social networking service. Yet another attempt to get some more information on their users for better advertising with the added benefit of being an awesome cyber-stalking app. I don’t know anyone who personally uses this (and frankly I don’t think anyone cares that much where their friends are all the time) but it would have some potential if they opened the api. It looks like they kinda sorta did but since I can’t find anything official from Google on using Latitude it’s a moot point anyway.
  • Loopt: Looks like Latitude coupled with the added benefit of showing you other things that are near you (like events and places to eat). Again its main focus is the geo-social networking market which is a dedicated niche, judging by their website traffic. Since the focus of Geon is information and not social networking I still feel like they’re in another ball field to Geon, but I would’ve gladly used their services if they had a public API.

The last, and the one that made me almost jump out of my seat, was Brightkite. The front page has a lovely little section down the bottom that said “What’s happening in Canberra” and was happily displaying images that were supposedly from my area. Considering that I’m in the business of information aggregation with a geographical bent (trying saying that 5 times fast :P) my first reaction was that dreaded sinking feeling anyone gets when they think they’ve had the most brilliant idea in the world only to find it’s already been done, packaged and sold to everyone who would want it. However diving deeper into Brightkite’s world I can see that yet again they’re focused on the social networking side of things and much less on aggregating information based on location.

This I believe is the selling point for Geon. Whilst I appreciate that social networking is all the rage these days (as was blogs before them, and badly hacked together personal sites on Geocities before them and so on) it’s not the vision I have for Geon. It will have some kinds of social features in there (like following your friends, although Facebook integration might render that moot) but my main goal is getting information and hopefully establishing 2 way communication between people who want information.

The upside to all these apps coming out (and subsequently kicking my ass into gear) is that there is real demand out there for something like Geon. Talking to people about it only goes so far and it’s always good to have that little bit of hope that your work will someday be appreciated by the wider world.

Maybe I scare too easily ;)

More Work? Right-o.

The last release of Geon was a kind of forced release from me. You see up until recently I had been using what Microsoft calls a Community Technology Preview (CTP) version of the map control that dominates the center of Geon. When it was initially released there wasn’t really any timeline around how long it was going to last so I had just assumed that it would work forever (save for the fact that I wouldn’t get any new features). However this turns out not to be the case as Microsoft so politely informed me a while back:

Valued Bing Maps Silverlight CTP Participant,

Thank you for participating in the CTP – we are excited to announce that the latest release of the Bing Maps Platform, including the v1 Silverlight Map Control, is officially here!

Please visit the Bing Maps Blog for a full breakdown of the Silverlight Map Control release details.

Important housekeeping details:

  • Please note that the CTP control will cease to function at midnight, December 31, 2009. To ensure continued functionality of your CTP applications, please make plans to upgrade to the version 1 code before that time. For a description of the version 1 changes from the CTP build, please visit the changelist reference in the SDK here.
  • The Connect site will remain available until December 15th for reference purposes only. Future technical questions/discussion should be directed to the Bing Map Control Development forum on MSDN (paid, evaluation and free account types) or to the Bing Enterprise Support Team (paid accounts).

Again, thank you for your participation in the CTP. Your feedback was invaluable improving the code and the overall platform. We look forward to working with you again in the future.

Well that meant 2 things: the first being I was completely wrong, although anyone who’s used CTP versions of software before will tell you what I thought was total bollocks. The second was that I had to rewrite some of Geon in order to make sure it was compatible with the new version of the plugin, as well as some dastardly new license requirements. I was none too happy to hear about them discontinuing my version and releasing a new one at the same time, but a couple features caught my eye.

On the surface most of it was just a cleanup of the code underneath. Many of the structs had been replaced with classes and the namespaces had changed to be more inline with Microsoft’s whole Bing strategy. They also introduced a licensing requirement so I had to get an application key in order to use their control. This isn’t all bad news since they’re pretty lax for developers like me who are just starting out, but still pales in comparison to Google’s (it’s free but if you’re making a big app tell us and we’ll put on extra servers for your app key). I’ve had it fail to register the key a couple times on me to so hopefully they work this all out in the coming months.

Microsoft also released the Bing Web Services SDK which has quite a few nice goodies in it. I’ve got my eye on the Geocode service since I currently use a free service that has been blasted in the past by apps like mine and has subsequently disable access to the free service. Whilst I’d like to avoid doing that each use of the Geocode service counts against my license key. Since I’d like to think that one day there will be a fair few people using Geon I’d like for it to stay usable for as long as possible as I work out the various licensing deals with all the services I’m using, and spreading the load across 2 services seems like a good bet at the moment.

So it might not have been the nicest of surprises but it did spurr me on to add in 3 more information feeds into Geon which I wouldn’t of done for a much longer time had I not been forced to work on it. So overall its good that Microsoft gave me the proverbial boot up the bum.

Geon 2.0 Alpha Release: I’ve Seen The Silverlight.

A few lucky people have already seen the progress I’ve made in reworking Geon into Silverlight but as I won’t be making too much progress on it for a while (enjoying the sun and surf on Turtle Island ;)) I thought I would share the progress I’ve made over the past month or so. It’s a completely different idea to the original where you were only able to monitor a single location at a time. The whole thing is more “Web 2.0″ with it being a rich web application that is for all intents and purposes running locally on your machine. This not only means that I can do a heck of a lot more it also helps so if Geon gets popular my poor little server under my desk doesn’t die under the strain of more than 10 users trying to use it at once!

You can check it out now here, however you might want to read on for a quick tutorial of how to use it.

The first thing you’ll notice is the giant map in the center of the screen. If you checked out my previous Silverlight work (a basic translation of Geon from ASP.NET into Silverlight) you’ll be familiar with this. It functions just like Google Maps however this is Microsoft’s Virtual Earth control for Silverlight. Mouse wheel zooms you in and left clicking moves the map around. Pretty simple and intuitive.

On the left is a column of buttons with some familiar terms on them. Clicking any one of them will set them off pulsing to show you that you’ve selected them and clicking on the map would drop that control on the map. For now I’d recommend zooming in to about the 50~100km scale and then selecting the Location button, finding somewhere you’d like to see information about and click on it. You’ll get a circle that’s about 50km in diameter centered on where you clicked and this will be the anchor for the other controls.

Now the only other control implemented at the moment is the Twitter one, so click on it and click somewhere close to the location circle you placed earlier. You’ll notice a big sqaure pop up with the Twitter icon at the top. After a couple seconds or so it should start populating itself with all the tweets from that area, and you can click the blue names to jump to the tweet itself.

You can do this multiple times all over the map, and the tweets will continue to update for as long as you have the app open. If you’re feeling adventurous try clicking the Twitter button again and clicking near the location circle. You’ll notice that it automatically places them around the circle for you. It works well up to about 5 and then the placement starts to get a little weird but it’s at least usable.

On the right hand side you’ll notice a list of things appearing. That’s a list of every “Geon” (piece of information tagged with some form of geo information) and will eventually be a little more usable than it is now. It’s supposed to be a list that you can browse if you have say, 20 different locations tracked and can’t look at them all at once. It will also have a bit more to it when the request/respond part of Geon gets developed, but that’s still a little way off.

You don’t have to use the location field to plop down one of the info controls but since they’re, you know, massive, they kind of cover up the entire area you’re looking at. I’ll also have some options in a future release for the location field so you can refine your area down to a smaller area or filter for a specific term.

So there you have it, Geon 2.0 alpha. Have a fiddle, tell me what you’d like to see, what you hate and anything else you’d like to say :)

A Sashay Into Silverlight.

Back in the early days of my experience with IT I wasn’t much of a programmer. For the most part my experience was limited to tinkering with various bits of hardware and doing house calls for my local IT group Grade A Students (who unfortunately seem to have removed themselves from Canberra and re-branded).  However this all changed when I started my university degree with my first course being an introduction into programming with C in Linux. It was an odd affair for me as I of course knew about programming but hadn’t paid much attention to it. Since then I’ve dabbled in many other languages with varying results, the latest of which is Geon.

Recently though it became clear to me that the end goals I had for Geon and the language I was using (ASP.NET) were probably a bit too ambitious. The work required in order to get that “Web 2.0″ look and feel to the application that most users online have come to expect was prohibitive for a single person only working on it on weekends, so I started looking around for something else. I was tempted by the lures of Flash however I haven’t had any experience with the tools or design work of that particular language with most of my skills lying in the Microsoft/C# space. So in essence there was only one choice, Microsoft’s Silverlight.

From a business perspective anything you can do to lower the barrier to entry for consumers is a big thing for business and this was the first mental hurdle I had to overcome when deciding to develop using Silverlight. Flash is fairly ubiquitous amongst Internet users however Silverlight, even though it is at version 3.0 now, is still uncommon. When it first came out I installed it as a mere curiosity to see how Microsoft intended to dethrone Flash as the rich web application provider and there are few big name sites out there that have adopted it as their development framework. However after weighing up the time it would take me to develop in Flash vs my current target audience (which, let’s be honest here, isn’t huge) I conceded that anyone who wanted to see Geon in all its new sparkly wonder would give Silverlight an install. Plus its a small download and from memory doesn’t require admin privileges to install.

I then spent the weekend learning the ins and outs of developing for Silverlight. It’s an interesting blend of desktop application development with UI design that’s heavily based on the flow model. Initially this took a bit of getting used to as making sure the elements were generated properly took a bit of wrangling but the reward was an interface that scales very well with any browser size. This was one of my bugbears with ASP, since they had no easy way to accomplish this. I did run into some roadblocks with Silverlight only being a subset of the .NET and WPF frameworks but there wasn’t anything I couldn’t work around. Although there were a few moments of me yelling incoherently at the monitor when things refused to work the way I wanted them to.

And thus the end result is this, Geon in Silverlight. If you don’t yet have Silverlight I’d urge you to install it and have a look at what it’s capable of. This version is somewhere between 1.0 and 1.1 in terms of functionality (live updating for Twitter, News and Blogs works) however the main stay of Geon, which is Geologically based information, is currently not in. I only just got around to getting the base framework in last night to handle the IP based look-ups before I decided that was it for the weekend so I believe I can have it up to 1.1 level of functionality fairly quickly.

Overall I’m happy with the results and I believe that the future of Geon will lie within Silverlight. It’s a very powerful framework for developing rich web applications and the tools available are growing by the day. Who knows, maybe Geon will one day be that killer app that gets Silverlight everywhere!

A man can dream….. :D

Geon 1.1 Update.

It’s that time again! I’ve updated my Geon application to version 1.1 and this brings along with it a UI change, a shift in focus for some things and of course new features. This time around though I thought I’d give you a walk through of what Geon can do and how you can go about using it. This will also give me a chance to explain away any problems that you’ll see, since this is still technically what I’d call a beta (because it’s far from feature complete).

Opening up the Geon page will greet you with a slightly more usable interface than the previous version. It’s now a 3 column layout with statically set widths for most of the items. It’s best viewed at 1680 x 1050 but it’s still usable at lower resolutions. The left column has a set of check boxes for choosing what information you want to see and a filter box at the bottom. The center column is a map that when clicked will change your current location to where you clicked, so you can view an information feed from another area. The right column is for part of a future release that will allow you to send requests to other Geon users in that area for pictures/video/text, and also allow you to respond to requests. For now the right column will only notify you when you change your location, but soon it will display all the recent Geon requests and responses for your area.

Ticking any of the boxes will bring up information from that source. For Twitter, News and Blogs this will appear in the left column as text and links. For Flickr  Should you wish to apply a filter for it, say for the rally that took place in Sydney on the weekend, you can put your filter terms in the box below. This is handy if you want to see an information stream for an event that might not be hitting the front page news, as most of it gets drowned out by the headlines. Geon will initially retrieve a maximum of 15 results for each of the services regardless of time frame and will attempt live updates after that. One thing I have noticed is that blog posts and news items will usually be at the bottom due to their publishing time. Tweets, as per their nature, will usually be at the top. The pause check box shows whether or not the feed is attempting to live update, and similar to the last Geon release there are a few reasons why you’d want to stop it (want to read your feed without the scroll bar snapping back up to the top is one).

Now for the juicy bit. Scroll to some location on the map that you’d like to see news for and single click. After a short delay you’ll notice in the response box a message telling you that you have moved to a new location. Your information feed will now start to update from this new area. If you had information from another location open previously it will slot the information in chronologically. If you want to clear your information view before switching location just untick all the boxes and it will clear the feed list for you. I’ve noticed that if you’re viewing a busy area then switch to a quieter one (say from Sydney to Canberra) the new information will be buried in the midst of the old, which is probably not entirely useful.

And now for the all important bugs/known issues:

  • Internet Explorer is still unsupported: For the most part everything seems to work ok except for when you click the map. There’s still a wide discrepancy between where you click on the map and where it thinks you clicked. Firefox and Chrome appear fine and this could just be an IE8 issue however I haven’t taken the time to test IE6/7, mainly because I have no idea why an ASP.NET application would be having troubles in IE and not Firefox.
  • The Pause checkbox is a little iffy: For the most part it works fine but there are times when clicking it will not change the state of the timer on the page, and it will keep trundling along as if nothing happened. I’ve just thought of a way to fix it (GARGH why didn’t I see that yesterday) so I’ll fix it up when I get home.
  • Feed updates are delayed by about 30~90 seconds: Anyone following me on Twitter will have noticed me tweeting to test my live updates. Since the design is based off reading a RSS feed from Twitter and other various sources it should show up as soon as the feed is updated (which appears to be real time). However it sometimes takes a minute or two to update. I’ve got a feeling this is due to some caching my RSS client library does, so I’ll have to work on that one.
  • Feeds in busy places shuffle themselves around: If you’re watching a busy place like New York you might notice the feed rearranging itself. This is because I sort the feed based on the date and if they’re the same (which happens a lot with tweets) it arbitrarily arranges them. This makes the feed shuffle around a bit and is currently the best solution to the problem which initially was that the feed was completely random.

What’s in scope for 1.2? I’m glad you asked (even if you didn’t ;)):

  • Implement the request/respond function: This will probably take the better part of a weekend to get done. I had it planned for this release but it got dropped since I had other things to do other than just coding.
  • Make it pretty: Right now it’s dull as dishwater to look at. It needs to be made a little better looking and if anyone out there is interested in some design/development work in order to make Geon look better feel free to contact me. You will be paid for your services.
  • Add in an information timeline: Much like Google Wave’s slider bar that allows you to see how information evolved over a period of time I want to implement something similar in Geon.

So that’s about it. I’m still taking all feature requests/ideas for Geon so if you think something would be cool or useful just leave a comment or give me an email.

Presenting…..Geon! (and 100 posts!)

Well it may be late on a Sunday afternoon but here it is, my 100th blog post! It’s been quite a fun exercise for me and I’m hoping to bring you many more posts in the future. Hopefully they will all be interesting, but I can guarantee that ;). The past 7 months have seen many changes in both my personal and professional life and I feel that this blog has reflected that. I’ve been able to craft my thoughts much more succinctly after writing so much, and my spelling has definitely improved. It’s also introduced me to the wonderful world of web applications, something that I’ve kept away from in the past. All of this would be for nothing if it wasn’t for you, my readers. I just want to say thanks for coming back day after day and reading and commenting on my site, it really does mean a lot when people care about what you have to say :)

As promised I have been working on something secretly in the background, and today marks it’s 1.0 release to the public. It’s a hacky, cobbled together web application that will form the basis of a future application that I want to develop. For now I’ll be working on it under the code name Geon which stands for Geological Information, although the final product will be a lot more then that.

For a taste hop on over to here. Also available from the Geon link in The Lab. Click around, see what you think it’s supposed to do then come on back here. If you can write down your impressions of it before you read on, I want to see what everyone thinks about it before I mess your perception with my ideas :)

In essence the application is part of a framework for real time information feed based upon location. Right now it gets content from Twitter, Flickr and additionally everyone in the same city (roughly) can talk to each other. The Flickr and Twitter buttons will bring up markers at your location, whilst clicking directly on the map will bring up Flickr pictures and Twitter posts that are located within that area. When you begin chatting it will start to do live updates from your area with other people who are chatting, you can disable this by unchecking the box (you’ll see why you might want to do this in a sec). You can change your user name to, the random string of numbers is mostly me being lazy and no implementing a full user database, that’s on the cards for the future.

Currently it will only return the first 10 Twitter posts but it will return all the Flickr pictures in the area. I wanted to get the chats popping up there as well for this release however I haven’t found a way to get the info windows to update dynamically, I believe this is a limitation of the api wrapper I’m using. Also if you’re chatting any information from outside your area will probably be cleared when it next refreshes. This seems to be a fun bit of AJAX that isn’t supposed to happen, but any partial post back triggers the map to update itself.

Here’s what I think is wrong with it so far (in terms of bugs):

  • Internet Explorer doesn’t work properly. The click event handler seems to report a wildly different location in IE then it does in Firefox/Chrome. For now, IE is unsupported and I’ll recommend Firefox for anyone who’s having trouble using it.
  • The chat inserts new lines at the top rather then at the bottom. This is because ASP doesn’t have a clean way to put the chat messages at the bottom and keep the scroll bar there. To save everyone scrolling down whenever they post a message or when it updates I thought it best to put them at the top.
  • Live updates kill any information on the map that wasn’t added in a certain way. For some reason any partial render of the screen causes the map to think it has to do a postback to. I haven’t been able to disable this but when you use the buttons at the bottom this information won’t be wiped. The functions are basically identical, but I can’t get information from clicking on the map to be persistent. I’ve wrote to the author of the wrapper about this, we’ll see what he says.

So what’s the big idea for all this? Well what I wanted to make was an application where you could zoom in on an area and see what’s going on there. This application does most of that now but what I’m looking to do is to build in a request information section and then anyone who’s on Geon (it will be available on mobiles….one day!) can submit pictures/text/whatever back up. I thought this would be amazing for breaking news events as long as there was enough users of course :)

I’d love to hear what everyone thinks about it and what you believe would be great to add in. I’ve already got a Google Wave integration idea in the works which I’m sure everyone will like. Experience has shown me that your users are the ones who matter, so I’m opening up the floodgates for you guys to craft the direction Geon takes over the coming months.