How Complex Systems Fail

Interesting read. Includes an interesting take on root-cause analysis:

Post-accident attribution accident to a 'root cause' is fundamentally wrong. Because overt failure requires multiple faults, there is no isolated 'cause' of an accident. There are multiple contributors to accidents. Each of these is necessary insufficient in itself to create an accident. Only jointly are these causes sufficient to create an accident. Indeed, it is the linking of these causes together that creates the circumstances required for the accident. Thus, no isolation of the 'root cause' of an accident is possible. The evaluations based on such reasoning as 'root cause' do not reflect a technical understanding of the nature of failure but rather the social, cultural need to blame specific, localized forces or events for outcomes.

... and, the observation that reactionary changes can (or possibly will) make things worse:

Views of 'cause' limit the effectiveness of defenses against future events. Post-accident remedies for "human error" are usually predicated on obstructing activities that can "cause" accidents. These end-of-the-chain measures do little to reduce the likelihood of further accidents. In fact that likelihood of an identical accident is already extraordinarily low because the pattern of latent failures changes constantly. Instead of increasing safety, post-accident remedies usually increase the coupling and complexity of the system. This increases the potential number of latent failures and also makes the detection and blocking of accident trajectories more difficult

MIX '11 — In Review

The Good

The Bad

  • There were a couple sessions I went because I cared about JavaScript best practises, ASP.NET performance, jQuery, or whatever that turned out to be elementary re-treads of things I already knew but didn't know to avoid because the titles sucked.
  • Bits of the first keynote and huge swaths of the second veered into "Don't care" territory. I guess somebody cares about Silverlight, but for better or worse, Flash is still the king of the hill and Silverlight has been unable to unseat it in five major releases.
  • There were a couple of really show-and-tell-y sessions that would have been much better as lightning talks so we didn't have to watch them fiddle around in Visual Studio after they made their point.

The Ugly

  • The repeated gloating about IE 9's performance. Yeah, I'm harping on it a bit and it's good that IE team is back in the game, but Microsoft doesn't get to decide whether or not they've set the bar the way Chrome did (... and Firefox did before them). Only time will tell on that front, besides there's still the nasty issue of when "Supporting IE" will actually mean IE 9+ and not IE 6, 7, or 8.
  • The "Native HTML 5" nonsense from the first keynote. It's nonsense.
  • The dancers from the attendee party. I've never really felt the "Technology is a boys club" message that comes up whenever you talk about gender disparity in technology, but hiring a bunch of girls in corsets and garters sends that message loud and clear. I'm a little disappointed that Microsoft chose to do what it did at an event that is supposed to cater to a non-trivial chunk of the industry.

MIX '11 — Day 3

Today was the last day of the conference. There were sessions.

Bigger, Faster, Stronger: Optimizing ASP.NET Applications

The title to this talk was a little misleading as I was kind of expecting a talk about server-side performance, but it turned out to be pretty much exclusively about client-side performance. So yeah, Y-Slow and Page Speed are both great tools and you should use them, but I already knew that.

Oh yeah and if you're interested, you should read Steve Souders' book.

One comment, the guy doing the talk did a lot of packing/minification/etc. dynamically with HttpHandlers. Don't do that. Do it in your build step.

Miguel de Icaza: State of the Mono

Given that Mono is kind of important to the stuff I get paid to work on at the moment, it seemed like a good idea to go see Miguel's talk.

Right now he seems to be pretty focused on iOS/Android tables/phones and he talked about:

It was good to find out what Miguel was focusing on. It was less good to find out he was focusing on things completely unrelated to the way we're using Mono.

UX Lightning Talks

  • Magicians Get Design
  • Extending Human DNA with Design
  • On Brains, Football and Hobbits
  • Farming for Ideas

I think "Farming for Ideas" was the best talk with a message along the lines of "You can cultivate ideas by realizing that ideas beget ideas and letting them happen." Kind of along the lines of "Sketching is great because you can prototype lots of things without overcommitting to the first idea you bump into in a bar."

Good JavaScript Habits for C# Developers

This was the second talk of the day about stuff I already knew of. There's this guy called Douglas Crockford. He wrote a book. You should read it. He wrote a tool. You should use it. He did some videos. You should watch them.

Want a little more than that? I will assert that JavaScript is actually a pretty damn good language and that you actually have to learn it rather than trying to hobble along implementing C#/Java/whatever idioms. Crockford's work has a whole bunch of arguments to back up that assertion, so I won't.

Final Session

I totally bailed as there wasn't anything wort attending in the final slot.

Evening Session

  • I ventured off the strip, went to a gun range and fired an M16, MP5, SIG Sauer .45 Cal and Colt 1911. It was awesome.
  • I ate a steak. It was delicious.
  • I walked the strip (drink in hand), as I had to take advantage of the "You can totally walk around with open alcohol" nature of Las Vegas.

MIX '11 — Day 2

Today was the second day of the conference: Keynotes, sessions and the attendee party.

Keynote the Second

Windows Phone 7, Silverlight and Kinect were the topics of today's keynote. As far as WP7 goes, there was talk of the NoDo update, WP7 getting IE 9 and the upcoming "mango" update. Ars Technica has a good write up. One thing to note, they couldn't resist pitting an iPhone and a Nexus S against some dev WP7 phone in the speed reading demo. You know the deal: blah blah blah contrived, blah blah blah childish, blah blah blah we'll see if anybody cares when it ships. At least they didn't dwell on it the way they did with IE9 benchmarks yesterday.

... and then some guys came out and talked about Silverlight and Kinect and I didn't care (but at least no one talked about SharePoint). Oh yeah, and we got free Kinects. Yay, I guess.

Douglas Crockford on ECMAScript 5

It was great to see Crockford talk given that he has had a such profound impact on the way that I, personally, write JS as well as having a huge impact on the evolution of the language (he's on the ECMAScript committee). He talked about the approach the committee took to ECMAScript:

  • No new syntax.
  • Library improvements.
  • Not trying to save stupid people from themselves (It's too hard).
  • Strict mode.

He also made some interesting offhand remarks:

  • Something to the effect of "If IE6 is still relevant when the ES6 standard is published then we're doomed."
  • Something about the W3C being really hard to work with (... which given the whole WHATWG thing isn't all that surprising).

Knockout.js

Knockout.js is a JavaScript library for binding data models to UI elements. It looks kind of cool.

Building Data-centric N-tier Applications with jQuery

The title kind of gives away that this was a complete snoozefest, but the slot really sucked and there wasn't anything interesting to go to.

Script#

Script# is a library/complier that lets you write your JavaScript in C#. "Why do you want to write your JavaScript in C#?" you might ask. I don't know... this feels like yet another attempt to fix JavaScript by someone that doesn't get that JavaScript is actually a pretty good language.

  • Closure tools is a much more straight-forward approach to error checking and optimizing your hand written JS.
  • Coffee Script at least gives you very concise closures and list comprehensions while still letting you interact with JS libraries directly.
  • GWT has the same kind of "let's fix JavaScript by not using it" vibe, but at least lots of people are using it and it's old enough that the whole "JavaScript is actually kind of good" idea hadn't caught on yet when it got-going.

Phil Haack on ASP.NET MVC 3

Phil demoed Entity Framework code-first, Razor, scaffolding and NuGet. Suspiciously similar to Hanselman's demo from yesterday, but maybe a little deeper. Razor is definitely cool, but see my comments from yesterday a long the lines of "Yeah that's cool, but tell me again why I'm not just using django/Rails?"

Evening Session

  • Went to a buffet, which is a thing I guess. Not as delicious as steak.
  • I went to the attendee party. Free beer at some nightclub, plus some Zettai Ryouiki dancers which was kind of surprising. Yeah this is Vegas, but the highly sexualized atmosphere weirded me out a little.

MIX '11 — Day 1

Today was the first day of the conference proper. As such, there were keynotes and sessions.

Keynote the First

IE 9 got a big pile of praise from the presenter and then they ran some demos with IE 9 side by side with Chrome to show off IE's hardware accelerated rendering with the obvious subtext being "Look at us, we're faster than the fast guys!", but here's the thing:

  • You and I both know that the demos are contrived to make IE look good (So pointing and laughing at Chrome is both childish and a bit of a lie).
  • If IE actually stops being a pain in the ass performance-wise, that will be worth ten-thousand fishbowl demos.
  • Time will tell whether or not anyone ever actually builds applications where the performance of Chrome/Firefox ever becomes a problem the way IE's performance has been in the past.
  • IE performance is still going to be an issue until I can count on people using IE 9 rather than 7/8. Everybody is already using Chrome 10 and in a couple month everybody will be using Firefox 4. The same can not be said about IE 9.

After the self-congradulatory back-patting over IE 9, Scott Guthrie and Scott Hansleman came out and talked about:

  • ASP.NET MVC 3 Tools Update: It comes with jQuery 1.5, Modernizr and RoR style scafolding generators.
  • Entity Framework 4.1: Code first (generate SQL schema from POCO objects).
  • Nuget

They did a demo consisting of building a CRUD admin app and front end for Hanselman's podcast. Throughout, I couldn't help but think that code first entity framework stuff and the auto-generated scafolding were like django's models and admin interface from five years ago, except not quite as good. Given that I like django's stuff, having ASP.NET MVC steal ideas from it and RoR is probably a good thing for ASP.NET, but it does kind of raise the nasty question of "Why the hell aren't you writing stuff in django?" rather than lighting a fire in my heart to work with the ASP.NET stack.

After the demo they brought out a guy to talk about Orchard CMS. I'm only mentioning this because they threw up a big slide saying "Orchard is great because it works with Wordpress, Drupal, Joomla, etc, etc, etc", which seemed kind of weird, 'cause it kind of feels like they were saying: "This is great 'cause it runs PHP!"

Designing Infographics for Web Applications

This was the first actual session I attended of and it was great. Des Traynor talked about making infographics of the "showing data in your application" rather than "get to the top of Hacker News" variety. A couple of points he touched on:

  • Making infographics is hard. Sometimes it's really hard to beat the simplicity, clarity, adaptability, etc. of text.
  • 3-D charts have a bad habit of making it easy to lie (with shout outs to Tufte's data-ink/chart-junk ideas).
  • Clarity is the goal first and foremost. Making the graphic clever/interesting are only secondary goals and if you need to make sacrifices it's in these.
  • People are great an comparing the lengths of lines and not so much anything else (width, area, colour intensity, quantity, etc).

Node.js, Python and Ruby on Windows Azure

This was something of a show-and-tell presentation. The basic message was "You can totally get Ruby/Python/Node running on Windows Azure... though, you'll have to rolll up your sleaves and get your hands dirty."

UX Lightning Talks

This is the first Lightning Talk session I've been to. It was pretty cool. Topics included:

  • Delightful Eperiences
  • 21 Century Design
  • Goodbye mouse — Hello touch.
  • Lessons in Design

Evening Session

  • Ask the Experts: I drank a free beer and listened to people complain about the fact that ASP.NET isn't quite as shiney as Rails, then I left.
  • I ate a different steak. It was delicious.
  • I walked the strip and saw the fountains at the Bellagio do their thing.