Category Archives: Blogging

Straining at Gnats

Here in the south (I live in Alabama) we have a saying “quit straining at gnats”. A gnat, by the way, is a very tiny bug that proliferates during the summer and tends to fly in your face when you walk outdoors. The saying essentially means “you’re working very hard to get rid of something very small”.

In Episode 300 of Dot Net Rocks (a great episode) Richard Campbell tells a great story. The short version is Richard is called in to look at a computer that’s having problems. It’s the mid 80’s or so, and this PC is responsible for downloading financial info. Every hour the computer reboots itself and they have to go start it all back up. He says “I can fix it, but it’ll cost you 3 grand”. Client sputters and says they’ll think about it.

Two weeks later he gets the call “OK, you got the 3 grand, come fix it.” So on the way to the client he stops and spends 1500 bucks on a new PC, puts it in place at the client, copies all the old software over and boom it’s up and running perfectly. As he’s walking out the door, check in hand, he’s asked “what was wrong with it?” “Heck if I know.” Richard replies. “But the problems fixed.”

It’s a great story (and much funnier when you hear Richard tell it), but it illustrates a great point. All too often we obsess over some problem, and lose sight of the desired result. All too often we focus on some piece of code, trying to come up with the most “elegant” solution, or frustrate ourselves over some piece of code instead of tossing it and rewriting.

I’m not saying write bad code, or write sloppy code in a hurry just to get it done. I am saying when you run across a problem, don’t get so invested in it that you don’t see alternatives. Time and again I see a developer getting stuck on a problem, trying to fix some arcane piece of code, or spending hours to get that extra millisecond from a SQL query.

When you run across that road block, take some time. Push back from your computer and think for a moment. Think what the true outcome of your application is supposed to be. Not “what will the program do” but “what will the program do for the user???” Think about how best to achieve the users goals.

As Campbell pointed out several times in the episode, when you are writing software for a business it’s all about making money. Your program should either make or save the company money in some fashion. Whether it’s by crunching numbers in a faster, more efficient way than a human could, by providing information in a more timely fashion, or any of a thousand other scenarios. Never lose sight of the fact your software is to provide a solution, and not being written for artistic purposes.

Don’t get so lost in the code that you wind up straining at gnats.

SQL Server 2005 Learning Resources

I’ve been spending a lot of time lately in the SQL Server realm, learning all I can about it as both a database and business intelligence platform. Turns out to be a far more complex, and fascinating subject than I’d first imagined. I thought that you too might find some of the same resources I’ve been using useful. All of these are free, which is a great price.

Rather than putting them all here, I’ve updated my Arcane Links page ( ) with a new section on SQL Server 2005 Resources. Over the holidays I plan to update the links page with fresher links, local user groups, etc. I’m also working on learning SQL Server 2008 as well, so look for those links upcoming shortly.

A timely mention, the RunAsRadio that was released this week (episode 36, see the RunAsRadio link in the links page) has an interview with Kimberly Tripp and Paul Randal. Not only was it a great interview, they let it slip they’re actually considering doing a show. If you’d like to see a SQL Server show, please leave a comment over on Carl Franklin’s blog ( ) and let them know. Personally I’m thrilled, there’s a lot of good shows on Visual Studio but only one good one that I know of for SQL Server, SQL Server Down Under (again see my links page). If you know of other shows let me know by leaving a comment here. I figure there’s plenty of room for more and Kim and Paul would be a great duo.

Over time my posts will catch up with what I’m learning, and I’ll start getting more into SQL Server content as time goes by. Meanwhile check out the links and learn along with me.

Go Sara Go

I think I may have just discovered the most useful blog on the internet for Visual Studio developers. Sara Ford, who just took over as Program Manager for Code Plex ( posts a “Visual Studio Tip of the Day”. They are short but wow are they useful. I can’t believe I haven’t discovered this gem before today, but hey better late than never.

Go read her blog at and tell her “Go Sara Go!”

Arcane Lessons Updated

I just got done updating the Arcane Lessons page. I added the last couple of weeks of WPF lessons to the WPF area, added one new item to the SQL Server Full Text Search area, and created a new category: Arcane’s Toolbox. This first list is all of the Visual Studio add-ins I’ve blogged about. Later I plan to add some of my favorite Windows add-ins, but if you don’t want to wait you can click on the Windows Add-ins tag to see the posts.

Arcane Fun Fridays

WHEW! All of this WPF / XAML sure has been a lot of fun. But I think it’s time to come up for air and see what else is happing out there in Dot Net land.

Alabama Code Camp is coming up in just a little over a week, Saturday October 6th to be exact. Still plenty of time to register and even just a bit of time if you want to get in on the Silverlight programming contest. First prize for that is a Zune!

devLink, the large conference for a cheap price comes up right afterward in Nashville, Friday and Saturday October 12th and 13th. . You can tell I’ll be there, my name’s on the front page as a winner of a Barnes and Nobel gift card (look for the dude from AL !)

(By the way, anyone know of a good dog repellent? My nephew is coming to house sit and is bringing Marshmallow and Buttercup, his twin Dobermans along because I have a big back yard they can play in. Last time though they ate the garden hose, chewed the handle off my shovel, and bit through one of my lawnmower tires.)

There’s a new add-on for SQL Server Management Studio I’m eager to try out. It’s still in Beta but looks promising. It was blogged about at—an-add-in-for-SQL-Management-Studio.aspx or you can download it directly at .

If you are a fan of NUnit, you’ll appreciate the new xUnit. Read James’ announcement at .

In a recent Dot Net Rocks episode, Carl Franklin announced they would be taking over Shrinkster has been down due to spam abuse, as soon as Carl gets everything setup we’ll be able to go back to using short links again!

Speaking of Dot Net Rocks, I especially enjoyed show 274, where the new features of VB.Net and C# for the 2008 release were discussed. Entertaining and lots of good tidbits. I think my favorite feature so far has got to be C#’s extension methods.

During my long drive to the Tallahassee Code Camp last week, I put together a podcast theme session, and copied a bunch of related podcasts onto my cheapo SanDisk mp3 player. This time I went with a “Millenator” theme and got all the episodes of Dot Net Rocks that Mark Miller appeared on. Good stuff, lots of thoughtful material combined with some humor. Next time you go on a trip, copy a bunch of past episodes of your favorite podcast that are in the same theme and make that long drive go much quicker.

There have been several updates to the world’s greatest Visual Studio Add-In, CodeRush, over the last few weeks ( ). Apparently Mark Miller and the boys have been busy! If you’re not on 2.5.4 go update yours today.

Speaking of Mark Miller, I love his intro slide for his VSLive session coming up in LasVegas. Take a look, pure genius.

A final note, between getting ready for Alabama Code Camp and going to devLink my blogging may get spotty for the next few weeks, bear with me and I’ll have full reports from both code camps and lots of fun new stuff to share.

More WPF Resources

Walt Ritscher of Wintellect was in our offices this week, teaching us WPF. Great guy, really knows his stuff, and has a blog well worth checking out at

There’s a great training site on XAML/Silverlight called Nibbles. Be warned the site is done in Silverlight, so for now you’ll need to use IE and have Silverlight installed.

Fellow southern blogger Keith Rome has a blog on WPF and Silverlight:

Tim Sneath has a lot of good info on Silverlight:

Finally, this isn’t specifically a WPF resource, but our regional developer evangelist and all around swell guy Doug Turnure has a posting of .Net bloggers in Georgia, Alabama, and Mississippi:

Update: September 15, 2007 – I wanted to add one more resource. I picked up Pro WPF by Matthew MacDonald ( or I have several of Matthew’s books and have always enjoyed his writing, and this book appears to be another winner. It’s a good companion to the Adam Nathan book, as each book goes into some areas the other doesn’t.


WPF Resources

Yesterday I pointed out where to download all the bits you need to get into WPF. Today I thought I’d share some good resources on learning WPF.

First off is Todd Miranda’s site Xperimentality . Todd is an MVP and has done many of the videos that appear on the Windows Client site.

Speaking of the WindowsClient.Net site, you can find many of those videos at , just scroll down to the WPF area.

Todd Miranda’s videos on the Expression suite can be found on the Expression Knowledge Center site, . There are also videos by others.

Channel 9 has now reached 100 items on WPF:

Mark Miller recently did a DNRTV episode on Custom Controls in WPF, find it at . Also on DNRTV, Brian Noyes did a two parter on WPF, found here and here .

Another great blog is Lester’s WPF Blog, . Lots of good stuff from the author of XAMLPadX, which I recommended yesterday.

Finally, a book recommendation, I’m finding Adam Nathan’s book on WPF to be a really good read. It’s more than technical enough to keep an experienced reading, and all of the code samples are in color!

Arcane Searching

I think we’d all agree the internet is one of the greatest productivity tools around, allowing us to find vast stores of information. I’m sure you’ve also heard it’s the greatest time waster, with lots of distracting sites or useless pages that get in the way of the results we want.

I find it really valuable to have a good search tool, one that focuses on the content I need, and limits the scope of the search to relevant areas. Of course we’ve all heard of Google, the 500 pound gorilla of search engines. While the do a pretty decent job, when your search phrase returns half a million hits it can be difficult to narrow down.

Recently I’ve found the Microsoft engine, Windows Live ( ), has gotten a lot better, especially when looking for .Net related developer content.

My favorite so far though, is Search.Net ( ), a site put together by coding legend Dan Appleman. Dan ( ) created a Google powered site, but maintains the list of sites it searches so you know that you are only combing sites devoted to programming and not Happy Harry’s House of Wild Women.

Another site I just learned about this week is Koders ( ). It’s a site devoted to searching through source code. It also has some helps that will let you zoom in on what you want. You can pick the language, or specify your search word needs to be in the class name, method name, or interface name. This kind of search is valuable when you are looking for an example, or trying to avoid reinventing the wheel.

A similar site is Krugle ( ). It has similar paradigm to Koders, allowing you to search through code.

The final code search tool I’ll mention is Google’s new Code Search engine ( ). It allows you to search using regular expression syntax, which is a nice feature (I just wish regular expressions weren’t such a pain in the underwear to use).

I have to give a quick thanks, most of these I learned about through either my listening of Dot Net Rocks ( ) and HanselMinutes ( ) or through Scott Hanselman’s new forum site, which I blogged about yesterday.

Those are the list of place I go when I need to find something, how about you?

Arcane Links

Some miscellaneous topics to cover for today. First, I had the need to copy several thousand files from one machine to another, about 6 gigs worth. Explorer? No thanks, to slow and unreliable. Fortunately I had recalled reading a post on Scott Hanselman’s blog just the other day on this topic.

Since the machine I was using to do the copying was Vista, I used RoboCopy. Worked like a champ. The bad part was I didn’t even know I already had this tool until I’d read Scott’s post. Always nice when you go hunting for a tool only to discover you’ve already got it and it’s ready to go.

On the subject of SOA, Redmond Magazine released an article on Microsoft’s SOA strategy.

It was a long article and interesting, although it seemed to have an anti-Microsoft tone. I picked up a subtle, and perhaps condescending, knocking of Microsoft for not falling into lockstep with other industry players like IBM. While I do agree Microsoft sometimes comes a little late to the party, I don’t think it has to jump on the party boat to be an effective player in the industry.

Windows Communication Foundation Guru Jeff Barnes is planning on some new WCF posts in the near future, so be sure to keep an eye on his site if you play in the WCF realm.

Jeff’s also working on a WCF Site (, another good reason to keep an eye on his blog.

Finally, Scott Hanselman has opened up a forum area on his site, some good info and discussions can be found here.

Just Code It

Jeff Atwood has an interesting post on his Coding Horror site entitled “Yes, But What Have You *Done*?” ( ). Programmers, Jeff says tend to be natural introverts, and left to their natural devices will migrate toward head down coding.

“But it is possible to go too far in the other direction, too. It’s much rarer, because it bucks the natural introversion of most software developers, but it does happen. Take me, for example. Sometimes I worry that I spend more time talking about programming than actually programming.”

I know how Jeff feels. In my role as a development lead I spend a lot of time in meetings, or talking to other developers about their projects. As a result I wind up spending a lot of time late at night doing coding, just to keep up with the latest and greatest techniques.

The need for code experience directly resulted in one of my “How To Be A Better Developer…” ( ) pledges.

I will work all the code samples in the book. Reading is one thing, but doing is even better. Personally, I find I get a better understanding when I actually type in the code samples and run them. And not just run what’s in the book, but tweak it, experiment with it.

I’m amazed at the number of times I meet some guy who comes across as a self proclaimed expert on a subject. When I quiz the person or try to ask tough questions, it turns out said individual read a book, but never actually wrote any code. Book learning is great, I certainly buy enough books every year to know, but there’s no substitute for doing.

When learning something new, start with the samples. Work it, tweak it, understand it. Then, if appropriate use it on your project at work. If it’s not appropriate, find someone else’s project that it would be a good fit for. Offer to work a few hours unpaid overtime and contribute some code to their project. They’d probably be grateful for the help, and might repay with some pointers and critiques.

Can’t find an appropriate project at work? There are thousands of open source projects out there, find one where you could contribute. Or look around the community; find a charity that needs some programming done.

It’s easier than you think to find some real world places to apply your coding skills. So what are you waiting for, just code it!

Happy Birthday

Hard as it is to believe, today, August 5th 2007, marks one year since I started the blog. I admit the first few months were a bit slow when it came to posts, but it’s really taken off since late October of 2006.

The biggest surprise to me is how much I’ve enjoyed blogging. Everyday I try to learn something new. Being able to take what I’ve learned and talk about it on the blog only reinforces my understanding and, I hope, adds some value to you the reader.

I do admit that I tend to be all over the place with my content. I guess it’s a reflection of both my interests and what I have to deal with on a daily basis. As a development team lead, I lend a helping hand to everyone’s projects. So on any given day I’m jumping back and forth between ASP.Net, WinForms, Windows Services, Web Services, AJAX, C#, VB, Java, SQL Server Data Warehousing tools (SSIS, Reporting Services), and Oracle, to name a few.

I think though that even if work didn’t require the broad range it did, I’d probably still be working in all of it. I find it all fascinating, AJAX, WPF, WCF, Linux, Virtualization, SOA, there just doesn’t seem to be enough hours in the day to keep track of it all. There’s so much cool technology out there I feel like the proverbial kid in a candy store.

Let me close by saying thanks. Thanks to all of you who visited, sent e-mails, and posted comments. It’s been a great year and I look forward to many more.

Robert / Arcane Code

Being a Better Developer… In 6 Months

Scott Hanselman’s show this week was killer. ( ). In it, Scott and Carl discuss a thread going around the internet, namely how to become a better developer in six months. They had some excellent ideas, some of which they were passing along from other posters, some were theirs. The post that seems to have started the whole thread was done buy a guy named Justice Gray, back in April. or . Just recently he posted a follow up at or .

I like the whole concept, and am going to implement my own version of it. And the first step is to declare what I’m going to do, so without further ado…

I’m going to start by reading a chapter a week from a book. Now, I know that doesn’t sound like much compared to the plans of others to read a book a week, but it leads to my next step…

I will work all the code samples in the book. Reading is one thing, but doing is even better. Personally, I find I get a better understanding when I actually type in the code samples and run them. And not just run what’s in the book, but tweak it, experiment with it. And then what will I do with my knowledge?

I will teach what I learn. The best way to learn is to teach. I’ll blog, talk with my co-workers over lunch, give presentations, but in some way I will give back what I learned. But I won’t stop this learning process with just books.

I’ll increase my listening of podcasts or videocasts. I recently got an inexpensive MP3/WMA player, which I load up with podcasts. This left the 1 gig card on my iPaq free, which I’ve loaded some videos on. Since the iPaq is portable, it increases my ability to watch these videos. Since I’ve blogged so much about podcasts in the past, I shan’t continue talking about them.

I’ll create at least one new presentation and give it to a user group. Again, the best way to learn is to teach, and there’s no better place than with your peers at your local user group.

I’ll look at the source code for an open source project. This is one I really loved from the show. Look at someone else’s code, see how it works, step through it. Right now I’ve got several in mind, first is the Paint.Net project ( ) since I think the graphics would be interesting, and graphics aren’t something I normally get to play with at work.

Next is RSSBandit, with the source at .The networking concepts in there should be quite useful in many instances. Finally is SharpDevelop ( ). It’d be interesting to see how an IDE works. I’m not sure which of the three I’ll look at, but these are on my short list.

I will learn a brand new or little used technology. There’s a lot of new technology out there, or tech I don’t read much about. Working a lot with the SQL Server BI (Business Intelligence) tools, the upcoming SQL Server 2008 sounds interesting. Of course there’s Visual Studio 2008. And XAML promises to be a hot topic, between WPF and Silverlight I think this will eventually be a “must” for everyone. Those are just some examples, find something that fascinates you and go learn.

The final two items on my list are suggestions from my manager, who my kids have dubbed “Mighty Mike”. I thought these were really good.

I will learn more about the business. No, not the business of programming, although that’s certainly important. I’m talking about what my company does. Most developers aren’t in a job where their company produces software. Instead our programming efforts help support the production of some product, which our company sells. I will learn more about that product, how it’s produced, what processes apply, and what the difficulties are. And finally….

I will get to know my customers. By that, I mean the people who are using, or are affected by the software I write. For most of us, those will be other employees of our company. Meet these people. Get to know them. Buy them a cup of coffee. Take a non-IT coworker to lunch every so often. Setup a half hour meeting with them every so often to learn and understand more about their job. Find out what their pain points are, find ways to solve their problems, offer them solutions to make their jobs better.

Whew, that’s quite the list. It will take a lot of balancing of my time to carry this off, but at the end of it I’ll be a better programmer.

To wrap this up, I’m supposed to tag four other developers, to challenge them as well. So here goes…

First is Jeff Barnes, . Payback time! (He knows why, heh heh heh).

Next is Todd Miranda, Birmingham’s newest MVP. Congrats Todd!

I think my next victim will be my brother-in-law, Dougal. Even though he’s not fortunate enough to work with .Net, he at least got to do some cool stuff with WordPress.

My final pick is that perfect blend of lunatic and coding genius, Mark Miller. It’s his fault I got deeply involved in coding again. I was thinking of getting into project management, but after seeing his talk at VSLive 2005 I got so enthused about coding again I jumped in with both feet and here I am. So how about it Miller, put down that McGriddle and blog something!

An now I challenge you, the reader of this post to go out and be a better developer. Post a link to your development plan. If you don’t have a blog of your own, feel free to post your plan below. Look at others, take the best of the ideas that will work for you.

Now if you’ll excuse me, I’ve got a lot of work to do!

Arcane Thoughts: Tips for Daily Blogging

Last Thursday I wrote a post on The Benefits of Blogging, which has turned out to be quite popular. One of the comments mentioned how easily you can become overwhelmed trying to create posts daily. I thought I might share a few of the tips that I’ve picked up to make life easier.

Use tools

I use a variety of tools to create my blog. My first pass is done in Microsoft Word. By using an editor I can keep copies of my blog posts locally, should something happen with my blog. (Backups are always a good thing.)

I then use a posting tool to help with the pushing of my entry to the site. Currently I’m using Microsoft Live Writer Beta ( I cut and paste what I’ve done in Word over to it, and add in embellishments such as graphics or additional HTML. I can swap back and forth between presentation view and html easily.

To do my graphics I use two tools, WinSnap and Paint.Net. I’ve already blogged about WinSnap (, and you can get Paint.Net at Both of these are free tools.

Finally, if you plan to paste Visual Studio code samples into your blog, an indispensible tool is the “Copy As Html” add-in. I’ve blogged about this as well at

Write in advance

Using the tools above also allows me to write my articles in advance. Often I’ll pick one or two evenings a week or a quiet Sunday afternoon, and write several articles at once, then post them as each day arrives.

This allows me to take a little bit of the daily stress off, as I don’t have to worry about a post every day. Second, it allows me to write a series of posts much more coherently. You can break large subjects up over multiple days, which means you avoid posts that are too big and won’t overwhelm either your readers or yourself.

Obviously there are times or blogs who are not suited to this. Daily tech news sites, for example. But for most of us, having a week or so worth of posts ready to go is a reasonable balance to achieve.

Write Now. And Later!

Another benefit to writing in advance is that it gives you time to review what you’ve done. You can write the post, then walk away for a bit, several hours at least if not days. Once you’ve had that break, you can come back and re-read what you’ve created. Make sure it still makes sense.

There have been many times I’ve gone back and revised entries I’d written several days earlier, prior to posting. I think it only makes your writing stronger when you can have a break so you can look at your creation with fresh eyes.

Use a Reviewer

When I’ve written something I’m not sure about, or have an especially long piece I want checked for accuracy and consistency, I will ask one of my co-workers or on-line friends to act as a reviewer or editor. I’ll e-mail them the post, and let them make comments. I’ll then incorporate their feedback into the post.

It’s important though to select someone who you have a good relationship with, someone who will give you honest feedback. One way to get good feedback is to use a technique I picked up in Toastmasters: Ask the person what three areas could use improvement, and what three areas did you get right. People aren’t so reluctant to criticize when they know they will also be able to say something positive.

It’s also important to pick someone who is knowledgeable enough about the subject to be able to provide worthwhile feedback. I recently did a series on SQL Server Compact Edition in C#. A coworker, who is good with C# and SQL Server but new to SQL Server Compact Edition, was a great choice to act as a reviewer. In contrast my lovely wife, who is good with computers but doesn’t know a thing about C# or SQL Server, would not have been able to provide the quality of feedback I needed.

Use Illustrations

While not every post is a good fit for a graphic of some sort, many can benefit by having a simple picture or code snippet included. These are pleasing to the eye of the reader. Be careful not to make them so big they dominate the page though, unless you actually need them to (such as in a ‘step by step’ set of instructions).

Use Categories (Tags)

Most blogging tools I know of allow you to add tags or categories to your posts. Use them! And don’t be afraid to use a lot of them, you never know how your readers will need to find the information you are providing.

Additionally, it makes it easier to help others who are interested in a particular topic. Remember the point I made about mentoring in my benefits article? I’ve been surprised at how many times I’ve said “just got to my blog and look at my posts under the XYZ category.”

Be Flexible

Sometimes you need to be able to change what you had originally planned to post. Perhaps some company makes a new announcement you feel the need to respond to. Or perhaps a comment on your blog inspires thought, such as this post. I originally had another post ready for today, but when I read a comment made last night inspiration struck, and this post came to life.

Set Reasonable Goals

My final piece of advice is to set a reasonable posting goal. For me, for various reasons one post per weekday seemed a reasonable goal. You will notice I don’t usually post on the weekends or holidays, to give myself some time off.

Your life though is not mine. You may find three times a week to be enough, or even just once a week. It’s important though to set a goal and stick with it, make it a commitment, just as if it were a job. Just be careful not to set your goal too high, or else you’ll wind up burning out and growing to hate or resent your own blog. Consistency though is the key, again select a goal and stick with it.

Well there you go, a few of the techniques I use that allow me to keep up the pace of daily blogging. Please feel free to leave a comment below with your own tips and tricks.

Arcane Thoughts: Benefits of Blogging

This week marks six months of serious blogging for me. Nearly every weekday I’ve tried to provide some new piece of information. A couple of important milestones have been achieved, as well. Last week this blog rolled over 50,000 hits, and also got its first day with over 1000 hits in a single day.

To celebrate I decided to give the blog a little face lift, and picked a new look. I thought all the blue looked somewhat Microsoftish. I also liked the 3 column look.

Over the past months I’ve been surprised, pleasantly, by some unexpected benefits to keeping up this blog. I thought I’d share some of them with you, should you decide to take the plunge.

Meet and Greet

Through the blog I’ve met some interesting new people, and it’s made a good tool for introducing myself to others.

Self Documenting

I’m sure you’ve heard the notion that well written source code is self documenting. Well this blog has let me document a lot of the things I’ve done in the past, so I can go back and reference it later. Not unlike a personal wiki.

Self Promotion

Like most folks I have an exaggerated sense of self importance. Blogging just reinforces my narcissistic streak and inflates my ego even further. Seriously, if you have an interest in writing, speaking, etc., a blog serves as an important tool in promoting your skills and desires to others.


I guess the biggest surprise has been the ability to use the blog as a mentoring tool. When someone asks a question, it’s been great to be able to say “oh yeah, I wrote a post about that on such and such date, go take a look”. A real time saver too, and it means I don’t overlook telling someone a critical piece of information.


OK, I admit it, some days I’m just blocked. Not a clue what I want to write about. On those days I pull a book off the shelf, open to a random page, and read something. Try some code, and next thing you know I have a post, and I’ve managed to learn something new in the process.

Giving Back

Finally, but I think most importantly, blogging gives me a chance to give back. I’ve learned so much by reading the contributions of others, I feel an obligation to “pay it forward” (so to speak).

Well, what can I say? It’s been a lot of work, but a lot of fun as well, and quite an education to boot.. Thanks for the nice comments and the visits, I look forward to see what the future has in store.