Attention: We are retiring the ASP.NET Community Blogs. Learn more >

Fear and Loathing

Gonzo blogging from the Annie Leibovitz of the software development world.

  • DevTeach Day 1 - ReSharper Madness!

    Despite the fact that Oren's presentation is about ReSharper and as an Agilist I try to follow the manifesto "Individuals and Interaction over Processes and Tools", ReSharper *is* something that developers need. It is hard as it flies in the face of the manifesto but I think there are exceptions to the rule, and this is one of them.

    DSC_0027

    Oren during his ReSharper talk opens up the PetShop client, runs a copy of Keyboard Jedi (which was flying of course) and started his refactoring madness. 4 keystrokes later he converted all of the crappy public fields in the codebase to public properties.

    So we're about 8 minutes in the demo and if you ignore the 4 minutes it took him to explain what was going on, he's converted the PetShop login code to use Castle ActiveRecord and achieved persistent ignorance in the codebase. Nice.

    Again, watching Oren (even as he's doing a demo here and pausing for questions) work in ReSharper is like watching DaVinci paint the Last Supper (not that I was there or anything). It's pretty slick (and a little overwhelming) especially when he undo's 5 minutes of coding in 5 seconds just to find something then redo all that code again. Then again Oren probably sees code like Neo sees the Matrix.

    In the end it took some time to extract the crappy code out of PetShop (which is no easy feat) and a lot of refactorings and keystrokes later, the goal was accomplished. Not bad for an hour sessions to introduce ActiveRecord to a legacy codebase. With some time and care and feeding you can do the same (maybe not at the speed of Oren but then that would be inhuman, or JP-like).

  • DevTeach Day 1 - User Stories for You!

    Just sitting through David Laribee's talk on User Stories (well starting really). No code, just fluff. No wait, that's not right. There's no code but that's okay as we're talking User Stories however there's redemption as David isn't cracking open PowerPoint but rather using Keynote on his MacBook Pro.

    DSC_0026

    How do you sell Agile (or User Stories) to your boss? If you're stuck in Waterfall land where there is a design phase, construction phase, testing phase (unit testing phase), and the be-all end-all deployment phase. Agile is about an alternative to getting away from the giant Gantt chart from hell where you're predicting what you're going to do 9 months from now. Projects can't work this way, babies can.

    TDD, DDD, BDD, Patterns, etc. are all engineering practices. They're all good and needed. However if all you're doing is these practices then you're just doing a half-baked job. Let's go back to the Agile Manifesto of "Responding to change over following a plan". Agile does have planning and it can be hard, but it's the type of planning that alters the roadmap as you travel along the journey.

    Just because you're doing iterative development, doesn't mean you're doing Agile development. There's a term called Scrumifall (and anti-Agile pattern) where you break up the waterfall approach into chunks. What you really want to achieve is more aligned to Analysis/Design/Code/Test/Deliver in each iteration. There is no design phase, there is no testing phase. At the end of the iteration, done is done and released to the customer (but not necessarily released to the public).

    How do you work with stories or tasks? There was a good example by Oren on "As a User I want to search the CRM system". This seemed like an epic and for him, involved 3 developers for a month. That's pretty big so a technique is to break this down to smaller pieces (not tasks) so they're more digestible. One rule of thumb is that if your story is longer than your iteration, then it's probably too big on it's own and needs to be broken down.

    User Stories have smells too. For example if you have a story like "As a manager I want to approve/reject a document so that...". You might want to stay away from CRUD like functions in your stories. If you've got a CRUD story, you might want to keep them together and not get them too small. Small, but not too small. It's more of an art than a science here.

    David mentioned the Story Point Hall of Fame which is a cool idea. The idea is to take a real story where it really is a good example (in your organization) of a 1 point story. Or a 3 point. Or 10. Here's the idea. Put the idea up on a wall, cork board, whatever and tell everyone that this is a good, proven example of a 1 point story. Then other teams can come back and look at the wall to say "That's a good example" and model from it.

    How do you deal with inter-dependent stories? A good practice for stories is to follow the INVEST principle (Independent, Negotiable, Valuable, Estimatable, Small, Testable). When you're looking at your story where there's a dependent story the technique to remove the dependency is to fake it out (almost like a mock for user story but it's more of a fake or stub). David calls them connectors and they're basically get the dependency out and create a new story to handle the fake out.

  • DevTeach Day 1 - Let the Games Begin!

    I'm not focusing very well today. I've been staring at the DevTeach schedule for about 10 minutes and still not sure what I'm seeing. No, I'm not being figurative here. I mean I've been literally staring at the schedule for 10 minutes and can't make heads or tails out of where I want to go. I also don't know how I could be a bigger fan of Dave Woods. I'm not sure if it's the lack of sleep or the inability to read right now. It's certainly not the clarity of the schedule itself. That's pretty clear and straight forward.

    The claw! It's all in the claw!

    Anywho, good news (or bad news if you were expecting to see someone else at DevTeach). I'm filling in a missing slot tomorrow in the Server Track. James Kovacs and I are going to pair up and do a session on source control best practices. Here's the abstract (cut me some slack as I wrote this at 3:05 last night):

    Do you use source control? Does it work for you or do you work for it? Join Bil Simser and James Kovacs as we explore the wonderful world of source control and how it makes your source code sing and dance and sometimes do tricks. We’ll explore the ABCs of setting up your initial tree, managing code branches, dealing with evil merge scenarios, multiple users, conflicts, all the way to scaling up source control to large teams, integration with other tools, and generally making your life easier when dealing with this precious commodity in your Enterprise. In this session you’ll take away some best practices, tips and tricks, and new techniques you can bring to your teams.

    Should be a blast. James and I are in the Port Hardy room at 3PM so check it out if that's your thing.

    DSC_0003

    Off to lunch, back later with some more stuff as the afternoon is full of Agile. David Laribee is doing a session on user stories, James Kovacs follows up with his PI Domain Model speak, and the day (for me) wraps up with Oren and ReSharper. Just hoping my eyes will be able to keep up with Oren and his ReSharper Kung-fu.

    Also tomorrow should be cool as I'm going to be on the Agile Q&A session hosted by David Laribee so join Jeremy Miller, James Kovacs, myself, and others as we talk ALT.NET for an hour or so.

    Speaking of ALT.NET, we're looking to get some some Rebel Alliance faction going Thursday night so ping me if you're down here (up here?) in Vancouver and we can get together for an informal ALT.NET chat.

  • DevTeach Day 0 - Vancouver Virgin

    Well, I'm not really a Vancouver Virgin. I've been here a few times. Never for a conference though. And this is the first time DevTeach hits Vancouver so hey, the title sticks and it's my blog so deal.

    Here we are again kids, first day of the conference and man it's been a day. It's 3:22 when I'm starting the blog and we've been going all night long. This poor old tired body can't take much more and I think I'm going to be skipping the 7:30 breakfast call tomorrow morning. I've already put the Do Not Disturb sign on the door and won't be getting up until Thursday. Unfortunately other MVPs were a little less happy-go-lucky than I was and fell by the wayside throughout the night. More on that later.

    So sit back for the next few days and again live vicariously through Unka Bil's blog, a train wreck full of fun, adventure, and photos that should have been confiscated at the bar.

    I did arrive in Vancouver pretty uneventful. There was a Santa Claus parade during the day so of course traffic was a gong show. The only redeeming quality was the fact I could harass the locals when they asked me questions I couldn't answer.

    image

    Outside of the local Subway a couple asked me what all the commotion was about and why all the traffic delays. I had a hard time swallowing that locals wouldn't know about the parade, especially since they had parade bags and one of them had a parade scarf. This of course brought out the insane Calgary guy in me with the only response I could think of that was appropriate.

    "It's aliens! They're taking over the downtown core!! Run for your lives."

    At which point I tore off down the street and around the corner. Not sure if they followed but later at the market they were nowhere to be seen so I assume they found their own evacuation route.

    Dinner with the MVPs

    It was a great dinner at Steamworks with Microsoft, the MVPs (about 40 of us), and the user group leaders from around (Vancouver, Victoria, Edmonton, and even Saskatoon!). Of course as I turned around and checked a few tables out, who is the only person at a table with a laptop? Oren.

    DSC_0017

    No doubt masterminding another new Rhino Mock feature that we'll all hear about tomorrow (or is yesterday, I always get that confused).

    The other event for the night was the quote that almost had me spewing my drink at dinner. Of course it appeared courtesy of Justice as we were talking about and exchanging business cards.

    "If my business card was a penis it would be 15,000 feet long!"

    Yeah, it was going to be a long night...

    Party with Palermo

    DSC_0019

    Jeff, as usual, kicked off an awesome party. Looked like around 100 people crammed into a small room but then I was never good at guessing numbers. Books were given away, hats were thrown into the crowd (literally), and this lucky winner walked off with a ticket to DevTeach after picking a number between 1 and 1000.

    DSC_0045

    During the course of the party, much rejoicing went on. Here I caught Kyle and Justice together although I'm still not convinced they're separate entities:

    DSC_0018

    Beth Massi, ex-MVP now softie was out and about with the guys having a great time:

    DSC_0055

    It seems everyone at the party was somehow affiliated with the Justice Gray Fan Club. In fact, I tracked down this little fellow who's not only the president, but he's also a member:

    DSC_0026

    Our own Justice Gray won a copy of JetBrains ReSharper. Now we think it'll make him a better developer, but we can only hope.

    DSC_0082

    David Laribee explains the finer workings of Domain Driven Design to Jeremy Miller, while James Kovacs and our own Canadian MVP guy Sasha looks on.

    DSC_0057

    Shooters Don't Always Stay Down

    Just ask our Igloo coder, coming off his worldwide tour. He wasn't looking too good. Luckily I don't have a wife factor I have to deal with when it comes to publishing incriminating photos on the net or talking bad about him and his evil whiskey ways. Pictures speak louder than words.

    DSC_0014

    Donald, dude, whiskey and shooter don't mix.

    What Lies Ahead

    Who knows? It's late.

    We polished off the bar then headed up Robson street in search of food which was delivered unto us in the form of Earls. Ahh, bless Earls and they're burgers and, well, food stuff. Along the way sort of picked up Greg Young who schooled us on DDD (as he should) and met the lovely and talented Dave the Chef and Emma the Social Butterfly (who's aspiring to work in Client Service). Good food, good conversation, and good times.

    So it's late and most geeks are in their beds sleeping away. Others are furiously hammering on their keyboard (no, not *that* hammering) trying to get their presentations "just right". Oren is probably still jet lagged and re-writing Rhino Mocks to incorporate .NET 3.5 features. And the rest of us, well, we're just trying to make it through to the next day...

    For the rest of the trip, you can view my entire Flickr set of DevTeach 2007 Vancouver here.

    DSC_0061

    I'll be blogging from the floor during sessions and trying to keep things moving here at Fear and Loathing Central. I'll also be outfitted with my new Eye-Fi card. This is an uber-cool (geekwise) SD card that you setup with a network to upload to Flickr (or some other service, I chose Flickr) as you take the pictures. Yup, it means mere moments after I snap a picture on the DevTeach floor it'll be in your hot little hands courtesy of Flickr and a $100 SD card. Very slick.

  • So who would you cast?

    I just finished watching my DVD of Red vs. Blue Season 5. I've gone through all 100 episodes of the hit internet series and it's a blast to watch. From the first moments of "why are we here?" to the chuba-thingy/puma debate to 1,000 copies of Church trying to do the right thing, the series is one of my favorites.

    I was thinking this morning with all the bruhaha about the now defunct Halo movie, what if RvB was a live action flick? Of course everyone running around in full Spartan armor isn't any fun, but who would you want behind the masks? What do you think would be a good set of current actors to play our beloved Rooster Teeth characters? Here's my picks:

    • Church: The leading man of course is central to the show. Maybe Nicolas Cage could do it, but I would probably go for someone like Colin Farell or Hugh Jackman.
    • Doughnut: Doughnut is hard as he's a hard one to nail down but I might go for Jude Law or Matt Damon here.
    • Tex: Not my first choice, but Angelina Jolie might work here. Can be a bit of a tomboy but hot too (even if she is whacko)
    • Sarge: You need a rough and tough guy for this and the first person I thought of was Tommy Lee Jones, although (except for his age) Clint Eastwood could nail this.
    • Caboose: This was tough as he has to be dumb but believable. Maybe Will Farell, although he might be over the top and you might want to slot in someone like Heath Ledger.
    • Grif: I thought Mark Walberg might make a good Grif here with his off the cuff remarks and attitude.
    • Doc/O'Malley: John Lithgow as he can play a crazy evil mastermind, but he's not really military grade. I think Johnny Depp could pull this one off with flying colours or even John Travolta.

    I didn't include the whole cast here, but feel free to leave your choices in the comments.

  • What's an ALT.NET Girl to do...

    I ran into a lot of problems this week with VS2008 as I was trying to get my machine up to snuff for my geekSpeak on Wednesday. VS2008 wouldn't run properly last week and I couldn't do any WPF demos. So I uninstalled 2008 thinking I could re-install it. The re-install went worse and crashed all the time. So I uninstalled both VS2008 *and* VS2005 then re-installed 2008. After a few days of installing/uninstalling/re-installing, I finally got something up and limping and the demo went off without a hitch (I think VS only crashed once on me).

    So now I'm on the precipice of  re-imaging my system to get it back to some kind of normalcy and I turn to you, kind and gentle reader.

    What should Bil do:

    1. Re-install XP, spend a few hours updating service packs and hotfixes, knowing that it'll work and I'll be back where I am now but a little faster (always is after a re-install) and all my software will work.
    2. Install Vista Ultimate, hope to heck I can get all my tools working, and watch my Core 2 Duo crawl to Slothlike speed.
    3. Take a chance on installing Windows 2003 Server with no network or video drivers in the hopes that IJW
    4. Install Windows Server 2008 RC0, because you couldn't get enough of Vista on the desktop... now you can get it on your servers!
    5. Break down and convince my wife that buying a new MacBook Pro is a good thing (because she'll get my current Inspiron 9400 which is faster and better than her Inspiron 6000)

    Decisions, decisions.

  • WPF geekSpeak Webcast

    Thanks to everyone who attended my first (but not last) geekSpeak webcast yesterday. We had an awesome turnout and a lot of great questions and interaction.

    I'll be posting the source code to the shell application with all the demos I used (including the 5 or 6 demos we didn't get to) after I add some comments and instructions to make the code a little more tutorial-like rather than just a brain dump of the end result. I'm still waiting for the geekSpeak guys to put together the webcast in a recording so once that's done I'll put the code up with a link on Channel 9 to the webcast (you won't have to register for it, you can just watch/download it). I'll also include my own answers to the questions asked during the webcast as I have a capture of those and a few things were skipped over or missed during the session.

    Thanks again and here's to more geekSpeak sessions in the future!

    PS And no, I wasn't wearing any pants during the session.

    PPS The photo of me used was taken in Florida during a DevConnections I presented at last year so that's not snow behind me but rather it was white sand.

  • Everything You Always Wanted To Know About MS-MVC * But Were Afraid To Ask

    Scott Guthrie, bless his heart, has posted one of the longest and most in-depth blog entry I've seen from him in a long time (and most of his tend to be long and full of great nuggets).

    This is everything you need to know about the new MVC framework that is coming out from his group soon as an alternative to WebForms (not a replacement). It walks through a typical storefront example showcasing how the MVC does its thing. It's a nice piece of work although you might want to read his overview post which will get you familiar with MVC.

    For the record, his post has 5,648 words; 34,768 characters; 146 paragraphs; has 177 comments (so far); and is about 32 pages long.

    Now that's a blog post!

  • WPF geekSpeak Webcast Wednesday Reminder

    Just a reminder that I'll be doing my first geekSpeak webcast Wednesday on WPF. I'm calling the talk "Tricks of the WPF Programming Gurus". We'll wallow through WPF and talk about what it is and how to use it, dive into code (after about 5 minutes of the blathering) and then do some code, write some more code, look at some code, and finally check out some more code. In short, it's going to be an hour and a half of code, code, and more code. Should be fun and we'll see where things go. The talk starts at 12pm Pacific Time, and it touted as level 200. I guess I'll keep it at level 200 although I might go crazy and kick it up a notch to level 1200 (promise, no assembly code will be harmed in the making of this screencast) so who knows. You can register via the attendee URL right here right now. Be there or be WinForms based for the rest of your natural life.

  • Two things...

    Two things I learned this morning and it's not even 7AM yet.

    1. You can open up an image in Paint.NET in the File Open dialog by specifying a URL to an image on the internet. I'm assuming this is nothing new and maybe any File Open dialog can do this (not sure) but it works in Paint.NET. I was opening a file that I though I had copied the local path name in the clipboard. Instead I had the URL to it on a website. So I let it go and do it's thing and lo and behold it had brought the image down and opened it up for me in Paint.NET. Cool.
    2. Visual Studio (2005) holds a reference to your solution files even if you select File | Close Solution. This has bugged me for awhile but I was re-syncing my local folder with what was in TFS and needed to blow away my local directory. I selected File | Close Solution and waited a bit, then proceeded to delete the files. Up until recently, I just installed SysInternals file locker unlocker tool and up it popped telling me that msdev.exe had a hold on the files. No matter what I did I couldn't tell Visual Studio to let my files go (even opening another solution). So the only way to delete a directory of a project you've opened is to shut Visual Studio down. Very annoying to say the least.

    Wonder what the rest of the day holds?