It’s one thing to get a negative reaction from the other side when you are attacking something, but I could tell right away that this wasn’t the case in this instance. I had put my name to an article where my sources of information were either dated or incorrect.
So I did what I had to do. I fell on my sword and admitted my mistake, both here and on Tim’s blog. I felt terrible about the whole thing, and simply coming clean about being in the wrong didn’t feel like enough of a penance to serve. I asked Tim if he would consent to an interview, where he would have the opportunity to give me the straight dope on some questions I had regarding Silverlight and also get a chance to evangelize his platform a little.
He was kind enough to accept the offer, so without further adieu, here is the inaugural Connected Interview: Tim Heuer of Microsoft Silverlight.
Connected Internet: Welcome Tim. Let’s start with a little background information for our readers.
Tim Heuer: I’ve been with Microsoft for 5 years working in developer and platform evangelism and now in the Developer Division with Silverlight. Prior to my time at Microsoft I’ve worked for various Microsoft partner organizations as a developer. I’ve been developing software on Microsoft platforms for 15 years.
Outside of Microsoft technologies I spent a few years helping to manage a data center environment and was able to gain some experience in Linux sysadmin work as well as other server scripting environments (PHP, CGI). My primary experience and passion, however, is with Microsoft developer technologies.
Outside of “work” (which unfortunately is also my main hobby) I enjoy SCUBA, golf and have recently been learning to play guitar.
CI: As a program manager for the Silverlight project, where does that place you in the Silverlight project hierarchy, and what is your primary job?
TH: My role is a community program manager for Silverlight. My primary responsibilities are to be a liaison for software developers to the broader Silverlight engineering team. Outside of also owning a feature in the Silverlight SDK, I help develop learning resources that exist in various forms of videos, tutorials, whitepapers and sample code. The Silverlight team is made up of various teams across the division coming together to make this one product.
CI: The attraction of Silverlight’s integration with existing Microsoft technologies is a huge selling point. Microsoft has been providing very good development tools for some time now and there are an awful lot of developers who have already rolled up their sleeves and gone hands-on with .NET and C#. This versus ActionScript and the tools Adobe provides for working with Flash and how the Flash coder needs to integrate their work on the server side.
Developer support for Silverlight appears to me to be overwhelmingly positive. I also believe that no one knows better than the person cooking the code.
From a coder’s perspective, beside the development environment, what is it that makes Silverlight such an attractive platform to create on? Is it less coding to do the same task, or just easier to write because of the tools?
TH: Tools is huge. Familiarity and coder knowledge and productivity is probably the bigger underlying theme here though.
As a Microsoft developer (especially a .NET one) I don’t have to learn a new language, a new environment or a new tool. Writing Silverlight applications is the same experience as writing other .NET projects. It is the same C#/VB, it is the same IDE. This familiarity cannot be under-stressed in my opinion. Because of this, those already versed in Microsoft technologies become more productive in this environment/platform faster than they would another platform. Add to this the large ecosystem of community that surrounds Microsoft technologies (user groups, evangelism, forums, MSDN, blogs, Channel 9, etc.) and it makes it a very maintainable solution choice for anyone.
CI: Obviously, their will be some subjective bias regarding preference of developer tools. Comparing Xcode and Visual Studio is apples and oranges, but people still do it all the time. The small amount of time I’ve spent using Xcode vs. the volumes I’ve read on the web from Visual Studio advocates ( I last used Visual C++ myself in 1998) suggest that they both have their strengths and weaknesses, and your preference is likely to be based on what style of workspace you are accustomed to. Obviously for most developers this is going to be Visual Studio.
We love these arguments though, and even though there is nothing to be gained from debating the merits of Visual Studio vs. Xcode, or C# vs. Obj-C, or C++, or ANSI C, we like to qualify these things. Unfortunately we usually lose our objectivity in these discussions and our biases send us into dead end arguments that boil down to “mine is better than yours, and you’re an idiot”.
There is no answer to the question “is C# better than ”, so the question is a subjective one. Certainly it appears that the overwhelming reaction toward C# among previous C++ programmers is positive.
Describe how C# and .NET makes your job easier than it would be if you were using C++, Java or Obj-C.
TH: There will always be language wars. Nobody will ever agree. I will always tell someone that you should choose the best tool in your toolbox for the job. If that is C++ because you are writing an ISAPI filter for Windows server, than that is the best tool. With managed code languages (C#, VB, IronRuby, IronPython, etc.) it gives the developers a great environment to concentrate on their code and not a lot of the older plumbing (memory management for one) that you would have to deal with in other languages.
Microsoft is taking more and more products to managed code. Even in my example of an ISAPI filter (which would have really been only ideal to do in C++ about 3 years ago), the improvements made in Microsoft’s Internet Information Server (IIS) make it possible to write managed code filters that operate at the same place where previous ISAPI level code would have run. This enables more developers to extend our products. Even our core products are starting to move to managed code. Expression Blend is a product completely developed in Windows Presentation Foundation (WPF). Visual Studio 2010 also is introducing new design and editors written in WPF as well.
I’m not an expert by any stretch of the means in C++ or Objective-C. As a technologist, I dabble and am trying to wrap my head around things like iPhone development in Obj-C. Coming from Visual Studio (VS) and managed code, it feels painful to go back to that environment. I don’t find things like XCode helpful versus modern-day IDEs. I do, however, like Apple’s Interface Builder and have been curious why it isn’t a more integrated part of XCode.
CI: If you’ve been using a computer for any length of time, you really appreciate how great today’s hardware is. Despite multiple cores and gigabytes of RAM, I still hate java apps in a web browser or on the desktop as much as I did 10 years ago. They just feel slow, and seem inclined to send CPU and RAM usage to unacceptable levels.
In regards to Adobe Flash vs. Silverlight, what is the impact on the end user’s system resources? Is this an issue that Microsoft has considered in the design of the platform, or has the focus been on features and providing a rich developer experience?
TH: This is an excellent question. Even in the world of managed code, automatic garbage collection, etc. it doesn’t mean that crappy code still runs great without paying attention to what resources you are using. There is no magic in Flash or Silveright that takes a poorly architected system and “fixes” it at runtime. For this reason, developers still need to pay attention to *how* they are using the resources. One of the common pitfalls I see in Silverlight is people adding elements to the visual tree and not using them or not removing them when needed. For rendering technologies, this can be an Achilles heel if not paid attention to.
We continue to make optimization improvements for developers to take advantage of though. In Silverlight 3 we added support for enabling GPU acceleration and bitmap caching. This enables the developer to possibly offload certain tasks to an underutilized GPU instead of relying on the CPU to handle normal computing tasks and intensive rendering tasks.
CI: My initial thought on Silverlight was that the world didn’t need another Windows-centric, proprietary technology. I’ve been a Unix guy since my introduction to Digital Unix in the early 90’s, and have spent the last 15 years mostly using BSD, NeXT and Apple OS X systems.
After stopping to take a breath, I had the revelation that because of Mono, Silverlight was platform agnostic, having the ability to be developed and run on many software and hardware platforms. I don’t think Microsoft would have gotten involved with an open source project ten years ago, whether it brought their technologies to important platforms or not. This shows a commendable change in attitude at Redmond.
Obviously this type of platform friendliness is also the case with Java and Flash. Given Adobe’s decade head start, what factors do you feel will compel existing Flash developers to jump ship and begin writing for Silverlight?
TH: Of course I’d personally love to see Flash developers move to Silverlight. But I’m not dumb and realize that people will use first what is known to them. I think, though, for anyone—including a Flash developer—to be dismissive of new technologies is a danger to their own personal technical wealth.
That being said, I think the ability to write managed code in the browser is an attractive one. We’ve been hearing from some Flash/Flex developers that it provides more capabilities than ActionScript. Additionally the tools for designers we are providing is intriguing. The ability to import a Photoshop/Illustrator file directly into XAML and then have a developer code against it all the while maintaining the integrity of the design is critical. This is the “developer/designer” workflow we talk about becoming more important as users and consumers demand more rich interfaces. Adobe is playing a bit of catch-up in this regard with things like Flash Catalyst.
Additionally the thought of having a single code base that can drive a RIA, Windows application, web application, and mobile applications is an interesting one for decision makers. Having this level of technical reuse across these platforms opens new opportunities for companies and developers.
CI: With the increasing ambition of Google as something more than just a search engine, do you see them eventually aspiring to something beyond AJAX and developing a platform that competes directly with Flash and Silverlight? After all, AJAX is great and has many benefits, but the horizon is quite a bit closer with AJAX than it is with more ambitious RIA technology.
TH: Google already has provided platform technologies to help develop richer web applications in Google Web Toolkit and other products they enable for application use (Google Maps, search, gmail, etc.). I don’t see them stopping. In fact the introduction of the Google Wave product (which I have not personally been able to use as I don’t have an invite) caused some to claim ‘the sky is falling’ for Flash and Silverlight. I think this was an incorrect premature assertion by those people. In fact I think a Silverlight application which leverages Wave as the platform might be very interesting. To RIA technologies, these types of things provide additional endpoints to use.
More accurate comparisons would probably be around what is being proposed in HTML5 to expand the standard of HTML to enable richer scenarios. I welcome the additions that HTML5 proposes, but I’m also cautious in when and how that will come to pass. Some have estimated the standard wouldn’t be ratified for ten years. However some browser vendors are already adopting it claiming compatibility. This confuses me a bit as to such early adoption when some of the details haven’t been worked out (what I feel are some important details).
Bottom line is that competition breeds innovation…and I welcome it.
CI: On the subject of HTML 5:
Isn’t it better to allow the browser to handle as much of our web experience as possible? If we have this capability in HTML 5 to handle video and audio content directly without having to install a plugin, what compelling reasons do we have to continue using Flash and Silverlight for the same task? Is it an issue of supplying nicer looking controls or having more flexibility about what you do with your embedded content?
I will say that while I like the idea of the browser doing as much of the heavy lifting as possible, early HTML video demos seem to be every bit as resource intensive as their Flash and Silverlight counterparts.
What drives this argument- which one makes more sense to utilize in a given application, or what the browser providers decide to include in their browser’s functionality?
TH: I look forward to HTML5 being solidified. There are still so many unanswered questions for me. You mentioned video, and while it is nice that HTML5 is providing and tags, there isn’t much discussion happening about the codecs and expanded support or extensibility (currently right now looks like OGG Vorbis only). Maybe this is okay for the YouTube generation. YouTube has been messing with HTML5 –which incidentally doesn’t work on my Firefox browser version that claims HTML5 support.
These, to me, are important discussions to be made. The larger media juggernauts need more than just an open source codec. They need high quality, predictable streaming, and rights management. Do I see someone like Netflix switching over to HTML5 with ease? Not likely…they have an investment in encoded media…where does that go?
I think the other stumble in HTML5 will be pure browser penetration. In this regard HTML5 is in the same challenge as plugin vendors! The standard will have to be supported in what consumers are using. We may laugh about AOL usage, but guess what…it is still out there…is HTML5 supported there? What about all those other IE5/6 users we as developers are desperately trying to get to install *anything* else but those version! :-).
The demos you see on HTML5 are in infancy and making any claim on performance at this point would be speculative. I’ve seen some really cool demonstrations and I’ve seen some that seem to misuse my processor (and GPU acceleration isn’t in HTML5). I’m sure the browsers will improve over time.
In the meantime, we can use Silverlight to emulate HTML5 support.
CI: Google is the “new” Microsoft. From the search engine to Google Docs, Adsense and Adwords, Webmaster Tools and Analytics, Chrome, Android, the upcoming Chrome OS, and everything else, Google has been one of the more exciting technology companies to watch in the last decade.
Regarding Chrome OS, I’m excited about the prospect of a Linux-based OS that ditches X for a proprietary windowing system. It could be the best thing that ever happened to Linux in regards to providing a desktop that is much more cohesive and integrated than any Linux distro offers.
Can Chrome OS become a legitimate third alternative to Windows?
TH: This remains to be seen. All we have so far is a blog post about ChromeOS. I haven’t seen anything, and anything beyond that is speculation.
I would agree that Google’s brand would give them a best chance at being the best Linux distro hub if that is the core they choose. For consumers, it has to be familiar set of features. Most consumers get their computers through regular retail channels. For operating systems to succeed in that space it has to be competitive and familiar to consumers…and available in places where they see it (i.e., retail stores, etc.).
I welcome the introduction of ChromeOS for us all to investigate. Right now I believe it all to be speculative of anything around it though and doing so creates unnecessary expectations.
CI: Google announced Native Client last year. On paper this looks like a great idea, and a terrible idea at the same. Executing x86 native code in the web browser has interesting possibilities, but unless they invent some really creative way to ensure security, the server must be trusted.
TH: Google to me seems to come out with big announcements that sound exciting initially. Native client is one of these. I haven’t heard much buzz beyond the first 3-4 weeks about it from anyone really.
That being said, I’ve not spent a lot of time looking at Native client to speak intelligently on it’s technical merits.
CI: Silverlight has been gaining market share at a pretty brisk pace. Whether it is actually *better* or not, there are a lot of people coding for .NET out there, and Silverlight makes it easy for them to dive right in. That’s a huge edge for Silverlight over Flash.
Flash is a much more mature product. Silverlight has bridged an incredible gap in a short amount of time, but you guys are still #2, for now. There is no doubt in my mind that the installed base for Silverlight will keep increasing, along with developer support.
In regards to your main competitor, Adobe Flash, where do you feel that Silverlight has surpassed it, and where do you feel that you need to work harder to be as good as Flash?
TH: I think for a version 3 product versus a version 10 product in Flash, we’ve come a long way and have surprised Adobe in some features that are already out. I would argue that at a basic level we’re at parity with the core features. Some obvious lacking points (that you might note are on the SL4 wishlist) are things like webcam and microphone support (and remember I don’t think that was even added to Flash until v5?).
In my opinion I think we are well ahead of the competition on the developer experience. Additionally we have a great set of partners in the Microsoft ecosystem that build solutions on our platforms and Silverlight is no different. Take a look at the commercial controls available for developers. In addition, we provide a TON of source code for developers to use, extend and learn from!
This is the place where you can get the source licensed under Microsoft’s Public License (hugely permissive).
I think our support for rapid development and integration with services is beyond what Flash can offer. Keep in mind this is of course a biased opinion, but based on additional feedback I get from developers. Flash also seems to have various platforms: Flash, Flex, AIR. I think that this disparity confuses people at times as there are requirements on each platform that need to be understood. But comparing to Flash only, I believe Silverlight to be pretty close to parity, save only a few end user features that are perhaps more edge case (like webcam).
As I’ve said before, competitions breeds innovation and I don’t expect Adobe to stop innovating as well…just as we won’t.
CI: Silverlight has come a long way in a very short time. Silverlight 3 was released on July 9, with a long list of new functionality. I was looking at a snapshot of the Silverlight 4 user wish list, and there are some very necessary additions, and perhaps a few that are optimistic, that users seem to want in the next version.
Is there a timetable or feature set that you can talk about for Silverlight 4 yet?
TH: Indeed there is a great wish list of features for SL4. We also have our list of internal things we want to prioritize in that list of customer feedback. As you point out, the iterations of Silverlight have been quick (3 versions in less than 18 months), perhaps the quickest of any Microsoft product. I don’t see us slowing down just yet in that iteration speed!
That being said, we haven’t announced any timetable or features we are confirmed being implemented for SL4 just yet. Stay tuned.
Thanks Tim. I really appreciate you taking the time to illuminate these topics for us.
Is Silverlight better than Flash? That’s not really an answerable question, but I can make some observations about Silverlight after my two week long crash course regarding Silverlight and it’s community.
Silverlight uses the same tools that Microsoft and .NET developers are already working with. Developers overwhelmingly seem to like what Silverlight is offering them, and the general consensus is that it’s easy to jump in and start creating content, and is a pleasure to do so.
Silverlight is a moving target. As Tim talked about, the development schedule of Silverlight is brisk, and it’s capabilities are increasing with each release.
The bottom line is that web developers have an increasing arsenal with which to create more complex and more enjoyable content for the end user, and that is a Good Thing. Silverlight is now an important weapon in that arsenal, and you’ll be seeing a lot more of it as you surf the web.