Silverlight 3 - Where is Silverlight Mobile?
Update 2/18/2010: Silverlight Mobile is coming in beta form during the MIX 2010 conference in March 2010. This will include a Silverlight SDK for the new Windows Phone 7 platform. Look for Silverlight mobile to be announced for Symbian, BlackBerry and Droid in the near future as well.
This article was written March 2009...what is funny is how I was right that Silverlight mobile would be around the Visual Studio 2010 CTP/RTM. Go me :)
During MIX 2009, Microsoft announced many new features that will be coming as part of the Silverlight 3 framework. One feature that was suprisingly missing was Silverlight support for mobile devices. Not only was this surprising, but it was really disappointing as I was really sure that this feature would be released as part of Silverlight 3.
Why the surprise?
Did you know that mobile support for Silverlight was announced a while ago? Do you know when? End of 2008? Beginning of 2008? Try the beginning of 2007! Silverlight support for mobile devices was shown publicly during the MIX 2007 conference when Silverlight Alpha 1.1 was announced. Over two years ago we had a demo of Silverlight on a mobile device, yet we still don't have a public beta or release of the product (Note: There are private demos of this out there).
"Microsoft probably just shifted strategies and you are making a big deal about something two years ago, right?"
Actually NO. At MIX 2008, Amit Chopra (the program manager for Silverlight mobile) during his Mobile Devices and Microsoft Silverlight presentation showed off Silvelight on the mobile. So one year later Microsoft reported progress on the Silverlight mobile platform. Furthermore, they stated that they would also be releasing Silverlight 1.0 for Mobile shortly after the conference for Windows Mobile 6.x. (Check out the video linked above for the false promises).
Some real basic demos of Silverlight mobile at MIX 2008 (Yeah, it was shown that dark.)
Well, has there been any more announced from Microsoft relating to Silverlight mobile? Believe it or not, again at the PDC 2008 conference (October 2008), Amit Chopra during his talk Silverlight 2 for Mobile showed Silverlight 2 running on a mobile emulator and mobile device. Furthermore, we were also told that Silverlight Mobile would NOT be like Flash Lite. You would get about 99% of the SDK on the web and mobile in one shot (Note: Things like video brushes would not be supported on SL mobile). Sounded really promising, right?
Silverlight 2 Mobile Environment. Silverlight 2 debugging on a Mobile emulator. Too bad it never was made came public.
Fast forward to MIX 2009. Surprisingly we were showed nothing about Silverlight 2 or 3 on a mobile device. There was some chatter on Twitter with someone who talked to Amit Chopra and he stated that Silverlight mobile is about a year away! That was apparently true since there is nothing in the Silverlight 3 SDK related to mobile devices.
It is not like Microsoft couldn't accomplish Silverlight on a mobile in two years. Look what has happened to the evolution of Silverlight in two years. From March 2007 to March 2009, we have gone from Silverlight 1.1 Alpha -> Silverlight 2 Beta 1 -> Silverlight 2 Beta 2 -> Silverlight 2 RC -> Silverlight 2 RTW -> Silverlight 3 Beta 1. Two years is an eternity for an immature platform like Silverlight.
"The fact that Silverlight for mobile has been announced two years ago and we don't have a public beta is surprising. But what is more surprising is that Silverlight mobile is over a year away!"
What happened?
It's obvious that Microsoft has hit some snags with Silverlight mobile. I don't know the exact details but it looks like performance had a big part of it. Furthermore, Silverlight did not support the features that next generation mobile devices currently support. For example, the iPhone has 3D transitions, multi-touch support, clearer text. Silverlight obviously needed to catch up in order to be competitive when it was released. Microsoft decided to add the features into the core framework first and then leverage them in the Silverlight mobile framework. A lot of people on forums are asking why Silverlight went with some features like 3D support, multi-touch, clear fonts, etc., instead of printing. As you can see, these features make a little more sense now.
The second part of the story is that Silverlight mobile needs to fit into Microsoft's higher mobile strategy. Microsoft has announced in pieces its Windows Mobile 7 strategy. I think it is essentially going to be a Microsoft version of the iPhone with a major twist: the Silverlight App Store and Silverlight will be powering a lot of the extensions. More on that in another post.
Has Microsoft given up on Silverlight mobile?
Obviousy, the answer to that is no. Microsoft wants to get Silverlight for mobile devices right. I think it will power the Windows Mobile 7 strategy and it needs to be "as good" as Apple's iPhone/iPod. Microsoft can't afford another Zune vs. iPod debacle. If Silverlight is done right, it could be really powerful and blow Apple's framework away. I will take .NET over Apple's Objective-C any day. Furthermore, Silverlight allows you to target mobile, web and the desktop all at the same time. The iPhone framework (as of now) only supports the mobile platform. As you can see, Silverlight mobile is key to the strategy at Microsoft.
When will we see Silverlight 3 mobile?
The best estimate we heard was a tweet from MIX (I heard from someone who talked to Amit Chopra) that Silverlight mobile is about a year away. This makes Silverlight mobile being released in line with the Windows 7 mobile platform. I am hoping we see a beta/CTP around the Visual Studio 2010 release.
Silverlight 3 Beta - Downloads You May Have Missed
Everyone that is interested in Silverlight 3 Beta development has probably checked out all of the core items in the release: Silverlight 3 SDK, Silverlight 3 Tools for Visual Studio 2008, Blend 3 Preview, Silverlight Control Toolkit (March 2009 version). There have been several other releases that are related to Silverlight 3 you may have missed and are a little less obvious if you are new to Silverlight development. This blog post deals with the items that are a little less obvious but important to know about. Not all of these downloads are targeted for Silverlight 3; however, they should work with Silverlight 3 Beta.
"There have been a ton of tools released
with Silverlight 3. Did you miss any of them?"
Data Access
Silverlight includes several different ways to consume data (most of them being via services). There have been three new updates to the data service frameworks available for Silverlight released recently:
- .NET RIA Services - This is a new n-tier design framework released during the MIX 2009 Conference. This framework allows you to factor more of the work into the service tier for business logic, validation, errors, querying, etc. This framework is new to the Silverlight 3 Beta.
- ADO.NET Data Services 1.5 CTP1 - This is a preview version of the upcoming update to ADO.NET Data Services which provides client and server enhancements for Silverlight developers who create service applications. It is very similar to .NET RIA Services (In fact, many people think these are the same; however, these are DIFFERENT frameworks)
- WCF REST Starter Kit Preview 2 - Yet another data access framework from Microsoft. This framework targets WCF and applies REST architectual patterns for service access. In my opinion, WCF with REST gives you the most flexibility and control when creating data aware applications with Silverlight. Using interceptors, you can control every aspect of message headers, creation, caching across the channel stack. The WCF REST Starter Kit will be included with .NET 4.0/Visual Studio 2010.
- WCF REST Starter Kit Preview 2
- IdeaBlade DevForce - This is a 3rd party framework that works along the same lines as ADO.NET Data Services and .NET RIA Services. They have some additional tools that take away some of the hassle of developing data access layers with Silverlight. However, they are not FREE and they are a 3rd party framework. They do have positive reviews. The biggest difference between them and WCF REST, ADO.NET Data Services 1.5 and RIA .NET Services is that their product is out now and ready to be used. If you want a Line of Business framework that is ready for production, give them a look.
- IdeaBlade web site
Architectural Pattern Frameworks
Silverlight is a plug-in that allows you to do a mix of web/winforms development. However, its similarities lend itself to the same UI patterns that are well documented in WPF. Furthermore, Silverlight as a plug-in needs to be hosted in a web environment. Architecting the data flow from the host to the plug-in is also important. This is where the MVVM and MVC architecture patterns apply.
- ASP.NET MVC 1.0 - If you are working on the web, you have to host your Silverlight application somewhere. ASP.NET MVC 1.0 allows you to build Model-View-Controller architected applications inside ASP.NET. If you are implementing REST access or URL routing navigation inside your Silverlight application, ASP.NET MVC will wrap like a glove around your Silverlight XAP files.
- Composite Application Guidance (also known as Prism v2) - This is a composite framework for Silverlight and WPF applications. Microsoft provides guidance for enterprise development using the MVVM pattern and implement Commanding for Silverlight. This framework also includes a complete StockTrader example.
- Microsoft Azure (March 2009 CTP) - Visual Studio 2008 Tools have been updated if you want to write applications in the "Microsoft Cloud". Mesh Enabled Web Applications allow you to use Silverlight as the front-end for Microsoft data services.
- Windows Azure Tools for Visual Studio
Media Streaming with IIS 7.0
Silverlight 3 enhances the multimedia experience by providing true 720p HD streaming in full screen, hardware accelerated video processing and smooth streaming. Many of these features were pioneered during the 2008 Olympics broadcast in NBC. Microsoft has made this technology available to anyone who wants to host a Silverlight experience using IIS 7.0
- IIS Media Services - Allows IIS 7.0 to be turned into a web server that can stream HD quality Silverlight media streams with smooth streaming technology that powered the NBC Olympics 2008 Site.
- UX Media Simulator - This is a media player that allows you to graphically tune and visualize what happens when your Internet bandwith drops and Silverlight smooth streaming kicks in. Pretty good tool to use to debug your content if smooth streaming is important to you.
- UX Media Simulator
- Watch a video with UX Media Simulator and tune the bandwith
Additional Tools
Silverlight's unique ability to run on the client while hosted on the web has provided it with many interesting capabilities that were previously hard to achieve. Here are some tools that make our lives easier for developing in Silverlight:
- Virtual Earth Silverlight CTP - This set of assemblies allow you to expose and control Microsoft Virtual Earth Maps via Silverlight. It is a very cool add-on for Silverlight if your applications require maps.
- Silverlight Spy 3 - This is an absolute MUST HAVE for any Silverlight developer. Think of it as Fiddler/.NET Reflector for Silverlight applications. It has been recently updated for Silverlight 3 Beta.
- Silverlight Spy (update includes support for Silverlight 3 Beta)
Add-Ons and Code Examples
Microsoft has made a lot of the features really extensible in Silverlight 3. Microsoft showed off many features in Silverlight 3 that can extend the features provided.
- Expression Web SuperPreview for Internet Explorer - This tool allows you to test/debug your applications in IE 6, 7 and 8. It is very cool and a must for any online compatibility testing with IE. Most Silverlight applications remain web hosted so this applies to Silverlight as well.
- Expression Blend 3 Sample Behaviors - Expression Blend 3 includes something called behaviors. This gives designers the ability to drag and drop and add "triggers/events" to the design objects and have them "behave" in certain ways. During MIX 2009, Microsoft showed off some real cool behaviors like adding physics to object by simply dragging and dropping it on top of a control.
- Expression Blend 3 Behaviors
- Silverlight 3 Pixel Shaders - Silverlight 3 now supports Pixel Shader 2.0. This allows you to write very interesting and powerful screen manipulation using HLSL. For example, some of the nice Windows Aero Effects in Vista are done using pixel shaders. There will no doubt be a CodePlex project created for Silverlight Pixel Shaders. For now, many of the existing WPF pixel shaders can be made to work in Silverlight 3.
- Slidentity Silverlight 3 Application - Slidentity is a cool Silverlight 3 Beta application that shows off many of the new features. It is an end to end example with source code.
As you can see, there has been a lot of stuff released around Silverlight 3 that is well beyond the "core release". It can be very easy to get lost with the amount of tools/frameworks/apps out there. If I have missed any obvious ones, please e-mail me and I will add it to the list.
Silverlight 3 Release Date (RTW) Surprise
Update 07/08/2009: Silverlight 3 RTW has been released. Please visit my blog post here for all the download links:
https://silverlighthack.com/post/2009/07/09/Silverlight-3-Relase-and-Download-Links.aspx
Update 05/28/2009: Scott Guthrie during his online talk yesterday mentioned that Silverlight 3 is close to being finished up and will be released "soon". I remember when he mentioned that during Silverlight 2 Beta 2/RC0 and Silverlight 2 RTW was out within a few weeks. The release is REAL close now! Expression Blend 3 is also getting some updates in RTW. Also note the July 10, 2009 invitation to talk about Silverlight 3...http://arstechnica.com/microsoft/news/2009/05/silverlight-3-and-expression-studio-3-launching-july-10.ars
Silverlight 3 Beta 1 was released last week during the MIX 2009 conference. This version of Silverlight includes many enhancements that many developers want to incorporate into their RIA projects now. The first question that comes to mind to many architectes or development decision makers is, when is the framework going to be released so they can plan their product development schedule. Unfrotunately, during the conference, Microsoft did not provide clear guidance on when to expect Silverlight 3 RTW. This article tries to gauge when Silverlight 3 will be released and why.
Based on the public knowledge available Microsoft released a few days ago, we can deduce when Silverlight 3 will be released. What does it mean when we talk about the "Silverlight 3 release date"?
"Silverlight 3 is now much more than just
simply installing the SDK and the runtime."
At its core, the "Silverlight 3 release" includes several key dependent tools and technologies that need to be released together:
As you can see, this list has grown from when Silverlight 1.0 or 2.0 was released. When Silverlight 1.0 was released, only Blend, the SDK and the tools were released. Furthermore, the list of tools will no doubt grow when mobile support is added to the Silverlight runtime. With all of these dependencies, it obviously will take longer for a Silverlight release and that has to be considered when predicting when the release will happen.
Past Silverlight Release Cycles
Let's take a look at the past release cycles of Silverlight 1.0 and Silverlight 2.0 of the major betas and releases:
Silverlight 1.0 (about 2 years between first public alpha/beta -> RTM/RTW)
- WPF /E (several betas internal and external in 2006)
- Silverlight 1.0 Beta (March 2007)
- Silverlight 1.0 RC1 (July 2007)
- Silverlight 1.0 RTW (September 2007)
Silverlight 2.0 (about 1.5 years between first public alpha/beta -> RTM/RTW)
- Silverlight 1.1 Alpha (March 2007)
- Silverlight 2.0 Beta 1 (March 2008)
- Silverlight 2.0 Beta 2 (June 2008)
- Silverlight 2.0 RC1 (October 2008)
- Silverlight 2.0 RTW (October 2008)
As you can see, both Silverlight 1 and Silverlight 2 have had pretty long development cycles between public betas to when they were finally released. If I were a betting man based on the past information, I would bet that Silverlight 3 RTW would be a long way away (at least 5-6 months away). Furthermore, Silverlight 1.0 has had three "beta" releases and Silverlight 2 had four "beta" releases. I even posted my thoughts on this in the Silverlight forums, based on my assumption that Silverlight 3 would be out around when VS 2010 is released later this year.
Silverlight 3 Release Date Hints
After watching some more of the videos from MIX 2009, more information has come out to make my assumption of a release in the 6-9 month timeframe incorrect.
PowerPoint Slide from MIX 2009 - Deep Dive into Microsoft Silverlight Graphics
From the slide above, we can see that Microsoft is actually planning a release in the Summer of 2009! That would mean it would be about a 3-6 month release cycle from the first beta to RTW. This is pretty surprising when comparing it to the Silverlight 1 and Silverlight 2 release cycles which were over 18 months. This information was reiterated in a Scott Guthrie interview recently that only one beta of Silverlight 3 was planned.
Possible reasons for a shorter release cycle
Based on the information above, we can safely assume that Microsoft is going to deliver Silverlight 3 in one of the quickest release cycles for Silverlight. How is Microsoft accomplishing this? I can only speculate (based on public information), but I think it has to do with a few key reasons:
- Silverlight 3 is like .NET 3.0 as Silverlight 2 is to .NET 2.0. .NET 3.0 added WCF, WPF, WF and Cardspace to .NET 2.0; however, the core framework did not change. Silverlight 2 uses .NET 3.5/Visual Studio 2008 and Silverlight 3 does the same. I think that Silverlight 3 essentially builds upon the CLR with additional assemblies and doesn't change the core of Silverlight 2 much (I could be dead wrong here).
- Silverlight Mobile is conspicuously missing from Silverlight 3. Silverlight Mobile was demo'ed way back in April 2007. Microsoft showed off Silverlight 2 on mobile devices in October 2008. Silverlight 3 obviously does not include any mobile support. I think Microsoft cut this feature out as they re-thought their mobile strategy focusing it towards Windows 7 Mobile (out in 2010). Cutting this major feature out allowed Microsoft to push up the date by several months.
- Silverlight 3 is essentially going to have tool support both in Visual Studio 2008 and Visual Studio 2010. Visual Studio 2010 will add a rich designer for Silverlight 3 where developers will be able to interact with the XAML/designer much like they are able to now with Blend. However, this support is NOT being added into Visual Studio 2008 (even though in Scott Guthrie's Silverlight 3 glimpse in November 2008 it looked like it would be added to VS2008). So what? I think that the Silverlight 3 could come in parts and all of the tools won't be released until the end of 2009. We got another hint of that with Expression Blend 3 Beta not having all of the features being present (i.e., Sketchflow). For example, .NET RIA Services might not be released RTW with Silverlight 3 in the Summer of 2009.
- Silverlight 3 is a key part to Microsoft's UI strategy and it really catches up to a majority of Adobe's Flash/Flex features. Silverlight still has some features missing that Flash/Flex technology has (i.e., printing, microphone, web cam.) However, Silverlight 3 adds and builds upon several key features that Flash/Flex simply still don't have on their radar (line of business framework, enterprise integration, multithreading). The Silverlight 3 feature set will roughly equate to the Flash/Flex feature set.
What about Visual Studio 2010
Update note: Visual Studio 2010 Beta 1 public release is "in a matter of months now" according to Mark Wilson (http://videos.visitmix.com/MIX09/T73M). Maybe VS 2010 Beta 1 will be released when Silverlight 3 RTW is released in the summer? Remember Silverlight 3 is NOT dependent on VS 2010 and will work in VS 2008 and VS 2010. Microsoft very well might release Silverlight 3 in the summer. VS 2010 support and add-ons such as .NET RIA Services might come later.
In conculsion, it is a pleasant surprise that Microsoft is planning on releasing Silverlight 3 in the Summer of 2009. This would make Silverlight 3 have the shortest release cycle out of all of the previous Silverlight releases. This release packs a lot of features and has excellent tool additions which can benefit many RIA developers. However, I think that Microsoft may have dropped certain features (i.e., mobile support) from the release. Furthermore, the full Silverlight 3 developer experience may not be fully realized until Visual Studio 2010 is released. This might hurt the release in the long run. Personally, I am excited about the early Silverlight 3 release date. The early date allows me to start architecting on the new framework with confidence that my application will not be waiting for months on Microsoft for Silverlight 3 RTW.
Windows Server 2008 Web Edition - Ready For Primetime
Summary
Windows Server 2008 Web Edition is not the Web Edition we knew from the
Sever 2003 platform. Microsoft has removed the big limitation of
installing some enterprise applications on the OS (i.e., SQL Server).
Furthermore, IIS 7.0 is now the core web server and it can take advantage of
hardware specs similar to Standard Edition. With these changes and
more, Windows Server 2008 Web Edition is now a viable/affordable
upgrade path from Windows Server 2003 Standard.
Are you getting ready for all the good stuff Visual Studio 2010 will bring? Visual Studio 2010 will bring a lot of great features for ASP.NET enterprise services and tons of great features. Some key features like ASP.NET, ASP.NET MVC, Silverlight 2/3, WCF/WF 4.0 will all run faster and better on the IIS 7.0 platform because of its key architecture features. Platforms like Silverlight 2/3 or ASP.NET MVC will be easier to deploy on the IIS 7.0 web server. Lastly, some features of WCF 4.0/WF 4.0 will require IIS 7.0 to utilize all of their respective features (WAS in IIS 7.0).
IIS 7.0 is not a decoupled application you can install on any OS. Currently the IIS web server is coupled to the Vista/Windows 7 workstation OSes and the Windows 2008 server OS. Therefore, if you want to use IIS 7.0 in production, you need the Windows Server 2008 Operating System. I have a couple of projects coming up that I am developing and wanted to utilize some of IIS 7.0's features. Furthermore, having the projects ready to take advantage of future .NET enhancements is another added bonus. I decided to upgrade my server with the new OS.
I have a dedicated server that I lease through softlayer.com and I looked at my upgrade options. I was currently running Windows 2003 Standard so upgrading to Windows 2008 Standard made perfect sense. As part of my hosting package, I was not being charged extra for my OS; however, upgrading to Windows 2008 Standard was an extra $70/month. That is over $800/year just to upgrade to the "equivalent" version of Windows 2008 Server. I did notice that Windows 2008 Web Edition was being offered at the same rate as my current OS. However, I was really apprehensive about upgrading/downgrading to a "web edition" of an OS.
Windows 2003 Server Web Edition is really limited in what it was licensed to do. Essentially it limited you to using the server as a web server. By not allowing you to run any of the server services, it prevented you from installing enterprise applications and limited the hardware specifications. The biggest limitation was the inability to install SQL Server. If you ran Windows 2003 Server Web Edition, you were limited to SQL Server Express (unless you wanted to install an open source alternative or hack the OS). I think Microsoft dropped the ball big time, as any web applications worth its weight requires some kind of database backend. Most web sites (even ones that get a decent amount of traffic: top 20,000 worldwide) can be run from a single server. Furthermore, any web application worth its weight usually is dynamic and has some kind of backend database. If Windows 2008 Server Web Edition were the same, then this was obviously not an option for me.
Windows 2008 Server Web Edition is different than its 2003 counterpart. While the 2008 Web Edition still had the hardware/service limitations, the OS did eliminate the big limitation of not being able to install SQL Server on the OS (SQL Server Enterprise editions still do require a higher version of Windows 2008 Server). The Windows 2008 Server Web Edition does support a decent amount of RAM (32 Gig on x64 hardware) and allows you to run on a max of 4 processors (which is definitely a beefy server) which is equivalent to the Windows 2008 Server Standard Edition. Therefore, Windows 2008 Server Web Edition is actually a pretty good equivalent to Windows 2003 Server Standard as a web server.
Why upgrade to Windows Server 2008
There are a lot of neat features in Windows Server 2008; however, IIS 7.0 for me is the biggest. I mentioned performance, Silverlight and ASP.NET as my big reasons as to why I decided to upgrade. Let's look at it a little deeper.
What makes IIS 7.0 great (my main reasons for going to it. I know there are several others not mentioned below.):
- Performance:
- Modular Web Server Architecture allows you to turn features off and on like components. Apache has allowed you to do this for a while now. IIS has finally caught up and this improves performance as you do not need to install/run services that you do not use.
- Easy Dynamic Caching & Compression. This is finally built into IIS and allows you to quickly configure these settings. IIS 6.0 was a pain in the butt to do this. There are third party add-ons that do a very good job at this; however, it's free in IIS 7.0.
- Windows Process Activation Services (WPAS or WAS)
- Before IIS 7.0 if you wanted to host your Windows Communication Foundation (WCF) services, you had two choices: http or self-hosting. Both choices have their pros and cons. One coupled you to http via IIS and the other you were responsible for writing your own hosting module. With WAS you can now host your WCF services and they can actually activate/deactivate themselves via listeners. For example, imagine having a web site that is not turned on, taking any hardware resources and is ONLY activated when a request is made. Most WCF experts recommend WAS hosting because of its many features.
- Smooth Streaming
- If you want to deliver rich media experiences in Silverlight like nbcolympics.com, you will need this feature. This allows you to stream video content and it automatically throttles the quality of the stream if the network latency/connection is poor on the client's end. This is very cool as even stable Internet connections can slow down for a few seconds. You may receive a few frames at lower quality; however, your media will continue to play. This is especially important for larger streams where the buffering is determined at the initial connection.
- Extensability
- Writing custom handlers/modules and deploying them to IIS has never been easier. Several months ago, I showed how one could write an http handler for a dynamic clientaccesspolicy.xml file rather than placing an XML file on root of the web server and it is a lot simpler in IIS 7.0 than IIS 6.0.
- Microsoft has a download page where the community has made several extensions that you can drop into IIS 7.0. This of course was available in IIS 6.0; however, the management and deployment of this wasn't 100% there.
- Ease of use for current and future applications (These are minor but make my life easier.)
- Silverlight 2 hosting does not require additional MIME types (like it does in IIS 6.0)
- ASP.NET MVC does not require wildcard mapping (like it does in IIS 6.0)
- Want to create a clean REST service URLs (removing the .svc)? Just as in ASP.NET MVC; there is no wildcard mapping required.
After doing the research over the last couple of days, I decided to bite the bullet and upgrade the OS to Windows 2008 Server Web Edition on Sunday (lowest bandwidth for my websites). I installed SQL Server 2005 Standard, restored my databases and upgraded my web sites to IIS 7.0 and everything worked out great. Having upgraded to Windows 2008 Server, I am really looking forward to using the IIS 7.0 features for my future projects and I will be ready for everything that .NET 4.0 and Visual Studio 2010 has to offer.
Taking your developer library mobile with the iPhone
I have always been a big proponent of reading/understanding complex development topics really well before starting to use them in prototyping or a live environment. Developers/architects learn in different ways; however, I find myself uncomfortable coding something when I don't understand why/how things work. With all the information out there in the web 2.0 age (with all the development blogs), I still find that the best resources for information are books. I am in the process of starting my own book on a specific Business Intelligence topic and have learned to appreciate the dedication and time it takes to put a book together. The topic, individual chapters, code examples all have to flow and make logical sense for your desired target audience. Furthermore, books on development also have to go through a technical review process that can include multiple people. This usually makes a chapter or even several pages in a technical book much more valuable than someone's 2 a.m. rant on a blog.
Evolution of my technical resources
Phase I - Physical Resources
I started my technical library in late 1998 when I did some consulting work for BMG Online (They also owned booksonline.com which gave me access to many IT books that customers had returned or were defective). The only problem with all these resources is that they were physical and I had a pile of books under my desk at its peak (probably around 75). The other problem is that books aren't really portable and you just can't take 75 physical books with you.
Phase II - EBooks
In the last several years many publishers have started offering e-book versions of their books usually in PDF format. This format allowed the books to be stored on the network and located in multiple places (i.e., e-mail, network drive, internet drive, etc.). Ebooks also had some obvious nice features:
- If you wanted to print several pages out, you could easily
- You could share the books/some pages with your developer team(s)
- If there were a part of code you wanted to analyze, you could do it by simply selecting it and pasting it into Visual Studio and not have to download a seperate code zip file for just a snippet of interesting code
Phase III - Books on the Mobile & The Cloud
Having an ebook library that can be shared and on the internet is great; however, it does come with two drawbacks. The first drawback is that you still need a laptop/desktop to view ebook files. Secondly, you are still responsible for building your own library and creating a variety of feeds for reading yourself. Mobile devices and devices like the Amazon Kindle coupled with cloud services aim to solve some of these problems. This marriage of digital reader and service can bring entire massive libraries to your fingertips.
The Kindle and Kindle 2 from Amazon seem to be the rage in the recent months. Even many technical bloggers are talking about their new Kindle and how great it is. With the Kindle, you do not need a desktop/laptop to read an ebook online as the Kindle device is specifically geared for reading digital content online. I never have used the Kindle; however, I do like the concept as it is an evolution over having a bunch of PDF files on my HD or an internet drive. One of the issues I have with the Kindle is that you need to subscribe to feeds just to read blog articles. Even though they are nominal fees, I am not paying $1.99 to read Slashdot articles :) Furthermore, I do find having an entire seperate device just for reading ebooks a little overkill. This is why I have started porting my ebook library to the iPhone.
Google's approach is to index a great deal (if not all) of the books in the world at http://books.google.com and essentially brings a huge amount of books to your fingertips without having to own/download any of them. The great part about this is that they are now available on mobile phones as well.
Google Book Search also includes new titles like this:
Using your iPhone for your development library
Using GMail as your ebook storage and provider
For those who do not know, Gmail is fully integrated into the iPhone and provides you a decent amount of storage on the Internet that you can cache on the iPhone. This was my first stab at setting my developer library up -- by using Gmail on the iPhone to cache my attachments (which were PDF files) on the iPhone. I sent myself some e-mails and tagged them as an Ebook.
My Ebooks in my Gmail account
If you double click the attachment (if the file has been downloaded), then the ebook will launch in the PDF viewer.
The book (e-mail attachment) downloaded from my Gmail account and opened in iPhone's default PDF viewer
An Ebook opened in iPhone's default PDF viewer
I thought this was a great solution and started throwing all my PDF books into my gmail account...then came the issues. The first one I ran into was when I tried opening a large PDF file. I quickly found out the default iPhone PDF viewer cannot open PDF files over ~12 megabytes.
The second problem is that the default PDF viewer has really basic functionality. You can view the documents vertically/horizontally, zoom in and page by one page at a time. For a technical resource (some over 600 pages), we need a little more functionality beyond basic viewing. It would be nice to be able to open large documents, page faster, access Internet links embedded in the document, be able to jump to the current page where you left of reading and be able to bookmark certain key parts of the book.
Using a PDF Organizer on the iPhone
The great thing about the iPhone is that if we need some key functionality or need a software program to provide some functionality, we can head to the App Store and most likely someone is providing this functionality. This is what makes the iPhone superior over other devices -- that I can solve any problems I have with the device itself and not have to "sync" with my home desktop or install via a cable.
After doing a quick search on the App Store and checking out the reviews, I decided to go with the Felaur PDF Viewer as it had the highest ratings and it provided a lot of the functionality I wanted. The application (like most iPhone apps) was only $1.99 and I figured it was well worth the cost of trying it out. The only feature that was missing was the ability to click a link and be taken to a web page. The Felaur PDF Viewer allowed me to upload my PDF files for viewing by making the iPhone a web browser (pretty cool technique) and using my browser to upload the files.
iPhone App Store search on PDF files
The Felaur PDF Viewer works just as promised. Using the appliction, I can open large PDF files (The largest one I tried was about 30 megs), page quickly using a slider to acces any part of the book, add bookmarks to access any sections I want with one click of the button and if I close the book and do something else on the iPhone and open the book up, it remains on the page I was reading.
Screen shot shows the uploaded ebooks to the PDF viewer. They are stored locally on the iPhone's HD
Screen shot shows an ebook opened with the commercial viewer (Notice the slider bar so I can access any page quickly)
Another nice feature of the Felaur PDF Viewer is the ability to bookmark large resources. Screen shot below shows Jon Skeet's excellent C# with my bookmarks for reference allowing me to jump to any page
Now any of the technical books I have purchased are available to me online. I am a real big fan of the Manning books as they are quickly becoming one of the highest quality programming books out there (Reminds me of the quality Wrox (big red books) used to be in the late 90's and early 00's). Furthermore, all of their books are provided in physical and ebook format. They also have a MEAP program and it gives you the ability to access "in progress" books before they are officially released.
Not all the resources have to be purchased, nor do they have to be books to be high quality resources or valuable resources. Here are some other types of resources you could use:
Using Google Book Search for Technical Resources
Google has been scanning a huge amount of books and uploading them to the Internet and providing users the ability to view them. Google calls this project Google Book Search. They also provide a rudimentary way of paging and searching the books. What this means is that there is a huge number of books available online including many technical books. Furthermore, mobile access has started being offered to some of the books (I am sure that this will include all books in the future). Mobile access means that the book is formatted for a smaller screen. However, an iPhone or a mobile device with a full feature browser can browse the book just fine in the window. This is definitely the future in taking your technical resources online, as nothing needs to be downloaded or persisted to the hard drive. The books live "on the cloud" and all you need is internet access to start viewing what you want.
Browsing Google Book Search with the iPhone for technical resources
Google is touting its breakthrough agreement with authors and publishers to provide access to these books on the Internet. They have several access categories of books and the recent technical editions are all likely copyrighted. What is interesting is that Google's Book Search allows you to page through the book and randomly insert a statement that the book is copyrighted or these pages are missing. However, if you go back to the screen in a new browser window, you can go back and access that page again. (Hint: If you use a tool like Fiddler/Web Development Helper, it's not hard to see what is going on). Essentially, what I am saying is that even the copyrighted books are available for you to browse and download. I am not advocating this. In fact, I would be mad if I were an author and had my book up there and people reading it for FREE. I think that Google needs to address this loophole in Book Search.
Summary
In this article, I showed you how you can move your developer resources to electronic format and access them using a mobile device. For any developer that wishes to take his resources everywhere and access them anywhere, this is a must. There is so much out there to learn and consume. Combing the ability to consume resources using a local viewer or from "the cloud" using Google's Book Search service will allow you to consume more information. Having your resources organized on your mobile device will help someone who is an "information junkie" or who wants to be more efficient in accessing their resources faster. While this article targeted the iPhone device, I am sure you can do the same with some of the more recent mobile devices and Windows Pocket PC devices.
So what I am reading now?
Happy reading.
Beginning Silverlight 2 From Novice to Professsional - Book Review
Quick Summary
Pros:
- Excellent book for anyone getting into Silverlight 2
- Detailed step-by-step exercises cover the core of Silverlight
- Code is simple and easy to follow. Does not introduce unecessary syntax sugar/advanced techniques that could confuse a beginner reader
- Well organized. This resource is a perfect example why a Silverlight novice should bye a book and not try to read from blog articles (which can contain misleading information)
- Code exmamples work (I did not try all of them). The ones I tried work spot on.
- Delivers what it promises: a very good introduction to the core foundation of Silverlight 2 that can be built upon in future training or resources
Cons:
- Does not cover some basic steps that could confuse Silverlight novices
- A chapter dedicated to installing the Silverlight 2 SDK, plug-in, Control Toolkit and Expression Blend 2 SP1 together would have been welcome
- "Introduction to Expression Blend" chapter completely fails to mention that SP1 is required for Silverlight 2 development. Having this critical piece of information missing from the resource is completely inexcusable as it will make the exercises unusable.
- Does not provide much "resource value". Once the reader has consumed the core information, only several chapters are worthy of several re-reads.
- Truly for beginners only. If you have done some WPF development or have done some basic prototyping with Silverlight, this book is not for you.
Detailed Chapter Overview
Chapter 1 - Welcome to Silverlight 2
This chapter introduces Silverlight 2 to the reader. The introduction is short and to the point and explains what Silverlight is and what other analogous technologies are out there. Not much to say about this chapter other than it is a good introduction.
Chapter 2 - Introduction to Visual Studio 2008
My least favorite chapter in the book. It feels completely out of place. This chapter introduces Visual Studio 2008 and goes over some key new features inside Visual Studio 2008: JavaScript intellisense, Multi-Targeting Support and Transparent Intellisense Mode (These features are not used throughout the book). The chapter introduces us with the first exercise "Building Your First Silverlight Application". The exercise is very detailed (includes screen shots in key areas) and to the point. If you are at a book store and considering this book, focus on the exercise starting on Page 29 as it is very indicative of type of exercises you will see in the book. This chapter feels like it belongs as an appendix resource. I would have rather seen this chapter replaced with a chapter on installing Silverlight 2 SDK, Visual Studio 2008, Expression Blend 2 SP1 together.
Chapter 3 - Layout Management in Silverlight
This chapter is very good on explaining how layout management works in Silverlight. It introduces the main controls that govern layer control: canvas, stackpanel and grid. There are plenty of exercises with screen shots that describe what each one does. The layout management topic is absolutely essential in order to be able to understand how Silverlight design works. The location of this chapter in regard to the other chapters is perfect. Developers that are not coming from a WPF/RIA background will find this chapter very informative and valuable in understating how Silverlight applications should be designed.
Chapter 4 - Silverlight Form Controls
This chapter introduces some of the base controls that make up the Silverlight 2 runtime. The former part of the chapter introduces the syntax, properties and events associated with controls. The latter part deals with some exercise dealing with several controls. This chapter is very similar to Chapter 3 in that it is very well positioned in the book and the exercises do a very good job in conveying the necessary information.
Chapter 5 - Data Binding and Silverlight List Controls
This part of the resource introduces how binding works in Silverlight and then gives some detailed examples using the DataGrid/List controls. Binding is a critical component of data-driven applications and how their information is consumed by the UI controls. The binding component of this chapter is very well put together. It introduces the concept and gives the reader just enough information for them to "be dangerous". Binding in Silverlight has many facets to it and can be complex. This chapter doesn't try to overwhelm the reader with all of that information. Having said that, if you are familiar with WPF binding, this part of the chapter will be nothing new (WPF data binding is signifigantly more complex than Silverlight's model).
The latter part of the chapter deals with consuming the data via binding inside a DataGrid and a List control. The exercises show the reader the basics of consuming the data and presenting it in a nice way to the end user. This part is very well done and one of the strengths of the book.
Chapter 6 - Data Access and Networking
This chapter talks about a very important concept in Silverlight of being able to request data from outside storage. Silverlight cannot consume data directly from a database; therefore, understanding the network stack is essential for a Silverlight beginner. This chapter covers two essential types of network communication in Silverlight: services and sockets. Examples of both are provided in the book. They are good examples; however, they are geared more for the beginner. You would not want to follow these techniques in a real-world scenario; however, this does not fault the book in any way as it is meant as a novice introduction.
Chapter 7 - Local Storage in Silverlight
This is probably the most "fun" chapter for the reader as it covers the topic of local storage very well. Furthermore, at this point in the book, the reader is finally presented with a well-crafted Silverlight exercises that shows off the power of Silverlight. I really like the way the author presented the chapter and then introduces an exercise that builds on itself. Isolated Storage is another one of those concepts that makes Silverlight unique and not just another fancy Web 2.0 technology. It is a very powerful tool and the exercise presented in the chapter reinforces this very well.
Chapter 8 - Introduction to Expression Blend
This chapter is all about the design tool arm of Silverlight: Expression Blend 2 SP1. The chapter starts off by speaking to the necessity of having a design tool because of Silverlight's rich UI. My problem with this chapter (and the book as a whole) is that it doesn't provide all the information on Blend. For Silverlight 2 development, Blend 2 SP1 is required. Otherwise, your XAML design will simply not work. This omission is completely inexcusable. Furthermore, some links and overview of Expression Studio would have been nice. This is a very frequent hiccup to developers new to Silverlight as they get confused by what Expression is.
The core of this chapter essentially introduces the tool and all its parts. Even though I am critical of some of the omissions I listed above, the information here is very good for the beginner to understand where to find the design tools and how Blend is organized spacially in panels/toolboxes.
Chapter 9 - Styling in Silverlight
This is another fantastic chapter in this book, which is finally getting into some "meaty" parts of Silverlight. This chapter covers the topic of styling. The author does a real good job of introducing styling from inline properties, user control styles to application styles via XAML and Blend. The author goes over a key part of styling that other blog articles constantly miss, which is the styling hierarchy and how it is applied to the control. The concepts are presented with examples and screen shots like other chapters; however, this is where the layout of the book shines as it conveys a not so easy topic with ease.
Chapter 10 - Transformations and Animation
This part of the resource covers animations which are a core component of the Silverlight framework. This chapter is very solid; however, the novice reader absolutely must try the examples provided to fully comprehend the information. To no fault of the book, the different animations and transformations available in Silverlight are much easier appreciated online rather than the book. On a website you can clearly see what the animation/transformation is supposed to do.
Chapter 11 - Custom Controls
The last chapter in this book covers custom controls and why/how you would want to write them. This chapter is definitely the most complex part of the book and it is rightfully located as the last chapter. The chapter introduces the best practice model (Parts & States) that Microsoft recommends in creating custom Silverlight controls. Furthermore, dependency properties are explained and why they are key in custom controls. The latter part of the chapter covers an example of creating a custom button following the best practice of creating custom controls. This was one of my favorite chapters; however, I am not sure it fits well into an intro book for Silverlight. One could make the argument that this chapter could have been replaced with a chapter exclusively on the Silverlight Control Toolkit or Silverlight's rich media capabilities (which is suprisingly missing from the book completely).
Summary
Robert Lair's Beginning Silverlight 2 book is an excellent resource for developers that want to get learn Silverlight 2. The book is laid out very well chronologically and each section is clear and includes step by step examples and screen shots. The code examples are written in C# using concise and simple syntax, which allows the reader to focus on understanding the new concepts rather than trying to understand syntactic sugar. One of my presonal tests for using a book rather than online material is how much material does it offer beyond online resources (which are largely free). Robert's book does that very well in that regard as trying to find all of the core Silverlight knowledge in one place without having a lot of misinformation is hard. However, the book is missing a section on installing a Silverlight development with all the tools and I think that would be very valuable for Silverlight novices. If find that many developers new to Silverlight are suprised how many tools are out there from the obvious ones like Blend to the less prevelant ones like Expression Web or Media Encoder. This book delivers an intro to Silverlight spot on. However, it does this almost too well as anyone familiar with WPF/Flash won't get too much out of this as a resource. In conclusion, I would definitely recommend this book to any developer that wants to invest in the future and get their head around the core foundation of Silverlight.