17. May 2009 18:19
In this post you will find my PowerPoint and source code I used for my presentation at Charlotte Alt.Net May meeting. I had a good time presenting this to the group even though it was very broad and shallow. I covered the basis on why you want to leverage tools and practices in a Lean Agile environment. I got into topics like Source Control, Unit Testing, Mocking, Continuous Integration and Automated UI Testing. Each of these topics could have been an entire 1 hour presentation on its own.
Here are the links to the tools that I talked about in the presentation:
Power Point “Tools for Agile Development: A Developer’s Perspective” http://www.protosystem.net/downloads/ToolsForAgileCharlotteAlt.Net/ToolsForAgile.ppt
NerdDinner solution with MSTests re-written as NUnit Tests and WatiN Automated UI Tests http://www.protosystem.net/downloads/ToolsForAgileCharlotteAlt.Net/NerdDinner_ToolsForAgileDev.zip
CI Factory modified solution that I used for creating a CI Build from scratch http://www.protosystem.net/downloads/ToolsForAgileCharlotteAlt.Net/CIFactory_ToolsForAgileDev.zip
10. March 2009 21:01
I added twitter posts to the FIRST FRC Field Management System, so that interested parties could get the results of a match in near real time. Since twitter is focused around sending small messages I thought it would be a great mechanism to notify team members when the status of the build changes. Most build solutions have a way already to do this, but they come in the form of an email or a custom program that sits in your tray waiting to notify you. Twitter messages on the other hand can be consumed many different ways (web, twitter client, cell phone etc). This gives great flexibility on how each team member decides on how he/she want to monitor the build process. In this blog post I will show you how you can add twitter build notifications to a build process.
First you should get a twitter account so you can tell your team members what account they should follow to get the notifications. You might want to set up your twitter account as private so you can manage who is allowed to follow. Also this brings up a good point as you should not send any sensitive data in your build message tweet because the messages are sent across the wire and anyone can intercept them.
Next go get the Yedda Twitter C# Library. This is a C# wrapper around the Twitter API. It is very easy to use. You can use the binary from the project or use the Twitter class that is part of the project.
All build processes that I have used (TFS, NANT, CCNET, and MSBUILD) allow for command line applications to be called from the build script. So we will use the Twitter.cs class found in the Yedda C# Library in a console application to expose it's capabilities of sending twitter updates. Go ahead and create the Console application and add the Twitter.cs class to it. Then in the Program.cs Main method write some code to parse a few command line options to pass along to the Twitter,Update method.
Example command line call to the executable:
tc -user twitterUserName -password twitterPassword -message "Build 22.214.171.124 Failed to compile"
Example tweet generated from the above command line:
Now all you have to do is put the new console executable in a place on your build box that is accessible by the automated build and change your build script to call it with the right message. You can make the tweet a little more informative as to why the build failed, or you can have the build tweet at certain key points of the process so you know exactly what step the build is on. Be creative but don't send too many messages or the team members will soon ignore all build tweets as they end up being annoying.
Possibilities for improvement
- You could make a twitter client that monitors the build tweets and it parses the message from the build and reacts differently based on if the build failed on a compiler error or a unit test. Maybe some static analysis failed but it isn't severe enough to grant immediate attention. The client might attempt to grab the team members attention more if the severity of the message is high enough.
- What about a twitter client that parses the messages and controls a traffic red light. Green is build passed. Red is build failed. Yellow is unit tests failed.
TwitterBuildNotification.zip (6.46 kb)
12. July 2006 01:41
del.icio.us Tags: Scrum
On my flight from Charlotte to Phoenix this week I listened to a number of podcasts. One of my favorites is Hanselminutes. Scott Hanselman talks about a lot of thins I am interested in.
In the Line of Scrumage podcast Scott talks about applying the Scrum agile process in his work place. Most of what he talked about are things that we have been using at JDA Software Group Inc. However Scott brings up an interesting point about applying Scrum processes to a 1 person team. I have often thought about this for some of my own personal projects. I often do small projects for myself and I end up playing the roles of product owner, business analyst, developer, and tester. So could I effectively use Scrum as a way to manage these projects? Well I have sort of attempted this on a couple projects and here is what I found out.
The part about building a backlog of stories that are features to get into a product and giving them a priority is something that has worked for me vary well. I find it easier to express the features that I wish to get into my projects as a story. The story format lets me capture the user, action and benefit in a quick step. If I had to spend a lot of time working out the functional documentation of a given feature I am afraid I would not end up completing the feature in a timely fashion. Even prioritizing the features helps me focus on what needs to be developed next.
However the process of story pointing features and planning them out over multiple sprints just does not seem to give me any real benefit. The main reason for this is that since these projects are personal projects they do not get a consistent amount of time dedicated to them. I might have 3 hours 1 week and 0 hours the next to dedicate to the project. So planning for sprints and trying to determine my velocity is somewhat difficult. This aspect of Scrum ends up not being part of my personal projects. This is ok for me though because I feel more organized by maintaining a backlog with priorities.