Learning Silverlight in the dark

October 28, 2009 · Posted in Platform, Silverlight, Technology · 4 Comments 

Dear Microsoft,

I’m a career long Flash designer and developer. I have used Flash Professional and Flash Builder (a.k.a. Flex Builder) just about equally now, over this time, which means I’ve spent about the same amount dragging/dropping/drawing symbols in Flash Pro as I have writing AS/MXML in an Eclipse environment. I’ve approached projects starting on both ends of the workflow, as a designer building a prototype, and as a developer applying code and framework to existing or non-existing designer assets.

A recent new project at my job prompted me to learn and begin working with your Silverlight products and platform. Here are my notes, some suffering points, some compliments, and overall suggestions for how to improve your relatively new process for building RIAs.

1. What’s with the extremely long install process? Why is it that in order to install Visual Studio, I had to download an .iso (not an .exe like most installable software), then burn it on to a write-able DVD, then install it? Is this a process that your existing customers have told you they enjoy? Even after the download and burn, which took several hours at Fios speed, the install process took nearly 3 hours by itself. That’s right. To install Visual Studio 2008 SP1 on Vista, it took way too long. [Visual Studio 2010 beta took even longer.]

2. After figuring out what Silverlight SDKs and toolkits I needed, and where to find them, I downloaded and installed each of them — another very long process. Upon launching VS 2008 and going to start a new Silverlight project, I was hit with a deadly show stopper. VS 2008 would prompt an error “Object reference not set to an instance of an object” and then crash.. each and every time. Now, I posed this issue to several of my “.Net expert” colleagues, and each assumed I was missing some aspect of the Silverlight SDK/Toolkit install process. Turns out I was not. After searching (via Google) for the error, I found a helpful hint on a random blog (GeekswithBlogs.net) which gave me instructions to run something from the command prompt (devenv /resetskippkgs). After restarting Visual Studio 2008, this did the trick. Thankfully, and unfortunately, the issue covers Siverlight 2, although I experienced it working with Silverlight 3 as well. Now, this seemingly undocumented/unofficial ‘fix’ was very hard to find, so I was left wondering if these are things the experienced C#, VS or Silverlight developer just knows…

3. This next one I can’t fault you on, but it was confusing to me nonetheless. Working with Dlls was very awkward to me. The concept that I need to not just import (using…) a namespace/class library, but literally install an ‘assembly’ into my project seemed a bit strange to me. This process seems somewhat close to working with SWCs, but just a little beyond the bubble of what made sense to me. As a lifelong PC user, Dlls were always those library files that accompanied .exe’s when installing software on the PC. Now using them to add features, framework and tools to my project just seemed rather extensive. I realize this is a longtime standard practice, but for the newbie, was hard to wrap my head around initially. Perhaps some more documentation and examples on the what and why of this process would have helped.

4. I found out the hard way that the ‘Toolbox’ in Visual Studio 2008 (and 2010) is useless. It just doesn’t do anything for me. Sure, I like all my available tools and Controls listed, but what good is dragging and dropping tools into my code if they don’t come with some initial properties for display, event handlers or other functionality? VS assumes I know how to work with the Control, which is far from the case. Furthermore, there seems to be no publicized Control browser/view, which helps me explore properties of the Control/tool, how to customize it, etc.

5. Along the same lines, I found out the hard way that the Silverlight authoring flow changed in the middle of my projects. When I first installed VS 2008 (and 2010), inline Design view was part of the workflow. Just like FlashBuilder (in Eclipse), I could toggle between code/source view and Design view, if only to validate that my app’s layout was right on. Aside from never really understanding nor getting the Design view in VS to work, it seems that option is now all together eliminated. Now, I must simultaneously run Expression Blend to work on my layout and validate in Design view. Why can’t I do this in the same IDE? Were folks complaining about performance or having too capable a single authoring environment?

5. Again, along these lines, the whole code behind thing was not new to me, but took a while to get used to in your environment. It just seems that having two classes, one for layout and one for code is a bit arbitrary, especially for simple applications and examples. This necessity, which I’m assuming goes back in time way before Silverlight, seems to add further dependency on the need to work with both Expression Blend and Visual Studio to get things done right. Now I realize that in the big firm, you may see it as design being done with one tool and code being done/added with another tool. But, for the one man band that is me, in this case, having two apps open, worse yet, THE SAME PROJECT open in two apps, is a very weird workflow. I had to get used to seeing “this file has changed in another application” way too much.

6. I got caught in the void between Silverlight 2 and 3. Looking for books and references online, it seems there is way more written and blogged about SL2. Yet, your site and everyone in your community tells me SL3 is now the defacto way to build SL applications. Why is there such a lag with getting new examples for SL3? I’m surprised that all those early adopters who put out SL2 examples are so behind in updating those to SL3. It’s hard for me to tell which SL2 examples to ‘trust’, not knowing really what does/doesn’t translate from SL2 to SL3.

7. One thing I like about working with Visual Studio is the ability to launch multiple instances of the app. With two screens, which I truly hope the average MSFT developer has, it makes it easy to compare code from multiple projects by viewing both at the same time.

8. Another thing I like is the debug environment inherent in Visual Studio. Breakpoints are easy to work with and the stack dump is very easy to navigate when trying to figure out how to parse XML/JSON for the first time. It’s too bad that the IDE locks up (for me, anyway) when I’m in debug mode and that, upon stopping the debug process, I lose this stack as a reference when I’m further coding my app. Something tells me that there’s a way to sustain this view after debugging, but I haven’t figured it out yet.

10. While I have issues with the separation of Expression Blend functionality from Visual Studio, I do think it’s a very tightly designed product. The interface to toggle control layout, size, color, etc, is very clean and intuitive. It responds well, and generally, what I see in the IDE is what I get in the browser.

In closing, I realize that much of my issues may be a result of my not being a seasoned Microsoft and/or C# developer. Perhaps those familiar with your workflow and tools can find their way in and out of these shotgun issues much easier. I consider this, but then realize, aren’t you going after developers just like me? Aren’t you looking to give me a broader choice of tools and platform when I need to deploy a rich application?

Perhaps my situation is a bit different. As a platform evangelist, I’m not really evaluating your product, nor am I choosing what’s best, for my customers. Thankfully, for your case and mine, my customer , in this instance, is already your customer. In other words, we’re deploying a new SDK for your existing developers, so I’ve got to figure out not only how to develop in the Silverlight environment, but figure out best how our service fits in from both a practical and instructional perspective.

In closing, I hope what I wrote here helps you make your product better for your existing and future users. Don’t dumb things down on my account, but understand that not everyone installing (rather, waiting for the install process to complete so they can use) your tools knows them well enough to get themselves in and out of your workflow with ease. Lower the barrier of entry and you may appeal to, and more importantly, enable, a lot more folks. This may be hard for you, seeing as your existing and historic developer contingent has already adapted to what I think is a very hardcore centered developer process. Creative people need free flowing tools to put their ideas in motion. They need to express themselves in their own why, so you may not be able to ‘blend’ it easily with what you already have.

Obama chooses Silverlight

January 19, 2009 · Posted in Flash, Flex, Silverlight, Technology · 2 Comments 

I almost called this post ‘The politics of technology’, but thought better of it.

Just found out via Mashable that Obama’s administration has chosen to steam the swearing-in ceremony on their site. For some reason, rather than offering up the steam in several available technologies, they’ve decided to PROUDLY announce that it will be streamed via Microsoft Silverlight.

It’s curious to me why the administration would chose a technology most people don’t have. I guess that while Silverlight is not good enough for the American pastime (see MLB switching to Flash), it’s good enough for the next president.

Obama Silverlight

Serge Jespers explores a bit further why the technology might have been chosen.

Ted also has a nifty chart on the adoption of Flash vs Sliverlight.

Is Silverlight embedding Flash Player?

April 12, 2008 · Posted in Flash, Silverlight, Technology · 9 Comments 

The baseball season is officially well underway. So, finding myself rightfully at work on a Friday afternoon, I decide to tap into my MLB Gameday Audio subscription for the first time this season. It’s Red Sox vs. Yankees, after all, and I love listening to baseball on the radio — especially when it’s streaming online. I pay $14.95/year for the privilege, through MLB.com, and have enjoyed the service for 3 years now since moving West.

As I loaded up mlb.com and clicked on the “listen” icon next to the game (Boston vs. New York), I was welcomed with a new window, different from the classic red-white-and-blue media player. The window gave me the option: “Download the new SILVERLIGHT player OR use the traditional media player”. Since the game had already started and, even more important, I was too deep into some code to task my laptop with downloading/installing some new/untested technology, I opted for the traditional media player.

The familiar player loaded, and shortly after, the feed from Boston’s WRKO began streaming. I went back to work for a few innings — until I needed to pause the stream and test something. For some reason, I errantly right clicked on pause (very rare for me to do that) and I was shocked. In addition to the familiar “About Adobe Flash Player” option in the context menu, there was also a listing for “About Microsoft Silverlight”.

Does this mean Silverlight was installed without my knowing? Why is there an “About Microsoft Silverlight” listing in the context menu ALONG with Flash Player? Could it mean that Silverlight is running with Flash Player embedded? Or is it MLB’s(or their developers’) attempt to honor some strong partnership with Microsoft by confusing us to think that Microsoft technology is powering our enjoyment of the game? Is this even legal for them to do?

Adobe AIR != Silverlight, should not be compared

February 26, 2008 · Posted in AIR, Flash, Flex, Silverlight, Technology · 1 Comment 

Adobe AIR and Microsoft Silverlight should not be compared. 

Understanding the difference

The only thing both have in common is that they are new technologies.

Adobe offers AIR to allow their existing customers, RIA developers and designers, to extend their applications from the web to the desktop. Microsoft offers Silverlight, in similar fashion, except it wants to leverage its existing desktop application customers to build RIA apps for the web.

Understanding competitive goals

As far as being competitive, I’m sure Microsoft would love (and is aiming) to draw existing Adobe customers away from leveraging Adobe’s development and design products like Flash, Flex Builder, Fireworks and Photoshop. In turn, Adobe could likely draw existing Microsoft-technology desktop developers into adopting their products if perceived as an ‘easier and more efficient’ way to build desktop apps.

Who will win?

The consumer (the RIA developer or designer, as well as existing desktop developer) will win. Competition fuels more features, better pricing and more options. No doubt, if you find ‘your religion’ to be either Adobe or Microsoft, you’ll find virtue in what each company is doing.

Adobe is sitting pretty well in this bid for adoption and creating the desktop mindset. The primary reason is a combination of their existing mass adoption of Flash Player. Another contributing factor is the assumed decline in PC/Windows market share as Mac adoption continues to grow. Lastly, web 2.0 has created a surge in RIA skilled developers, where as traditional development has seemingly leveled-off. Combine all these, and you can understand why AIR has tremendous potential in drawing existing and new customers into the desktop development space.

Microsoft has the power and capital to move more powerfully in one director or another. Look for them to make necessary corrections quickly, be competitive with pricing, and flick on a couple of magic switches that will rapidly increase the adoption of Silverlight.

Flash and Silverlight, maybe 2 strangers passing in the crowd

May 1, 2007 · Posted in AIR, Flash, Flex, Silverlight, Technology · 7 Comments 

Rob Abbott tells me that he would train for the Boston Marathon differently than he did for the 2007 Miami Marathon. Why you ask? Because, the conditions are different and require totally different preparations for the runner. The Boston one is obviously/usually colder, while the Miami race is almost completely flat. 

In reading the amazing account of Silverlight on Techrunch today, it became a little easier for me to grasp what Microsoft’s new media player really is. I really liked what I read. It confirmed a suspicion I had that Microsoft with Silverlight may actually be traveling a different, and somewhat opposite path to that of Adobe. 

Let’s dispense first with the commonalities. The streaming media capability is something both players share. Flash dominates with video, and no one can deny that this seemingly accidental Trojan horse feature of Flash has probably increased the distribution of the player more than anything else. When Adobe bought Macromedia, I knew video was probably the biggest asset from the Macromedia/Flash side. Looking at the details for CS3 Production Premium, seeing Premiere, AfterEffects and Flash bundled together, I see the reality of the merger. 

Microsoft wants and needs to be in this market. Video on the web, and more specifically within the browser, is a key (as in one of the most important) piece of the present and future of advertising. That’s why, with Silverlight, they’ve switched the batting order around a bit. Their Barry Bonds-of-a-feature, this free media/video hosting service, is brilliant. It competes with Flash Video and Google’s YouTube in a single swing. 

Reality has to start setting in here. Flash Player 9 lives and breathes (as of March 2007) on 84% of desktops. And while you may argue that if FP9 can spread that fast by 9 months, won’t Silverlight do the same? NO. Flash Player 9 spread that quickly because 80%+ of desktops already had Flash Player 8, and 90%+ of desktops already had Flash Player 7, and so on, and so on. That’s more than just browser plug-in legacy, that’s immortality. 

But the thing that really interests me here, why I think these two players are heading in different directions is this (excerpt from the Techcrunch post by Nik Cubrilovic): “Developers can simply take their existing Javascript and copy it into Silverlight … Silverlight applications can access and manipulate the browser DOM (meaning they can reach outside and into the webpage itself) …”. 

Flash developers and designers will see that feature and feel as if they just walked into a cave and through a web of spiders. ‘Get them off me, get them off me’. Seriously, for the most part (yes, I said most), the reason many Flash developers ARE Flash developers is to avoid over-inventive JavaScript and over-manipulative DOM access. 

ActionScript seems to re-invent itself each time out (a good thing!), while it’s hard to see how Microsoft’s use of a lite dot net (CLR) and JavaScript will provide much further growth and advancement for their player.

Adobe is making a big jump into the desktop environment with Apollo, making it easy to develop desktop applications with the Flex Framework and ActionScript. Microsoft is making a big jump into the web environment with Silverlight, trying to offer an alternative to web application development with a lighter version of .Net and native JavaScript and XAML support. Will they collide, or are both companies running two totally different races?  

Here’s my prediction: Look for Adobe to survive and thrive by buddy-ing up further with Firefox and making more than just friends with Apple. And as for Microsoft, I can tell you that readers of this blog are still using IE about 2-to-1 over Firefox. If Microsoft ever flicks their magic switch and includes Silverlight in IE, there could be some actual competition here. 

(That reminds me, to the one visitor of this blog reading it from a Playstation Portable browser, remember to wear two pairs of gloves when you’re in the Rockies.) 

-->