You’d think that since I invested so heavily in Silverlight when I was developing Lobaco that I would’ve been more outraged at the prospect of Microsoft killing off Silverlight as a product. Long time readers will know that I’m anything but worried about Silverlight going away, especially considering that the release of the WinRT framework takes all those skills I learnt during that time and transitions them into the next generation of Windows platforms. In fact I’d say investing in Silverlight was one of the best decisions at the time as not only did I learn XAML (which powers WPF and WinRT applications) but I also did extensive web programming, something I had barely touched before.
Rumours started circulating recently saying that Microsoft had no plans to develop another version of the Silverlight plugin past the soon to be released version 5. This hasn’t been confirmed or denied by Microsoft yet but there are several articles citing sources familiar with the matter saying that the rumour is true and Silverlight will recieve no attention past this final iteration. This has of course spurred further outrage at Microsoft for killing off technologies that developers have heavily invested in and whilst in the past I’ve been sympathetic to them this time around I don’t believe they have a leg to stand on.
All of Microsoft’s platforms are so heavily intertwined with each other that it’s really hard to be just a Silverlight/WPF/ASP.NET/MFC developer without a lot of crossover into other technologies. Hell apart from the rudimentary stuff I learnt whilst in university I was able to self learn all of those technologies in the space of a week or two without many hassles. Compare that with my month long struggle to learn basic Objective-C (which took me a good couple months afterwards to get proficient in) and you can see why I think that any developer whining about Silverlight going away is being incredibly short sighted or just straight up lazy.
In the greater world of IT you’re doomed to fade into irrelevance if you don’t keep pace with the latest technologies and developers are no exception to this. Whilst I can understand the frustration in losing the platform you may have patronized for the past 4 years I can’t sympathize with an unwillingness to adapt to a changing market. The Windows platform is by far one of the most developer friendly and the skills you learn in any Microsoft technology will flow onto other Microsoft products, especially if you’re proficient in any C based language. So whilst Microsoft might not see a future with Silverlight that doesn’t mean the developers are left high and dry, in fact they’re probably in the best position to innovate out of this situation.
However it has come to my attention that Microsoft has been hinting at a potential panacea for all these woes, for quite some time now.
Back in January there were many rumours circling around the new features we could look forward to in Windows 8. Like any speculation on upcoming products there’s usually a couple facts amongst the rumour mill, usually from those who are familiar with the project. Two such features which got some air time were Mosh and Jupiter, two interesting ideas that at the time were easily written off as either speculation or things that would never eventuate. However Mosh, rumoured at the time to be a “tiled based interface”, turned out to be the feature which caused the developer uproar just a couple months ago. Indeed the speculation was pretty much spot on since it’s basically the tablet interface for Windows 8, but it also has a lot of potential for nettops and netbooks since underneath the full Windows 8 experience is still available.
The Jupiter rumour then can be taken a little bit more seriously, but I can see why many people passed it over back at the start of this year. In essence Jupiter just looked like yet another technology platform from Microsoft, just like Windows Presentation Framework and Silverlight before it. Some did recognize it as having the potential to be the bridge for Windows 8 onto tablets which again shoe horned it into being just another platform. However some did speculate that Jupiter could be much more than that, going as far to say that it could be the first step towards a unified development platform across the PC, tablet and mobile phone space. If Microsoft could pull that kind of stunt off they’d not only have one of the most desirable platforms for developers they’d also be taking a huge step forward towards realizing their Three Screens philosophy.
I’ll be honest and say that up until yesterday I had no idea that Jupiter existed, so it doesn’t surprise me that many of the outraged developers wouldn’t have known about it either. However yesterday I caught wind of an article from TechCrunch that laid bare all the details of what Jupiter could be:
- It is a new user interface library for Windows. (source)
- It is an XAML-based framework. (source)
- It is not Silverlight or WPF, but will be compatible with that code. (source)
- Developers will write immersive applications in XAML/C#/VB/C++ (source, source, source,source)
- It will use IE 10′s rendering engine. (source)
- DirectUI (which draws the visual elements on the screen, arrived in Windows Vista) is being overhauled to support the XAML applications. (source, source)
- It will provide access to Windows 8 elements (sensors, networking, etc.) via a managed XAML library. (source)
- Jupiter apps will be packaged as AppX application types that could be common to both Windows 8 and Windows Phone 8. (source, source, source, source)
- The AppX format is universal, and can used to deploy native Win32 apps, framework-based apps (Silverlight, WPF), Web apps, and games (source)
- Jupiter is supposed to make all the developers happy, whether .NET (i.e., re-use XAML skills), VB, old-school C++ or Silverlight/WPF. (Source? See all the above!)…
Why does Jupiter matter so much? If it’s not clear from the technical details above, it’s because Jupiter may end up being the “one framework” to rule them all. That means it might be possible to port the thousands of Windows Phone apps already written with Silverlight to Windows 8 simply by reusing existing code and making small tweaks. Or maybe even no tweaks. (That part is still unclear). If so, this would be a technical advantage for developers building for Windows Phone 8 (code-named “Apollo” by the way, the son of “Jupiter”) or Windows 8.
In a nutshell it looks like Microsoft is looking to unify at all of the platforms that run Windows under the Jupiter banner, enabling developers to port applications between them without having to undergo massive rework of their code. Of course the UI would probably need to be redone for each target platform but since the same design tools will work regardless of the platform the redesigns will be far less painful then they currently are. The best part about Jupiter though is that it leverages current developer skill sets, enabling anyone with experience on the Windows platform to be able to code in the new format.
Jupiter then represents a fundamental shift in Windows developer ecosystem, one that’s for the better of everyone involved.
We’ll have to wait until BUILD in September to find out the official word from Microsoft on what Jupiter will actually end up being, but there’s a lot of evidence mounting that it will be the framework to use when building applications for Microsoft’s systems. Microsoft has a proven track record of creating some of the best developer tools around and that, coupled with the potential to have one code base to rule them all, could make all of Microsoft’s platforms extremely attractive for developers. Whether this will translate into success for Microsoft on the smartphone and tablet space remains to be seen, but they’ll definitely be giving Apple and Google a run for their developers.
It’s only been just over a week since Microsoft demoed their latest iteration of the Windows platform but in that short amount of time it’s already managed to stir up quite a bit of discussion from friends and foes alike. The foes were quick to call out the new OS’s tablet envy, conveniently forgetting Microsoft’s rhetoric that the next version of Windows after 7 was going to have a much more web centric focus, with the possibility of it being entirely cloud based. More interesting however is the discussion arising from long term developers on the Microsoft platform, and it’s not the kind of adulation and praise you’d normally expect.
Rampant speculation soon followed and wasn’t helped by the fact that Microsoft has asked everyone to remain calm until their BUILD developer conference in September. It’s not the first time this sort of thing has happened either, a similar level of hubbub was roused when Microsoft was coy about Silverlight’s future when talking about Internet Explorer 9 and it’s dedication to web standards. They soon came out saying that they still saw a future in Silverlight, especially for the Windows Phone 7 platform, but many of them were left unconvinced. It’s then quite likely that this second round of doubt that Microsoft has cast over their third party developer’s futures was the straw that broke the camel’s back and all the blame is being leveled squarely at Microsoft.
For what it’s worth I feel their concerns are valid if the reaction to them is somewhat overblown. Microsoft has a long history of eating its own dog food and many of their client facing applications are built upon the technologies that so many are worried are going to disappear in the near future. The best example of this is their Windows Azure management console which is built entirely on Silverlight. Couple that with the fact that Microsoft has many partners with a very heavy investment in the platform and I find it hard to jump on the “Silverlight is dead” bandwagon, but that doesn’t necessarily mean Microsoft is committed to bringing Silverlight into the Windows 8 tablet world.
Sure it would be great to be able to create Silverlight applications on the new Windows 8 tile system and Microsoft would be leveraging off a lot of preexisting talent to help drive adoption of the platform. However it would also hinder Microsoft’s adoption of web standards, as many developers would favor using proprietary Microsoft technologies instead of attempting to reskill. They’d then be the slave of two masters: on the one hand the Silverlight crowd demanding ever more features and tools that are constrained to that platform and on the other the web standards crowd that has been Microsoft’s bug bear ever since alternative browsers started to gain real market traction. It’s not like Microsoft doesn’t have the resources to deal with this though, but I can understand their motivations should they want to eschew Silverlight in favour of a more standard environment.
It doesn’t take much to sending me on a coding spree. Sometimes is something as simple as an idea that I need to implement now since it fundamentally changes the way the application will evolve and other times it’s something right out of the blue. Last night was the latter as after finishing up some preliminary packing for my trip to the US on Sunday (stay tuned for pictures, posts and vlogs!), playing a couple games of Starcraft 2 I found myself watching the latest episode of the Random Show. In essence it’s just Tim Ferriss (4 Hour Work Week) and Kevin Rose (Digg founder) talking about all sorts of things, but a common theme is always that of entrepreneurship. As someone who’s aspiring to that lifestyle I’m usually fixed firmly to the screen, hoping for some gems that will help me along my merry way. Last night however provided something completely different.
After listening to them for quite a while I looked down at my notepad with a list of features that I’ve slated for integration into Lobaco. I’ve deliberately let them go by the wayside as feature creep is the easiest way to kill a product before it even gets off the ground. Couple that with the fact that I only just recently had the penny drop on iPhone development the less ambitious I make the first iteration of the product the more likely I am to make it solid and usable, rather than a total mess of half done features. Still there are a couple on there that are wholly web client based so feeling the entrepreneurial surge from two web start-up powerhouses I thought I should go ahead an knock a couple of them over.
Boy was I in for a surprise.
One feature which was easy and would make the UI slightly more complete was making the right hand side information section scale dynamically with the browser’s height. In essence this is so you can see more if you’ve got a larger screen and makes the UI look a bit better on smaller screens. Since Silverlight supports dynamic height scaling by simply not specifying a height I thought that all I’d need to do was remove the static height and I’d be done, leaving me to knock over another feature before bed. Changing the property lead to the list box scaling out to its full height and refusing to show a scroll bar, and left me scratching my head as to what was going wrong.
Diving into the code I noticed that whatever I set the height to in the class file would determine the height of the list box. Thinking that it would just be a matter of setting that to the available height would give me the behaviour I wanted I coded up a loop that set that height whenever the size of the browser window changed. This kind of worked but never scaled properly, despite my beautifully crafted logic statements. Something was definitely amiss, but it took me another 2 hours to track down what it was.
Essentially it was a clusterfuck of 3 different coding screw ups. The first was placing the custom class I had designed inside a list box, which was in essence wrapping itself in itself. The second was actually using that class in the first place as it was not required and also duplicated a ton of styling logic thanks to the way Expression Blend messes with your code. Lastly, instead of adding items directly into the list box itself I was creating yet another list box, adding items into that and then adding that entire list box into the main list box (which was wrapped in yet another list box). To get dynamically scaling height in that mess would’ve required setting the height in about 3 different locations consecutively, an expensive process for something that’s supported natively.
The thing is this component was one of the first things to be coded into Lobaco about 3 months ago so this issue has been there almost from day dot. I’ve looked at that code dozens of times over the course of developing this application and not once did it twig that was I was doing was completely ass backward. It’s been almost a month and a half since I did any serious work on the web client and it seems that time away has given me enough perspective to see those obvious mistakes. I think that all developers need time away from their projects in order to get their head out of the problem space and get a clearer perspective on what they’re doing. Hell I’d say that those breaks I took from developing Lobaco were wholly responsible for the 3 code dumps I did and the current polished version that’s on the web today.
In the end the whole development process has been one of the most gratifying learning experiences I’ve ever had. It seems every time I think I’ve got things down pat I learn something new that makes me rethink my past decisions, tweaking things so they’re just that little bit better. Whilst I’m sure that this code base is here to stay it’s definitely evolving as time goes on as each change builds upon the last to provide a better experience for my future users. I won’t be making any progress on it for the next month whilst I travel the US but I’ve got the feeling in that time I’ll get enough perspective to make some incredible changes to Lobaco and hopefully I’ll come back recharged enough to hit development with renewed vigour.
So as those who have been following me on Twitter may have known I’ve spent the last 2 weeks schooling myself in the world of Silverlight and Microsoft Rich Internet Application (RIA) services. Now I’m no stranger to the idea of n-tier application development but Microsoft’s implementation appears woefully complicated when you first get into it (thanks to the lack of clear tutorials and documentation on it) but becomes quite simple once you get past that first hurdle. Many things you think you’ll have to code up substantial amounts of logic for, say saving changed objects to the database, are handled for you by some black magic hidden in the background. I’m not complaining though as whilst I believe that an understanding of what is happening behind the scenes is vital for writing good code actually implementing that every time you want to do something could be quite a chore.
It actually reminds me of another project I started a long time ago called Yurai (it’s a desktop application so you probably won’t ever get to see it in The Lab). Back when I was working as a help desk monkey and finishing off my last year of my degree the whole n-tier design pattern was firmly lodged in my head and I got the idea that the software we were using (called Infra, now owned by VMware of all companies) was far too bloated and I could make a substitute myself. Coincidentally a friend of mine had just started his own business in home IT service and was using a paper pad to track their jobs. I took it upon myself to code him up an application and my first foray into the world of being a real developer began.
The application itself never got past the initial design phase. Whilst I did manage to (manually) create all 3 tiers with their associated logic and what not the system itself only allowed a small subsection of the functionality they would require. With my university commitments ramping up I never got time to finish the project and it now sits in a backup folder on one of my many hard drives. Still thinking back to those days I can see how far Microsoft have come in making it so easy for an average-skilled developer like myself to develop these applications in a rather timely fashion. The same amount of time invested back then yielded about 10% of the results meaning less time is spent coding the rudimentary parts of the system and more time focusing on what’s critical to your application.
So the last 2 weeks of work have culminated in this: a working user authentication system for Geon. Not only that if you click the link (might be a bit obscured on monitors less than 1680 pixels wide, I’ll fix that this afternoon) at the top you can sign up for an account to use with Geon. What that account will let you do is save your feeds so that next time you login you don’t have to go clicking around again to set it all up, just make sure to hit the Logout button to do so (need to implement the logout function on window close, haven’t done so yet!). An account is not required to use Geon but in the future I’ll be adding a lot more things to it that will require an user account, and who knows I might give you something special for beta testing my stuff out Your account will need to be approved by me before you’ll be able to use it however, and that’s just to make sure I don’t get a flood of people signing up before I’m ready to let the user auth system go live.
But don’t let that stop you from signing up. Go on you know you want to.
Hopefully with that part out of the way the core functionality of Geon will come along soon. What I’m referring to is the idea that I originally had was to be able to ask anyone in a certain area a question and have them respond back with text/image/video/whatever. This of course relies on people actually running my application and with it currently restrained to the browser that makes the potential audience somewhat limited but it can still work as a test bed for the handset applications. There’s going to be a lot of messing about to get that all harangued in (I’ll have to undo some of the black magic that Microsoft has done for me thus far to make sure its secure) but that’s all part of the fun, well that’s what I’m telling myself anyway.
Additionally I’ll have a tutorial up somewhere on this blog (I’ll update this post with a link) on how to get started using Geon as I’ve had a few people tell me that it doesn’t work only to find out that they’ve been clicking in ways I didn’t expect. That’s partly my fault for changing the UI on them and not making it clear that it didn’t work the way it used to, but if I take a leaf out of Google’s book that’s what users are for, trying out your beta code so you don’t have to do as much testing yourself
So as always hit up Geon and let me know what you think by posting a comment below, tweeting me or sending me an email at [email protected].
EDIT: As promised I’ve created a new page with a quick rundown (with pictures!) of how to get going with Geon.
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.
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.
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
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.
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
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…..