Between contracts

by Administrator 30. March 2009 13:37

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 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. 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.
  • – 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.


A Speaking Tour and MIX 09 Comments

by Administrator 19. March 2009 17:15

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.


Metro Milwaukee Nerd Lunch 03.20.2009

by Administrator 17. March 2009 17:24

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.


Return of the Smart Client

by Administrator 13. March 2009 20:14

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. 


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.


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 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.


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.


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.


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.


Poll: What do you think of the new brand?

by Administrator 7. March 2009 15:19


I had previously been doing business under a different brand name, which was somewhat corny and I will not utter it here nor embarrass myself with my programmer-created artwork.  The business name change went through a few weeks ago so it’s now safe to introduce myself as the owner of Hand Waver, LLC.

The logo was done by , taking some time off of their world domination plans to help me with a brand.  What do you think?


The government isn&rsquo;t looking for yes

by Administrator 2. March 2009 18:42

Read Seth’s latest article.  Read it twice.  Now, I’m going to quote my favorite line:

The obvious reason is that the person at this post office has no incentive to make a sale.

The person at the post office and indeed the post office itself has no reason to make a sale.  If the post office loses 50% of it’s business nothing happens.  That is because you, the taxpayer, will provide them with a wheelbarrow of cash to fund their operation no matter what.  Imagine if the post office had to compete with FedEx to carry your mail?  If my neighborhood garbage pickup was competitive would they stop losing the lid to my garbage can for fear of losing my business?  Now imagine the (very likely possibility) all incentive is removed from providing you with health care, that the hospital is looking for any reason to get to no.

The people who think we need more, or different, or smarter regulations are missing the boat.  It is human nature, and the nature of life on Earth that would have to change in order for the USPS to have the same motivation as FedEx.  We can’t keep making rules contrary to our best interests and expect no consequences.  We cannot simply pretend there is no difference between working for incentive and “collecting a paycheck”.  We cannot keep claiming that while we can connect the world with technology, plan missions to Mars, and constantly push out our understanding of reality we “could never solve the logistical problem of of privatizing bulk mail”; that “health care will never work unless the government takes over.”  The folks who claim this is the case are looking for any reason not to Get to Yes.


The Teenager Audio Test

by Administrator 2. March 2009 03:52
Train Horns

Created by Train Horns

High frequency hearing, particularly in men, tends to drop off noticeably as you get older.  Because my audio elitism goes only so far I naturally assumed I could not hear the so called “mosquito ringtone.”  However I can indeed hear this sound in all its annoying glory.  Give it a try.


About the author

Damon Payne is a Microsoft MVP specializing in Smart Client solution architecture. 

INETA Community Speakers Program

Month List

Page List

flickr photostream