Friday, May 4, 2012

At Codeslingers last night, someone pulled out some coding Katas. For those who don’t know, a Kata is a coding exercise that is designed to practice your programming skills, rather than to solve a particular business problem. I was handed the classic “FizzBuzz” problem. The assignment:

Create a function that will print the integers from 1 to 100 with the following exceptions:

• If a number is divisible by 3, print the word “Fizz” in place of that number.
• If a number is divisible by 5, print the word “Buzz” in place of that number.
• If a number is divisible by both 3 and 5, print the word “FizzBuzz” in place of that number.

The output should look something like the following:

```1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16```

I started with a C# console application because that is the language with which I am most familiar. It was able to finish the following in under 2 minutes. It took me 5 minutes to write the unit tests.

```class Program
{
static void Main(string[] args)
{
for (int i = 1; i < 100; i++)
{
var p = FizzBuzz(i);
Console.WriteLine(p);
}
}

protected static string FizzBuzz(int i)
{
if (i % 15 == 0)
return "FizzBuzz";
if (i % 3 == 0)
return "Fizz";
if (i % 5 == 0)
return "Buzz";
return i.ToString();
}
}```

I only occasionally code in JavaScript, so I tackled that language next. Someone recommended using http://jsfiddle.net/
as an online IDE for writing and sharing JavaScript, so I tried it and liked it. Of course, JavaScript is a dynamic language and one of my big challenges was spelling things correctly without all the help Visual Studio provides when writing in a statically-typed language. In my case, I misspelled the id of a div, which cost me at least 15 minutes. I created the following boilerplate HTML:

```<html>
<body>
<div id="fizzbuzz"></div>
</body>
</html>```

Then, I used the following JavaScript (plus a bit of jQuery) to output the FizzBuzz results:

```for (i = 1; i <= 100; i++) {
\$("#fizzbuzz").append(function() {
var newLine = i;
if (i % 3 === 0) {
newLine = "Fizz";
}
if (i % 5 === 0) {
newLine = "Buzz";
}
if (i % 15 === 0) {
newLine = "FizzBuzz";
}
var newDiv = \$("<div>").text(newLine);
return newDiv;
});
}```

A simple program like this provides a fun way to practice an old language and to learn a new language. Next up, I’ll try this program with F# and Ruby, since I have very little experience with these languages.

Friday, May 4, 2012 12:40:00 AM (GMT Daylight Time, UTC+01:00)
Wednesday, May 2, 2012

Wednesday, May 2, 2012 5:56:00 PM (GMT Daylight Time, UTC+01:00)
Monday, April 30, 2012

Monday, April 30, 2012 3:00:00 PM (GMT Daylight Time, UTC+01:00)
Sunday, April 29, 2012

Here is a video of Seth Juarez's Machine Learning presentation at the Great Lakes Area .NET User Group in January 2012.

Sunday, April 29, 2012 6:58:00 PM (GMT Daylight Time, UTC+01:00)

Here is a video of Sarah Dutkiewicz’s Powershell presentation from the February 2012 Great Lakes Area .NET User Group (GANG) meeting.

Sunday, April 29, 2012 3:01:00 PM (GMT Daylight Time, UTC+01:00)
Saturday, April 28, 2012

Here is the video of Glenn Block’s presentation at the November 2011 Great Lakes Area .NET User Group (GANG) meeting. Glenn described his 2 latest projects: Web API and node.js.

Saturday, April 28, 2012 3:59:00 PM (GMT Daylight Time, UTC+01:00)
Friday, April 27, 2012

Here is Richard Campbell’s September 2009 presentation at the Great Lakes Area .NET User Group (GANG). Richard described what developers can do to make their ASP.NET applications more scalable.

Friday, April 27, 2012 3:13:00 PM (GMT Daylight Time, UTC+01:00)
Wednesday, April 25, 2012

Episode 208

Wednesday, April 25, 2012 7:10:00 PM (GMT Daylight Time, UTC+01:00)
Monday, April 23, 2012

Episode 207

Monday, April 23, 2012 9:37:00 PM (GMT Daylight Time, UTC+01:00)
Sunday, April 22, 2012

This year, Michael Eaton and his colleagues hosted the 4th annual Kalamazoo X conference. I have attended all 4 years and I have to say this was the best one. For those who haven’t yet heard of Kalamazoo X, it is a conference targeted at software developers, but the topics focus on the softer skills (i.e., the non-technical skills) required in your career. Each presentation is only 30 minutes long, which keeps things moving very rapidly. A single track provides a shared experience for all attendees. Every presentation was excellent and the room was packed. Speakers would often reference a presentation from earlier in the day.

Below are my notes from the sessions I attended.

Joe O'Brien
People Patterns
Packed a lot of great ideas
Never seen a project fail for technical reasons.
Corollary: Never seen a project SUCCEED for technical reasons.

Laura Bergells
The People You Like the Least are the People You Need the Most
Teams require different personality types
Idea people (Putting the "Fun" in "DYSFUNCTIONAL") and rational people (Putting the "No" in "INNOVATION")

Suzan Bond
Intuition: Your Very Own Super Power
Learn to understand intuition and trust yourself.
Takes guts
OK to find ways to back up intuition.

Leon Gersing
Going Gonzo – an exploration of cultures in software development
Allow yourself to separate from the dominant culture and its associated dogma.
Drew inspiration from Hunter Thompson, Frank Zappa, and Georges Seurat.
"Most people doing Agile today are actually doing Waterfall with Agile terms. Agile is dead."
More important to be right than to be wise. Understand the problems you are solving.

Tim Wingfield
Watch Sir Ken Robinson's TED talk
Ask Why? Does my customer really need this feature?
Coding Katas: Practice how to code.
Need to build trust. Be honest.
Work/Life balance: You need to enjoy your career; not endure your career.

Justin Searls
The Mythical Team-Month
If you are going to fail, fail quickly.
We are conditioned to avoid failure
Finding great developers:
Most traits are non-technical
Look for one who can succeed without you.

Sunday, April 22, 2012 3:25:00 PM (GMT Daylight Time, UTC+01:00)