Last night I was talking to my friend Brian about what I've been working on lately. Of course, Silverlight came up. But I also mentioned a few other new Microsoft technologies. He asked if there was a site that talked about all cool new things. The only one I could think of was Lynn Langit's Blog, but her stuff is uber-geeky and I'm not sure that's what he was looking for. So here's my attempt to summarize some of the cooler Microsoft stuff that I've been working with or hearing about. I'm sure there will be a sequel or two to this blog post in the future.
Speedily Coming Up On The Radar
Silverlight - This one will definitely fly onto the radar come Summer when NBC broadcasts a combined total of 2200 hours of Olympic footage live over the internet. What will they use to do this? Silverlight. What is Silverlight? Essentially is it Microsoft's answer to Flash, only more powerful and easier to program. How is it more powerful? You will be able to watch multiple live streams (think Picture in Picture of Greco Roman Wrestling and BMX at the same time) and resize the image without the annoying reset-the-whole-movie behaviour of Flash. Easier to program? The programmer who is already experienced with either Visual Basic or C# (and trust me, there are a gagillion of us) will be able to use those languages to program Silverlight with a tool there are already very familiar with, Visual Studio. Silverlight is compatible with multiple browser and will run on Macs and Linux machines in addition to PC's. I foresee a lot of web-based business apps moving away from AJAX and HTML (generated HTML, that is...i.e. asp, aspx, php, ColdFusion, etc.) toward Silverlight. You can read my previous Silverlight Post for more info. Check out my band's website to see a little Silverlight jukebox application that I wrote.
LINQ - LINQ is hoping to become be the lingua franca for querying data stores. By "data store" I mean, of course, databases (from SQL Server/Oracle to CVS text files), but I also mean other "thingies" that store data like programming objects, LDAP (that's the list of people and resources in your Exchange server at work), your Blackberry contact list, the list of songs in your iTunes, your list of friends on Twitter and Facebook. I heard someone call it "the one query language to rule them all".
Now, for your traditional "databases" we've always had the SQL language. The following statement,
Select * from Contacts
would get us all the columns and all the rows from the "Contacts" table. Contrast with that, though, what you have to write in order to query the LDAP data store...very different:
(!(msExchHideFromAddressLists=TRUE)) (!(useraccountcontrol=514))(sn=jacobson*)(objectClass=user)(objectCategory=person)
Yuck! Now, let's say you wanted to gets some data from your iTunes song list, in that case, you would have to loop through every song until you found what you were looking for. So LINQ aims to simplify things bring providing a universal syntax which is then translated (by means of a LINQ provider) to the language that your item understands.
The first demonstration I saw was "LINQ to SQL" and I wasn't impressed. My thought was "why do I want to learn a new query language which only gets translated into a query language I already know?" But then I used "LINQ to XML" in a project and it ended up being more intuitive and less lines of code than using the DOM. And now I see that when someone finally comes up with a "LINQ to LDAP" Provider, my life as a programmer will get a little easier and the code I leave behind will be a lot easier to mantain. So now I'm sold.
I do have a sneaky suspicion, though, that "LINQ" might become a new marketing buzzword (like AJAX, Data Warehousing, Data Mining) that manager types will start misusing. The word might come to mean "universal data connection" and give them false hope that all their disparate systems might magically start talking to each other... *sigh*
On the Horizon
Live Mesh - simply put, this technology can synch your files on all your computers while backing them up to the internet at the same time. This is still in beta, but my wife has been using it for a couple weeks and it works just fine. Here is her scenario to help explain how it works...
My wife is a writer and she has two computers that she uses to write: her desktop in the Kitchen and her laptop. With Live Mesh, she can be working on her novel in the Kitchen during the day and when she hits Save, the file is saved to her computer and at the same time (without any effort on her part) it is also saved to her Live Mesh folder on the internet. Later on in the evening, she may want to work on her writing while we are watching TV. She turns on her laptop and opens her story from her laptop's harddrive, but behind the scenes it goes to the internet to get the latest version. When she saves it, again it saves to her harddrive, but also back to the internet. So what happens when we are vacationing in Bear Lake, UT where there is no internet connection? She just works on her local copy from the laptop's hard drive and saves to her hard drive like usual. When we leave and go to her sister's in Salt Lake City or back home to Huntington Beach, once the computer has internet connectivity again, it automatically uploads her changes to the internet folder. And in yet another case, she may go to a writing conference but accidentally forget her laptop. In this particular case, she can go to another computer, log on to the live mesh site and download her document from the internet, work on it, save it their hard drive and manually upload it back to the internet copy (she'll probably then delete the local copy from the computer she was using).
Besides this specific scenario, there are dozens of ways I'm sure peope will use it. I'm guessing in the future it won't be just limited to computers, but probably to smart phones too. The idea of course, is that you will be able to work on the same documents from any computer or computer-like device whether you are connected to the internet or not.
SQL Server Data Services (SSDS) - If like me, you think this sounds like SQL Server in the cloud, well, you're wrong (and so was I). While it is a cloud computing data storage solution, it is not SQL Server as you know it. In fact, it is not even a relational database as you know it. It's actually very close to Google App Engine Data Store. Both are more like Object Oriented Databases. I've actually been working with the Google App Engine for about a month now and am getting ready to write an article about that. I've had to take off my Relational Database hat and put on my Object Oriented hat (because goodness knows the two rarely marry easily) and frankly it's not bad. If done correctly, it can help eliminate a lot of "plumbing code" we developers always need to create or generate (and then modify) to get our elegent Object Oriented Design to line up with our elegant fully normalized Relational Database. It also takes advantage of Microsoft infrastructure and it's virtually 100% uptime, redundancy, scalability, etc.
What's got me really excited about these cloud computing data stores is that I can create a Silverlight application front end (which can be hosted on any kind of web server and doesn't require any framework like ASP.NET, ColdFusion, PHP, etc) and have it talk to a cloud database and not have to worry about any of the infrastructure. In theory it should easily scale to all the traffic that hits my site once it becomes the next mySpace/Facebook/Youtube...For more on Cloud Computing, you can read my other blog posts on the subject.
Still Below The Radar
Popfly - This is a fun little technology with a new take on the old "drag and drop programming" concept that I remember from the old NExT computer days (circa 1987). You create mashups by dragging and dropping code block icons. For instance, you can drop a Facebook My Contacts block on the canvas and a MapPoint block, point the Facebook to your person contacts, drag the connector from the Facebook block to the MapPoint block and bam! there you have it... a map showing where all your Facebook friends live. Pretty cool. But wait...there's more... You can then host your mashups on your own webpage hosted at Popfly. And if that weren't enough, you can now create your own games by dragging, dropping, painting, etc. Will the fun ever end?!?!
Sea Dragon - Microsoft just recently acquired this company that created a technology that can gather gagillions of photos from different users of the same thing (for instance, Notre Dame, or the Pieza San Marco) and create a 3-D model from it. Furthermore, you can "fly" around the place looking at the different photos as your perspective changes. In this case a picture is worth more than a thousand words, so watch this! As you can also see from the video, the technology also allows you to zoom in and out from an amazing bird's eye view down to very, very fine detail. If Microsoft continues to invest in this technology and allows it to be an open standard and not proprietary, it could really revolutionize the way web pages are designed and created.
Open Library - Microsoft actually just pulled out of this project, but that was according to plan. Where Google has been attempting to scan all the books in the world (well, at least from some of the biggest universities) and putting the text in their own proprietary format, so you have to use Google to access the public domain works, Microsoft had been contributing money and programmers to an Open Source library which has a similar lofty goal of collecting all the world's books, yet they are keeping everything in an open format so we and our children and children's children will always have the greatest libraries of the world at our fingertips. My understanding is now that the ball is rolling, Microsoft has left the project to let it operate on a non-profit basis, the way public libraries are supposed to be run. It's funny to me that Microsoft hasn't tooted there own horn on this one, it would have made a great PR. Oh well, Microsoft has never been good at PR.
OK, so that's all I can think of right, now. I'll post more as I remember and discover other Microsoft Technologies flying below the radar...