Thursday, March 23, 2006

More on MBUnit

Phil Haack, one smart guy and the “Benevolent Dictator” behind SubText, posted a comment on my “Exploring MBUnit” note from last week.  He kindly pointed out the TypeFixture class, linking to a great blog post he wrote back in October of last year.

That post hits something else which I definitely should have covered in last night’s presentation at the Dayton .NET Developers Group: The RollBack attribute, which lets you roll back database actions in any test you run.

Whoof.  I should NOT have missed that one!  I spent a bit of time talking about Roy Osherove’s COM rollback approach in NUnit’s TestFixture Setup/Teardown.  It would have been a perfect addition to have covered this bit of shiny goodness in MBUnit.

I really think I’m going to be moving future efforts over to MBUnit.  There’s a lot of great stuff in it.  I’ve read some of Charlie Poole’s calm, well-reasoned posts about NUnit being able to do much of what MBUnit does, but the latter seems much clearer and easier than the former.

Open Source Test Tools Presentation

I gave another talk at last night’s meeting of the Dayton .NET Developers Group: Open Source Test Tools.  I spoke about all the goodness available in a passle of open source or freeware tools.  It was tough to smash everything into the time allotted. (I’m the president/founder of the group, but I don’t figure I can just blather on for three hours about things I think are Really Cool.)

The tools I hit were:

  • NUnit (quick overview as a foundation for unit test concepts)
  • Fitnesse (followed an example of having the developer create test data in NUnit vice a customer or domain expert create data and tests in Fitnesse)
  • MBUnit (demo’d the RowTest and CombinatorialTest features, talked about Pairwise/All-Pairs support can drastically reduce effort for generating good coverage data)
  • Mock Objects (Rhino.Mocks for simulating inputs from stuff you don’t have access too)
  • Watir (Drive IE through exercising a simple web form with validating text fields)
  • NUnit’s test runner
  • MBUnit’s sucky test runner (hey, even the guys running the MBUnit project are looking at killing the GUI off)
  • Zanebug’s killer test runner
  • TestDriven.NET
  • NCover

Folks seemed to like the presentation, but I really have to rework the portion where I try to describe setting expectations on mock objects.  It’s a very tough concept to understand — it didn’t click with me until 12:30am one night after beating my head against the wall for several hours.  I think I’ve got a new approach for it which will hopefully be clearer and less sleep-inducing.

I’ll have links to the presentation materials posted up after I get a few things polished up.

I submitted this gig along with my Intro to Security presentation to the Day of .NET conference up in Ann Arbor in May.  Hopefully one or the other (both??) will get selected.

Wednesday, March 22, 2006

A Simple, Glorious Lunch

Take one slice of good bread such as a Ciabatta or Pugliese and nicely toast it.  Grab it immediately when the toaster pops it up and rub a small clove of garlic over it.  (Rub lightly if you’ve a meeting in the afternoon, rub more heavily if you don’t care who your breath offends for the next few hours.)  Sprinkle a tiny bit of sea salt over the bread (sea salt, I said! Not that Morton’s garbage.), then drizzle lightly with a bit of top-notch olive oil.  Plop a slice of salami or proscuitto over the still-hot bread and wait a moment for the bread’s heat to warm the meat and release the wonderful aromas.  (And melt the lovely pork fat!)

Devour.

Repeat as necessary.

Late August iteration: replace meat with a slice of vine-ripened tomato from the garden.  Eat in a well-napkined fashion.

Monday, March 20, 2006

Charity Effort Shout Out

Scott Hanselman’s participating in a walk for the American Diabetes Association to try and earn $10,000.  Think about spending some of your charity fund budget (you do have one of those, don’t you?) and help him out for a good cause.

Update: Here’s the trackback link.  Should have used that the first time.  Ooops.

Sunday, March 19, 2006

Big News: I'm Writing A Book!

I’ve vaguely mentioned a big project in other blog posts, but here it is in cleartext: I’m on contract to write a book for O’Reilly!  This has been in the works for several months and things finally got to the Sign-The-Contract phase a few weeks back.  It’s a pretty amazing thing for me, none the least because I’m co-authoring it with my good friend James Avery, author of a couple pretty darn good books himself.

We can’t discuss the focus of the book yet because we’re sneaky SOBs.  Actually, we’re not sure how far we can go into details yet, so we’ll just be talking about general authoring things from time to time.  You may be able to figure bits and pieces out from the content of some of my previous posts over the last several months.  (Hint: It will not cover rose gardening or gnocchi.  I don’t think.)

One of the neatest things is that we’ll hopefully get our book into O’Reilly’s Rough Cuts program.  This lets folks buy a pre-publication version of the book and read through chapters as they’re being reviewed and finalized.  Folks who get the Rough Cuts version get a chance to pass feedback to us, which will help improve the final version of the book. 

37signals talked about early book feedback in their Getting Real book and offered up a couple books which used this same approach.  The authors were all very, very happy to have gotten feedback early in their writing process.  Gee, kind of like Agile software development, no?

James had the terrific idea to get a Basecamp site up to manage the project.  That’s been a blessing so far and has given us a great medium to work on chapter contents, track deadlines, and toss general communication back and forth.

We had our first milestone delivery of two chapters a couple weeks ago.  Much of that content went by a couple good reviewers and all were happy with the general aproach and focus of the book.  We’ve got what I think is an absolutely killer list of technical reviewers built up and their input will be invaluable for polishing the final product.  (Steve McConnell declined, but he was very nice about it.)

I’ve been seriously twitterpated about all this, alternating between Danger Mouse mode (“Panic!!”) and giddy enthusiasm.  Enthusiasm trumps most every time, although I’m sure there will be a few grumpy evenings and weekends to come.

I look forward to being able to pass on more details about the project before too long.  Hopefully we’ll have some content up on Rough Cuts before too many more months — I would love to get feedback from any and all readers.

So there you have it.  The latest big news from around here, and it doesn’t even concern my coffee roasting habits, rose garden, or son’s diapers.

Learning Fitnesse Today

What a great-looking tool Fitnesse is for wrapping your customers into the entire development process! I think it’s also got some interesting promise for difficult combinatorial testing scenarios.  I've been plunking away at Fitnesse part of last night and this morning and finally got something working just now.

Several things weren't readily apparent on getting it going in the .NET environment. First off, you'll need to grab the source and compile the FitServer project for the 2.0 Framework if you're using that environment. I also ended up rebuilding the fit library project just to be sure.  (“System.ApplicationException” errors stating your test fixture assembly couldn’t be found are the result of trying the 1.1–compiled server on 2.0 assemblies.)

Secondly, and this one's a head-slapper, you don't need to start the dotnet\FitServer executable separately. I spent 30 minutes or so Googling the heck out of things before finally realizing the answer was staring me right in the face on the DotNetFitServer Wiki page. Duh. Just fire off the run.bat file in the fitnesse root, add the lines noted on the DotNetFitServer line, create your tests and fixtures. FitNesse's goodness spawns the FitServer all on its own.

One last issue: set the “Copy Local” property of the fit.dll reference to “False.”  Otherwise you’ll get odd messages about “Couldn’t cast XYZ.ABC to Fixture.  Did you remember to extend Fixture?”  (Thanks to Heinrich for the answer on that one.)

FWIW, here’s my first table:

!|JHSCR.FitFixtures.HourlyWagesFixture| |hours|rate|Wages?| |20 | 33.22| 664.40| 

 and the corresponding fixture:

namespace JHSCR.FitFixtures

{

    public class HourlyWagesFixture : fit.ColumnFixture

    {

        public double hours;

        public double rate;

        public double Wages()

        {

            IEmployee emp = TestFactory.CreateDefaultPerson();

            emp.WageType = Employee.WageTypes.HOURLY;

            emp.HourlyRate = rate;

 

            Payroll pay = new Payroll();

            return pay.ComputeWages(emp, hours);

        }

    }

}

Note that you can use namespaces, you’ve just got to use them in both the test fixture code and the test table itself. 

(Yes, it was green!)

 

UPDATE: Fixed the busted formatting on the test table.  Sorry.

Wednesday, March 15, 2006

Smokin' DSL!

My ISP is in the middle of various upgrades and I’m already seeing some improvements.  Current stats from my ISP’s bandwidth test page:

Admittedly, your own ISP is not an unbaised source, but I confirmed similar results at PC Pitstop.  I’m hoping that I’ll end up with 3Mbps by the end of the month.  If I’m lucky, really lucky, I may get as high as 6Mbps. 

My ISP is DONet, Inc., a local Dayton firm who has killer service and great rates.  I was with SBC for a year and they sucked rotten bong water.  I’ve been with DONet for around four years and they’re just terrific.

<Disclaimer> They’re not paying or comping me in any way for this plug.  They’re just great folks with great service. </Disclaimer>

Exploring MBUnit

I’ve been playing around with MBUnit for only a few hours, but I’m way impressed with it so far.  Its table-based testing via the [RowTest()] attribute is killer.  I love that I can combine rows of input and catch Exceptions all in one test:

        [RowTest()]

        [Row(33.22, 80, 3322)] //border top

        [Row(33.22, 20, 664.40)] // middle

        [Row(33.22, 1, 33.22)] // border bottom

        [Row(33.22, 0, 0)] // border bottom (zero)

        [Row(50, 81, 0, ExpectedException = typeof (ArgumentException))] //border over max

        [Row(50, -1, 0, ExpectedException = typeof (ArgumentException))] // border under min

            public void CheckWagesHourly(double rate, double hours, double wagesExpected)

        {

            IEmployee pers = TestFactory.CreateDefaultPerson();

            pers.WageType = Employee.WageTypes.HOURLY;

            pers.HourlyRate = rate;

 

            Payroll pay = new Payroll();

            double wages = pay.ComputeWages(pers, hours);

 

            Assert.AreEqual(wagesExpected, wages, 0, "Wages/hourly/normal + border + OT");

        }

I get a normal value and five border tests (top, bottom, over, under, zero) all in one fell swoop. This same test would have taken me six separate tests in NUnit.  You can also put in a delta parameter for a row, enabling the test to pass if it’s within plus/minus of the delta factor.  Wow.

Note that I’ve got a TestFactory class creating objects for my tests?  MBUnit has a [Factory] attribute which lets you mark a method as providing basic input for other test methods, all in a much cleaner fashion.  I’m off to explore that next.

MBUnit looks way cool.  There are several cons about it (transition of project personnel, sporadic availability of the project’s Wiki, a few odd behaviors), but Andrew Stopford has taken over the project and is very responsive.  He bailed me out of a couple hitches and provided an update, all in the space of a couple hours today.

Better yet, support for it is wrapped right into TestDriven.NET which you ought to run and install Right This Very Instant if you’re not using it already.  There’s also a very nice HTML report which will pop up right inside VS if you’re using TestDriven to execute your tests.

I think this will be a great part of my open source test tools presentation next week. 

One self-inflicted wound I gave myself today: I ran into a MbUnit.Core.Exceptions.NotEqualAssertionException and a “FailedLoading(Parameters count are not equal Equal assertion failed” message in the report.  It took me a bit of time to figure out I’d left in a [Test] attribute from an NUnit test I copied over and changed to a [RowTest()]:

        [Test]

        [RowTest()]

        [Row(33.22, 80, 3322)] //border top

        …

        public void CheckWagesHourly(double rate, double hours, double wagesExpected)

        {

Oops.  Hey, I make the mistakes so you don’t have to.

Tuesday, March 14, 2006

Installing Watir

I’m exploring Watir as part of my presentation I’m developing for next week’s DevGroup meeting

I ran into one hitch when trying to install Watir right after installing Ruby via the One-Click: you need to exit the Explorer and shell sessions you may have open, then restart them.  Do this in order to get the PATH environment variable updated — Watir has to find Ruby on the path or it dies out with a “windows installer error” and complains about not being able to write  “\watir\AutoltX.chm”.  Note the path — suspiciously like a web path, which keyed me into the idea about not being able to find the Ruby executable.

Am I one bright guy or what?

Great Tech Blog

Sysinternals is the source of some amazing free tools. I've played around with various odds and ends from them and have loved all their stuff. I didn't realize until this morning that Mark Russinovich has a blog. It's not frequently posted to, but the few things he writes are gold.

Check it out: Mark's Sysinternals Blog.

Running Explorer in a Different Context

I've meant to blog about this earlier but kept forgetting.  Running Explorer (not Internet Explorer, just the My Computer variant) from an admin prompt when you’re a developing as a normal user takes a bit of trickery.  Aaron Margosis has a couple good tips for working around this.  I use the registry hack he mentions in the article, plus I’m a fan of his PrivBar add-in. 

Check out his post: Aaron Margosis' WebLog : RunAs with Explorer.

Sam Gentile on Composite UI Application Block (CAB)

Sam Gentile’s writing a series on how he spiked into a WinForms project to see whether the Composite UI Application Block (CAB) would help out.  Interesting stuff on how to help refactor really evil, complex WinForms to a better Model-View-Controller flow.

(On a name-dropping, bragging side note, Sam will be speaking on Web Services at our .NET Developers Group meeting here in June.  Woo!)

Monday, March 13, 2006

Ah, The Joys of Rebuilding Systems

I’m in the process of rebuilding my development system, always a sucky process.  Hopefully it will go faster after this round: I’m going to get all my shiny toys installed on the box, then use Acronis TrueImage to make a snapshot of the clean system. 

TrueImage lets you build a CD-based recovery disk to boot off of.  I’ll use that to restore my snapshot from my external USB drive.  I’ll most likely end up doing this once every couple months for the next half year or so — I’m working on a project which will have me loading and unloading a lot of tools, something guaranteed to drag down a system after a bit.

The list of tools I’ve got to load as part of my baseline is pretty cool.  You never realize how much stuff you end up using on a regular basis until you’ve got to reinstall all the goodies.  An uncomprehensive, schizophrenically-ordered list would run something like this:

Freeware/OpenSource

  • GVim (“Yeah, baby!”)
  • Notepad2
  • Magnifixer
  • Firefox
  • Cool Firefox extensions: Auto Copy, BlogJetThis, LastTab, ColorZilla, IE View, Blog This, WebDeveloper, Moust Gestures, deLico.us
  • PDFCreator
  • The N series: NUnit, NCover (and NCoverBrowser), NAnt, NDoc
  • GhostDoc
  • TestDriven.NET
  • Zanebug
  • Slickrun
  • TaskSwitchXP
  • Trillian
  • Tortoise SVN/CVS
  • WinMerge
  • UnleashIt
  • Subversion
  • FXCop
  • Cygwin (see comments for GVim)
  • CodeSmith2.6
  • PocketMod
  • Reflector (see comments for GVim)
  • SnippetCompiler
  • ProcessExplorer / TCPView / RegMon / FileMon (SysInternals, you guys rock!)
  • whoami.exe
  • Aaron Margosis’s gold security tools: MakeMeAdmin and PrivBar
  • Jeff Key’s Ruler
  • SourceMonitor, Vil
  • IronPython
  • FxCop
  • Omea Reader

Visual Studio Extras

  • GhostDoc
  • ImportsSorter
  • ModellingPowerToys
  • CopySourceAsHTML
  • NDoc
  • VSNet*CommandPromptHere tools

There has to be more than this, but it’s all that comes to my list at the moment.

Commercial Crap

  • MindManager (see comments for GVim)
  • ReSharper (see comments for GVim)
  • BlogJet
  • WinZIP
  • PaintShop Pro
  • Norton Anti-Virus
  • Visual Studio 6.x, 2003, 2005
  • Visio
  • MS Project
  • SQL Server
  • SQL Express
  • Acronis True Image

I’m part way through VS2003 as I write this.  Thankfully a lot of the utils are simple xcopy installs from the backup I made. 

Whew!

Good NHibernate Article

Via Jason Haley's Interesting Finds, a good read on NHibernate and ASP.NET with Generics.

NHibernate Best Practices with ASP.NET and Generics - The Code Project - ASP.NET.

Sunday, March 12, 2006

Carnival of the Recipes Is Up!

This week's Carnival of the Recipes is up at dubious wonder My own Gnocchi with Venison Ragu made it up there.  Read the blog post for pointers to great recipes all over the place.

Wednesday, March 08, 2006

Learning NMock

NMock is a great tool for simulating (ok, mocking) objects for your unit tests.  Say you want to avoid messy database or web service interractions — NMock gives you an avenue to do that.  You can also simulate services which might not be consistently available.

Documentation on NMock is sketchy at best, so you need to hit Google and search around for smart folks who have gotten the arrows in their backs already.  Here are a few links I’ve found helpful so far:

More as I figure it out myself!

Getting Started with WinFX and Vista

Interested in learning about Windows Vista, WinFX, Windows Communication Foundation, and/or Windows Workflow Foundation, but don’t know where to start?  Yeah, me either.  Thankfully I ran across this blog post: Eric Nelson - Development for WinFX for ISVs : Getting Started with WinFX and Vista.

Unfortunately, I’m not sure where I ran across it at, otherwise I’d give a reference.  “Sorry,” whoever it was that pointed me to the post.

Latest Article of Mine

Check out the latest article in my Ask The Pros series over at VisualStudioHacks.com.  This round is about what various industry leaders would like to see in the next version of Visual Studio.

I’ve been very lucky to have gotten such great input from great folks over the series so far.

Got an idea for an ATP article?  Got something you’d like to know how “the pros” do?  Drop me a line, either via the contact link on the right or here in the comments.  I’ll do my best to get answers and write up an article.

Tuesday, March 07, 2006

Gnocchi With Venison Ragu

Nino’s post on the Four Things Meme mentioned gnocchi as one of his favorite foods.  That kicked me in the pants and reminded me that I hadn’t fixed any gnocchi since last winter.  Unacceptable!!

We were lucky enough to have about a pound of venison hamburger given to us by a hunter friend, so I thought that would make a killer sauce.  (Plus my daughter had just watched Bambi.  How could I resist??)  Enough tangential blabbering.  On to the good stuff.

Potato Gnocchi With Venison Ragu

Ragu

  • 1 lb venison hamburger (ground lamb makes a killer ragu, too)
  • sea salt
  • freshly ground pepper
  • 3 cloves garlic, chopped
  • 1 small onion, peeled and finely chopped
  • 1 carrot, peeled and finely chopped
  • 1 stalk celery, finely chopped
  • 2 x 28oz cans whole tomatos (See Notes)
  • 1/2 bottle decent red wine  (See Notes)
  • 2 bay leaves
  • 3 large sprigs thyme

Gnocchi

  • 3 large russet potatoes  (NO Yukon golds or other starchy spuds!)
  • 2 eggs
  • flour

Making the Ragu

Brown the venison with a bit of olive oil in a heavy pot over medium-high heat. (I’ve got a Le Creuset Dutch I mean French Oven which I bought years ago and has been worth every penny.)  Season with the salt and pepper as you go.  After the meat is browned, add the garlic, onion, carrot, and celery.  Continue cooking until the vegetables are softened, then add the crushed tomatoes.

(Here’s a trick for hand-crushing tomatoes without making a huge mess as the tomatoes explode: Drain the juice from the tomatoes into the cooking pot, leaving the tomatoes in the can.  Use a long knife and poke all the tomatoes in the can — this will let the internal juice come out through the holes without exploding when you squeeze them.  Now invert the can over your pot, stick one hand up in the can, and crush the tomatoes into goop, letting crushed bits fall out around your hand.  Figured this one out all by myself.)

Pour in the red wine, add the bay leaves and thyme springs.  Cover and cook for at least two hours.  Crack the lid off the pot and cook for another hour until the ragu is thick and wonderful.

Serve with pasta or whatever.  Leftovers around here get vacuum packed with our FoodSaver and tossed in the freezer for later use.

Making the Gnocchi

Keep in mind that I’m a California Farm Boy, so authenticity on these may be lacking.  My technique comes from having watched Molto Mario twice a day when my daughter was younger.  Food TV had his show on right as I was fixing her lunch and dinner, so we’d watch his show as we were getting ready to eat.  One of her earliest phrases was “Ciao, Mario!”

Cut the russets in half and put in a large pot, covered with 2” water.  Bring to a boil, lower to a simmer and cook for 30 – 45 minutes until the potatoes are soft when pierced with a fork.  Remove from the pot and peel as soon as you’re able to work with them.  Immediately pass the potatoes through a food mill or potato ricer, mounding the processed potatoes on the counter.  Try to work the potatoes before they cool too much — the texture of the gnocchi will be much better.

Clear a hole in the middle of the potato pile.  Break the two eggs into the center and stir them up with a fork.  Spread a couple handfuls of flour over the potatoes, then start mixing up the pile.  This is sort of like mixing bread dough on the counter: just keep gathering it up and kneading it a bit.  Add more flour as needed.  The mix should still be sticky, but workable.  A dough scraper is invaluable for this process!  You’ll end up with a smooth ball of dough after five to ten minutes of kneading.

Get a large pot of water on to boil.  Get a *large* bowl of water with a bunch of ice cubes in it.  Put a strainer over the bowl so the strainer is in the water.  Put a bunch of lint-free towels on a counter or kitchen table (not on a wood table!).  Scrape off the counter you’re working at and sprinkle a bit of flour over the working area.

Start to make gnocchi by cutting off a hunk of the dough.  Roll it out into a rope about the thickness of your thumb.  (OK, I’ve got marginally big thumbs.  Maybe 3/4” thick?)  Use your scraper or a knife and cut the rope into pieces roughly 3/4” long.  Using your thumb, flick the pieces off the back of a fork, rolling them along the tines and smooshing them a bit with your thumb to make a bit of a dimple.

Working in batches of 15 – 20 gnocchi at a time, drop them into the boiling water.  You’ll need to tinker with the heat a bit to maintain the water at an aggresive simmer, not a rolling boil.  A rolling boil is a Bad Thing because the gnocchi will fall apart!  I leave my lousy electric burner on high heat, but pull the pot partway off.  Cook the gnocchi for 3 – 5 minutes until they’ve all released from the bottom of the pot and have been floating for a minute or two.

Remove from the pot with a skimmer and transfer to the ice water bath.  Let rest there while you cook the next batch, then remove with the skimmer and spread out on the cloths to drain.

At this point you can divide up the gnocchi into meal-sized portions.  Continue as below for cooking.  Place the unused gnocchi on cookie sheets and freeze overnight.  Vacuum seal, or tightly seal in Ziplock bags, and store in the freezer for a couple months.  If you can wait that long.

To finish cooking the gnocchi you’re about to eat, float them in gently boiling water for a few minutes to reheat.  Put some sauce in a non-stick skillet over medium heat.  Remove the gnocchi from the water and place in the simmering sauce.  Gently stir to coat and cook for a few moments — this final touch of cooking in the sauce, rather than just coating, is critical because you’re getting the sauce’s flavors into the gnocchi instead of just on them.

Serve on plates dusted with good Parmesan cheese and drizzled with a bit of top-notch olive oil.  (I’m talking the $25 per bottle stuff you use in sparing amounts as a finishing oil, not the stuff you use for frying and sauteeing.)

Notes:

Tomatos.  Use imported San Marzanos if you can find them.  They’ll be more expensive than your standard Hunt’s ‘maters, but this is one of those cases where you really, REALLY want to spend the extra bucks.  Italian San Marzanos have a depth of flavor that’s just amazing.

Wine.  Cooking wine is evil dreck.  You wouldn’t drink the garbage, so why put it in a nice dish?  You don’t need to pour in half that bottle of ‘85 Tiganello, but use something you wouldn’t fall over dead from if you found it in your glass. 

Friday, March 03, 2006

"Getting Real" About 37signals

37signals is the great bunch of folks behind some amazing stuff: Basecamp, Backpack, Writeboard, and even Ruby on Rails.  I haven’t used Ruby/ROR, but I’ve been really, really impressed with Basecamp and Writeboard.  These folks are golden.

They’ve just released a PDF-only book titled “Getting Real” about the process and mindset they use to push out all this amazing stuff.  I haven’t bought it yet, but I’m definitely putting it on my booklist.

OK, That Was Strange

Not sure what happened to cause Blogger’s corrupted RSS ATOM feed, but I needed to kick Blogger in the pants.  It wasn’t tough — reset Blogger’s site feed “Descriptions” field to “Short,” republish the blog, reset it back to “Full” and republish again, then head over to Feedburner.com and resync the feed there.

Looks to be working more better more better now.

Screwed Up RSS Feeds -- Working

Josh was kind enough to point out that my feed was tossing out junk instead of full content. 

Bear with me while I chase down what looks to be an odd problem with Blogger.

More Gold on LUA and Installing As Admin

From Jamie Cansdale’s TestDriven.NET blog, pointers on how to install TestDriven.NET and NCover to run as an LUA (Limited User Account).  The quick fix?  Grab a couple command files from Aaron Margosis’ blog.  (“Command Files” is waaaay more impressive-sounding than “batch files.”  Batch files are for goobers.  Command Files are for Real Developers.)

Margosis has some great text on why running as an Admin is a Bad Thing.

You Know It's A Bad Day

… when UPS delays shipment of your unroasted espresso beans, leaving you without your afternoon fix. 

Ugh.

Thankfully, I’ve got a moka pot like this one which will tide me over with near-espresso quality coffee.

Thursday, March 02, 2006

Hint: A 79 Cyclomatic Complexity Score is Not Good

I don’t mean to pick on DotNetNuke, but there’s a reason to run metrics checkers on your code.  There’s a reason to avoid having single methods with 432 lines of code.  There’s a reason to avoid having methods with cyclomatic complexity scores of 79.  There’s a reason to avoid methods with a Maintenance Complexity measurement of 3,176.  There’s a reason to review and refactor code, somehow, anyhow, to avoid this kind of stuff.

I’ve got one method in NUGSoft which has a CC of 26 or something, but that’s a comparison method for a moderately complex business entity and it’s stuffed with a bunch of statements like if (left.FName != right.FName) return false;, so there are a passle of paths and conditioinals in it.  (That pattern is straight out of Wagner’s book, so don’t give me grief, either!)

(The shiny toy is CR_Metrics from CR_Plugin, a DxCore plugin.)

Lunch at St. Martin

Here’s part of what I had for lunch on the last day of the trip I blogged about earlier.

This beast provided enough meat to give 15 hungry folks a couple forkfulls each.  Whoof.   Caught the morning of lunch by one of the Pastor’s friends.

Yeah, life sucks sometimes.

Tuesday, February 28, 2006

Dual Monitors -- Whoopee!

I splurged and bought myself a Samsung SyncMaster 730B 17” LCD monitor last week.  It was about $250 after a $50 rebate.  I’ve got it paired up with my nearly five-year old Dell Trinitron CRT monitor.  The comparison is horrific.  I had no idea how bad off my Dell had gotten after a few years.

I’ll have to try and knock out a couple extra articles for VisualStudioHacks.com this month in order to build up a slush fund to replace the Dell and run two Samsungs at the same time.

The Waterfall Approach is BACK!

Via On Be(com)ing Agile’s blog: The Waterfall 2006 conference.  Be sure to take a good look at the amazing lineup of topics for this conference, including “Avoiding the Seven Pitfalls of Lean by Mary Poppendieck” and “Pair Managing: Two Managers per Programmer by Jim Highsmith.”  I’d love to attend Ron Jeffries’s keynote: “Extreme Programming Uninstalled.”

Looks to be a great conference!

Make sure you note the conference’s date on the left sidebar and keep that day free on your calendar.

The Joys of IE's CSS "Support"

Not.

I’ve redone the look of the Dayton .NET Developers Group’s website, thanks to inspiration from Lee Sledge, the son of our group’s treasurer.  I never claimed to have any graphic skills, and it showed.  Lee’s concept is a lot cleaner — but I needed to move it from table-based layout to CSS.

Shiny when you’re working with Firefox, sucky when you’re dealing with IE.

Good fixes I found on the net:

Also, watch for elements bouncing out of IE’s display when heights aren’t large enough.  Firefox deals with it nicely, IE craps out.

Boy, am I glad I don’t have to deal with this on a daily basis!

Looking for Palm Syncing Software

I’ve used Documents To Go from DataViz for a number of years now, starting when I purchased my Palm 500 five years ago.  I recently had to purchase a new copy of DtG to support my Palm Treo 650 because my older version wouldn’t run on the new OS.  Note that DataViz wouldn’t give me an update price; I had to pay full ticket.

DtG’s latest version appears to be a piece of junk, at least as it relates to my Treo.  I’ve never been able to get PowerPoint slides synced, and DtG occasionally freaks out and loses all links to files loaded on my phone.

I’ve had an open support ticket with them for nearly four weeks now and it’s been an absolutely crappy experience.  Regurgitation of FAQ items, repitition of already asked questions, and two gaps of over a week with no response from DataViz’s support folks.

I am at the point where I’m considering dumping this piece of junk software and moving to something else.  Does anyone out there have any suggestions on alternative document syncing software? 

My minimum requirements:

  • Support Windows XP
  • Support Office 2003
  • Support syncing and editing of PowerPoint, Excel, and Word

Drop me a note in the comments section, or contact me directly via the contact link on the right sidebar.  Your feedback would be greatly appreciated!

(I’ve purposely left out any links to DataViz.  Find them yourselves if you think it important.  Grumble.)

Interesting Comments on Microsoft's Security

Dana Epp has an interesting line of thoughts on Microsoft’s security mindset/initiatives, prompted by some grousing at nCircle’s blogs

I’m a bit neutral about Microsoft’s security stance.  They’ve done some really stupid things in the past, but it’s absolutely not OK to simply regurgitate old crap about them without acknowledging the significant sea change in their culture and products over the last couple years.

Take a look at Dana’s ten points and see what you think.

(Or if you want a completely different take on security at Microsoft, go see the rantings of tinfoil master Steve Gibson [who I used to respect for his product Spinrite] and then follow up with the response from Stephen Toulouse.)

CoolCommands Updated

Gaston Milano just dropped me a note letting me know that his CoolCommands add-in for Visual Studio has been updated.  You can find the updated packate here.  His note was prompted by my article on CoolCommands at VisualStudioHacks.com several months ago.

Check out the updated version.  I haven’t, but the older version was great stuff!

Monday, February 27, 2006

Screencasts Now on Visual Studio Hacks

James had the great idea to do screencasts at VisualStudioHacks.com.  His first one is on CodeKeep, Dave Donaldson’s terrific snippet management system.

Check the ‘casts and the new forums (fora?) at VisualStudioHacks.com.  James has really moved his site forward in a great direction, and I’m not just saying that because I write regular articles there!

Need a Better Snippet?

… then check out Dave Donaldson’s CodeKeep.  Access snippets from over 5500 folks via a browsable website.  Better yet, install Dave’s shiny new plugins for VS2005 and VS2003 and you’ll be able to manage your snippets within VS’s IDE.

Terrific stuff.

Threat Modelling Blog

Part of my gig at last week’s DevGroup meeting covered threat modelling.  It’s a difficult, arcane, involved process which you really need to be smart on if you’re dealing with critical information.  Check out Microsoft’s new addition to the Blogosphere: the Threat Modelling Blog.

[Via Robert Hurlbut's .NET Blog]

Four Things Meme

OK, generally I detest these kinds of things, but James tagged me so here goes.

Four Jobs I’ve Had…

  • Field hand
  • Photo studio darkroom tech
  • Wine retail clerk
  • Airborne Radar Technician on one of these

Four movies I can watch over and over…

  • Lord of the Rings
  • Serenity
  • Holiday Inn
  • Madagascar (hey, I’ve got a five year old daughter)

Four TV shows I love to watch…  (Weirdness disclaimer: I only watch one regular show due to absolutely no time for TV.  My TV watching is usually once a week catching a single episode of a DVD series at 11:00pm.)

  • Firefly
  • Grey’s Anatomy (the only regular show I watch…)
  • UFO
  • Battlestar Galactica (the new, not the old!)

Four places I’ve been on vacation…

  • Tiers, Italy
  • Alsace, France
  • Krackow, Poland
  • Echo Lake, California

Four favorite dishes

  • Liver paté at the Winds Cafe
  • Frog legs at Le Beurheisel in Strassbourg, France
  • Master sauce ribs at my place
  • My wife’s waffles or pancakes on Sunday mornings with my family

Four websites I visit daily:

Four places I’d rather be

  • Asleep (I take care of two kids and work from home.  Go figure.)
  • Hiking in the Südtirol
  • Wine touring in Alsace or the Mosel
  • Eating clam dip with my family on the porch at our cabin on Echo Lake in the Sierra Nevadas near Lake Tahoe.

Four bloggers I’m tagging (the only four I know who might be even remotely reading my blog!)

Tips for Crusing With An Infant

Our family took a Disney cruise in December, 2004, when Zeke was only three months old.  We hadn’t planned things that way, but several emergencies required rescheduling the cruise.  Twice.  Ugh.

I was looking through our Passporter Guide To Disney Cruises and found a sheet with notes on having a good cruise with an infant.  OK, so it’s 14 months late, but here are some things scratched out for posterity in case somebody out there is googling around for tips on taking an infant on a cruise.

Strollers.  By all means take one when you’ve got an infant.  It’s a critical piece of equipment which we used for any number of, uh, uses:

  • Naps.  (For Zeke, not us).  Recline that thing, put a couple blankets over the hood and let that tyke sleep.
  • At dining tables.  Zeke was too small to sit in a high chair, so the stroller served as a great place to park him during mealtimes.
  • Beach machine.  We dragged the stroller out onto the beach which wasn’t that much of a pain.  It gave us a place to let Zeke snooze while we played.
  • One big con: elevators aboard ship.  The center elevators were always packed.  Use the fore/aft lifts if you’re wheeling your stroller around.
  • Tip: store the stroller in the split bathroom in your stateroom.  Great out of the way spot.

Pack ‘n Play / Crib. Ask for a crib/Pack ‘n Play when you make your reservations.  Also specifically ask for sheets.  One would think…  Also, be careful if you have your own blankets because we had one go missing during sheet changing day.  Stowe your personal baby blankets each morning to avoid that.

Rice Cereal.  Zeke was still too young for pureed vegetables, so we took scads of rice cereal and a few Tupperware (tm) bowls to feed him.

Baby Sling.  We got a Baby Bjorn when Lydia was born and have gotten terrific use out of it with both kids.  The BB is compact and easily fits in a suitcase with all the tons of other baby gear.  Vital for shipboard carrying of a not-so-little infant.

Onboard Nursery.  The staff at the nursery was just terrific — the first time we’d left Zeke at any form of daycare, so my wife was a bit nervous at first.  Do some careful scheduling of daycare so you can hit Palo’s for a great meal or just get a bit of quality time with your mate.

 

Job Security

Dave Thomas over at PracticalProgrammer.com has an absolutely terrific slideshow on keeing your job as the global economy changes. 

Think you’re safe because overseas developers cut crappy code and don’t have any processes in place?  Take a look at the eye-opening slides on the percentages of companies certified as CMM level 3 and 5.  Think you’re safe because overseas programmers aren’t as smart as you and don’t keep up with the latest technology?  Re-evaluate your position. Back when I was writing frequently on NHibernate, my sitemeter.com global map showed the majority of queries on “nhibernate” and the like coming from India, Indonesia, and other places where “poor-quality, backwards developers” hang out.  Get a grip, baby!

Thomas’s gist?  Pull yourself together, create a plan, educate yourself, and don’t rely on the government or companies to take care of you.  (You shouldn’t have been in the first place, but that’s just my libertarian-leaning bias.)

Good stuff.  Read the whole thing.

(Via Coding Horror)

Saturday, February 25, 2006

Great iCalendar Plugin for Outlook

I’m using the terrific-looking Basecamp for collaboration for a really, REALLY cool project I’m starting work on.  (Details later once I get a contract actually in hand.)  One of Basecamp’s nifty features is an iCalendar feed, which lets you track milestones by subscribing to a feed.

The only hitch is that Outlook doesn’t support iCalendar subscriptions (which have been around for years but won’t get wrapped in until Office 12).  However, some smart folks tossed together RemoteCalendars on SourceForge which is a COM plugin enabling iCalendar subscriptions.  There are versions for .NET 2.0 and 1.1 Frameworks.  I had no luck with the 2.0 version, but there’s a workaround version for 1.1 here.

This is way slick because I can automatically update my Outlook from my Basecamp, then get all those milestones on my Treo 650.  I’m lovin’ it.

Thursday, February 23, 2006

Security Training Modules from Keith Brown

Keith Brown blogs about some interesting-sounding security training modules he created which are now available at Microsoft’s Patterns and Practices. 

Don’t know who Brown is?  Go check out his amazing book The .NET Developer's Guide to Windows Security which is freely available via a Wiki.  Look over the Wiki, and if you find it useful then be sure to spend some $$ and support both Addison-Wesley, the publisher who let him put the content out for free, and Brown himself.

[Via Keith Brown]

Iconomania

Check out the great note on very sucky icons over at Coding Horror.  His shot of Word with all its toolbars turned on is pretty funny.  Be sure to follow the link to the blog post on the new Office 12 ribbons.  I haven’t looked at this concept, so I’m not sure whether I like it or not, but at least it’s some form of change.

My Speaking Gig at Dayton

Last night I gave a talk on “Intro to Security” at the Dayton .NET Developers Group.  The talk went well and folks seemed genuinely happy with my mix of content — mostly talking with some diving into example code.

An intro security talk is really, really tough to lay out!  There’s so much to talk about, and how do you decide to filter down to what you can reasonably cover in 90 minutes?  I ended up being pretty happy with my mix, but I did get some good feedback for fine-tuning the presentation for future gigs.

I also used a mix of styles from Lessig, Hardt, and Takahasi.  My audience seemed pretty happy with the format, and several were happy not to have oodles of lousy bullet points tossed their way.  So I got that going for me.

You can find my slide deck and example code here.  There’s a lot of extra content slides in the deck which were hidden for last night’s gig.

Monday, February 20, 2006

Hate My Blog? Use Net Disaster to Blow It Up

Finally, something useful on the Internet, because all the tech blogs I’ve gotten answers from really aren’t all that useful…

Check out NetDisaster.com if you have some free time and want to shoot paint balls at your favorite blog.  I also thought the “Bloody Gun” was interesting…

(Via Scobleizer)

Saturday, February 18, 2006

Back In The Saddle Again...

I’m back from the trip I mentioned last week, exhausted but quite happy.  Loads of work, loads of quiet time to reflect, loads of fun times with folks I met on the trip (both on my team as well as folks on St. Martin).

You can see the photos I took at my Flickr site here.  There are a whole lot of photos just of the streets in Marigot, the city we stayed in — that’s because I badly want my kids to understand how fortunate we are here in the US.  The shed in our back yard is leaky, mouldy, and squirrel-infested, but it’s better than many of the shacks the Haitian escapees live in.  (And it’s tough to imagine the conditions they left in Haiti…)

I’m fortunate things worked out in where Pam could take a week off work to take my place as caregiver for our kids.  I don’t know when I’ll be able to go on another trip, but wow, what a great experience this one was!

Friday, February 10, 2006

Offline For The Next Week

I am leaving tomorrow morning, dark and early, for a week’s trip to St. Martin on a mission with my church.  I’ll be working hard building pews and finishing up odds and ends at a newly-built Nazarene church in Marigot on the French side.  (“’Working hard?’ Yeah, right.  Dude, you’re in St. Martin.”)

Heading off on a mission to submerse myself in working for others is something I’ve wanted to do for a long, long time but never could.  Things fell together, and here I am, packing up my bags for this trip.  I think the week will be fantastic for many, many reasons.

See y’all on the flip side!

More ReSharper 2.0 Goodness

Small things in life make a great difference.  The block highlighting in Version 2.0 of ReSharper for Visual Studio 2005 is something that I find really sweet.  It’s a small thing, but visually it makes a big difference for me.

You can configure ReSharper to do either this block style or just highlight the bordering braces, but I like this style.

ReSharper 2.0’s Early Access Program has plenty of hitches, but it’s still a terrific product even in Alpha form.  I’m soooo looking forward to the final release when it arrives.

Thursday, February 09, 2006

Well, At Least They're Thinking About It

From Dan Fernandez’s blog: Microsoft will be releasing the first service pack for Visual Studio 2003 … In Q2 of 2006.

Check out the new Visual Studio Servicing Site, where you can see timeframes for upcoming service pack releases.  Don’t count on having any of the various bugs in VS2005 fixed before Q3 of 2006.

Wednesday, February 08, 2006

Another Good Tech Company Blog

Our DevGroup gets great support from telerik (yes, a small “t”), makers of some nifty ASP.NET controls.  I’m just getting into ASP, but I can already see great value in telerik’s packages.  I also think the company has their head screwed on the right way, as evidenced by the various communications I’ve had with them.

More evidence along that line: their company blog.  Lots of interesting stuff there on technology and mindsets involved in creating great code.  telerik has bought off heavily on the AJAX concept, so you can get some good info on that topic there.

(Disclaimers: as noted, telerik supports our DevGroup with giveaway software, and they’ve also provided me a copy of their controls as part of my interraction with them.  I’m not unbiased, but I think my bias is due to their great toolset.)

Monday, February 06, 2006

How Not To Present

Jeff Atwood at Coding Horror has a snide and spot-on post on how not to do presentations.  I have sat through far too many presentations and briefings which hit the majority or all of his rant points.

Do yourself a favor if you’re presenting: be familiar with some of the presentation best practice tips out and around.  Look at great presentations by folks like Hardt or Lessig.  Spend time at Beyond Bullets.  Understand Atwood’s great points.  Grok out the stuff at PresentationZen.

Perhaps most important: think about the bad presentations you’ve been to, and why you thought they sucked — and then do something better.

Saturday, February 04, 2006

January Reading

Here’s a list of things I was reading in January:

Finding Serenity : Anti-Heroes, Lost Shepherds and Space Hookers in Joss Whedon's Firefly, various authors.  A really interesting collection of short pieces from llitarary analysis to spoofs.  I love the analytical pieces which discuss everything from Zöe’s place as a warrior woman on the ship to theories (pre-Serenity) on the origins of the Reavers.  Most of the pieces are great, one or two stink, but overall a fun book.

Martha’s Rules, Martha Stewart. I wrote about this already in another post.  A very good, concise read for business owners/entrepreneurs.

Designated Targets, John Birmingham.  A nice second book in the Axis of Time trilogy.  Good sci-fi of the alternate history type.  I very much enjoy the culture clash between the folks from the future and the “contemporaries” of 1942.

Time Management for Sytem Administrators, Limoncelli. Very good book on time management from a sysadmin's perspective. Nice bit on tools to help a sys admin, nice bit on customer service for those pesky users. Nothing earth-shattering if you've already read something like Getting Things Done, but still a good read. And it's short!

Things I referenced off and on in January:

Programming ASP.NET, 4th ed., Liberty.  Very nice intro for me to use as I finally get my feet into ASP.NET.

Core C# and .NET, Perry.  Haven’t looked at this much, but it already answered a couple tough questions for me, so it’s got that going for it.

19 Deadly Sins of Software Security, Howard, et. al.  An absolutely killer book for understanding the worst, common security offenders.  Skimpy on nitty-gritty implementation details, but that’s OK because such is not its focus.  Indespensible for me as I’m working on my security presentation for this month’s DevGroup meeting.

Writing Secure Code, 2nd ed., Howard & LeBlanc.  Whoof.  Now here is a massive tome which gives you impelemtation details missing in 19 Deadly Sins.  A perfect hand-in-hand companion to 19 Deadly Sins.

The .NET Developer’s Guide to Windows Security, Brown.  Very practical cookbook-style of nuts and bolts issues for dealing with developing secure code.  Runs the gamut from not developing using an Admin account to how to use the various Principle objects.

Wednesday, February 01, 2006

Killer Code Coverage Tool

Jamie Cansdale has done it again with his latest version of TestDriven.NET, his terrific tool which lets you run (and more importantly debug!) unit tests right within Visual Studio.

Now TestDriven.NET includes code coverage metrics via a nifty window with clearly arranged stats:

Code Coverage from TestDriven.NET

Holy smokes, what a killer addition to an already great tool!

Update: Yes, I know those metrics suck and I’m trying to figure out why they show up so poorly.  I may have grabbed a snap from a run where I only executed a portion of tests.

Firefly Resurrection? (Again?)

Interesting siteInteresting site from a group of folks looking to push Firefly into a second season, possibly over digital distribution.  Dunno if it will work, but it’s a neat thought.

(Via Instapundit)

Tuesday, January 31, 2006

Lose the Sheet Music

About a billion years ago I was a young punk playing a bugle in the Blue Knights Drum and Bugle Corps at Keesler Air Force Base.  I got into the Corps by sheer luck — I hadn’t picked up a horn since elementary school, but the brass section was way undermanned so they took me in.  My past horn experience was in a concert band, and the Knights did marching, so I had a big hill to climb.

I learned how to not make a fool of myself and screw up performances while marching, and I even got my music memorized.  Despite memorizing the songs, I kept hanging on to my sheet music as a security blanket.  The sheets were actually a distraction because our horns didn’t have any attachments for clamps, so you had to contort your hands around to hold the music while playing the horn.  Not the best thing when you need to focus and get in the zone for a performance.

One night at practice our Music Director, Hal Doyle, finally got fed up with my sheet music distracting me.  He grabbed my music holder and winged it across the parking lot and yelled something along the lines of “You know this stuff. Lose the music and step up to the plate!”  That was the last time I used the music, and guess what? My playing and marching noticably improved.

OK, so you’ve been patient with me so far and are wondering where the hell I’m going with this.

I’m finally tossing off my metaphorical sheet music in regards to our .NET group and am putting on a presentation at next month’s meeting.  I’ve got a fairly long background of speaking in various venues on different topics, but have held off on talking anything about development or .NET at our group just because I felt insecure about it.  I’ve done a couple Grok talks, but those were a short ten minutes. 

Now it’s time to lose the music and step up to the plate for a full presentation.  My topic’s nothing earth-shattering (Introduction to Security), but it’s a good way for me to get into the swing of things for “real” presentations.

Too often, getting comfortable means getting stale.  I’m looking forward to knocking out this talk.  Hopefully it doesn’t suck.  “Heh,” as Instapundit would say.

Back to Normality

Whew!  I’m finally recovered from the effort involved with putting on the Dayton-Cincinnati Code Camp and have gotten back somewhere near my normal level of productivity.  (Note I didn’t say how productive that was, just that it was my normal level…)  I’m still amazed at how wiped out I was after the event, but holy smokes, what great fun the whole day was.

So now it’s back to the regular routine, of which I’ve knocked off a couple items already:

  • Gotten back into the swing of things with writing regular articles for James’s site
  • Scored a killer speaker for our .NET DevGroup’s June meeting: Sam Gentile
  • Began working on a presentation I’ll put on for DevGroup’s February.  More on that separately.
  • Started making some good job hunt contacts for when I return to the workforce full-time in April/May

I’ve also knocked off several tasks around the house, mostly centering around what seems to involve a never-ending stream of paint cans, rollers, and brushes.  Thankfully, the bedroom is (finally!) almost complete, needing only a final coat on the ceiling and the new baseboard to get tacked up.  The office is still a mess, though, and I’ve got wood flooring to get down and plenty of paint to get on the walls.  Ick. 

Those PITA paint chores are balanced off by my view out the window: spring is not far off, and we’re seeing tulips and daffodils poking their heads out from the flower beds.  That also means it’s not too many more months before we’ll have pear and apple blossoms, followed shortly thereafter by billions of rose blossoms.

Friday, January 27, 2006

Slashdot Security Q&A With Microsoft's VP for Security

Mike Nash, Microsoft’s VP of the Security Technology Unit, has a great Q&A with, brace yourselves, Slashdot readers.

There are some great questions, and very blunt, non-PR answers from Nash.  It’s a great insight into Microsoft’s security approach.  Good reading!

Code Camp Pictures

We’ve got a few photos from the Code Camp posted up on the Camp’s site.  Be sure to check out the Mountain of Swag(tm).

Thursday, January 26, 2006

Visual Studio 2005 Losing its Find & Replace Mind

Funky.  VS 2005 decided it didn’t want to let me use the Find and Replace dialog any more.  Hitting Ctrl-H knocked the IDE into the background (pale title bar), but no dialog would come up.  Losing the find and replace functionality sucks, to say the least.  I restarted VS, no help.  Now this is getting really irritating.

I finally fixed the issue by resetting VS’s settings via Tools -> Import and Export Settings -> Reset All Settings.  Whew.

Wednesday, January 25, 2006

Metrics From our Camp

I just finished compiling results from our Dayton-Cincinnati Code Camp and I’m pretty pleased!  Attendees rated speakers on a 1 to 5 scale on the speaker’s skill, the topic’s content, the topic’s interest, and whether the presentation was at the right level.

Overall, if my statistical approach was close to correct, the combined rating of our speakers was 4.04 out of 5.0.  I think that shows what great speakers we’ve got in the region, and how lucky we were to have so many terrific presenters.  At least six of the presenters were Microsoft MVPs of one ilk or another, and many are highly respected folks in their corners of the industry.  Wow.

We also benefitted by having the Camp on a Saturday, too.  This meant our audience was giving up a day off to come do geeky things — only motivated, interested geeks will get up at 8:00am on a Saturday for a day-long conference.

We asked three questions on whether the Camp met attendees’ expectations, if it was educational, and whether they’d attend another one. Answers to those were 4.42, 4.45, and 4.55, respectively.  Way cool.  Way, way cool!

Perhaps the best feedback I read was from one person who said "Very well organized.  I've been to similar things that we had to pay for that weren't as well organized."  That made me feel almost as good as hearing all the energized folks coming out of the various sessions.

Saturday, January 21, 2006

Dayton-Cincinnati Code Camp a Big Success!

Holy smokes, things at today’s Dayton-Cincinnati Code Camp couldn’t have turned out much better!  Somewhere between 130 and 140 folks showed up for 24 sessions presented by a passle of great speakers.  We had a couple minor hitches, but nothing that our backup plans couldn’t handle.  For the most part, all the attendees seemed very happy with the Camp.

Events like this are exhausting to organize, but wow, what a great reward to step into a session room and see a bunch of folks fired up about expanding skills and knowledge.  Every session I stopped by today seemed that way, and I really fed off all that energy.

This event was a success for any number of reasons, but it was particuarly made successful by the help and support of a lot of folks.  In no particular order, that list would include John Hopkins, president of the Great Lakes .NET Users Group, who drove four hours down here not to attend sessions, but to hang out and help with everything from registration to moving whiteboards around — dude, you rock! Matt and the folks at Pillar Technology who paid for the great facility; James Avery, who really helped form the vision of the event and convinced me that swinging for the fence (four tracks of six sessions!!) was the way to go; Drew Robbins and Microsoft who bought lunch for everyone and gave us plenty of other support as well; Dave Donaldson, who stepped up to help fill in part of the funding hole we were in; all the amazing speakers we had who did a fantastic job presenting topics ranging from Python/Iron Python to Architecture in .NET.

There are plenty of other folks and sponsors who I’ve left off the list and I apologize.  I’ll use exhaustion as an excuse for missing you.  Suffice it to say I am incredibly happy at how well things turned out and it’s all due to the great help I had from a large number of folks.

I’ll get started on organizing another Code Camp sometime after I wake up in a couple weeks.

Friday, January 20, 2006

TabPage Danger

Careful with that “Remove Tab” option on Visual Studio’s TabPane control — it removes the current TabPage and all controls on it without any sort of warning or confirmation.  Edit -> Undo will restore the TabPage, but not any buttons or other controls which were on it.  That’s more than a bit sucky.  Something so drastic ought to either have a 100% undo option or a confirmation/warning.

Good thing I have a fairly recent version in SubVersion.

Monday, January 16, 2006

Dayton-Cincinnati Code Camp Is SOLD OUT!

Holy smokes, I’m blown away that we’ve filled up 200, count ‘em, 200 slots for the Dayton-Cincy Code Camp!

If you’ve tried registering and couldn’t because it’s full, please drop me a note (contact form on right side of the blog).  We’ve had some drop offs and I can most likely fit you in.

The Camp’s going to be a terrific event!

Saturday, January 14, 2006

DataGridViewButtonColumn.Text Silliness

I’ve just started fooling around with the DataGridView in .NET 2.0.  It’s awfully slick, but very convoluted in some ways.  One can use a DataGridViewButtonColumn to display buttons in the DataGridView, which is nice.

What’s not nice about the DataGridViewButtonColumn are the silly steps you have to go through in order to get text displayed on the button.  Instead of just setting the Text property, you also have to set the UseColumnTextForButtonValue boolean to true, like in the snippet below. 

DataGridViewButtonColumn checkin = new DataGridViewButtonColumn();

checkin.HeaderText = "Check In";

checkin.Text = "Here!";

checkin.UseColumnTextForButtonValue = true;

checkin.Width = 45;

checkin.DisplayIndex = 0;

dgvRegistrants.Columns.Add(checkin);

Now why in the world does one have to take this extra step?  If I set a button’s Text property to some non-null value, wouldn’t that generally mean I want to, well, use that value?  This is completely non-intuitive.  Perhaps there’s a case for this behavior around somewhere, but I didn’t run across anything when Googling around.

I was fortunate enough to hear Scott Myers speak at the Software Development Expo back in ‘03 and he was all over this kind of foolishness.  “Make it hard to use your components incorrectly” was something he repeatedly said.

Friday, January 13, 2006

Rhapsody Performance Stinks

I love having Rhapsody music service, but their RealPlayer interface sucks.  Badly.  This piece of junk takes up 30% CPU when it’s just sitting there not even playing music.  I get constant hangs and pauses between songs, and Rhapsody will often hang my entire system for several minutes (like five to ten) when moving from one album in a playlist to another.

My system’s an old Dell with a 1.3GHz machine and 512MB RAM, but I don’t think any app should beat up this configuration so badly.  Besides, what’s up with the 30% utilization when the damned app is idle ??

Rhapsody’s answer to my trouble ticket?  Bump up Rhapsody’s priority to Realtime.  Great.  Now I’ve got a lousy app which sucks up too much CPU time already, plus I get to degrade all other apps while I’m running the thing.

Yeesh.

Thursday, January 12, 2006

New PocketMod Widget

PocketMod is a killer, killer tool.  Take an 8.5 x 11 sheet of paper, divide it into eight separate cells, put all kinds of goodness in those cells, say calendars or to-do lists or contact lists or notes or lines or create your own stuff and put it in there.  Fold up that sheet with one clever cut, and Poof! you’ve got a PDA in a pocket. 

You can build your mods on PocketMod’s website, or download a tool and build your sheets offline.  There are a number of extremely useful templates for the things I listed above, plus you can create your own templates if you like.  I used a PocketMode sheet when I went to the Detroit Visual Studio / SQL Server Launch and got tremendous value out of it. 

PocketMod came to mind as a great resource to hand out to attendees at our Code Camp: I could put the Camp’s schedule, Camp info, and list all our sponsors who supported the Camp, create a PocketMod sheet and hand that out to each attendee as they checked in. 

The only problem with PocketMod is that custom templates have to be built in Flash.  Ick.  I don’t know Flash and I don’t have experience with Flash (no, no, that thing at that party in Anchorage was years ago and it was a completely different flash and nobody got any photos anyway). Besides, I don’t have any Flash tools and the one freeware I tried was so confusing I gave up.

Chad Adams, the sole brainchild behind PocketMod, solved that problem.  He created a widget to convert PDF files to PocketMod format.  It’s pretty dang simple.  Use any editor to create an eight-page layout, then print that off to PDF.  (See PDFCreator for a killer GPL app which works as a printer.)  Use PDF2PocketMod and Poof! you’ve got a single sheet with each PocketMod sheet properly oriented.

Check out PocketMod.  It’s really a cool thing.

Plextor 716A Slowness

Last month my Plextor 716A CD/DVD +–awholelottaletters all of a sudden started burning DVDs at the speed of molasses.  It was taking me nearly 30 minutes to burn a 4GB DVD.  This sucked considerably since I had to burn 50–ish DVDs for our DevGroup’s Visual Studio 2005 Launch last month. 

Today I finally got around to taking a closer look at the problem.  Everything in Device Manager looked shiny, and the drivers for the drive and bus were both up to date.  However, I found a new firmware version (1.0.9) on Plextor’s site.  That’s since been installed and now everything’s back up to snuff.  DVDs are taking only six to eight minutes to burn.  Much nicer!

Monday, January 09, 2006

Past Reading, Catching Up

Here, mostly for my record-keeping in case I want to look this up some time in the future, are a few more books I read last year and forgot to write about.

Joe Haldeman’s Forever series: Forever War, Forever Peace, Forever Free. Very good, and each one was markedly different.  Interesting, provoking books on war, the costs of peace, and liberty in the future.

The DaVinci Code.  I really like fiction with a good dose of history in them.  This has lots of interesting odds and ends about Christianity’s foundations scattered in with a hefty dose of conspiracy theory.  Much easier to read than Ecco’s Foucalt’s Pendulum which I found so captivating that it took me ten years to actually get through.

Lamour’s Last of the Breed. Great jail break and chase through Siberia with a US Air Force officer of American Indian descent working his way to freedom while persued by a tracker of some native tribe in Siberia.  Nothing earthmoving, but just a plain good read.

Orphan's Destiny by Robert Buettener.  Good ol’ shoot-em-up sci-fi.  A good read.

Huxley’s Brave New World.  Wow, what a terrific book.  Hadn’t picked this up in a bunch of years, most likely since the lousy TV movie back in 1980.  Almost as good as…

Orwell’s 1984.  A wonderful classic in so many aspects.  The theme, the style, the execution.  Star Trek: Next Generation’s Chain of Command had a great nod to Orwell’s torture sequences with Picard trying to fend off a monstroush Cardassian’s attempts to get Picard to see five lights where only four existed.

Birmingham’s Weapons of Choice.  First in the Axis of Time series.  Interesting premise that part of a task force from 2021 is zapped back into 1942, right in the middle of the Midway battle.  Great technobabble stuff, but I found the dramatic clash of the cultures to be the real highlight of the book.

Carnival of the Recipes is Up!

Technogypsy hosts this week’s Carnival of the Recipes (with the Chocolate Nemesis recipe I posted last week).  Check out the neat Eastern Orthodox theme to it, complete with some nice family traditions thrown in.

Friday, January 06, 2006

Code Camp Survey

Are you registered for the Dayton-Cincinnati Code Camp?  If so, you should have gotten an e-mail from me with a link to a survey about the Camp.  I really, REALLY need registrants to fill that out since it will directly drive how many meals I purchase for the event.  Remember, this is a non-commercial event and I’m scrambling to hold expenses to a minimum.  Plus, I hate the idea of having a bunch of extra lunches going to waste…

What?  You’re in the central/south Ohio or northern Kentucky regions and you haven’t registered for the Camp?  The deuce you say!  Go register now if you’re at all interested in a day-long event loaded up with great topics!

Tangentially, if you’re at all interested in sponsoring the event I’d love to hear from you.  Please use the contact link on the right sidebar and drop me an e-mail.

Thursday, January 05, 2006

The Martha Rules

I’m not particularly a big fan of Martha Stewart’s various shows, simply because I don’t care for her style.  She seems more concerned with impressing her guests, where I’m more concerned with making them feel welcome.  (Or at least as welcome as they can feel with two small axe murderers running rampant in the house and me in my sweat pants.)

Regardless of that, I’ve always had great admiration for the amazing empire she’s built though vision, hard work, and sheer determination.  It’s also interesting to see her efforts at an image makeover following her prison and house arrest terms.

So all this leads to her latest product.  I’m very impressed with her book The Martha Rules: 10 Essentials for Achieving Success as You Start, Grow, or Manage a Business. This is a great book with concise, clear ideas on how you need to look at starting and/or running a business.  She does a great job pointing out the need for balancing passion for your project with realism to avoid biting off more than you can chew.  She’s got very good concise thoughts on steps you ought to consider when starting or running your own business, and she hits hard the work you need to do in researching and focusing your product/service.

The book is fairly short (190 or so pages) and is an easy read.  It’s been very thought-provoking for me so far.

Wednesday, January 04, 2006

Blogroll Updated

Long overdue, but I've updated my blogroll. This is pretty much what I skim through every day. Lots of good stuff from a lot of very smart folks!

Star Wars III DVD -- Great Extras

I love good extras on DVD movies.  I’m fascinated by the amazing work hundreds of folks do to bring together a great film, and I love it when a DVD dives down into the details of cinematography, production, and of course special effects.  The platinum extended DVDs of Lord of the Rings are just amazing with their six or eight hours of real behind-the-scenes stuff for each volume.

Star Wars III, Revenge of The Sith’s DVD has a great set of extras, one in particular which is completely different than anything I’ve ever seen: Within A Minute takes one minute of the film, the amazing lightsaber fight on the lava moon, and breaks that segment down to an amazing depth.  They cover how each department was involved with producing that segment, starting with scripting and running through production, filming, post-production, sound, and final screening.  They show the catering department, accountants, carpenters, stunt coordinators, secretaries and assistants, gaffers (woo hoo!  Finally I learn exactly what a gaffer is!), and everyone else.  They even list every name in every department, which is a wonderful bit of recognition for folks in the trenches.

I despise the Entertainment Tonight-style behind the scene extras and love good detailed ones, so this segment was pure gold for me.  The movie itself sucks, but this one extra alone was worth the price of the DVD.

Verizon Wireless: Polite but Clueless

My new Treo 650 from Verizon has been a nifty, nice gadget, except for one really annoying issue: there it always displays a voicemail waiting icon, and the device’s voicemail menu always shows one message waiting, regardless if I’ve gotten a second or third message.  This sucks because I can’t tell if I’ve ever got new voicemail without dialing up and checking my mail — and that costs me minutes from my allocation and is a pain in the butt. 

I’ve now spent nearly four hours on the phone trying to get the problem resolved and haven’t gotten anywhere.  The worst part of my experience with Verizon’s various tech support folks is the rediculous amounts of time I have to spend on hold while the current tech rep either looks up information which should have already been on their screen, or waiting to transfer to another department who will inevitably put me on hold again while they look up the same stupid crap the first department was looking up.

Verizon’s staff is, without fail, very polite and calm — but completely clueless as to how they can fix my problem.  I spend far too much time on hold with nice folks who repeat the same exact steps as the person before.  Verizon’s support system also seems incapable of carrying one ticket between various departments through an entire incident.  I’ve had at least four separate tickets filed on this one incident.  This is horses#it as far as I’m concerned.

I’m near the point where I’d just like my damned first phone (a four year old Motorola v60 with few capabilities) back.

Tuesday, January 03, 2006

Beam Me Up Scotty -- There's No Intelligent Life Here

Or at least there’s most likely not when the Wedding Crashers is the #1 selling DVD on Amazon.com.

Monday, January 02, 2006

Hate PowerPoint Presentations?

If you’re a fan of Cliff Atkinson’s Beyond Bullets or if you just hate lousy death-by-PowerPoint presentations in general, check out Dick Hardt’s great presentation on Identity 2.0 at OSCON 2005.  Completely different than any other presentation I’ve seen, it’s a terrific mesh of great visual style and what seems to be Hardt’s fluid, relaxed, humorous speaking style.

Sunday, January 01, 2006

My Music Finds for 2005

I can’t be as creative as others and do a top ten list of albums which knocked me over.  Instead I’ll just plunk down some of the best stuff I’ve stumbled across last year.

Life Changers:

  • iPod — My wife gave me one last Christmas and it’s changed my life.  No kidding.  In years past I always had some music on when I was at home or in the car.  I enjoyed running across new stuff and re-hearing old favorites.  Life changed and I drifted away.  The iPod and iTunes were a great kick in the pants and got me back to where I’ve nearly always got some form of music on.  My iPod and iTunes also broadened my music horizons to places I’d never been. What a joy!  My Griffin iTrip moderately sucks, but at least I can use my iPod in the car without it completely sucking.
  • RhapsodyJames Avery turned me on to this great online music service. (Good thing, too, because all his recommendations were killing me with iTunes purchases!)  I’m using their $10/month streaming plan which gives me open access to billions (ok 1.5 million) songs.  I’ve rediscovered lots of old friends and run across killer stuff I’d never think to check out even from iTunes.

OK, on to some specific things I was entranced with in 2005, many of which had nothing particular to do with 2005 other than I found or rediscovered them then.

  • Ned’s Atomic Dustbin.  Great alternative/punk/Brit Pop music.
  • Guster.  Wow, what killer lyrics, melodies, and vocals.
  • Coldplay.  See above.  Seems to be a very similar style to me, and I likes it!
  • Blink-182.  182, 181, whatever it takes.  Good stuff.
  • Bruce Springsteen.  I never listened to The Boss much as I was growing up, but I’ve sure been hitting The Rising hard for the last several months.
  • Webb Wilder.  A great rediscovery!
  • Green Day.  What a dork I was to not know how much great music these guys have put out.
  • Elvis Costello.  ‘nuff said.
  • The Who.  More ‘nuff said.
  • Death Cab for Cutie.  More odd punk/alternative with great vocals.
  • Ashley MacIsaac.  Great Irish modern fiddler.
  • Crosby, Stills, Nash, and Young.  American Dream is great stuff.  Screw those pompous foreigners.  I like my anti-Americanism home grown, damnit!
  • Jason Mraz.  Mr. A-Z sucks, but I love Waiting for my Rocket to Come.
  • Matisyahu.  No clue how to pronounce his name, but I love his Hasidic Jew reggae thing.
  • The Stax/Volt Collection.  I bought this years ago and forgot it.  Nine discs of amazing goodness from the likes of Booker T and the MGs, Sam and Dave, and the Mar-Kays.
  • Off-Kilter.  Bagpipes, guitars, drums, traditional Scottish tunes, modern snappy stuff too.  Makes me want to go get in my kilt, or at least think about it if I had 15 pounds less around my waist. (OK, OK, 20 pounds less.)
  • The La’s.  More Brit pop with great vocals.
  • Jamiroquai.  Amazing jazz/pop/blues/idunnowhat.  Stevie Wonder morphed into modern day hipster stuff.
  • Anything from Rhapsody’s Afro-Pop sampler.  I’ve been interested in Afro-Pop for a long time, but never knew what to try.  Rhapsody lets me dive right in.  Love that!

Subscribe (RSS)

The Leadership Journey