About Me

Training

Nothin But .Net Developer Bootcamp

Navigation

Search

Categories

On this page

Another Rhino Mocks extension method to support your AAA style
Firefox + vimperator + gvim + ItsAllText
Thoughts On Readability
BDDDoc
NHibernate 2.0 GA
Building A Solid Core Contest - Announcing the winners
Lead Like Jesus
Agile Project Management Training - By Jonathan Rasmusson
Nothin But .Net London - Location Confirmation (again)
Building A Solid Core Contest Update - Help Pick The Winner
Nothin But .Net - Location and Attendee Cap Update
Nothin But .Net - London , Location Update 2
Around The World With The Boodhoo's - Part 2 (again)
One Of The (many) Guiding Principles For My Career
Nothin But .Net - London, England - September 1st - 5th, 2008

Archive

Blogroll

 Agile Developer Venkat's Blog
 Ayende @ Blog
 B#
 Barry Gervin's Software Architecture Perspectives
 Boy Meets World
 Brad Abrams
 Canadian Developers
 Christopher Steen
 Claritude Software News
 Clemens Vasters: Enterprise Development and Alien Abductions
 Coding Horror
 Coding in an Igloo
 Dare Obasanjo aka Carnage4Life
 Darrell Norton's Blog [MVP]
 David Hayden [MVP C#]
 Don Box's Spoutlet
 Eric Gunnerson's C# Compendium
 EZWeb guy: Jeffrey Palermo [C# MVP]
 Fear and Loathing
 Generalities & Details: Adventures in the High-tech Underbelly
 Greg Young [MVP]
 Greg's Cool [Insert Clever Name] of the Day
 IanG on Tap
 Ingo Rammer's Weblog
 ISerializable - Roy Osherove's Blog
 James Kovacs' Weblog
 Jason Haley
 Jean-Luc David
 Jeremy D. Miller -- The Shade Tree Developer
 JetBrains .NET Tools Blog
 Jimmy Nilsson's weblog
 John Bristowe's Weblog
 John Papa [MVP C#]
 Jon Skeet's Coding Blog
 JonGalloway.ToString()
 Jump the Fence or Walk Around
 Lambda the Ultimate - Programming Languages Weblog
 Larkware News
 Lutz Roeder
 Marquee de Sells: Chris's insight outlet
 Martin Fowler's Bliki
 Mike Nichols - SonOfNun Technology
 MSDN Magazine - .NET Matters
 MSDN Magazine - All Articles
 OdeToCode Blogs
 Onion Blog
 Planet TW
 Raymond Lewallen [MVP]
 Rockford Lhotka
 RodMan's Corner
 Roger Johansson's blog
 Sahil Malik - blah.winsmarts.com
 Sam Gentile's Blog
 Scott Bellware [MVP]
 Scott Hanselman's Computer Zen
 ScottGu's Blog
 secretGeek
 Service Station, by Aaron Skonnard
 Signum sine tinnitu--by Guy Kawasaki
 Stephen Toub
 Steve Eichert's Blog
 Steven Rockarts
 The Blog Ride
 The Coding Hillbilly
 The Daily WTF
 TheServerSide.net: News
 Tim Gifford
 Vance Morrison's Weblog
 you've been HAACKED

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

RSS 2.0 | Atom 1.0 | CDF

Send mail to the author(s) E-mail

Total Posts: 407
This Year: 132
This Month: 3
This Week: 0
Comments: 1082

 Saturday, August 30, 2008
Saturday, August 30, 2008 4:49:16 PM (Mountain Standard Time, UTC-07:00) ( Programming )
If you want to carry on setting expectations on void methods on your mocks, just use the following method

public static IMethodOptions when_told_to(this T mock, Action action)
{
     return mock.Expect(action);
}

Here is an example of the usage:


db_connection.when_told_to(x => x.Open()) .Throw(new Exception());

Just another small play on words, but I like the readability of it. Develop With Passion!!
Comments [1] | | # 
 Wednesday, August 27, 2008
Wednesday, August 27, 2008 5:14:19 PM (Mountain Standard Time, UTC-07:00) ( Tools )

The title spells out the latest set of tool combinations that take me one step closer to a richer mouseless browsing and editing experience. If you read the earlier post I am currently back running FireFox 2.0 and the older version of Vimperator as the "feature" did not present itself in that combination of tools.

I currently use vimperator to offer a mouseless browsing experience. I just stumbles upon ItsAllText which is a great add on that  lets me fire up gvim as my editor for textarea elements. I configure it to use gvim as my external editor and when I am in a textarea I can hit a hotkey to launch my external editor. I enter in the text I want and then I save and exit the editor (:wqa in gvim). This takes the contents of the vim buffer and sticks it into the textarea that I launched from.

 

If there is enough interest I would be glad to do a quick 10 minute screencast on mouseless browsing with all of the tools that I just mentioned. If there are enough responses then I will do up the screencast quick and get it out by the end of the week!!

 

Develop With Passion!!

Comments [1] | | # 
 Tuesday, August 26, 2008
Tuesday, August 26, 2008 10:47:36 PM (Mountain Standard Time, UTC-07:00) ( C# )

I am currently going through my existing application and refactoring for a bit more readability (with a focus on natural language). Could I get your feedback onthe readability of the following piece of code which demonstrates a chain of responsibility:

Run.the<wire_up_global_error_handling>() .then<initialize_the_container_for_the_user_interface>() .then<initialize_the_user_interface_registry>() .then<initialize_the_ui_images_registry>() .then<initialize_the_main_menus>() .execute();

Underscores in code seem to have permeated a lot of my thinking. And I am currenlty playing around with lowercase method naming with underscores to separate significant words. How would you feel if you were presented with this code to read? Be brutally honest!!

 

Develop With Passion!!

Comments [2] | | # 
 Monday, August 25, 2008
Monday, August 25, 2008 9:42:24 PM (Mountain Standard Time, UTC-07:00) ( Tools )

For the last couple of courses I have been using a tool to generate simple natural language reports using  simple BDD Naming Styles. Just so everyone knows, the insipiration for this tool came from Scott Bellware and his tool SpecUnit. The only different between the tools is bdddoc is really just a categorization/reporting tools for your tests.

People who are already trying to adopt a more BDD oriented approach to writing their tests will find the tool useful for generating natural english reports from the testfixtures in your project.

If you run the tool against the prep exercise that I posted a while ago, you would get the following report.

To use the tool you simply add a reference to the bdddoc.dll from the project that contains your test. There is only one attribute that means anything of significance:

using System; namespace bdddoc.core { [AttributeUsage(AttributeTargets.Class)] public class ConcernAttribute : Attribute { public Type concerned_with { get; private set; } public ConcernAttribute(Type concern) { this.concerned_with = concern; } } }
 

With this attribute in hand all you have to do is mark up your test fixtures with the Concern attribute. Here is an example of one full test fixture.

using bdddoc.core; using bdddoc.spechelpers; using Observation = MbUnit.Framework.TestAttribute; namespace bdddoc.domain { [Concern(typeof (ConcernFactory))] public class when_a_concern_factory_is_told_to_create_a_concern_from_a_type : ContextSpecification<IConcernFactory> { private IConcern concern; private IObservationSpecification observation_specification; protected override void establish_context() { observation_specification = dependency<IObservationSpecification>(); observation_specification.setup_result(x => x.IsSatisfiedBy(null)).IgnoreArguments().Return(true); sut = create_sut(); } protected override void because() { concern = sut.create_concern_from(typeof (when_a_decimal_is_told_to_subtract_itself_to_another_number), observation_specification); } [Observation] public void should_create_a_concern_with_the_correct_bdd_style_name() { concern.name.should_be_equal_to(typeof (when_a_decimal_is_told_to_subtract_itself_to_another_number).Name.as_bdd_style_name()); } [Observation] public void should_create_a_concern_populated_with_all_of_the_observations_satisfied_by_the_specification() { concern.total_number_of_observations.should_be_equal_to(3); } protected override IConcernFactory create_sut() { return new ConcernFactory(); } } }

Don't be too put off by the naming style. Notice how I am making use of aliasing to alias the TestAttribute to use the word Observation. This eliminates the need to add another attribute to the bdddoc assembly. This also means that once you have placed the concern attribute on your test fixtures (keep in mind that the type argument for the constructor is the System Under Test) you will be able to run bdddoc again nunit, mbunit, or others (so far it has only been tested with mbunit and nunit).

When bdddoc is run (assuming that the class above was the only test fixture in the assembly, you would get the following output:

Concerns: 1 - Observations: 2

  • Behaviour of: ConcernFactory [ 1 Concern(s) , 2 Observation(s) ]
    • when a concern factory is told to create a concern from a type
      • should create a concern with the correct bdd style name
      • should create a concern populated with all of the observations satsified by the specification

This post is not going to talk about how I currently organize my contexts and observations (fixtures/tests respectively). After either the next course in London or the one in Dusseldorf in September, I am going to update the google code project for the Nothin But .Net store project to demonstrate some more complex tests that make use of mock, separating contexts etc.

Here is the build task that I use to run the report for my projects:

<target name="run.test.report" depends="setup.test">
    <exec program="bdddoc.console.exe"
        basedir="${third.party.tools.dir}\bdddoc\bin"
        workingdir="${build.artifacts.dir}"

        >
        <arg file="${build.artifacts.dir}\${nothinbutdotnetprep.lib}"/>
        <arg value="TestAttribute"/>
        <arg file="${build.artifacts.dir}\SpecReport.html"/>
    </exec>
</target>

 

The source code for the project can be downloaded here. I am going to place it up on my google code space, but currently I have having trouble with the account.

This project was built very quickly in a top down fashion, at the end of the day it is simply reflection and text writing. I just find working top down a very quick way to solve a problem, with the side effect of potentially more players brought into the mix (see the interfaces and classess!!). You can take a look at a lot of the tests to get a feel for how I am making use of AAA style testing and extension methods everyone to support more fluent testing. Feel free to change the code anywhere you see fit. If you add anything cool, please try and get it back to me to share with the rest of the community. Right now the actual report writer (SimpleHtmlReportWriter) is just that, very simple!! If anyone feels like submitting a writer that uses some XSL and some nice stylesheets, it would be great!!

To build the project just point a command prompt to the build folder and type the following command: build package. This will place the console runner and dll into the following folder build\latestpackage.

If you just want to get the binaries download this file and extract.

Develop With Passion!!

Comments [0] | | # 
Monday, August 25, 2008 3:08:50 AM (Mountain Standard Time, UTC-07:00) ( Tools )

If you have not yet at least spiked an application written with NHibernate, now is the time to at least give yourself a 30 minute block to spike it out.

Download from here and give yourself a couple of lunch hour breaks to see one way to free yourself from the shackles of 90% of your DB code.

 

Develop With Passion!!

Comments [1] | | # 
 Friday, August 22, 2008
Friday, August 22, 2008 7:35:48 AM (Mountain Standard Time, UTC-07:00) ( Insipration )

Thank you all very much for taking the time to let your votes be known!! The contest was announced on the 10th of June. If you want to read the top 5 entries again, check out the post here.

The winning entries in their respective orders (1st, 2nd, and 3rd) are:

 

Grand Prize Winner - Entry 1 - Matt

Matt wins  a spot in the Las Vegas edition of the Nothin But .Net training bootcamp,  along with a Visual Studio 2008 Team System and MSDN Premium one year subscription!!

2nd Prize Winner - Entry 2 - John

John wins the following: 

  • Books
    • The Pragmatic Programmer
    • Head First Design Patterns
    • Code Complete
    • Refactoring
    • Design Patterns
    • Test Driven Development By Example
    • CLR via C#
    • Working effectively with legacy code
    • Domain Driven Design
    • Agile Principles, Patterns, and Practices
  • Tools
    • ReSharper 4.0
    • DotTrace 3.1
    • TestDriven .Net
  • Visual Studio 2008 Team System and MSDN Premium one year subscription

3rd Prize Winner - Entry 4 - Freek

Freek wins a $140 amazon gift card.

 

Thank you to all of the people who took the time to participate in the contest!!

 

Develop With Passion!!

Comments [0] | | # 
 Wednesday, August 20, 2008
Wednesday, August 20, 2008 7:00:59 AM (Mountain Standard Time, UTC-07:00) ( General )

I am currently in the midst of reading an amazing book titled Lead Like Jesus. I just read a great paragraph that I feel called to share:

 

"Acting out of pride is like trying to blow up a balloon with a hole in it. It is lonely business requiring consistent effort with only temporary results that never satisfy or please anyone. Think of a time when you have blew up a balloon and there was a hole in it, and you will have a good mental image of what happens when you put your self-esteem in your performance and the opinions of others."

 

Currently I am only 1/4 way through the book, but I am already aware of the fact that the book is going to have a tremendous impact on me!!

 

Develop With Passion!!

Comments [0] | | # 
 Monday, August 18, 2008
Monday, August 18, 2008 7:00:55 AM (Mountain Standard Time, UTC-07:00) ( Training )

My good friend Jonathan Rasmusson is hosting iteration 2 of his great Agile Project Management course in Calgary, AB, Canada during the month of September. Here are the details:

Plan the work. Work the plan.

That has been the maxim taught in project management circles for the better part of 50 years.

If only it were that easy.

Reality has taught us that when we blindly following plans we:

    * miss deadlines
    * exceed budgets
    * and disappoint our customers

There is a better way, and it works!

Agile, Scrum, Extreme Programming, and Lean Software Development.

In this course I will show you how to:

    * setup
    * execute
    * and successfully wrap up your own agile project

We will cover:

    * agile project initiation
    * requirements gathering
    * estimation
    * planning
    * iteration mechanics
    * tracking
    * team building exercises / practices
    * roles and responsibilities
    * dealing with resistance
    * and effective project leadership

If you are looking to:

    * build trust with your customers
    * improve relationships with team members, and
    * gain a competitive advantage in the market place

Register Now

http://rasmusson.wordpress.com/services/agile-project-management-training/

Where

Petro-Canada Centre
150 6 Avenue SW
Calgary, Alberta

When

September 11-12, 2008


Cost
$1195 USD

As a former agile project lead, coach and mentor at ThoughtWorks, Jonathan was spent the greater part of the last ten years collecting, and distilling the best agile project management practices from around the world.

His experiences include leading agile projects at Microsoft, British Petroleum in the UK, AMP Capital in Sydney Australia and many other companies throughout Canada, the US, England, and Australia.

 

Develop With Passion!!

Comments [0] | | # 
 Sunday, August 17, 2008
Saturday, August 16, 2008 11:14:17 PM (Mountain Standard Time, UTC-07:00) ( Training )

I seem to be having some trouble with my blog posting software. Here it goes again!

The venue for the course has been changed to the London Marriott Hotel Regents Park.

The evening rates for people wishing to stay at this hotel are around 118 GBP a night.

You can register for the course here: http://www.acteva.com/booking.cfm?bevaID=164699

Develop With Passion!!

Comments [0] | | # 
 Friday, August 15, 2008
Friday, August 15, 2008 10:55:40 PM (Mountain Standard Time, UTC-07:00) ( Insipration )

This post is way overdue!! Chalk it up to disappearing into the vacation zone for a while!! The original contest was posted here.

In total, there were 16 entries. It took a bit of time to get through the entries (which were all incredible). After reviewing the entries please use the poll at the bottom of this post to vote for your favorite entry. The winners will be announced next Friday!!

 

Entry 1 - Matt Skriba

My Life in a Nutshell

My life begins in a small Midwestern town. I was born in the midst of a snow storm on December 29, 1977 to David and Mary Smith. When my parents brought me home from the hospital my siblings eagerly awaited. David Jr, Brad, and Laura had a “Welcome Kyle” sign in the doorway to greet their new brother. Just a day earlier they were arguing over whether they would be welcoming a new brother or sister.

My dad is a self employed dairy farmer. He co-owns our farm with his brother, Jerry. They inherited the farm from their father and mother, Frank and Margaret. And with it they also inherited a long fulfilling, yet tough career. Where I grew up, my entire family lives within a single square mile. Our dairy farm is located at my Uncle Jerry and Aunt Amy’s house. We have over 60 Holstein cattle. Everyone in my family works long and strenuous hours. Working on a dairy farm is a 365 day a year job. In addition to raising cattle, we plant corn, soybeans, wheat, and alfalfa, so the cows have their food and bedding. The cows must be milked every day. We milk our cows 2 times a day (3:00 am and 3:00 pm). Raising cattle is a lot like having permanent dependent children, you have got to be there to take care of them on a daily basis.

My mom was a homemaker, doing her very best to raise her 4 children. She was a deeply religious person. I was brought up devout catholic. We would never miss a Sunday mass at our local church. My mom’s life with my dad were her “best years.”

I would soon learn that being brought up in a loving and hard working family would not be as simple as it may seem. I remember as a small boy, as I was running around the house, that my mom was dropping dishes in the kitchen a lot. I also remember her being disoriented, resulting in her falling down and bruising herself. It turns out that my mom was not right, at all. She was diagnosed with Huntington's disease (HD).

HD is a fatal hereditary disease that destroys neurons in areas of the brain involved in the emotions, intellect, and movement. HD progresses without remission over 10 to 25 years and patients ultimately are unable to care for themselves. HD usually appears in middle age (30-50 years), but can develop in younger and older people. Any child, male or female, with one affected parent has a 50% chance of inheriting Huntington's disease.

We cared for my mom at home the best that we could. She eventually required 24 hour a day care due to her illness. Therefore, she unfortunately had to be placed in a nursing home. We visited her in the nursing home often. On November 7, 1995 my mom passed away, with my family and I by her side. I was only 16 years old. I don’t have any memories of having a healthy mom.

Life could only get better, right? Well, unfortunately not. While playing basketball for my junior varsity team I noticed I was getting “winded” very easily, so I asked my coach to take me out after only a minute into the game. I also noticed that I was very thirsty, and it was nothing for me to slug down a 2-liter of Mountain Dew. In addition, I was urinating frequently and had lost some weight (which I had attributed to being active and going through a growth spurt). After the basketball season was completed, I went to the doctor and he diagnosed me with type 1 diabetes.

Type 1 diabetes is usually diagnosed in children and young adults. In type 1 diabetes, the body does not produce insulin. Insulin is a hormone that is needed to convert sugar (glucose), starches and other food into energy needed for daily life. Having type 1 diabetes increases your risk for many serious complications. Some complications of type 1 diabetes include: heart disease, blindness, nerve damage, and kidney damage.

I soon found out that I would have to take insulin injections 3 times daily and test my blood sugar by pricking my finger at least that often.

My adolescent years were by far the most difficult time of my life. Everything I was brought to believe in was being challenged. It was hard to understand that my mom was going to be in a better place with God. It was even more difficult to contemplate the possibility that my siblings and I could inherit the cruel disease that took my mom’s life far too early (she was only 55, but had not been well for many years before she passed away). It was also difficult to deal with learning about diabetes and all of its complications. Those years were most certainly life-altering.

Horrible things can either make you or break you. I realized that I was dealt a tough hand. My hand was not the greatest, but I finally figured out that I needed to make the best of what I had been dealt. I could sit around and make excuses for myself or turn the negative into a positive life- altering experience. At this point in my life I met a girl named Molly, whom I’d later marry. After meeting Molly, I started to figure out that life is short. I’d need to work hard, to play hard. I soon started working as hard as I could academically. I went from a 3.0/4.0 grade point average (GPA) my freshman year in high school to a 3.7 GPA in my senior year. I got all 4.0s during my last 3 years of high school. My goal was to be in the top ten of my class. I fell a little short, at 15, but had come a long way.

I then continued my journey of academia at Michigan State University. I worked and supported myself, all while taking classes full time. MSU is where I found my love for C++ computer code. While in college, I attended Microsoft groups around campus. I remember when Microsoft did a preview on their new language, C#, and I was blown away. I graduated with a Bachelors of Science in Computer Science in 2002.

Shortly after college, I got my first job in .net doing web development with C# (1.0). After working for a year in mid-Michigan, I took a job in West Michigan. I was the only software engineer at this manufacturing company. I worked entirely by myself for 4 years. I worked 55 hours/week to keep on top of C# and SQL. Other people may have not “stuck it out” in that scenario, but I looked at it as an opportunity to gain experience and grow. I am the type of person who loves learning new things. I am not the type of person who throws in the towel without first trying something. I make no excuses. Too often I’ve worked with people in programming who just want to do the status quo. They don’t know any more than the very basics or care to try harder to make the best product possible. One time when I interviewed at a place here in West Michigan, I asked the programmer that was interviewing me if they used the 3-tiered architecture. He told me that it would take too long to do. I asked him if he had any experience in doing it that way. He said “No.” Funny, how could he know that it would take longer if he had never done it that way before?

I’ve also come to love .net. I worked alone at my job, so I turned to the internet to learn new things. I have listened to dnrtv podcasts. That is how I found your blog and episodes. I then used resharper at my job. I would soon have to leave my job at the manufacturing company in West Michigan because the company closed.

I then took a job working with a 55 developer team at EDS back in mid-Michigan. EDS had a large contract with the State Of Michigan to re-write the drivers-license system. It was an asp.net (C#) project. I worked within the Business Services Layer group for the project. The project was going south when I worked there. EDS did not have enough .net programmers for the project. A lot of the work force was older EDS employees who were completely new to .net. After a few months, EDS changed leadership, with Paul Kimmel stepping in as the architect. Paul Kimmel has written UML books and is also the chairman of the Greater Lansing User Group .Net (GLUGNET). I was in charge of unit testing within our BLL team. EDS then bought another company in Ohio, Saber Systems. Saber Systems already had 90% percent of the functionality of what we were developing, so that ended my stint at EDS. I was back on my way to West Michigan. I have taken a contract to hire job for a business auditing firm. I am working with a small development team of 2 people. We are working on asp.net, c#, and tsql.

How I’ve Inspired Others

1)

While working as a consultant at EDS, in Lansing Michigan, I worked with older programmers that did not have .net experience. My role was the lead unit tester for the BLL group. I had been given the responsibility of unit testing the 60,000 line code base for our project. The code base was written very poorly. It contained static classes with static functions and void return types on every single class that was in the project. There was gluttony of problems with this lack of design. There were no classes that I could create new instances of for the NUnit test. There were static methods being used which create isolation problems because they’re tied to everything the static method uses. Lastly, everything was done on the call stack with no return type. The parameter lists where huge: 10+.

I spoke with Paul Kimmel our architect about unit testing. I told Paul that I had been researching using mock frameworks for the unit tests. I told him that I was looking at using either Rhino or Type Mock for the tests. He told me that he did unit testing before, but he had never used the dependency injection method and mock objects. I was explaining to him the idea for a code example that I wrote. A few days later, Paul presented me with a book about unit testing, for me to keep. He told me that he liked the idea of using mocking objects. He wanted me to take charge of it for our team. I was really happy to introduce mocking and dependency injection to our team. I was able to show Paul something new, that was interesting and worthwhile. Paul Kimmel is a UML author and was keeping very busy as our project lead. I didn’t want to bother him with questions about new stuff without having examples to back up the work. He respected the fact that I took the time to learn and help make our team better.

2)

My wife, Molly, has said that I’ve inspired her as well: maybe not professionally, but personally. She was raised in a family that did not have a very strong relationship with God. Her parents attended church every now and then, but not regularly. After she had her Catholic confirmation in the 8th grade, her parents stopped going to church at all and the rocky foundation that they had started crumbled. After she met me, she began attending church with me more regularly again and her faith in God once again grew strong. Now that we have been married for 4 years and are considering the possibility of starting a family, we are going to ensure that our children will be raised in a loving household with ever-present Catholic values.

She knows what I have overcome and what I am faced with, yet I still live life to the fullest. She states that when she is feeling low, she thinks about how I have handled challenges in my life, and it makes her realize that there is no obstacle too big.

 

Entry 2 - John Miller

Software development is one of the few fields where, regardless of our experience, the amount we each individually have yet to learn will always out weight how much we already know. I'm still a young pup (been a full-time developer for 4 years now) and I have yet to reach a point in my relatively short career where I felt I held enough knowledge to slow down the learning process (nor do I expect to ever reach that point). Every day there's a new concept, pattern, framework, etc. discovered that gives us a new way to solve business problems in a more elegant manner. And that constant change and new discovery is what makes this field so exciting! It will never get dry and stale; there will always be something new out there to challenge us!


That thirst for improvement is incredibly contagious. I think when one person starts actively challenging themselves to continuously become better at their craft (regardless of the field), it affects those around them. On one of my moonlighting projects, I was leading a project with a couple of brand new to the field developers who were just starting to cut their teeth in web development. When I was brought onto the project, it was already starting to unravel. The scope was poorly defined and on a daily basis the client was coming up with new features that just had to be included in the version one release (which can create a stressful situation on a fixed bid project!). The two newbie developers were struggling to keep themselves afloat. I began working with each of them 5 or 6 hours each week, helping them work through some of the issues they were having. Our first few training sessions were geared around setting up a procedure for handling new feature requests from the client. Instead of coming back from a meeting and jumping into coding, I challenged them type out there notes and create mockups to send back to the client...just to be sure it was what they really wanted. While that wasn't a silver bullet, it did help reduce the amount of throw away code they wrote. That little bit of turnaround they were seeing from simply making a few process changes really seemed to boost their confidence and pretty soon they were doing their own research to find ways to bring in continuous feedback from their clients! It was amazing what they were able to accomplish once their attitude towards the project changed!


While a positive attitude is infectious, a bad attitude can be just as contagious. Prior to our weekly little pow-wows, they were working with a senior developer to help them learn where they could improve their code and overcome some of the obstacles they were facing. And while this developer was extremely intelligent, he was also very condescending in his replies to questions which made the younger guys dread coming him with questions.. One of the guys actually got to the point where he felt that he wasn't cut out for life as a programmer and was considering going back to school to learn a new trade. We decided to start having one on one sessions where the two of us took whatever his current challenge was and pieced together a solution using proven design techniques and after a while, you could almost see the light bulb turn on in his head. It was starting to sink in for him and as things were becoming clearer, he was getting more and more exciting. It's amazing how fast he was picking up new techniques once he started getting enjoyment out of what he was doing! To this day, he remains one of the most passionate developers I know. And he eventually did go back to school in his spare time (to continue his Computer Science degree!).


But we need to be careful that the drive to excel professionally remains in harmony with the other areas of our lives. In a field like this where there's so much left to learn, it can be really easy to neglect those around us. I personally struggled with this my first couple of years out of college. But we have to accept that no matter how much we take in, we're never going to be able to absorb it all. That doesn't mean we lower our goals or standards, but we need to be able to manage those goals in a way that enables us to enjoy our other passions whether that be our families, spirituality, sports, movies, etc. I'm sure we have all been given many different blessings in our lives and we were meant to enjoy all of them, not just one!!

Entry 3 - David Robbins

I wish that this contest were about how great the team I lead is, as they are who I hope to work with for the rest of my career.  They are dedicated, talented, and supportive of team and company goals, but most of all they are great individuals whose values extend beyond our technical objectives.

I direct a team 6 people from a variety of educational and business backgrounds.  To some extent we have individuals who have great experience with our company, but are still developing in areas of application development.  Some need to refresh some skills, while others are fresh on the quest to become better programmers.

I pride myself on my own ability to learn and implement solutions using a variety of resources and techniques, and many times I lead by example by jumping into a solution with a new tool and encourage people to flex and grow.  However, this has not been what has made us successful and spurred growth.  I lead by the Wolf's Credo:

"Respect the Elders;
Teach the Young;
Cooperate with the Pack"

We have team members who support legacy applications, yet I have found that their input with new processes or techniques to invaluable, and ask them their opinion first.  They have gone before us, and have great wisdom.  I also challenge them, and have seen them come alive with the new opportunities to solve issues with out of the box solutions.  Even when we have consultants and subject matter experts work with us, they have a say.

Many times I'll select a team member for a project who has no experience with a certain tool, pair up with them or with another senior team member, put them through a mini trial by fire and encourage them to fail in order to learn.

"Play When You Can;
Hunt When You Must;
Rest in Between"

I encourage people to read, discover, think, and try new ideas.  I have always pushed for "What's a new way to get rid of this problem?" or "How can we stack the game so we can win by doing less?"  It's great to see junior team members struggle with a concept, then come up with an idea that the more experienced amongst overlooked.  Many times we laugh at my dumb solutions - most of our meetings are filled with a great jocular irreverence.

"Share your affection;
Voice Your Feelings"

Going beyond the above phrase, there have been times when we have needed to pull together and in those moments that we all have faced, when it looks like it'll head South, my team works without backstabbing, coming to each other's aid without question.  Because I encourage honest discussion and that we honor each other as people, we don't have sniping, period.  This affection and respect for one another have enabled so many people to acquire new skills and develop together as a team, it amazes me.  That's why I think the contest should be about them.

Entry 4 - Freek Leemhuis

Okay, so I’m old. I’ll be 40 this year. I work with a lot of young and talented developers, and by some of them I’m regarded as somewhat of a guru, something I’ve never thought would happen until a few years ago.

I’ve always had a keen interest in computer technology, but it’s always been just one of many interests, and when it came to choosing a study I opted for a degree in Psychology at the University of Amsterdam. I’ve had some fabulous years there getting to know different ways to study the workings of the human mind, but when I started working in the field I was again drawn to technical aspects of it, and gradually I did more and more programming.

I moved to Scotland for love of the country, got married there and found a job in IT. I’ve enjoyed the years spent discovering what it meant to be a professional developer, but for a long time I’ve felt that having this different educational background left me playing catch-up with other developers. These guys had a formal education in Computer Science, so they really knew what they were talking about. Or so it seemed at the time. I assumed that I’d never be as good as these guys, so I did what was required to keep up with technology just enough to perform the daytime job of developing software, and spent a lot of free time, well, in the pub.

Things changed when, in the wake of the arrival of our daughter, we moved back to Holland, where jobs were hard to come by at the time. I joined a small software house working as an in-house developer. I had few sparring partners, missed the contact with end-users, and got into a bit of a rut.

I went for an interview for a large software firm, and was interviewed by Eric. To my surprise, he was really enthusiastic about me having the background in psychology.’ That’s fantastic!’, he said, ‘Do you realize how much Psychology is involved in software development?’. Having my kind of background made me stand out from other candidates, who had similar technological skills. It then dawned on me: I’ve got something to offer here, I’ve got a wealth of experience, and if I really try my best it might not be too late to make a ‘real’ career for myself.

I started working for Eric and from then on I took my job seriously, spent all of my free time educating myself in things like design patterns, agile software development and learning new tools and languages. At the ripe old age of 38 I was learning more than I ever did before, at amazing pace.

I hindsight, all I needed was someone to see the potential in me and have the confidence that I could realize that potential. I have since developed myself as a speaker, and I’ve given several sessions on ‘the psychology of programming’. I’ve become active in the developer community. Most of all, I’ve enjoyed coaching and mentoring young developers. I try to teach them the lessons that I’ve learned the hard way: you’re never too old to learn and if you really try, you can probably achieve more than you can imagine.

Entry 5 - Travis High

My story is really a sort of synopsis of a couple of life events, but paints a larger picture of how being positive and receptive to growing can not only improve your skills but the lives of others.

In December of 2004, I was graduating from college with an undergraduate degree in Computer Science. I had no prospects for employment, a fiancé I was to marry the coming fall, and no idea on whether I was going to remain in the small town I grew up in, or move on to a more metropolitan area in search of work. I had served an internship for a large financial services company a couple of months prior, and they expressed interest in bringing me on board as soon as they could get a position approved, but it had been a couple of months without contact, so I continued sending out resumes. It was a tough time due to the level of uncertainty, but fortunately, an opportunity presented itself out of nowhere for a database analyst position I had applied for, so I interviewed for it and landed the job. This presented me with local employment with a decent salary that would allow my future wife and I the freedom of living close to family if we chose.

It didn’t take long for me to realize after starting my new job that I wouldn’t be doing a great deal of programming, as I was going to be doing data catalog work against an old mainframe, something I had never tackled during my college years. Along with this, I was now a part of a seasoned DBA group that was not shy about picking apart developers who performed anything but optimal usage of the database. The group was comprised of a former programmer turned DBA, Kenny, who was very knowledgeable but tended to rip fellow programmers apart when they made mistakes, a fellow named Rod who was older and ran most of the office pools, and a man named Clark who was a little friendlier but kept to himself. Though I was feeling a little down at not being able to write code, I decided that I was going to make the most of my situation and pick up experience and skills in SQL from people who had made their living being experts at it. Since I had also recently decided to start following the Lord’s call in my life, I also knew it was my job to bring a positive light to a team that could be less than friendly.

Soon after I decided to take this new approach to work, I started putting up a couple small post-it notes in my section of the team cubicle that contained scriptures that were important to me and talked of humility, working joyfully, and caring for others. This was initially met with some subtle criticisms, but at least started to get everyone talking. I followed this up with compliments to my teammates for their help as well as showing them how their advice was helping me along. I tried to not only give credit where it was due, but to be humble enough to show my deference to them as the experts. I believe this was quite a different approach than they expected a kid fresh from college to take, and we started to bond as a cohesive unit. Shortly after, I was dubbed “The Kid”. I was building solid relationships with the guys, even Kenny, who started showing a vested interest in teaching me performance tuning tricks and gave me daily challenges in order to groom me as a future DBA.

A time came a little while later where Clark, who was not a spiritual person, casually mentioned his wife and daughter were taking a missions trip to an orphanage in Russia. He was half-heartedly asking for donations, and didn’t seem to expect much of a response. It was then quite a shock to him when I gave him a check for $100, and told him that I hoped his wife and daughter had a safe trip. He was taken aback at this offer, and wasn’t sure how to react. I could tell in that moment that he was really touched by this act of unexpected kindness from someone who had nothing to gain from such a gift. He made it a point to share with me pictures from their trip, and his interactions with me dramatically changed. Slowly, the group was not only teaching me things but sharing funny stories, and generally interacting with me in such a way that made work so much more enjoyable. They then started sending me to the local DB2 user’s group, where I started gaining additional insight into how databases were used in the real world.

Along with trying to foster an improved team environment, I also used my resources at work to help those in the community. Since I was volunteering at a local cold weather shelter and I was working for a company that sold athletic apparel, I decided to see if I could get them to donate some shoes to those at the shelter. (If you have never been to a shelter before, you’ll quickly realize that good shoes are among the most important things to have when you don’t have any other means of transportation.) Through some research and after asking the site director for donations, I was ultimately able to get a new pair of shoes for every person at the shelter. Words don’t accurately describe the way this brought smiles to so many people when I delivered them to the shelter. I immediately felt humbled at how little I cherish the many comforts I have been afforded and take for granted, when something like a new pair of shoes meant a great deal to someone in this situation. It was a feeling I will always remember. It wasn’t long after that when I married and a couple of months later was informed I would be a father. Life had changed from uncertain and stressful to cheerful and rewarding.

Ultimately, I did end up leaving my first job to take on the development position I was initially hoping for, but I took with me great memories and relationships that made an impact on my current team as well. Again I’m the “rookie” on a team of seasoned developers, but my skills are growing, and I’ve started to make an impact here as well. I started doing ASP.NET 1.1 development when I took the position, and had to learn C# after being a Java programmer in college. I have since worked to hone my skills, and becoming an agent for change.

I have recently started attending the Central Penn .NET user group, and have been going to Code Camp events both in Harrisburg and Philly. I act as a representative for our group, bringing back details and resources to improve not only my skills, but those of the rest of the group. I was also able to successfully lobby for .NET 2.0 training as well as an upgrade from VS2003 to VS2005. All of this worked to break down some barriers that come from having a junior developer on a senior development team, as we all started discussing new things we were learning, and I started to feel like I had something in common to discuss. I have now become a resource for new ideas and concepts as I attempt to take in as much .NET content as I can, but I humbly realize after seeing the abilities of others in the field such as JP that my skills still require a great deal of sharpening. The passion I have for developing .NET code has slowly started motivating the group to investigate things it hasn’t tackled before such as TDD, Agile, and XP. In the end, It is exciting to work with a new team, striving to increase my effectiveness as a developer as well as my capabilities as a positive influence. Though I am not sure this story is near amazing enough to warrant the truly awesome prize JP is offering, I hope it at least proves that every day you can make a difference in the lives of those around you, both as professionals and as people. It has been my experience that the differences you make when investing in people are extraordinary and mean just as much if not more than the mastery of our craft.

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

As you can imagine, the group filtering the entries had a hard task of coming up with the top 5!! All of the entries were truly awesome and I thank everyone for taking the time to enter their submissions!! Please complete the survey below to vote for the entry you like the most.

Which Entry Is Your Favourite





Which Entry Is Your Favourite





Develop With Passion!!

Comments [0] | | # 
 Thursday, August 14, 2008
Thursday, August 14, 2008 6:11:57 PM (Mountain Standard Time, UTC-07:00) ( Training )

After a couple of days of searching for a venue (at such short notice) the St. Bride Foundation has been selected. It is located at the following address:

ST BRIDE FOUNDATION

Bride Lane Fleet Street

London EC4Y 8EQ


If you want to find out more information about the venue check out the following website:


http://www.stbridefoundation.org/termsconditions.html


Because of the size of the venue (and shorter registration timeline) the registration limit for the course is going to be set at only 10 people. This will fall inline with the same class that occurred last year in London (which had about 10 people).


For more information on the course check out the following page: http://www.jpboodhoo.com/training.oo


To register for the course go here: http://www.acteva.com/booking.cfm?bevaID=164699


Develop With Passion!!

Comments [0] | | # 
Thursday, August 14, 2008 4:07:05 PM (Mountain Standard Time, UTC-07:00) ( Training )

As of this morning the venue for the course has been changed to the London Marriott Hotel Regents Park.

The evening rates for people wishing to stay at this hotel are around 118 GBP a night.

You can register for the course here: http://www.acteva.com/booking.cfm?bevaID=164699

Develop With Passion!!

Comments [0] | | # 
 Wednesday, August 13, 2008
Wednesday, August 13, 2008 4:18:21 PM (Mountain Standard Time, UTC-07:00) ( Family )

It has been a couple of weeks since the last update. And our first official mini-retirement is coming to a close.

In the last update we had just arrived in Orlando, Florida. This signaled the beginning of my official 1 month mini-retirement. The 2 weeks in Orlando were simple amazing. Both weeks consisted of lots park trekking. My family and I are particularly in love with Universal Studios. We much prefer it to DisneyWorld!! This was our second time to Orlando. The last time we came, even our oldest boys were not yet tall enough to ride many of the rides at Universal. It was a great surprise for them to be there this time and be able to go on all of the rides. It was a blast to ride the Dueling Dragons and Hulk with them!!

Our days for the first week in Orlando were long and action packed. Most evenings we would roll back into our hotel at 12:00AM or later!! The kids were loving being able to be awake with us until all hours!!

Our days for the second week were just as fun filled, we tried to dial down the pace a bit and spent much more time relaxing at the hotel pool and revisiting Universal Studios a lot!!

While at Orlando we managed to see the following parks:

  • -Seaworld Aquatica - An Amazing Waterpark
  • -Universal Studios - Both the Islands of Adventure and the Universal Parks
  • -Disney's Animal Kingdom
  • -Disney's Magic Kingdom
  • -Disney's Epcot
  • -Disney Quest (the longest 6 hours of my life!!)

My wife, my son Joshua, and I were also able to take in the amazing Cirque Du Soleil show called La Nouba. It was a truly amazing experience. We have made it our goal to now see a Cirque Du Soleil show in every city that it is offered.

For the first week of Orlando we had one set of good friends join us, and for the second week we had a different set of friends join us. It was great to be able to share that time with them.

We finished off the second week by taking in the show The Dark Knight. I was sure the movie could not live upto it's hype, but I was very wrong. The movie was simply amazing!!

We left Orlando on the 26th Of July and flew to the Dominican Republic. What a beautiful place. The first week of this visit was a working week for me as I was delivering a private training course to a local company. The second week in the Dominican consisted of putting in lots of Beach time, pool time, buffet time .... We definitely lost all sense of time!! It was truly a magical experience.

We flew back into Orlando last Saturday night and and were there until this past Tuesday. Our flight to the UK (gatwick) was scheduled to leave at 7:25PM, but it got delayed until 12:15AM!! Thankfully this gave us the opportunity to get our seating rearranged as originally they had the 6 of us split up all over the plane. We flew Virgin Atlantic and it was an absolutely amazing flight. Every person had their own TV in front of them with a wide