Damon Payne: Hand waving Silverlight Architect

103db signal to noise ratio at < .03% total harmonic distortion
Solution Architect, software developer, geek
Damon Payne at Blogged
2009 Microsoft MVP - Client App Dev
2007 Microsoft MVP - Solution Architecture
 Wednesday, April 15, 2009

 

This post is coming to you from my new Mobile Workstation.  Having seen The Vanderboom’s Alienware M17 I knew something similar would be my next laptop but I wasn’t ready to purchase.  My wife’s venerable Tablet PC dying initiated a chain of hand-me-downs ending in me getting a maxed-out M17.  This thing is definitely the nicest laptop I’ve ever owned, and is barely any larger than the Dell Vostro it replaces.

  • Vista Ultimate x64
  • 17” 1900x1200 screen
  • Core 2 Extreme Quad 2.53ghz
  • 4GB RAM
  • 7200RPM drive
  • Blu-ray drive

About the only thing I didn’t upgrade is to get the solid state drive.  When prices come down I’ll upgrade that.

I went for a quad core rather than the fastest dual core in order to help keep forcing myself to think in terms of parallelism when I need a speed increase.  I also have a long-incubating Parallel Programming in .NET talk that I’ve held off on giving publicly because, well, the examples are just plain not that inspiring without at least four cores in my opinion. 

I’m giving the keynote at the Fox Valley Day of .NET next month, but they had some extra session slots.  It looks like my talk on the Parallel Extensions to .NET has been accepted for this conference, so me and my new Alienware pal will be there in style crunching data and graphics.

Also, the keyboard glows.



Wednesday, April 15, 2009 10:13:55 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [1]  |  Trackback
 Friday, April 10, 2009

Last night I did my first stop on the Mix it Up! tour: the Indy NDA group in Indianapolis, IN.  These guys have got it made.  They have an absolutely fantastic group of people, a great location, and a TON of swag at every meeting.  I was pleased to be bringing some t-shirts and copies of Expression Studio only to show up abd find 20 books, a webcam, and various other nice prices already on the swag table.

These guys are hard-core too:  Their attendance is 120 people and up for every event, and they hold various SIG groups right after the main user group meeting.  After I did the Mix it up content they invited me into their Architecture SIG meeting to discuss the MVC pattern and we ended up talking about map reduce and the Parallel Extensions for the .net framework.  Thanks, guys, for having me, and maybe I’ll be back again.



Friday, April 10, 2009 2:59:59 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Thursday, April 02, 2009

I keep meaning to blog about movie nights so people in the area can be informed and so I can keep a history.  Tomorrow’s movie night is King Kong in glorious high definition. 

04.03.2009 8PM – Contact me for details.

Now, bear witness to my poor photography and composition skills and burn the movie night splash logo into your retinas:

MoviesAtDamonsKingKong

I’ve really got to take some better photos.



Thursday, April 02, 2009 7:00:32 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Tuesday, March 31, 2009

The What:

A whole lot of goodness was announced at MIX09.  Many of us were unable to attend.  Larry Clarkin and Dave Bost of Microsoft decided to locate some dedicated Web/RIA geeks in the Midwest region to bring an ultra-condensed version of the MIX09 announcements to user groups, conferences, and code camps.  While the level of detail won’t equal what you would have gotten by going to MIX09, we can hopefully get you excited about what’s coming up and answer some of your questions. 

The Who:

Corey Miller

Anthony Handley

Damon Payne

Josh Holmes

Larry Clarkin

The When:

  • 4/1 CD2UG (Corey Miller / Anthony Handley) – The first stop, I’ll be heading down to Chicago tomorrow to provide moral support and take notes on how things flow.
  • 4/9 Indianapolis, IN (Damon Payne)
  • 4/15 CNUG (Corey Miller/ Anthony Handley/ Josh Holmes)
  • 4/30 Lake County (Anthony Handley)
  • 5/6 Madison, WI (Damon Payne)
  • 5/8 RIAPalooza (Anthony Handley)
  • 5/9 Fox Valley Day of .NET (Damon Payne/ Larry Clarkin) – This is a day long conference, and our presentation will serve as the keynote for this event!
  • 5/12 Milwaukee (Damon Payne)
  • 5/12 Ft Wayne, IN (Corey Miller)
  • 5/14 Chippewa Falls, WI (Damon Payne) – hopefully I can be forgiven for looking forward to this date most of all.  Doug has promised to book the Leine Lodge for this presentation.  Beer + Silverlight = shangri-la
  • 5/16 Indy Code Camp (Josh Holmes)
  • 5/19 South Bend, IN (Corey Miller)
  • 5/26 Rockford, Il (Josh Holmes)
  • 5/30 Chicago Code Camp (Josh Holmes – possibly others?)

See you there!



Tuesday, March 31, 2009 9:11:15 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Monday, March 30, 2009

While there are some things I will be tweaking based on testing and shifting sales feedback I’m between gigs as of today.  Businesses are loathe to spend money right now.  I’ve got some “real work” to finish up, the Mix it Up! tour and then hopefully I can make a giant dent in my very large personal backlog.  Assuming I’ve got roughly a month, I wonder how much I can get done?  My home office is definitely my most productive location…

  • New server: I’m moving my Discountasp.net sites over to a dedicated server.  I haven’t been doing too much “sysadmin” tasks of late and this will force me to come up to speed on IIS7 and Server 2008.  DamonPayne.com should be a lot faster next week.  I’m going to throw Visual SVN up on this bad boy so I can take my various side projects with me everywhere.
  • Sharepoint: I’ll eventually be throwing Sharepoint up on this server, forcing me to come up to speed on Sharepoint 2007.
  • AGT: The Argentum Tela project has atrophied somewhat as I diverted time to code contests and billable work.  I really need to get back into this so I can finish it and then start working on the Silverlight 3 port.  A WPF port is also in the mix.
  • TastingProject.com – I’ve long been talking in my personal circles about my “social networking for wine lovers” effort.  This will be outrageously cool.  I am also using this site as a mechanism to evaluate the recently release Asp.Net MVC effort and get my head back into the CSS universe, much as I hate it.
  • Computer rebuild: I’ll never buy an nForce chipset board again.  My workstation mobo has slowly deteriorated to the point of hilarity, occasionally to the point where Vista tells me the BIOS is not ACPI complaint.  I’m rebuilding with a good ole Intel board and moving up to 8GB of RAM while I’m at it.
  • Parallel extensions: I’ve got a couple of shelved Parallel Extensions articles I need to bring out.  One revisits the task trees concept and the other deals with databases.
  • SQL Server 2008 – as part of the parallel extensions work and general geeky curiosity I’ll be evaluating SQL Server 2008 once I rebuild my system.
  • Top secret HandWaver product.  I’m pretty sure I can pull of the technology.  If I can also craft a marketing message that communicates the coolness to the target audience it will be a miracle.

My goal is to spend about 50 hours a week on all of these things, working from home and various co-work spots, and get a huge chunk of backlog done while also doing whatever networking is needed in order to get billable again.



Monday, March 30, 2009 7:37:37 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  |  Trackback
 Thursday, March 19, 2009

Obviously a lot of big things were announced at MIX 2009 yesterday.  I maintain my position that I would like to see Silverlight go towards more parity with WPF than ASP.Net, but there’s plenty to be happy about here.  I am most interested in the low-level details on the Bitmap APIs, perspective 3D, and the new tool bundled in with Blend 3. 

MIX it UP!

If, like me, you missed MIX because you couldn’t spare the time or expense, we have a consolation prize to offer you.  Larry Clarkin has organized a cabal of Silverlight-loving speakers in the Midwest with the mission to bring the presentations from MIX2009 to your local User Group, Code Camp, or other community event.  The “MIX it up” tour may already be planning on visiting your user group in MN, WI, IL, or IN.  I myself will be talking at about four stops on the MIX it Up! tour.  Look for more details and dates soon.



Thursday, March 19, 2009 11:15:52 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [1]  |  Trackback
 Tuesday, March 17, 2009

This Friday there is a Nerd Lunch scheduled for 11:30am at Fuddrucker’s of Brookfield.   This location was chosen due to easy bill-splitting and some vegetable-tarian friendly food.  Come hang out with local geeks.

I have spoken with some folks about a set of lunches with a theme of topics in Software Architecture.  This lunch currently has no theme, but stay tuned for news on the “arclunch” series.



Tuesday, March 17, 2009 11:24:55 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  |  Trackback
 Friday, March 13, 2009

I’ve been blogging since before it was called “blogging”, I started around 1998 on a Geocities site.  I like browsers.  The internet is awesome.  Web pages are great.  Web pages have literally changed the world.  Still, call me old fashioned, but I like Smart Clients.  Whether you call them “Smart Clients”, “Fat Clients”, or “Client Server Applications” – they can often still offer the best user experience and the most rewarding developer experience out there.

In the ‘90s and ‘00s there were various reasons why companies were going online.  A lot of it was hype, to be a part of this big movement that was going on.  Some businesses found that some of their worst application deployment nightmares could be avoided by using the browser as a delivery mechanism.  Some businesses found that a standards-compliant web page could (sort of, with a lot of pain) be used to reach a wider audience such as Mac or Unix users.  Some businesses found that having things like database connections behind the firewall was a Good Thing. 

ReturnoftheSmartClient

Not all is well on the Web

Despite outrageous success, not everything is great in the land of browser based applications.  Is the in-browser markup-based application the best choice or is it being carried forward purely by momentum?  If someone at your business announces that “We’re going to build a new Widget Widgetizer for our Agents”, is it an unspoken assumption that it will be delivered via HTML?  Is it cheaper and easier to build, debug, deploy, and maintain a browser based app than a Smart Client application?  I wonder.

Doing layouts for web sites is still painful.  HTML was not precisely meant to be a ubiquitous content-positioning mechanism.  The post-<table/> world can be infuriating because CSS is still painful.  Successfully doing CSS-only layouts seems to require Herculean efforts.  Sure, people do it all the time, but these skills seem to be very hard won.  The average CSS expert I talk to can rattle off an astounding list of browser specific gotchas and most will confess that testing is extremely time consuming.  Firefox seems to mostly get it right, but that doesn’t matter if Safari and IE don’t.    Hilariously, IE8 will get most things right but this is a curse in disguise: all of the server-side “if browser is IE” code out there will potentially now break under IE8.  Even the dynamic menus generated by ASP.Net (a Microsoft product) were broken in the first IE8 beta, and appear to be broken still in the first release candidate.  Maybe it’s just the way my mind works, but I’d rather troubleshoot a threading issue than try to figure out which CSS attributes function differently on which dom objects in which browser and scream about min-height:xx; being ignored.

HTML 5 promises to save us with real layout primitives, but if we can’t even get rid of IE6 after 7 years, what kind of adoption timetable can we expect with a whole new paradigm?

Doing browser-based development using Ajax and JavaScript is still painful.  If you don’t believe me  I have a challenge for you: turn on your browsers JavaScript error notification so you get a popup every time a script error occurs.  How long can you stand to surf like that?  I personally last about 25 seconds.  Why do people tolerate this?  Name an important application commonly used outside the browser where this level of scary flakiness would be tolerated?  Would iTunes be as popular if I occasionally had to “refresh” the application because a error occurred when I hit Play?  If Live Messenger randomly threw error codes up?  If Excel occasionally just wouldn’t save my spreadsheet?

The Internet, which in its current incarnation was designed around stateless ideas, is being used to deliver applications which need to represent state to the user.  It does this by delivering documents with complex layouts written in languages that were not meant to allow for complex layouts, supplemented by scripting languages pushed to the breaking point.

Not everyone likes strongly typed languages, true.  Not everyone likes writing unit tests, with code coverage tools, refactoring tools, static analysis, and so forth.  A lot of people do, and a lot of those people find the typical JavaScript experience to be a bit primitive by comparison.

iPhone as indicator?

When the iPhone was first announced, the plan was that development for the device would be accomplished via JavaScript in the browser with special extensions to access the iPhone hardware.  Ultimately, though, development is done as a native client in Objective C or Mono static compile.

I had, for years, secretly held the theory that Microsoft avoidance was the primary factor that had propelled browser-based development in the direction it was going.  Building native apps for the various LINUX flavors isn’t all that fun.  Java Swing is absolutely terrible.  Visual Basic, C++, or .NET on Windows? Pretty good!  Personally, if I wanted to build an application that could reach over 90% of PCs in America, and have a great developer experience while doing so, I’d say that’s a pretty good bet.  A lot of people disagree with me.

With the iPhone having gone native with Cocoa Touch, and Google re-imagining ActiveX via “Nclient” I wonder if we are seeing the beginning of a trend.

Silverlight to the Rescue?

I was meeting with a potential client who seemed to be somewhat familiar with some of my on-line antics.  The client asked “So, why are you so into Silverlight?”.  There are really two answers to this question.  One of course is that my Nerd Brian gleefully laps up the serotonin released as a side effect of my diet of C# 3, VS2008, LINQ, Lambdas, vector graphics, and so forth.  This is not an answer that lends itself well to building a proposition of the business value of your expertise.  So what came out of my mouth was something like this:

If we take a look at the application designs and user experiences we are seeing in the current “web 2.0” world we can make some observations.  We are seeing an amazing level of creativity and high production quality of graphics and animation.  We are seeing instant interaction, multiple simultaneous asynchronous actions happening by exchanging small messages with the server instead of whole-screen refreshes.  We have Google maps and several “Outlook in the browser” variants and a host of other accomplishments I wouldn’t have believed without proof.  The technologies allowing us to do this are all in one way or another hacks, round-about techniques, unintended extensions, or fragile houses made of cards.  They are steps towards real Smart Client technologies.  They are all band-aids and medications lavished on a ruined Soldier who was never meant to fight this war.  I prefer to take the most direct route and use a tool perfectly suited to the types of experiences we want to create.  Silverlight is the direct route from A to B.

This is the point where people who have worked day in/day out with JavaScript, Ajax, and CSS for ten years will tell me that they can do anything that Flash can do, and that it’s not that hard, and browser plug-ins suck, etc.  I have a hard time understanding this world view, and I suspect that a great many other people lacking that 10 years of scars might as well.

What’s your point?

At any rate, my goal here is not to start a war.  Rather, let’s pretend your business is actually having a real discussion about whether an application should be browser based or not.  What does the landscape look like today?  I’ve already made some comments about the developer story, but what about:

Data, Firewalls, and you

I was serving as technical reviewer for a book called “Apache SOAP”, before SOAP became somewhat synonymous with “Web Services”.  It seemed clear that Http-based message exchange could potentially solve one of the issues associated with the client-server era.  The firewall is already open for HTTP traffic, so why not send data instead of markup?  There are a number of options today for exchanging data through the firewall: WCF, Remoting, REST-full services, ASMX services.  Not only does this negate one of the old benefits of markup-based applications, but a lot of things are going the direction of distributed computing, grid computing, or mashups, or crowd-sourcing.  The success of Folding @Home, for example, shows what a distributed auto-updating smart client can do.

Performance

I often hear the words “Performance doesn’t matter”, mostly from people for whom performance is a black eye on their world view.  Performance does matter.  I currently have 250 movies in my Netflix queue and simply scrolling the page up and down in IE maxes out the CPU.  Pulling up damonpayne.com in Firefox and resizing the browser window maxes out the CPU.  Yet in Silverlight I can play full-screen HD video and the CPU is around 25%.  Animations? Visual Tools? Large data sets?  What about callbacks to a client without the client needing to constantly poll?  I suppose network performance doesn’t matter either?  In case you haven’t noticed, CPUs aren’t getting faster at the same rate they have been.  Performance matters, and the compiled language camp has a big advantage here.

Deployment

Through various techniques, it seems to me that the deploy-and-update issue has mostly been solved.  Java had Java Web Start.  There is a slew of aftermarket “Application Updaters” for various platforms.  .Net had the Application Updater Block and now Click Once and XBAP.  A rich Silverlight (or Flash) app can still be delivered through the browser but keep the advantages of a Smart Client platform.  PERL has CPAN.  Vista has Windows Update.  In this late hour, what kind of deployment advantage can we say a web application has over a smart client?

Cross-Platform web apps

I feel the need to reiterate this point as it’s a personal favorite: How cross platform are markup based applications?  How much time is spent debugging CSS and JavaScript in different browsers on different operating systems?  Chances are it’s a lot of time that could have been spent elsewhere.  Sun tried to make Java the universal smart client platform but they forgot to to make AWT and Swing not suck; SWT seems to have gotten to the party too late. 

Standards (HTML, CSS, ECMA script), no matter how well specified, will somehow manage to be interpreted differently by different vendors.  The nice thing about a plug-in model (Silverlight 2, Flash) is that they tend to come from a single vendor for every browser and operating system.  Most of the code will be shared with a bare-minimum bootstrap rebuilt for the specific platform.  There are some exceptions, such as Moonlight. In the case of Moonlight, Miguel, of whom I am a huge fan, actually has access to Microsoft’s internal specification and test suites.  A spec PLUS a suite of tests that shows you if you are rendering correctly is a good thing.  I have much more confidence that Microsoft and Novell can get the Silverlight experience to be 99.9% universal than I do that IE/Firefox/Opera/Safari/Chrome will come close to converging.

Presentation

As I mentioned to my client, it seems a shame to me to spend a lot of time and money producing high quality assets and then Hacking them up for a web site.  Worse, if someone has their browser scaled for accessibility reasons, raster images aren’t going to look so hot.  Vector graphics presented via a smart client technology has a clear advantage here.  A Style or Control Template in Silverlight does precisely what it’s supposed to do, no frustrating cross-browser debugging.  No need to build raster images for Gradients when Gradients are primitives within Silverlight.  No need to debug layouts in every browser when Silverlight has a comprehensive yet extendable layout system.  No need to worry about “web safe” colors, and you need not be shy about embedding fonts.  I’ve seen some impressive JavaScript-based animation, but Expression Blend makes it so easy and there’s that pesky “performance” thing to think of too.

Smart client software can give you great control over the presentation of your brand.

Conclusion

After 10 years of the browser delivered/markup based application getting all the attention I think the Smart Client is making a comeback.  Smart Client technology has gotten better.  Having massive storage and gadgets like GPS and accelerometers in our phones has brought back to the mind the advantages of access to the local system.  Ideas like the Apple Store help close the usability gap between installing software and just hitting a webpage.  Standards have emerged letting Smart Clients take advantage of the web.

Part of what I’ve said here can be chalked up to personal preference.  If you like dynamic languages and don’t write unit tests, or you hate Microsoft, or you are anti plug-in, you may disagree. I would appreciate any rational feedback pointing out where you think I’m wrong.

Note: As I was doing proofreading for this article before publication, Scott Hanselman posted some thoughts about Quake Live.  At one point he states “There's no reason for QuakeLive to be shoe-horned into a browser plugin”.  I couldn’t agree more.



Friday, March 13, 2009 2:14:11 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [3]  |  Trackback