Browsing Posts in Events

DevTeach is happening May 12-16, 2008, this time in Toronto, Canada. DevTeach is a fantastic conference and that’s not because I’m speaking there or organizing the Agile Track – though those are good reasons too. Just take a look at the line-up of internationally known speakers. Attendance is purposely capped in the hundreds to encourage speakers and attendees to meet, chat, dine, drink, and otherwise talk tech in a relaxed atmosphere. For those interested in agile development, the Agile Track has been expanded to 17 sessions over the full three days. There is also Party with Palermo, a keynote by Scott Hanselman (Microsoft), and .NET Rocks Panel Discussion with Scott Bellware, Ted Neward, and Oren Eini. If you’ve been itching to learn about TDD, Silverlight, WPF, SQL CLR, or other topics, there are one-day pre-/post-conference sessions available at reasonable prices. DevTeach is a fun and amazing learning experience. Hope to see you there! You can register here.

Thanks to everyone who came to my presentations during DevTeach. I’m going to try something different than zip files for distributing code samples. I’ve set up a public Subversion repository on Google Code here. If you’ve got a Subversion client (such as TortoiseSVN) installed, you can point it to:

http://jameskovacs.googlecode.com/svn/Presentations/

The slidedecks are available in the repository, but I’ll provide them here for those that don’t want to go spelunking through the repository…

The Persistence Ignorant Domain Model – PI and, more generally, anti-corruption layers between your code and frameworks, are incredibly important in creating maintainable software. I’ll definitely be talking about these issues in the future. Slidedeck can be found here. Demos can be found in the SVN repository.

Agile Panel with David Laribee and Friends – I qualified in the “Friends” category. The discussion panel was a lot of fun and David did a great job moving the topics along. No slides or demos to see here. Move it along…

Enterprise Version Control – Bil Simser and I did a presentation on best practices in version control. We discussed both Subversion and TFS, though all of our demos were done with Subversion. (The reason… Setup time for a Subversion server – 5 minutes. Setup time for TFS – longer than we cared to take. Yes, both Bil and I have set up TFS before. It’s just a lot more complex than Subversion, though it offers more out of the box.) Slidedeck can be found here (SVN) or here.

Queuing and Caching to Scalability – Other than the technical difficulties in getting my laptop to talk to the projector, I had a fun time with this presentation. (Thanks to the attendee who lent me his laptop so I wasn’t just talking in front of a blank backdrop.) After spending so much time making sure the demos ran flawlessly, I was disappointed that I didn’t get to show them. Slidedeck can be found here. Demos can be found in the SVN repository. The code should be fairly self-explanatory. To run the demos, you need to install MSMQ and create two private queues called messageboardqueue and newbabblesqueue. If you have any questions or problems with the demos, please email me. I’ll try to put together a screencast in the next few weeks for those who are interested, but don’t want to go to the trouble of installing MSMQ.

I appreciate all the feedback I received, both the positive and negative. As a speaker, the best way to improve one’s craft is to critically examine the past presentations by accepting attendee feedback. I think about what went well (and should continue doing) as well as what didn’t go so well and how to improve. Very much like an iteration retrospective in agile development. So keep the feedback coming!

I spent last week hanging out at DevTeach in Vancouver. Awesome conference. Although heavily Canadian, people from around the world showed up. (I finally got a chance to meet Oren Eini (aka Ayende Rahien) in person after emailing/IMing/etc. for a long time.) The Agile track was particularly well-attended, often with standing room only available. Of all the presentations, the ones that stand out in my mind are:

Jeremy Miller’s Creating a Maintainable Software Ecosystem – Jeremy echoes so many of my thoughts on good software design, but does it much more eloquently. If you haven’t subscribed to Jeremy’s blog, go do so right now. I’ll wait… Oh good, you’re back. One of the most amusing moments in Jeremy’s talk when he demonstrated environmental testing in StructureMap. (StructureMap is the first .NET inversion of control container built by Jeremy himself before Castle Windsor or Sprint.NET.) Jeremy turns to Oren and says, “Here’s something that Windsor doesn’t have. Environmental testing.” The basic idea is you can mark certain methods with an attribute to indicate that they validate your IoC configuration. Oren agrees that Windsor does not have such functionality. At the end of Jeremy’s presentation, Oren calls me over and shows me some code on his laptop. Not to be one to turn down a challenge, Oren implemented the feature in Windsor while Jeremy finished his talk! You can check out the code on Oren’s blog and I can attest that he did code this start-to-finish during Jeremy’s talk.

David Laribee‘s Domain Driven Design – David has style like no other developer I know and he has the technical chops to match. He did an admirable job explaining the fundamental concepts of DDD and re-affirming my own understanding. I particularly liked his very visual slide design focused around a picture and short statement to convey the overall meaning. I’ve tried this in a few talks and been pleased with how it works. I was taking mental notes during David’s talk and figuring out how to better incorporate visual imagery into my own presentations. Great stuff.

But neither of those matched…

Justice Gray‘s Microsoft MVC Architecture…what side are YOU on? – Oh my gosh! This was the presentation to end all other presentations. Just read his abstract:

Everybody who is anybody is talking about the new MVC. And when you’ve heard it mentioned, you’ve *also* heard the standard “We can all play nice together”, “there’s still room for choice”, “this is just an alternative” and all those other phrases that likely also involve group hugs and the Care Bear Stare. FORGET THAT. The world is waiting for a man to take a stand – a name that people trust to start the next great religious war in software! So at DevTeach, North America’s Metrosexual Development Hero is going to break his silence and show you why the Microsoft MVC is the *only* Microsoft web architecture you should be developing with. Sure, Justice *doesn’t* have the advance betas, lines of cocaine at every table, and free entry to shady massage parlors that Microsoft gives their MVPs, but he *does* have the ability to incite a full-scale *RIOT*!! Why is this the most important piece of MS web architecture in ten thousand years? What’s the problem with traditional WebForms development? How do the mysterious Page Controller and Front Controller patterns figure into this? Why do Datasets suck? Will Justice even get a beta in time? Will you get laid tonight? Who hit you over the head with that beer bottle? The answers to these and *many* other questions can only be found in THIS PRESENTATION, so make sure you’re there for the session that neither you or the local authorities will *ever* forget!!

The abstract pales in comparison to actual presentation though. I don’t think anyone else could have carried this off. He mixed humour with excellent technical content and insight. Explaining the model-view-controller (MVC) concept using Steven Rockarts’ drug habits* was brilliant. (I know Steven Rockarts personally and I can attest that he is very anti-drug. It made Justice’s presentation all the more funny to see Steve in the back of the room muttering to everyone who would listen, “I don’t do drugs. I don’t have a meth addiction. I don’t do coke. Ah, come-on, Justice!!!”) After demonstrating a MVC app to cure Steve of his various addictions, Justice went on to demonstrate another MVC app in an effort to assist Donald Belcham, The Igloo Coder. Enter The Igloo of Love – A Dating Website for Donald Belcham. On Donald’s list of potential paramours was The Mad Mexican, Martin Fowler, and Scott Bellware. (Showing off the MVC routing engine using the search-engine optimized (SEO) URL http://igloooflove.com/paramours/thatare/slutty/ and having Scott Bellware’s name appear was a riot.) I’ve never seen Donald turn such a brilliant shade of red. Justice had a rollicking good time roasting his fellow EDMUG directors. He was over-the-top and showed that you could have fun while being highly technical. Justice’s presentation style isn’t for everyone, but I for one found it incredibly refreshing and entertaining. Well done, Justice!

Most of the fun at the conference was just hanging out with the other presenters and attendees. There is no line drawn between the two at this conference and everything is set up to encourage interactions between presenters and attendees. (For instance, there is no presenter room. If you really need to prepare, go to your hotel room. Otherwise hang out and talk to everyone.) One dinner was at a Thai place. When we got there, we had to split over two tables. I was at the smaller table with six people. Half the people at the table were presenters. Where else does this happen?

Other fun happenings… I talked to some attendees at the JetBrains booth. While talking, I said to Jeff (JetBrains), it’ll be easier if I just show them. I took over the booth for about 10 minutes demonstrating everything I love about ReSharper. How many of your customers will do that for your product? :)

Thanks to everyone I talked to at the conference for making it such a fun time. If you’re thinking of going to a conference in 2008, I would encourage you to make DevTeach one of your choices. I know I’ll be at the next one… How can I be so certain? Because the organizing committee asked me to be the Agile Tech Chair. I’ll be organizing the agile track for DevTeach Toronto coming up May 12 to 16, 2008. If you’re interested in speaking, submissions are due by January 15, 2008. I would also welcome any feedback from attendees regarding topics that they’d like to hear about.

For those looking for slides and demos from my presentations, I’ll be posting those later today. So stay tuned.

The ALT.NET Open Space Conference in Austin has come to a close. It was a fantastic experience. I had an opportunity to connect with many people whose books I have read and tools I use. Thanks to everyone who came for sharing their time and knowledge. Given that I’m used to wearing the presenter hat, it was a refreshing change to attend a conference where the purpose was to discuss and question our core tenets. Which brings me to…

What is ALT.NET? This continues to be a hotly debated topic – before, during, and after the conference. My own take… ALT.NET is about considering alternatives, it is not about being alternative. It is about taking the best frameworks and tools from Microsoft, third-parties, and the open source community to build an application that is maintainable. It is not about being anti-Microsoft. Scott Hanselman suggested that Pragmatic.NET might have been a better name. I would tend to agree. At heart, everyone there was a pragmatic developer. (If you have not read The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas, you really should.) It’s about thinking outside the Microsoft MSDN canon when building software.

What I find truly amusing is that, as far as I can tell, Microsoft has not attempted to create a canon. The collective knowledge has been created by regular people like us and people are fallible. Ideas that seem good at first may not stand the test of time. (DataSets/DataAdapters are a great example of an idea that in hindsight isn’t such a great one.) Microsoft is very open to better ways of developing software, as evidenced by the fact that many Microsoft employees attended. What many perceive as hostility to the community is more often disconnection from the community. But the honest truth is that they want to engage with us. I had great conversations with Simon Guest (Architecture Strategy Team), Howard Dierking (Editor in Chief of MSDN Magazine), Scott Guthrie (DevDiv), Peter Provost (P&P Team) Scott Hanselman (newest member of the Borg), and many other ‘softies about the values of the ALT.NET community and how Microsoft technologies support or hinder the development of maintainable software. (My intended purpose isn’t name dropping, but to show you, dear reader, that it’s the movers-and-shakers in Microsoft who are interested in providing a better development experience. These are the people who shape the platform and its documentation.)

Some people, who didn’t attend, have claimed that the conference was cliquey; that it was a venue for like-minded developers to say, “I do TDD.” and another developer to say, “Hey, cool. I do TDD too. You’re awesome.” On the contrary, the purpose was to foster better understanding of new techniques, such as BDD, specifications, domain-specific languages, FIT, etc. The conversations all started with a mutual understanding of what we were trying to achieve – more maintainable software supported by appropriate test artifacts.

For example, there was a lot of discussion around specification languages (like NBehave) were valuable compared with a written story on an index card. A written story is approachable by a non-technical business stakeholder and can elicit a discussion that might not otherwise happen. A specification written in C# (or Ruby) sitting in a source control system is not approachable by the non-technical business stakeholder. The answer is it depends on the individuals involved in the project. Each technique causes friction and your choice depends on which type of friction results in less project risk.

Another topic that has been widely reported is Scott Guthrie’s first public demonstration of the new ASP.NET MVC Framework. There were some pleasant surprises, including:

  • Microsoft’s commitment to testability. Controllers interact with the ASP.NET pipeline through IHttpRequest/Response rather than HttpRequest/Response. That little “I” allows us to mock out the dependency on the HTTP pipeline and run controller tests without all the ASP.NET hosting infrastructure. (ScottGu is looking to port those interfaces back into ASP.NET WebForms too.)
  • Microsoft will provide easy integration with a variety of other frameworks. For instance, if you want to mock a dependency, you can use Rhino Mocks, NMock, or TypeMock. If you want to use an inversion of control (IoC) container, Microsoft will allow you to bolt in Castle Windsor, Spring.NET, StructureMap, or ObjectBuilder. The team is even planning on providing templates for these open source frameworks. Microsoft is working with the community rather than trying to compete against it.
  • ScottGu’s team is not trying to wedge MVC into the existing WebForms model. If you use MVC, you are opting out of viewstate, postbacks, and the dreaded ASP.NET Page lifecycle. This is a brave move to make. WebForms will still work as it always has, but if you choose MVC, you will use a new set of controls specifically designed for the MVC model.
  • The bi-directional routing engine looks awesome. It allows for very flexible and human-readable URLs. The use of lambdas to create URLs was very cool.
  • The default view engine is ASP.NET. So you get all the design-time, CSS, and Intellisense support, but without the complex ASP.NET Page lifecycle, as noted above. You can easily create typed view data to communicate between your controller and view. (In MonoRail, the controller and view communicate via an untyped property bag. So you don’t get Intellisense and refactoring support.)

Overall, the design of ASP.NET MVC looks a lot like Castle MonoRail and has aspects of Ruby on Rails and Django sprinkled in. I’m looking forward to watching this technology develop. Jeremy Miller echoes my sentiments when he says, “I’m more excited about an upcoming Microsoft technology than anything else since moving from VB6 to .Net.” If you know Jeremy, he’s a hard developer to impress. So that says a lot!

There was so much more. I’ll try to put my thoughts around other discussions in the coming days as I mentally digest everything that was discussed. I’ll leave you with some personal highlights:

  • I enjoyed finally meeting Jamie Cansdale (TestDriven.NET) and hearing that he and Microsoft had come to an amicable agreement over TestDriven.NET.
  • It was great to meet Jay Flowers and thank him for all his great work on CIFactory. I even convinced him to implement an option in CIFactory to flip from using the command-line, CCNet.exe, to the Windows Service, CCNetService.exe.
  • Rock climbing Saturday night with Scott Hanselman, Russell Ball, and others was a blast. I didn’t feel like “a monkey with fly paper gloves”, but it was still a lot of fun. Maybe I’ll take it up as a hobby… 
  • Talking to Martin Fowler over dinner about the challenges in parallel computing. He said, “Concurrency is a lot like a white fluffy bunny…” at which point he leapt up and down wildly yelling, “with fangs and a mean streak a mile wide!!!” (Fans of Monty Python’s The Holy Grail will understand the reference. If you don’t, go rent the movie right now.)

My good friend and fellow plumber, John Bristowe, is on the road again, this time with the third installment of Microsoft Canada’s DNIC Tour. He’ll be in Calgary talking about how to incorporate the .NET Framework into your existing applications.

Date: Thursday, September 27, 2007 from 5:30 PM – 7:30 PM
Location: Nexen Conference Centre Theatre, +15 Level
Registration: http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032353126

 

Developer Night in Canada

Developer Night in Canada (DNIC) III – Bringing the Power of the .NET Framework to Your Existing Application

For the past few years, you’ve heard a lot about the .NET Framework and the development platform it provides to foster innovation. Meanwhile, you’re still managing applications written with thousands of line of VB 6.0 code and you’d give anything to move to a more modern development environment and platform.  In this event, we’ll walk you through real-world tips & tricks that you can use to bring your solution to the .NET Framework. Specifically, you’ll learn how to tackle the issues of integration and migration when dealing with legacy applications. We’ll also feature folks from the Canadian developer community to provide you their experiences and insights.

The website is now live and accepting registrations. We’re accepting 100 lucky participants to take part in this unique event. Sign up now at http://www.altnetconf.com. If you don’t know what I’m talking about, go back and read this. Hope to see you there!!!

Coming to Austin, TX… October 5-7, 2007… Brought to you by the NHibernate Mafia themselves… 3 days of ALT.NET mayhem… See behaviours twisted, tests tortured, dependencies injected, object-relations mapped, and DSLs like you’ve never seen them before…

More seriously, what exactly is ALT.NET? David Laribee coined the term to describe developers who look outside the “official gospel” for ideas of how to develop software better.

  1. You’re the type of developer who uses what works while keeping an eye out for a better way.
  2. You reach outside the mainstream to adopt the best of any community: Open Source, Agile, Java, Ruby, etc.
  3. You’re not content with the status quo. Things can always be better expressed, more elegant and simple, more mutable, higher quality, etc.
  4. You know tools are great, but they only take you so far. It’s the principles and knowledge that really matter. The best tools are those that embed the knowledge and encourage the principles (e.g. ReSharper.)

Scott Bellware has assembled an all-star organizing committee, including:

The conference will be run in an open space format, which is very agile in nature and execution. Fundamentally OpenSpace is a conference with self-organizing sessions. If you have an idea for a session, you post it on the schedule. If you see a session that interests you, you show up. If that session sparks an idea you’d like to talk about, post your new session on the schedule. Lather, rinse, repeat… This will be my first time participating in an OpenSpace conference, but I’m excited by the concept.

You can expect topics covering:

  • Software design
  • Testing strategies and continuous integration
  • Test-Driven Development (TDD)
  • Behaviour-Driven Development (BDD)
  • Domain-Driven Development (DDD)
  • Domain-specific languages (DSLs)
  • Object-relational mapping (OR/M) using NHibernate
  • Dependency injection with Castle Windsor
  • Web development with MonoRail
  • Agile team practices, such as XP and Scrum
  • Plus anything else that attendees want to discuss

The Important Stuff

Cost: FREE! (except for the cost of airfare and accommodations)
Location: St. Edwards University Professional Education Center, Austin, TX
Date: Friday, October 5th, 2007 @ 5pm to Sunday, October 8th, 2007 @ noon
Attendance: 100 (max)
Registration: http://www.altnetconf.com

If you are interested in attending the event or would like to know more, please don’t hesitate to contact me or one of the other organizers.

My duties as a TechEd booth babe are now done – at least until next year. It was a fun, but exhausting, week and I was typically running on 3-4 hours sleep per night. It all started Sunday night with Party with Palermo. Jeffrey Palermo threw an awesome party again with 437 geeks in attendance at the Glo Lounge. Every party is bigger than the last. If he keeps this up, he’ll have to rent a conference centre next time!

I spent most of the week answering questions at the TLC Architecture booth with Peter Provost, Jeffrey Palermo, Don Smith, David Schmidt, and many others. There was a huge amount of interest in agile development techniques, including test-driven development (TDD), mocking, pairing, Scrum, Extreme Programming, and more. I also realized how dependent (in a good way) on ReSharper I’ve become. I was demonstrating some design techniques (specifically model-view-presenter) and grew so frustrated with vanilla Visual Studio installed on the kiosk, I grabbed my laptop and got down to some serious coding with the help of ReSharper. (Remember going from Notepad to Visual Studio and finding out how addictive IntelliCrack(TM) can be? Becoming proficient in ReSharper is an equally large step in productivity and going back is just painful.) Thanks to everyone who dropped by the booth to chat!

In addition to my booth babe duties, I led a Birds of a Feather session on Creating Flexible Software: TDD, Mocking, and Dependency Injection. The session was scheduled for 7:45pm Tuesday night, which made me a bit worried that I’d only get half-a-dozen people showing up. As it turned out, approximately 50 people turned up for a very lively discussion. There were many agile practitioners there, who generously shared their knowledge and experience. We had to wrap up the discussion after an hour because another group needed the room. The discussion moved into the hall with about a dozen people talking for another hour about experiences, tools, and techniques. It was great to see such enthusiasm from people about one of my favourite topics.

Next was Speaker Idol on Wednesday. What can I say other than complete flame-out on my part? I’m an experienced speaker and have spoken in front of crowds of 500+. Standing in front of a judging panel made me panic. My 5-minute talk was to explain the TDD-style development. I tried something crazy (a rhyming jingle about software development) to be different, but tripped up midway through and didn’t recover. It also turned into more of a rap than a rhyme, and everyone knows that white men can’t rap. Here is the full version meant to be said in the style Jenga, the 80s commercial:

Traditional Development Jenga

You take an object from the bottom and you put it on top,
You take an object from the middle and you put it on top.
That’s how you build your software; you just don’t stop.
You keep building that software putting objects on top.

It teeters and it totters, but you don’t give up;
it weebles and it wobbles, but you build it on up.
You take an object from the bottom and you put it on top,
you take an object from the middle and you put it on top,
till someone breaks the build, and that’s when you stop,
debug all night until you drop.

I wrapped (rapped) Confused it up with TDD Jenga, which went marginally better, though I rushed it:

TDD Jenga

You write a test and see a red glean,
You write some code and you make it go green,
Refactor that solution, that’s what I mean,
You are a TDD machine.

Commit that source to svn,
Cruise Control.NET kicks in,
Builds that software, tests it too,
You go home early ’cause now you’re through.

Needless to say, I didn’t make it to the finals. There were speakers more deserving than me. That evening, I drowned my sorrows/embarrassment with the judges at the Influencers Party. Hopefully one day I will live down the “Rapping Speaker” appellation that I seem to have earned from Stephen Forte.

On Thursday, Jeffrey and I met up with two members of the Microsoft Data Platform team to discuss the Entity Framework. Between that discussion and the one we had at the MVP Summit, the DP team is getting it. They understand what the “NHibernate Mafia” are trying to do with domain-driven design (DDD) and why EF has to be persistent ignorant (PI) if it is going to be useable for DDD the way that NHibernate is used today. Daniel Simmons, one of the EF architects, had a great post explaining his epiphany regarding our ask for PI in EF. Kudos to Daniel for taking the time to do some reading and understand why true DDD requires a persistence-ignorant object-relational mapper!

It was a busy and tiring week, but I’d do it all again. Feel free to live vicariously by browsing through the TechEd 2007 Flickr Set.

Next week, I am competing in Speaker Idol at TechEd 2007 in Orlando, Florida. What is Speaker Idol? Think Idol – Geek Edition. There will be twelve geeks taking the stage to sing and strut their stuff.* The Honourable Carl Franklin and Richard Campbell of .NET Rocks fame will be hosting. We’ve each got 5 minutes to present on a technical topic of our choice. The top prize is a highly-coveted speaker slot at TechEd 2008. The competition should be a lot of fun and is being broadcast from the Virtual TechEd stage. So even if you’re not there, you can cheer me on from the comfort of your own office. I’ll post links for the competition once they’re available.

* I can make no guarantees that I will or will not sing. You’ll have to tune in and find out. Open-mouthed

Jeffrey Palermo is throwing another of his famous parties, this time at TechEd 2007 in Orlando, Florida. I attended a “Party with Palermo” at the Microsoft Global MVP Summit in Redmond this spring and it was a blast. A veritable who’s who in the Microsoft space. I got to meet a lot of cool people whom I’d only conversed with online. I hung out with Jeffrey and the rest of the agile crowd for the remainder of the week. Hence my association with the NHibernate Mafia by Richard Campbell on .NET Rocks. (Actually it’s the TDD Mafia, as Scott Bellware* later corrected him.) So this is a party that you don’t want to miss.

Website: http://partywith.palermo.cc
Date: June 3, 2007 from 7-11pm
Venue: Glo Lounge (http://www.gloloungeorlando.com)

* I would like to go on record stating that Scott Bellware has done a tremendous amount for the agile community, but I don’t understand his anti-Microsoft rants as of late, nor do I agree with them. Microsoft, like any company, has good and bad aspects in terms of products, direction, competitiveness, licensing, etc. It’s also a huge organization. Maybe Scott doesn’t like some aspects of Vista — which he is within his rights to complain about – but don’t paint the Developer Division (and others) with the same brush. There is no place for personal attacks or derogatory comments when trying to engage in a meaningful discussion on improving a product or a company. Just my three cents. (Inflation, don’t cha know.)