Friday, January 22, 2010

Making DevExpress & ReSharper Play Nicely

I use both DevExpress’s IDETools and JetBrains ReSharper on my dev boxes. Why? Because I’m a tool whore. That and I like different pieces of both of them. DevExpress gives me awesome visualization, and R# gives me awesome other stuff.

Here’s my quick steps to making them play nicely together in VS 2008:

  1. Install DevExpress tools first
  2. Install ReSharper
  3. Start VS, fill out license info as you’re prompted
  4. Tell ReSharper to use R#/IntelliJ key mappings
  5. Disable DevExpress options I don’t like
    1. DevExpress | Options
    2. Set Level to Expert (lower left corner of dialog)
    3. Editor | Auto Complete | Intellassist | Setup | clear Enabled checkbox (I like R# completion better)
    4. Editor | Auto Complete | Intellassist |Parens & Brackets | clear both options for Smart Parens and Smart Brackets (I’ve always had grief with these conflicting, so I shut ‘em off)
    5. Editor | Clipboard | Smart Cut(Copy) | clear Enabled (Plain ol’ VS copy/cut/paste works for me)
    6. IDE | Shortcuts | search for Ctrl-B (PasteReplaceWord) | clear Enabled (I use Ctrl-B in R# to go to definition)
    7. IDE | Shortcuts | search for Ctrl-Alt-F (QuickFileNav modal) | clear Enabled (I use this shortcut in R# for formatting code. R# gives me Crtl-N and Ctrl-Shift-N for type/file nav)
  6. Force ReSharper once more to use its shortcuts. ReSharper | Options | General | Visual Studio Integration | Restore ReSharper keyboard shortcuts | ReSharper 2.0 or IntelliJ IDEA | Apply

These are MY preferences, but it’s what works for me.

Thursday, January 21, 2010

Flag Parameters are Evil! (Or at least unclear)

The more parameters you have in a method call, the more chances you have to screw things up. Moreover, method signatures with boolean parameters (flags) add in clarity problems, too – even if the input parameter is well-named.

Instead of exposing a non-private method with a flag, make that method private and instead expose two well-named, explicit methods which are simple facades over the newly private method.

Instead of

protected T CreateRestServiceInstance<T>(bool impersonateEnabled)

use

protected T CreateRestServiceInstanceAsServiceUser<T>()
{
   return CreateRestServiceInstance<T>(false);
}

protected T CreateRestServiceInstanceWithImpersonation<T>()
{
   return CreateRestServiceInstance<T>(true);
}

private T CreateRestServiceInstance<T>(bool impersonateEnabled) 
{
  //wonderful shiny stuff here
}

You’re making your class’s API explicit and clear, and you’re cutting the risk of someone goofing up and missing something important – like invoking a REST endpoint as a service account instead of impersonating the user.

Not that I’ve ever done this myself, mind you…

Saturday, January 16, 2010

I Am Not CodeMash

Every year I get lots of people thanking me for putting on CodeMash. I get comments about how the conference has changed their thinking and gotten them fired up to go do great things back at work. I’m humbled and flattered, but I’m not the force behind the conference. I’m not CodeMash.

Brian Prince puts in 300 – 400 hours a year handling registration and overseeing our web efforts. Brian is CodeMash.

Jason Follas puts in around 200 hours dealing with sponsors, t-shirts, schedules, and hundreds of other little tasks I never hear about but somehow magically get done. Jason Follas is CodeMash.

Jason Gilmore puts in nearly 200 hours overseeing the 500 session submissions we get for 60-some-odd session slots, plus he handles all the schedule planning and timeslotting, and he handles all the speaker coordination. Jason Gilmore is CodeMash.

Our content selection committee of Dianne Marsh, Joe O’Brien, Jay Wren, Sarah Dutkiewicz, and David Stanek had the tremendously difficult task of culling through those 500+ submissions to pick out the best possible lineup for the conference. CodeMash has lots of Great Stuff to do, but it’s all based on the amazing content. Dianne, Joe, Jay, Sarah, and David are CodeMash.

Darrell Hawley and Mike Woelmer took on tremendous responsibilities for owning the coordination for the Enter The Haggis concert and all our VIP travel coordination, respectively. If you think that’s an easy task please go kick yourself in the teeth. Moreover, they did that at a point when I was in an awful spot with work and life and could not have handled either task at all. Darrell and Mike are CodeMash.

Our 58 speakers and 3 keynoters delivered the amazing presentations that make CodeMash really shine above many other conferences, regardless of size. Those folks are CodeMash.

Scott Zischerk, Chris Woodruff, Mike Wood, and Steve Andrews are always pitching in to lend a hand wherever it’s needed, regardless of whether it’s schlepping trash, handing out tshirts, or manning the registration booth. Scott, Chris, Mike, and Steve are all CodeMash.

Finally, look at the attendees who show up and get outside their comfort zone. Look at those attendees talking in open spaces during the conference and interacting with folks they’d never get a chance to otherwise. Look at the folks pairing up in the Coding Dojo and polishing up their skills. Look at the folks in Leon Gersing’s PreCompiler TDD Workshop session who filled out retrospective cards with blurbs like “Loved a practical workshop with Agile!” or “Never paired before, but learned a lot!” or “Didn’t know anything about Rails before today, but loved the experience.” Those folks are CodeMash.

I’m not CodeMash. YOU are CodeMash. I’m just lucky to be a part of it. Thanks!

Now go do something with what you learned. Me? I’m taking a nap.

UPDATED: I completely forgot to mention Jeff Blankenburg, who spends a lot of time and creative energy doing up our amazing logos, badges, and banners. Jeff Blankenburg is CodeMash!

Subscribe (RSS)

The Leadership Journey