First time here? Check out the site's "greatest hits" or read a post from the archives. Feel free to leave a comment or ask a question, and consider subscribing to the latest posts via RSS or e-mail. Thanks for visiting!
Page 1 of 18 in the TechEd category Next Page

NDepend metrics placemats 1.1.pdf - Adobe ReaderStuart Celarier works here at Corillian (a division of CheckFree) and is not only a Senior Engineer, but a "Placemat Visualization Expert." Just kidding, but handouts are just one of the things that we believe makes an effective presentation.

Presentation Rule: When possible and appropriate, ALWAYS offer a handout. Folks can read faster than you can speak.

Stuart has taken a lot of what makes up our architecture at Corillian and started creating 11x17 Visualizations in the form of what I've been calling Placemats. They're the kind of thing that could teach you all about our design, then you could eat on it. :)

He hangs these mini-posters up all over the company, along with pens, and encourages folks to scribble on them. Someone who knows more than we will walk by, notice a mistake or whatever, and fix it. He's on version 28 of some of these posters - It's poster_OrigMinardCollective Knowledge with an Open Source-style, disseminated in mini-poster form. Anyone can propose a patch, just by scribbling on the poster. Stuart then comes around and collects the changes. So much cleaner than "Reply To All" or even SharePoint. Perhaps not as profound as the most famous visualization: Napoleon's March, but we try.

HOW TO SPREAD THE GOOD WOOD: Get the word about whatever you're interested in getting the word out about. When possible, make posters. Hang them everywhere. Let them soak in. Let folks scribble on them for a few months. Laminate them. Make T-Shirts. Rinse, Repeat.

We're huge fans of NDepend over at Corillian, and working with it more each day. I've done a Podcast on Static Analysis with NDepend and written up a pretty long article about NDepend and what it can bring to software development at your shop. We're just scratching the surface.

In order to get the word out about NDepend (which is a pretty complex thing, especially the underlying Comp.Sci. concepts around software complexity) Stuart created this NDepend Metrics Placemat, suitable for printing at 11x17. 

If you're at TechEd, go see our colleague Patrick Cauldwell along with Stuart "Celery Stew" Celarier at the NDepend Birds of a Feather at TechEd. They'll be passing out high-quality color prints of this poster. The BOF is at lunch, so bring food:

BOF09: Exiting the Zone of Pain: Static Analysis with NDepend, scheduled for Tuesday, June 5, 2007 at 12:00 PM, in Room S331 A.  We'll be discussing how and why to use static analysis tools like NDepend.  I'm especially interested in hearing not just how people use tools like NDepend, but who uses them (in their organization) and how often.

Here's the PDF for your download, use and abuse. Thanks to Patrick Smacchia, creator of NDepend for his help and review:



If you are headed to TechEd 2007 in Orlando, make sure you make the time to go to Party with Palermo. Jeff throws an unmatched geek party and you don't want to miss it.

It's free, and I can attest, it's great. You'll meet lots of cool folks, many bloggers, wonks and other geeks. I went to the last one in Seattle and had a blast.

Sadly this year, a very large combination of events, both business and personal, meant that I have had to bow out of TechEd, so I won't be there to join you. It's only the second time ever I've canceled a speaking gig, and I'm bummed, but it was the right thing to do at this point.

But for you who are going, go over to the Party with Palermo Website and RSVP by leaving a comment right now!

It's June 3rd, 2007 @ 7PM - 11PM at Glo Lounge:  http://www.gloloungeorlando.com/
8967 International Dr, Orlando, FL
(407) 351-0361

Enjoy. My giant head may appear via Skype Video Conferencing at some point during the evening. ;)

Jeff's also been kind enough to add Team Hanselman and our Diabetes Walk 2007 as honorary community sponsors of the event, so drink lots of beer and click for a Tax-Deductible Donation.



It's Video #2 in the Hanselminutes on 9 series.

Rory and I did a few videos together a while back to promote TechEd 2005. (Baby Carrots, Designing Software) They kind of worked, but were perhaps a bit forced. We thought they'd be cool at the time because when Rory and I hang out and just riff, we're a hoot. A hoot and a half, even. So, the Rawdawg got the idea for he and I to wander around Microsoft's Building 42 (Developer Division or "DevDiv") and simply pop in to folks offices and ask them "What are you working on?"

For me, I wanted to get back into the "Roots of Channel 9" - raw discussions, preferably with folks who know what they are talking about.

Here's video #2 in our travels through Building 42 on the Microsoft Campus. We didn't plan anything, nor did we warn folks we were coming.

In this short video, we interviewed Vance Morrison, an Architect on the .NET Runtime Team, specializing in performance issues with the runtime or managed code in general.

We actually stopped and bothered Vance because he had a trebuchet on his desk that we saw through the window. We had to stop.

Vance does some pretty amazing stuff around Managed Code Optimization. Take a look at the micro-optimizations around typeof() calls over at his blog. Vance is a busy guy so this video is only six minutes long. 

The first video in this series is still over here: Hanselminutes on 9 - #1.



 It's hard to decide what to spend one's training dollars on. It's hard to justify spending US$2000 or more on a conference. If a conference is nearby, or hosted in your town you can save money. I also use my frequent flyer miles a lot to get where I need to go for conferences. Using your own frequent flyer miles and doubling-up/sharing hotel rooms with friends in the Blogosphere are good ways to justify the financial part of your trip to your boss.

Many feel that it's the company's responsibility to pay for everything, travel, attendance, hotel, etc, but if you want to get as broad a view as possible, and maybe attend multiple conferences, being flexible on how you get there, eat, and sleep can make a difference. Also, trying to go to conferences that happen on the weekend, and making sure your boss knows that he/she's not going to lose you for an entire week - perhaps just a few days - can make a difference.

I'm also careful not to think of conferences as vacations, as you're being paid to absorb as much as you can, so I tend to fly in, attend, and fly out, fairly aggressively, unless my wife and son are along and we have explicitly turned it into a Vacation.

  • I'll be at RailsConf, partially because it's here in Portland, partially because my Boss is a RailsHead, and partially because I think that the mantra of Convention over Configuration is an important one that can be applied regardless of language or environment.
    • Cleverly, this conference is a Thurs-Sun deal, so while it takes up a weekend, it only takes up two work days. Again, a way to get virtually a week's content while only encroaching on work for two days.
  • This year, I'll be going to MIX - a User Experience conference in Vegas. There's an early bird discount if you register before March 15th, so the conference itself is $995. If you're going to Mix, let's meet and have a Diet Soda, eh?
    • Mix is a short conference, but very dense in content, and because it's in Vegas the flights are cheap. Plus, because it's a three-day conference you could go and still work 2 days, or possible that following Saturday and get a good work week in as well.
    • Here's some gravy - every conference attendee gets a free copy of Windows Vista Ultimate (this qualifies for the Vista Family Discount, so you can get two more Home Premiums for $49 each, so that's potentially three copies of Vista for $100, or just keep the Ultimate for free).
  • I'll also be at TechEd 2007 giving a pre-conference with Ron Jacobs (of ARC Cast fame) on Architecture. This is the same pre-con we did in Europe last year. I may also do a session on Mobile applications and AJAX support in PocketIE, but that's still up in the air.

Hopefully I'll see you at one of these conferences!



While in Spain this Autumn at TechEd:Developers Europe, I had the good fortune to do an ARCast with Ron Jacobs (mirror). The episode is up now on Channel9; hopefully it's not complete poo and I provide some value. I tried to come up with a topic, but Ron said, well, just start talking, so we did, and this is the result. We had a fine time, even though I've known Ron for over 10 years and he still misspelled my name. :P

What do you give to the architect that has everything? How about a grab bag of really good advice an interesting discussion with a very smart architect and fellow podcaster Scott Hansleman [sic]? This episode defies a single description because we covered so much ground but if you have ever listened to Hanselminutes you will know what I mean when I say that Scott is a very interesting guy to listen to. Scott and I led a pre-conference seminar at Tech-Ed 2006 in Barcelona called "Introduction to Software Architecture" and we caught up for a quick chat while in Spain.

Links

Thanks to Brian Windheim, a fellow architect at Corillian, who came up with the tagline "All non-software artifacts should approach zero" that I've been talking about lately.



I'll post technical stuff about the conference later, but today Mo and the baby and I wandered around Barcelona. Here's a few pics, with the rest on Flickr.

CIMG6041 CIMG6034 CIMG6027 CIMG6026

CIMG5994  CIMG5983 CIMG5976

CIMG6025 CIMG6021 CIMG6019 CIMG6014



Paul Stovell was watching a talk I gave with Keith Pleas at Teched US 2006 on building your own Enterprise Framework. The basic jist was that architecting/designing/building a framework for other developers is a different task than coding for end users.  

One thing that is valuable for context is that Keith and I were playing roles in this presentation. Keith was playing Einstein in his Ivory Tower, the developer who wants perfect purity and follows all the rules. I was playing Mort the realist, the developer who just wants to get the job done. We went back and forth with white slides for Keith, Black for me, each of us declaring the extreme view, then coming together on the final slide with some pragmatic and prescriptive guidance.

Paul had an issue with the slide on Extensibility where I, as the hyper-realist, said:

  • If they extend it, they will break it
  • Use Internal more
  • Seal first, ask questions later

He said:

Frankly, I think this is crap.
[Paul Stovell

For goodness' sake, Paul, don't sugarcoat it, tell me how you really feel! ;) Just kidding. He has some interesting observations and (some) valid points.

If you are developing a framework or API for someone else to use, and you think you know more about how they plan to use your API than they do, you've got balls. [Paul]

I mostly agree with this. However, you certainly need to have SOME idea of what they are using it for as you're on the hook to support it in every funky way they might used it. It is reasonable to have some general parameters for how your API should be used. If you design it poorly, it will likely get used in ways that may end up giving the developer a bad experience or even breaking the app.

For example, in a logging service we had a method called ConfigureAndWatch that mirrored the log4net ConfigureAndWatch. It's meant to be called once per AppDomain, and never again. Because it was not only poorly named (since we too the internal implementation's name) and it didn't offer any suggestions (via exceptions, return values, or logging of its own) some users would call it on every page view within ASP.NET, causing a serious performance problem. There's a number of ways this problem could be solved, but the point is that there needs to be a boundary for the context in which an API is used. If we had constrained this more - and by doing that, we think we know more than they do - then some problems would have been avoided.

Scott goes on to give an example whereby he actually made every class "internal" in his API, and waited for users to tell him what classes they wanted to extend, and extended them one by one. [Paul]

This little bit of inspired brilliance was not my idea, but rather Brian Windheim's, an architect at Corillian. We had an application that consisted largely of base classes and developers were insisting that they needed infinite flexibility. We heard "infinite" from the developers, but not the business owner. Brian theorized that they didn't need as much extensibility as they thought, and shipped a internally basically sealed version. When folks needed something marked virtual, they put it in a queue. The next internal version shipped with something like 7 methods in one class marked virtual - meeting the needs of all - when originally the developers thought they wanted over 50 points of extensibility.

The point of Brian's exercise was to find a balance between extensibility, both explicit and implicit, and supportability.

When you mark something virtual or make a class public, as a developer framework designer explicitly expressing support for the use of that API. If you choose to mark everything virtual and everything public as Paul advocates, be aware of not only the message you send to the downstream developer, but also the unspeakably large combinatorics involved when that developer starts using the API in an expected way.

Cyclomatic complexity can give you a number that expresses the complexity of a method and offer valuable warnings when something is more complex than the human mind can comfortably hold. There are other tools (like NDepend and Afferent Coupling, Lattix and it's Dependency Structure Matrices and Libcheck and its measure of the churn of the public surface area of a framework) that can help you express the ramifications of your design decisions in fairly hard metrics and good reporting.

If you mark all your classes and methods public,  be informed of these metrics (and others) and the computer science behind them and acknowledge that you're saying they aren't right for you. Just be aware and educated of the potential consequences, be those consequences bad or good.

Can you honestly rely on people who are "just playing" with a technology to tell you which bits they will need to be extensible 12 months into the future?

You totally can't. When you're designing for Users, you do a usability study. When you're designing for Developers, you need do a a developability study.

Microsoft actually does more of this than most folks think. Sure there's the Alphas, Betas and CTPs, but there's also TAP (Technology Adoption Programs) programs, Deep Dives where folks go to labs at Microsoft and work on new technology and frameworks for a week while folks take notes. These programs aren't for RDs or MVPs, they're for developer houses. If you're interesting, ask your local Microsoft rep (whoever organizes your local Nerd Dinners perhaps) how you can get into an Early Adopter Program for whatever technology you're hoping to influence. They really DO listen. We just came back from a Deep Dive into PowerShell and got not only access to the team but a chance to tell them how we use the product and the direction we'd like to see it go.

Scotts [sic] philosophy, and that of many people at Microsoft (and many component vendors - Infragistics being another great example), seems to be to mark everything as internal unless someone gives them a reason to make it public.

That's not my philosophy, and I didn't say it was in the presentation. It was part of the schtick. The slides looked like this with Keith as Ivory Tower Guy first, then Me as Realist guy, and the "in actuality" slide last with guidance we could all agree on. However, I still think that marking stuff internal while you're in your design phase is a great gimmick to better understand your user and help balance good design with the important business issue of a supportable code base.

The salient point in the whole talk is be aware of the consequences of extremes and make the decision that's right for you and your company. (Very ComputerZen, eh?)

  

Paul's right that it is frustrating to see internal classes that do just what you want, but simply marking them public en masse isn't the answer, nor is marking everything internal.



Page 1 of 18 in the TechEd category Next Page

Contact

Sponsors

Hosting By

On this page...

Tags

Calendar

<December 2008>
SunMonTueWedThuFriSat
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Archives

Google Ads