Posts

Linux and Coderetreat

So, I haven't posted in a while. I guess I've been busy? I dunno. I have been organizing/coordinating the Salt Lake City event for Global Day of Coderetreat . I guess that is keeping me busy. We have a facility , a facilitator and meal sponsor , so we are getting pretty close to ready. Good thing, since it is only 3 weeks away! Oh yeah, we're almost sold out too, so if you wanna come, you better register soon! The other thing eating up my free time is Linux. Specifically Ubuntu. As you may remember, I decided to run an Ubuntu VM on my Windows 7 laptop. I really want to expand my skills in new (and somewhat uncomfortable) directions and this seemed like a great option. I have been going through the 7 Languages in 7 Weeks book with the Utah Software Craftsmanship group and it seems like the Linux support for a lot of these languages is better/easier. Here is my experience and what I have learned so far: The first thing I did was use the Wubi installer to create a du...

SOA : RPC : : Object Oriented Design : Procedural Programming

Back in 2008, I attended SDBest Practices in Boston. I had recently read Jimmy Nilsson's Domain Driven Design book. One of the contributors to the book was Udi Dahan, so when I say that he was talking at the conference, I was excited to attend his session: How to Avoid a Failed SOA. At that point, I didn't know much about Service Oriented Architecture, but what he described as a failure mode sounded like an architecture I had discussed and planned with coworkers. That session was the start of a journey into learning about SOA. I spend my spare time reading about SOA. I read Udi's blog . I read Thomas Erl's book Service Oriented Architecture . I read SOA in Practice . I played with various ESBs and Message Brokers. I built a pretty sweet prototype of my company's systems using NServiceBus . I even attended the SOA World 2009 conference in NYC and a full week immersion course on SOA taught by Jean-Jacques Dubray . In the end, I never took any of it to production b...

Into the mine shaft..

Image
I think we are all somewhat familiar with the concept of canaries in coal mines. As recently as 25 years ago, canaries were taken into coal mines as a way to detect poisonous gasses such as CO 2 and methane. The canary would sing all day long unless overcome by the gasses. At this point, the miners would realize their environment had become toxic and they would flee for their lives. Development teams sometimes find that they have a canary in their midst. This person seems to point out unseen dangers ahead based on the current path. The things that the canary sings about aren't really affecting the team, but he or she claims they will if not corrected. How do you know if you have a canary or a whiner? That is tricky. The best advice I have is to look to experience. Does the person have experience working with multiple teams in multiple environments? Has she experienced similar situations in the past? Does she give recommendations for alternate courses of action? Is she passionat...

Model View Presenter - A Path Forward from WebForms

Image
This post is a review of my September 10th presentation at Utah Code Camp . "So you read and hear about Test Driven Development, MVC Frameworks, Continuous Integration and the safety net provided by high levels of unit test coverage. But you work on a WebForms app that has been around since .NET 1.1. It has thousands of lines of code in the code behind classes and you know that isn't easy to test. How can you experience all of these wonderful things you read about? The Model View Presenter pattern is here to rescue you. We will discuss the purpose and structure of MVP as it is applied to WebForms. We will go through a demonstration of some relatively safe refactorings that allow you to start bringing your unruly code under test. We will then add tests using NUnit and Moq. We will wrap up the discussion with a road map from WebForms chaos through Model View Present into the promised land of the MVC frameworks." Having worked on ASP.NET web sites/apps since .NET 1.0 bet...

Premature Configurability Design Smell

Premature Configurability is making some aspect of your application configurable (or data driven) before anyone has ever asked for a change to that part of the system. This is a topic I have been contemplating for a while. I started writing this post at least 5 different times, but I was never satisfied with my results. Fortunately, Alex Papadimoulis of The Daily WTF recently presented on the topic at Code PaLOUsa and he said everything I wanted to say. He refers to the smell as Soft Coding. Please watch his presentation and read his post on the topic.

No More Ninjas

Movie ninjas are awesome with the kicking, punching, jumping, etc. Code ninjas are unwelcome on my team. Let's take a brief look at the characteristics of the ninja: Ninjas have great skill Ninjas work alone Ninjas are stealthy Ninjas use unorthodox tactics Ninjas are specialists in espionage, sabotage and assassination Great Skill - That sounds like what I want in members of my team, provided of course that it doesn't come with Great Arrogance. Working Alone - Uh oh. No thanks. I want people who collaborate and act as a team. Paired programming for a large portion of the day is a must. Stealthy - I really don't want anyone sneaking around in my code. I want clear names and explicit abstractions. Make your movements obvious. Create work that you are proud to sign (and then sign it on check in, not in comments.) Unorthodox Tactics - I liken this to creating your own ORM or web framework. Sure, there may be advantages sometimes, but these are most often outweighe...

Agile 2011 - Day 4-5

Thursday I went to WIP and Kaizen: Key Tools for Enabling Continuous Improvement: Michael DePaoli. It was a really interesting talk about how you need to make change slowly, incrementally and steadily to arrive at the organizational goal without causing a fight or flight reaction in your people. I enjoyed it though I expected it to be more about personal improvement for some reason. I wasn't really excited about any of the late morning sessions, so I bailed and went to Coach's Corner to hang out with Tim Ottinger and ended up meeting Colin Jones from 8th Light and then talking with Matt Barcomb from LeanDog for nearly an hour. Around noon, Evana Fredricko, my dance partner for Brian Marick's session on Tango, The Stance of Reaction, and Pair Programming arrived. We went out for a slice of pizza near the hotel, then returned for a very fun intro to tango and a great discussion on paired programming. A correlation was drawn between the way dance is taught and the way w...