Farewell to the devLink Technical Conference

   After spending the past nine years working with several amazing people to build the devLink Technical Conference, I have made the decision to retire the event.  Over the years, we have seen the event grow from approximately 287 attendees in 2006 to regular attendance of 800+ individuals from across the United States and beyond.  I have had the opportunity to share experiences that I will never forget and participate in life changes (good/bad) of everyone on the team as well as some attendees.  In the end, it really boils down to focus and what’s next for everyone on the team as we move forward in our lives.  Personally, I will take this opportunity to refocus and invest my efforts more fully toward my faith, my family as well as make some determinations on the next steps for my career.
    This may disappoint a few people, but my hope is with devLink coming to an end, it allows for other events to be highlighted and hopefully spurs others to take that step toward impacting the community in their own way.  Some events that immediately come to mind are CodeStock, KC/DC, Code PaLousa, CoderFaire, Heartland Developers Conference and CodeMash, but there are many more.  If you don’t have one in your area, by all means go for it! Reach out to others in the community to build something, you just have to ask.
    Several questions have come up about letting someone else take over the conference and move it forward.  While we were proactive to incorporate others into the team for just this scenario, running an event of this size is a big commitment, not everyone has the ability to make that kind of sacrifice.  Other options were explored, but it became apparent that it is better for the event to come to end than to try and make it work another way.  If people remember devLink as something great that ended too soon, that is better than remembering when devLink was great.
    My hope is that the conference made an impact on the community and those who had a chance to attend.  I would like to recognize a few of the people who gave of themselves to help make this happen.  Whether in the beginning or year after year these people made significant contributions to the success of the devLink Technical Conference: Leanna Baker, John Baker, Jason Clark, Randy Walker, Tommy Norman, Amy Walters, Rebel Bailey, Keith Elder, Alan Stevens and most of all my wife and children who gave not only of themselves but also allowed me the freedom to pursue my passion.  While it is hard to give up something you have poured yourself into for so long, it is the right time.  I loved being part of it and will miss not only the event, but all the familiar faces.  Thanks for supporting the conference over the years!

Simplify: Ten Practices to Unclutter Your Soul

I grabbed this book while attending the Global Leadership Summit earlier this year and read it a couple of months ago.  Having heard Bill Hybels speak before, I know he does a good job at sharing practical advice on the podium, but he does a great job of it in the book as well.  He really challenges you to think about why you might be overworked and struggling to have true work/life balance.  This is actually a book I plan to read again, because I am sure a refresher will be necessary for me down the road.

RabbitMQ Configuration via Rake Task

I recently wrapped a Ruby on Rails project in which we were leveraging RabbitMQ as the message broker.   We wanted a quick and easy solution to manage the configuration of the exchanges and queues for deployment.  Since the developers on the team had the occasional need to leverage RabbitMQ locally it made sense to combine those solutions into a rake task.The task leverages the RabbitMQ command line interface (CLI) which gives you the ability to accomplish most anything.  The problem is that most of the team were not well versed in RabbitMQ and didn’t need to be, so to make it simple I first created a ‘rake rabbit:setup‘ task that would pull down the CLI script and place it in the proper path for execution of the remaining tasks.  This only needed to be executed once and they were good to go.
To start, I wanted to make the configurations quite simple and familiar to the team so the rabbitmq.yml file was born.  The rabbitmq.yml file allows for configuration of exchanges, queues and bindings between them.  As you will see in the example gist below, you specify the user and password for RabbitMQ.  Exchanges can define all available types, identify an alternate exchange and whether the exchange is internal or not.  Queues allow for simple definition of just the name to including the expiration time and dead letter settings.  Bindings tell an exchange and queue about one another and their relationship.  You can also add a host configuration entry and modify the base command in the rake task if you are interested in configuring a remote RabbitMQ server.
To configure the system with the CLI is pretty straightforward, you can simply export the rabbit configuration to a JSON file using the ‘rabbitmqadmin export rabbit.config‘ command, make your changes and import the configuration file using ‘rabbitmqadmin import rabbit.config‘.  The problem is that if you change an existing exchange or queue those changes are ignored.  To work around that problem, I added that ability to delete exchanges and queues so that a fresh configuration would allow for all configurations to be the latest and greatest. You are probably thinking, what about existing messages, if you delete a queue with messages in it you are going to lose data, what kind of solution is that?  Well, relax if you call the delete queues or delete all, which deletes queues and exchanges, it will only remove those queues that are empty and warn you that some queues have messages.  So you can then act on those queues with messages and repeat the delete action to ensure all is well.  If you are not worried about existing messages and data loss you can easily delete the queues containing messages by running ‘rake rabbit:delete:queues_by_force‘.
In the long run, I am confident that the task can be improved upon, but it is a great starting point to incorporating a configuration based management of RabbitMQ.

Speaker Lessons

I have had the opportunity to work on both sides of the speaking realm as both a regular speaker and event organizer. Over the years, there have been a number of interesting incidents which lead me to write this post. For the most part, I believe the majority of aspiring speakers behave professionally, but there are definitely those who don’t fit the bill. I thought I would share a few stories and some takeaways. This is certainly not a full list, just something that hit me as a valuable post for those who plan to be a speaker at different events. I have excluded any names from the stories to protect the guilty and avoid making someone look bad.

Once there was a keynote speaker that provided an abstract that sounded great. The abstract talked about how things had been in the past, what we have done to make things better and the bright future ahead. All was well with the world until the speaker started talking. The keynote content was one of the most boring and disliked sessions in the history of the event. Attendees were blasting the speaker and his illustrious keynote on Twitter as the blather continued to spew. I was in the back hallway crouched down by the floor with my head in my hands wishing for time to speed up so he could be finished and get off the stage.


  • Your abstract is not just a quirky little paragraph to make people think you are witty and come see your session. It is a tool for attendees to determine what content makes sense for them and if the content doesn’t match the abstract you have missed the point. Make sure your abstracts are clear in what the intent of the session is and who should be there as well.
  • Know your audience, if you are going to present content that is focused on a specific audience be sure to indicate that in your abstract. Additionally, look at the event to get a feel for whether the attendees will be interested.

I was once contacted by a speaker the week of the conference letting me know that a family health emergency had come up and they could not attend. Obviously, I was understanding and cancelled their sessions with my hopes that all would work out well. Then one of the conference staff members mentioned that the speaker just posted on a popular social networking site how great their vacation with their family was going. After a quick look, the speaker was indeed having a wonderful time with their family, which is great for them. I don’t care that the speaker was on vacation and would have understood if he had been honest. Why did the speaker feel the need to lie? Who cares, the fact is that they didn’t have the courage to be honest.

Atlanta Code Camp

This morning I took a short trip down to Marietta, Georgia for the Atlanta Code Camp. I was able to attend this event a couple of years ago, but only for a short visit. It was a great event and looked to be packed. My first session was more of a soft skills talk geared toward people who are interested in being a consultant and starting their own business. There was a great crowd and some excellent insights. Most notably was regarding marketing yourself.

One of the attendees mentioned attending a baseball game with a handful of business cards, then throwing the cards in the air when a big play was made at the game. He said afterwards he got a couple of phone calls from people who found his card and a job opportunity. Amazing!
Below are the slides, which are unfortunately not as enjoyable without a group of folks sharing their experiences.

A New & FREE .NET Decompiler

Today I was pleasantly surprised to learn about a new .NET decompiler that is currently in Beta release. It is called JustDecompile and developed by Telerik as a stand alone decompiler application. The best part is that JustDecompile is offered for free which is a great opportunity for those who are not able or willing to purchase Reflector once the free version stops working after May 30, 2011.

Since this is a BETA product it might not meet everyone’s needs yet. For example, it currently decompiles to C# (nothing wrong there), so if you are VB.NET developer or like viewing another language you will have to wait. The current plan seems to be regular automatic updates throughout the BETA period and a planned 3 major releases once the product is ready for prime time.
Reflector has served me well and my hope is that a well backed competitor in this area can only make both tools better. I will definitely be giving JustDecompile a few looks and see how this tool is going to work out.

Reflector – Not free anymore?

Today it was announced that Red Gate Software would begin charging for .NET Reflector with the version 7 release. The announcement triggered a flurry of Twitter activity from several developers who have enjoyed use of Reflector for many years. Reflector was developed and maintained by Lutz Roeder until 2008 when he transferred ownership to Red Gate. From the beginning Reflector was provided as a free tool to the development community. When Red Gate assumed ownership without making any commitment (or obligation) to keeping Reflector free, they continued to do so until the proposed May 2011 release of version 7.

Why all the uproar?
In my opinion, this is a perfect example of people feeling like they deserve to have something when they have done nothing to deserve it. Lutz could have easily charged for Reflector when he was working on the tool, but decided not too. I along with many other people would have been willing to pay a small price to leverage Reflector. It was a huge help for me when I started working on WPF and there were no books on the market. It was his code and his perogative to offer Reflector for free. Now the code belongs to Red Gate and in order to really commit their developers they are going to ask for $35 for a perpetual individual license. I guess they could ask their people to work for free, but I doubt they would. Would you?

Do I like the decision? NO, but I understand that companies can’t do everything for free. Think about it like this, go to your local grocery store and most of them will have free cookies for kids at the bakery. Let’s say you take your kid to the store everyday for a free cookie for 6 or 7 years until the store discovers they need to pay the baker. So they ask you to pay $1 for a membership card for your little cookie monster to get cookies. Now ask yourself, do you have a right to the cookie? Will you go on Twitter and say the grocery store is the scourge of the earth? I certainly hope not. I have used Red Gate tools for years and have been pleased. While I am not happy about the decision, I don’t fault them and they haven’t violated any sacred trust.

Where I would find concern is if the rumor, and I haven’t seen any documentation supporting this claim, that you would not be able to use the last free version once version 7 is released. There would be no reason for Red Gate to keep users from being able to use an unsupported and feature frozen version of the free tool that exists today.

iPad – Week One

Last Saturday, I received the new Apple iPad delivered to my door. That’s right, I didn’t sleep outside any stores like so many others. Now that I have had a few days to work with it, I felt the urge to share some thoughts.


First Impressions

The first thing that caught my attention was the clarity of the display. It renders beautifully and is very easy on the eyes. Whether viewing web pages or a book in the iBook application, the iPad definitely has a remarkable screen. I think the next most noticeable feature for me is the performance. The iPad is extremely responsive and the smooth transition between landscape and portrait views is the most obvious way to observe it. That being said, my iPhone demonstrated great performance when I first purchased it as well, but has become considerably more sluggish over time. I will be watching that closely.

Question: “Isn’t it just a big iPhone/iPod Touch?”

While the general look and feel is identical, but size does matter in this instance. Remember that those were devices that were all about mobility, the iPad (in my opinion) is more about entertainment with a little productivity on the side. Little screens aren’t very good when it comes to reading and watching movies. Even more important is the ability to type and as Todd Anglin so nicely put it “It’s like an iPhone that finally fits your fingers”. Thanks Todd


I had the chance to take this little gem with me on a flight earlier in the week. I thought a quick comparison to a laptop on a plane would be a good field test.



Can be bulky unless it’s a netbook, but still not quite the same

Light weight and reasonably sized.

Startup time wastes time and battery life

No startup time, no problem

When the person in front of you puts down their seat you have to bend down to see the screen.

Easy to handle and hold, no worries about putting that seat back. Can easily lay it on the tray.

Battery life not so hot, probably 3 good hours unless you start turning on power saver options.

Battery life was not an issue for 6 hours of travel time. Still had plenty when I arrived at the hotel.

Watching movies, games and music. All good, but back to battery life and the pesky person in front of you who likes to recline

I have 5 movies on my iPad, several games and all my music. I watched a movie each way on my trip, listened to music and squeezed in a couple of games with no impact to battery and a great picture.

Will start to get hot after a while and planes aren’t the coolest place on earth. UGH!

No heat issues at all, even holding/resting it directly in the hand for hours.

I can code on it

I CAN’T code on it


image The iPad has tons of applications, but a couple of useful productivity applications called “Pages” and “Numbers” are the big thing for iPad. These are Apple’s versions of Microsoft Word and Excel. I liked using both of the applications on the iPad. I used Pages for taking notes which was great just hit the button and tap and I can start capturing information. Numbers was not bad, but there is nothing like Excel to work with spreadsheets. It would be good for capturing some information while out of pocket though. Need a way to pull them back over and into Excel, now that would be productive.

In Summary

So overall I think the iPad is a great device for entertainment and it can help from a productivity standpoint as well. It does not replace a laptop and I don’t think that was Apple’s intention anyway. It is a nice piece of technology and has some great uses, but a laptop has all the bells and whistles and the iPad just doesn’t yet. The size is right and the price is high, but if you already have a laptop it can be a great companion.

I see some potential as a good field platform for enterprise applications (with 3G, of course). Unfortunately it looks like Apple is going to screw that up with their recent change to the Developer Program License Agreement which potentially excludes applications built by MonoTouch, Unity3d and other non-Apple tools. Smart move Apple, hope you come to your senses.

DEVLINK 2010 – Allowing voting on sessions

I am amazed that it is already March and the amount of time for getting DEVLINK 2010 is shrinking quickly. This year I thought it might be nice to open things up a little bit and let the community help drive what sessions make the conference. To be completely honest, it gets tough reviewing so many sessions and trying to find the best fit and balance, so why not share the workload. Of course, voting is only one component of how sessions get selected, in the end it will fall on us to make the deciding factor of what sessions can make the schedule. I really like the StackOverflow model of voting up or down which is why we went that route. If you are planning to attend the conference, please take a moment to check out the sessions and cast your vote on what you would like to see.

Community Events of Note

With 2010 already well underway, a new list of community events is building up.  Of course, devLink will be happening August 5 – 7 in Nashville, but I am going to be at a couple of others and wanted to bring them some attention. 

January 20th, Nashville, TN – A lap around PDC featuring Steve Ballmer
Microsoft is putting on a one day event in Nashville with Steve Ballmer, CEO of Microsoft doing the keynote.  This is a summary of some of the content that came out at PDC in 2009, so it should be very informative for those using Microsoft development platforms and tools.

January 21, Murray, KY – Western Kentucky .NET User Group
I have been given the honor of being the inaugural speaker at the Western Kentucky .NET User Group in Murray, KY.  I will be presenting on Effective Interface Design.  If you are in the area please come by for the kickoff meeting of this new group.

January 23, Mobile, AL -  Alabama Code Camp
This is my first time going to the Alabama Code Camp, but the lineup looks excellent.  I will be presenting three sessions and really looking forward to getting down there.  If you are in or around the area, you might want to consider going to this free event. 

January 29, Louisville, KY – Louisville .NET Meetup Group
My last community event of the month will be a presentation at the Louisville .NET Meetup Group.  I will be presenting Tools, Tips and Tricks for the .NET Developer which should be a great time.  If you are in Louisville then check it out.