<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.lostechies.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Something Pithy (Steve Donie)</title><subtitle type="html">Herding Agile Cats</subtitle><id>http://www.lostechies.com/blogs/stevedonie/atom.aspx</id><link rel="alternate" type="text/html" href="http://www.lostechies.com/blogs/stevedonie/default.aspx" /><link rel="self" type="application/atom+xml" href="http://www.lostechies.com/blogs/stevedonie/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.30929.2835">Community Server</generator><updated>2008-11-21T14:48:00Z</updated><entry><title>Why a culture of quality matters</title><link rel="alternate" type="text/html" href="/blogs/stevedonie/archive/2009/04/27/why-a-culture-of-quality-matters.aspx" /><id>/blogs/stevedonie/archive/2009/04/27/why-a-culture-of-quality-matters.aspx</id><published>2009-04-27T19:12:17Z</published><updated>2009-04-27T19:12:17Z</updated><content type="html">&lt;p&gt;My company just recently started using ADP for processing our paychecks. So far, the core functions that ADP provides seem to work well, in that I do indeed get paid regularly. However, they have also provided us with access to their &amp;#39;web portal&amp;#39; (beware of portals - they may lead to another world!) that allows me to do things like update my w-4, change my address, or download PDFs of paystubs. Recently we have also started using other ADP provided websites for other HR-related functions including recruiting and a very badly done company directory. &lt;/p&gt; &lt;p&gt;The developers on my team have had a great time pointing out just how bad the usability on these sites are, and mentioned it to our HR person. Our director of HR is a wonderful person, and is doing a fantastic job for us, by the way. She said that she could pass our concerns along to ADP, but that we should document some of the problems. That is where I got stuck. There were so many problems, I wasn&amp;#39;t sure where to start. This morning, I started. &lt;/p&gt; &lt;p&gt;The task at hand was to acknowledge that I had read a certain company policy. I got email from HR:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;In order to meet ERISA requirements, all employees eligible for one of our plans (regardless of participation) must acknowledge receipt and understanding of the document – Plan Documents, Certificates of Coverage, Summary Plan Descriptions.  &lt;p&gt;I realize this may not be the highlight of our day, but it is an extremely important step in keeping our plans compliant.&amp;nbsp; &lt;p&gt;Here are the easy steps which should only take a couple of moments.  &lt;p&gt;Log on to our intranet site at &lt;a href="http://www.portal.adp.com"&gt;www.portal.adp.com&lt;/a&gt;  &lt;p&gt;Click on to the Resources tab – In the first column under Company Policy – follow instructions to acknowledge.  &lt;p&gt;Feel free to contact me with any questions or concerns regarding this document or logging on to the site.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Sounded easy enough. But it didn&amp;#39;t seem to be doing anything when I followed the instructions. Every time I clicked on the link, all I got was a PDF downloaded to my machine, and no indication that I had &amp;#39;acknowledged&amp;#39; anything. So we called HR for help. Part of the problem is that the website is explicitly &amp;quot;Internet Explorer 6.0 or higher&amp;quot; only. I typically use Firefox. So I switched to IE. Still not figuring it out. After I finally got through the 4 step workflow, I decided it was time for some feedback. &lt;/p&gt; &lt;p&gt;Here is the email I sent back to HR.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;As a general indication of the lack of quality in ADP websites, I found several bugs in the &amp;quot;acknowledge this policy document&amp;quot; workflow:  &lt;p&gt;1. Step 1 is to find the correct link to click. You are presented with 2 options - a very large link to a PDF document, or a very small link &amp;#39;click &lt;u&gt;here&lt;/u&gt; to acknowledge&amp;#39;. Basic web and usability guidelines say that you should use larger targets for more important operations, and that using the word &amp;#39;here&amp;#39; or &amp;#39;click here&amp;#39; as a link are bad practice. (see item #2 at &lt;a href="http://www.useit.com/alertbox/designmistakes.html"&gt;http://www.useit.com/alertbox/designmistakes.html&lt;/a&gt; Jakob Nielsen is a well-known author of several books on usability.)  &lt;p&gt;2. When clicking on the correct link, a page is presented that only works in Internet Explorer. Several of my co-workers don&amp;#39;t use Windows at all, so using Internet Explorer requires them to go to another machine.  &lt;p&gt;3. When the page is presented, Internet Explorer warns that some items are the page are secure and some are not. I would call this a bug.&amp;nbsp; &lt;p&gt;4. When clicking on the correct link in Internet Explorer, the document to be acknowledged is presented, but the &amp;quot;acknowledge&amp;quot; button is hidden at the bottom.  &lt;p&gt;5. After clicking the acknowledge button, a dialog is shown that has wording including a font change tag (I don&amp;#39;t have the exact text here, but it was something like &amp;quot;You have acknowledged that you have read the &amp;lt;font size=&amp;quot;4&amp;quot;&amp;gt;Policies of acknowledgment &amp;lt;/font&amp;gt;....&amp;quot;  &lt;p&gt;6. The dialog just mentioned ends with the phrase &amp;quot;Click OK to continue?&amp;quot; and the dialog has 2 buttons, OK and Cancel. It is unclear what the system would do if one pressed Cancel.&amp;nbsp; &lt;p&gt;7. The system indicates success by removing the ability to read the document you just acknowledged, rather than by listing all the company policies and indicating those that had been acknowledged and those that had not.&amp;nbsp; &lt;p&gt;This is sorta why I haven&amp;#39;t provided any feedback to ADP yet. There are so many problems, and my gut tells me that the company does not have a culture of quality, and any feedback I provide will do little or nothing to affect the culture. It may help in a few small areas, but the real problem is the company culture that allows things like this to ship.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;If anyone from ADP happens to read my blog, I would welcome comments on what the company culture is really like. I could be wrong.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;a href="http://www.dotnetkicks.com/kick/?title=Why+a+culture+of+quality+matters&amp;url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f04%2f27%2fwhy-a-culture-of-quality-matters.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f04%2f27%2fwhy-a-culture-of-quality-matters.aspx" border="0" alt="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=20636" width="1" height="1"&gt;</content><author><name>stevedonie</name><uri>http://www.lostechies.com/members/stevedonie/default.aspx</uri></author></entry><entry><title>Updated Release Burndown Spreadsheet Template</title><link rel="alternate" type="text/html" href="/blogs/stevedonie/archive/2009/03/26/updated-release-burndown-spreadsheet-template.aspx" /><id>/blogs/stevedonie/archive/2009/03/26/updated-release-burndown-spreadsheet-template.aspx</id><published>2009-03-26T22:20:00Z</published><updated>2009-03-26T22:20:00Z</updated><content type="html">&lt;p&gt;I mentioned this release burndown template in one of my earlier posts, but I have updated it quite a bit since then, so I am re-posting the link, along with some instructions.&lt;/p&gt;
&lt;p&gt;&lt;img alt="burndown chart" src="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/stevedonie/North-Dakota-Production-Loader_5F00_3354_5F00_image001.png" height="324" width="525" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="Download" href="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/stevedonie/Drillinginfo-Burndown-Template.xls"&gt;Download the spreadsheet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here are the instructions - which are also in the spreadsheet itself.&lt;/p&gt;
&lt;p&gt;This spreadsheet was evolved over several years, and incorporates work by Stefan Niejnhuis and Henrik Kniberg. It has been optimized for the process followed by a specific team, and while it can be used as a starting point for your own work, it should probably be adapted to fit oyur particular needs. I will try to describe some of the assumptions made so that customizing it can be done intelligently.&lt;br /&gt;&lt;br /&gt;Basic usage is to start by editing the Work Remaining sheet. Set cell A2 to set your starting date. It will automatically fill out the remaining dates. Note that my team uses one week iterations that start and end on a Tuesday. Cell A2 is therefore assumed to be a Monday. Next, switch to the Stories sheet and start filling in one row for each story. You have to manually fill in the Code#, which is a unique ID. I just use incrementing numbers. The Buttons for Code# and Importance sort the stories. I typically keep the stories sorted by importance, but when adding a new story I sort by code # so I can figure out what the next story number is. For each story, fill in Story name, size (T, S, M, L) which automatically fills in the points column based on the lookup on the lookups sheet. Fill in importance - these should be unique numbers, with the most important things having the highest numbers. Typically I start by using 100, 110, 120, etc. and going up, leaving gaps to make it easier to squeeze new items in between existing items. It is very important that items have unique importance numbers. Fill in the created date and perhaps comments. Stories that have code numbers but no estimates get highlighted in yellow. Stories that are estimated but not prioritized also get highlighted in yellow. &lt;br /&gt;&lt;br /&gt;For your day to day work, you will start by deciding on an arbitrary number of points you think you can do in one iteration. Sort the spreadsheet by importance, and start filling in the iteration column with &amp;#39;1&amp;#39; and watch the &amp;#39;points this iteration&amp;#39; cell until you reach your limit. As the iteration progresses, mark stories complete by filling in the &amp;#39;date completed&amp;#39; column and putting a &amp;#39;y&amp;#39; in the &amp;#39;Completed&amp;#39; column. If you decide to cut a story from this project, just put &amp;#39;cut&amp;#39; in the completed column. If you want to postpone a story to some future release, you can put &amp;#39;future&amp;#39; in the completed column. Each day after standup, update the work remaining page. Look at the numbers at the top right of the Stories page (Completed and remaining) and transcribe those to the correct row on the &amp;#39;work remaining&amp;#39; sheet. Watch your graph grow automagically. One thing that I do is to use Excel&amp;#39;s built-in &amp;#39;publish automatically when saving&amp;#39; functionality to publish the sheet and the graph to some location on my intranet.&lt;br /&gt;&lt;br /&gt;For following iterations, you will end the iteration by seeing how many points you completed over the past iteration (see the &amp;quot;Work Remaining&amp;quot; page, &amp;quot;5 day moving average velocity&amp;quot; and multiply that by 5. Assuming your team has the same capacity as the previous week, that is how many points you can commit to for the next iteration. &lt;br /&gt;&lt;br /&gt;On the Stories page, there are three buttons at the top left. The first is &amp;quot;Generate Index Cards&amp;quot;. Pressing this opens a dialog with a few options that should be self-explanatory. When you press the &amp;#39;generate index cards&amp;#39; button in the dialog, a macro will start that deletes the old cards page, then copies relevant information from the stories page into a new cards page, using the CardTemplate page as a template. Printing these on 8 1/2 x 11 paper using the current template will give 2 cards per page. We just cut those in half and track the weekly iteration on a bulletin board. I&amp;#39;ll blog about that sometime - keep your eye on http://stevedonie.lostechies.com/&lt;br /&gt;&lt;br /&gt;The other buttons on the stories page are &amp;quot;compact view&amp;quot; and &amp;quot;expanded view&amp;quot;. These are basically toggles between two different views. I use the compact view most often. When editing stories, I will switch to expanded view to make it a bit easier to type in the story notes and &amp;#39;how to demo&amp;#39; sections. &lt;br /&gt;&lt;br /&gt;Don&amp;#39;t get too obsessive about it - the burndown is not the project, it is just a tool.&lt;br /&gt;&lt;br /&gt;Note that this spreadsheet is a release-focused (rather than iteration-focused) burndown that has been created for the style of project that we work on, and may not be the best thing for you or your company. This was developed using Excel 2003, but is known to also work with Excel 2007. Also note that it does have macros, and that it is not signed. It comes with no warranty, expressed or implied. Use at your own risk. Your mileage may vary. Batteries not included. Do not mock happy fun ball. Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;a href="http://www.dotnetkicks.com/kick/?title=Updated+Release+Burndown+Spreadsheet+Template&amp;url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f03%2f26%2fupdated-release-burndown-spreadsheet-template.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f03%2f26%2fupdated-release-burndown-spreadsheet-template.aspx" border="0" alt="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=20034" width="1" height="1"&gt;</content><author><name>stevedonie</name><uri>http://www.lostechies.com/members/stevedonie/default.aspx</uri></author><category term="ProjectManagement" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/ProjectManagement/default.aspx" /><category term="agile" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/agile/default.aspx" /><category term="burndown" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/burndown/default.aspx" /><category term="scrum" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/scrum/default.aspx" /></entry><entry><title>Houston Alt.NET conference</title><link rel="alternate" type="text/html" href="/blogs/stevedonie/archive/2009/03/20/houston-alt-net-conference.aspx" /><id>/blogs/stevedonie/archive/2009/03/20/houston-alt-net-conference.aspx</id><published>2009-03-20T16:04:00Z</published><updated>2009-03-20T16:04:00Z</updated><content type="html">&lt;p&gt;Just in case you haven&amp;#39;t heard, the Houston Alt.NET conference is coming up in 2 weeks - there is still time to register.&lt;/p&gt;
&lt;p&gt;http://houston.altnetconf.com/home&lt;/p&gt;
&lt;p&gt;Now, I am primarily a&amp;nbsp; Java developer, but I attended the first Alt.NET conference in Austin a couple of years ago, and what was &amp;#39;sort of&amp;#39; the 2nd Alt.NET conference in Austin (aka KaizenConf). Both were just awesome events. The people that show up to these sorts of events are all people who are passionate about the craft of software and who take the time out of their lives to be continuous learners. There should always be a balance between work and life - I believe very strongly in spending lots of time with my family. But if you possibly can, I highly recommend coming. You won&amp;#39;t be disappointed. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;a href="http://www.dotnetkicks.com/kick/?title=Houston+Alt.NET+conference&amp;url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f03%2f20%2fhouston-alt-net-conference.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f03%2f20%2fhouston-alt-net-conference.aspx" border="0" alt="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=19963" width="1" height="1"&gt;</content><author><name>stevedonie</name><uri>http://www.lostechies.com/members/stevedonie/default.aspx</uri></author><category term="altnethouston" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/altnethouston/default.aspx" /></entry><entry><title>Looking for a new team member</title><link rel="alternate" type="text/html" href="/blogs/stevedonie/archive/2009/03/18/looking-for-a-new-team-member.aspx" /><id>/blogs/stevedonie/archive/2009/03/18/looking-for-a-new-team-member.aspx</id><published>2009-03-18T04:42:00Z</published><updated>2009-03-18T04:42:00Z</updated><content type="html">&lt;p&gt;&amp;lt;EDIT - this is long since filled, just in case you're wondering.&amp;gt;&lt;/p&gt;
&lt;p&gt;I have an immediate opening for a software developer.
Level of experience is not my primary criteria. I am more interested in
good object oriented design skills and a willingness and ability to
learn and work in a team environment.&lt;br /&gt;
&lt;br /&gt;&lt;strong&gt;About the company:&lt;/strong&gt; Drillinginfo is a smallish company (about 100
people). We gather data on the
domestic oil and gas industry and put it all into a big database with a
web front end with search, maps, etc. We sell subscriptions to
companies ranging from 1-2 man shops all the way up to ExxonMobil. In
the past few years, we have been growing at an annual rate of 30-40%.
This year we expect that to be lower, but still growing. The company is
about 9 years old, is privately held (no venture capitalists telling us
what we should do this quarter), and has been profitable for several
years. We offer a comprehensive benefits package including a 401K with
match, company-assisted health insurance, vacation, etc. The company is headquartered in
Austin, TX, on the south side of town near Loop 360 and MoPac. We have
a great office space with views of downtown, direct access to the
Barton Creek greenbelt, an exercise room, covered parking, and free
lunch once a week. &lt;br /&gt;
&lt;br /&gt;&lt;strong&gt;About the team:&lt;/strong&gt; I
lead up the data integration team that writes the loaders bringing new
data into the system. The team is 5 people, and we work in a large team
room. We believe very strongly in the principles described in the agile
manifesto, and use most of the XP technical practices along with Scrum
project management practices. The software is 99% Java, with some
groovy used
in a few select places. We use a lot of open source tools and believe
in contributing back to those projects where we can. The great thing
about working here are the smart people you'll get to work with, the
camaraderie of the team and the company, and the technical challenges
we run into daily.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;a href="http://www.dotnetkicks.com/kick/?title=Looking+for+a+new+team+member&amp;url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f03%2f18%2flooking-for-a-new-team-member.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f03%2f18%2flooking-for-a-new-team-member.aspx" border="0" alt="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=19929" width="1" height="1"&gt;</content><author><name>stevedonie</name><uri>http://www.lostechies.com/members/stevedonie/default.aspx</uri></author><category term="agile" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/agile/default.aspx" /><category term="jobs" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/jobs/default.aspx" /><category term="resume" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/resume/default.aspx" /></entry><entry><title>Refactoring project update #2</title><link rel="alternate" type="text/html" href="/blogs/stevedonie/archive/2009/02/18/refactoring-project-update-2.aspx" /><id>/blogs/stevedonie/archive/2009/02/18/refactoring-project-update-2.aspx</id><published>2009-02-18T15:35:20Z</published><updated>2009-02-18T15:35:20Z</updated><content type="html">&lt;p&gt; So, work on the refactoring project continues. We had a meeting with some of the key stakeholders, and came to an agreement between everyone that we should strive for several small releases. Our first release goal is fairly modest, and actually removes some little-used functionality in the system. We&amp;#39;re starting by setting up an end-to-end automated smoke test of the system. All of this is being automated using Hudson as our CI server. We approached the problem sort of like we would TDD, but in a larger context. Step one was to imagine what we wanted the end result to look like. Something like &amp;quot;Whenever a code change is checked in, we want to create a deployable packaged loader, save that artifact somewhere, then run a smoke test of that packaged artifact&amp;quot;. That led to us looking at the packaging and artifact repository system we had been using. We had been using a system very similar to what I described in a &lt;a href="http://donie.homeip.net:8080/pebble/Steve/2005/12/28/1135786642478.html" target="_blank"&gt;post at my old blog&lt;/a&gt; in which built artifacts were checked into subversion. There were some issues with that system, and we&amp;#39;ve been wanting to move more towards a maven style of managing dependencies and build artifacts, so we spent a day or so getting that set up. On a side note, maven can be a pain in the butt.&lt;/p&gt; &lt;p&gt;So following up on my previous post regarding Hudson and CCTray, we now have all good builds!&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/stevedonie/HudsonAllGood.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="218" alt="HudsonAllGood" src="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/stevedonie/HudsonAllGood_5F00_thumb.png" width="505" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;Our next step is to get some FitNesse tests around some of the data validation aspects of this loader. The current loader is a bit rigid about how it does things - it uses exceptions for flow control (blech!) and just dies completely if there is any problem with the incoming data. The folks who run the loader have found this &amp;#39;feature&amp;#39; a bit annoying. They run the loader and after running for an hour or so, it will die because of one problem. One of the new features we are adding is the auditing system we have developed for our previous loader projects, so problems get recorded in a standard format, but the loader can continue on with its work, loading the items that are valid, and skipping those that are not. The audit report is then sent back to our data entry group so that they either add to or correct the incoming data. We&amp;#39;ll also set up some additional validations on the data entry side to catch the problems earlier.  &lt;blockquote dir="ltr" style="margin-right:0px;"&gt;&lt;/blockquote&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;a href="http://www.dotnetkicks.com/kick/?title=Refactoring+project+update+%232&amp;url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f02%2f18%2frefactoring-project-update-2.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f02%2f18%2frefactoring-project-update-2.aspx" border="0" alt="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=18096" width="1" height="1"&gt;</content><author><name>stevedonie</name><uri>http://www.lostechies.com/members/stevedonie/default.aspx</uri></author><category term="retrospective" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/retrospective/default.aspx" /><category term="ProjectManagement" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/ProjectManagement/default.aspx" /><category term="testing" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/testing/default.aspx" /><category term="Continuous Integration" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/Continuous+Integration/default.aspx" /></entry><entry><title>CCTray with Hudson</title><link rel="alternate" type="text/html" href="/blogs/stevedonie/archive/2009/02/09/cctray-with-hudson.aspx" /><id>/blogs/stevedonie/archive/2009/02/09/cctray-with-hudson.aspx</id><published>2009-02-09T15:42:12Z</published><updated>2009-02-09T15:42:12Z</updated><content type="html">&lt;p&gt;Hurrah! &lt;a href="http://testinfected.blogspot.com/" target="_blank"&gt;Eric Anderson&lt;/a&gt; did some research this weekend and we now have our CCTray lights and speech working again! &lt;/p&gt; &lt;p&gt;Back when we were using CruiseControl.java for our builds, I submitted some patches to the CC.net project to allow the &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET" target="_blank"&gt;CCTray&lt;/a&gt; application to properly control X10 build status lights, and also to support text-to-speech for announcing build status changes. We really liked having that. We had a couple of lava lamps set up in the center of the team room to show the status of our builds - that allows us to see the status of the build when we come into the room. The speech (It says things like &amp;quot;The Well Logs Refactor project has started building&amp;quot; and &amp;quot;The Well Logs refactor project reports Yet another successful build&amp;quot;) helped us stay hyper-aware of the state of things. Having a periodic announcement that a build is starting reinforces the &amp;#39;pace&amp;#39; of the team. &lt;/p&gt; &lt;p&gt;So, when we started using Hudson for our build server, we were disappointed that the rss format it shows didn&amp;#39;t work with Hudson. I looked around a bit, and while Hudson has its own &amp;#39;tray&amp;#39; application, it didn&amp;#39;t do the stuff I wanted. I spent a little time looking at Hudson source code, thinking about writing a plugin to support the CC xml format. I looked at doing another patch for CCTray to support reading the Hudson RSS or XMl or Atom feeds. But I never got very far on those projects. Getting actual project work done was always a higher priority. &lt;/p&gt; &lt;p&gt;But now it is working again, and there was much rejoicing in the team room this morning. In order to spread the word that Hudson does output CCTray compatible xml, I am writing this post. The magic URL to enter into CCTray is http://hudsonserver:port/cc.xml and is described more fully on the &lt;a href="http://hudson.gotdns.com/wiki/display/HUDSON/Monitoring+Hudson" target="_blank"&gt;Hudson Wiki&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Here is a picture of our newest build light setup:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/stevedonie/DCFN0004.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="184" alt="DCFN0004" src="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/stevedonie/DCFN0004_5F00_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Yes, the build is broken! We&amp;#39;re creating a new smoke test at the moment, and fighting with Maven configuration. We&amp;#39;re also going to neaten up the cords Real Soon Now. &lt;/p&gt; &lt;p&gt;Here are the three X10 modules on the wall. Pretty ugly. Might be a weekend project to mount the modules inside the light fixture, so we can just have a single cord coming out. &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/stevedonie/Pic-036_5F00_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="184" alt="Pic 036" src="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/stevedonie/Pic-036_5F00_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;Finally, here is a pic of the team room - we have a long rectangular room, and mounted the lights on the short wall that is off the left edge of this photo.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/stevedonie/DCFN0003.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="184" alt="DCFN0003" src="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/stevedonie/DCFN0003_5F00_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Next thing for me will be a much simpler patch to CCTray to support three lights in X10. Currently it only supports &amp;#39;green&amp;#39; and &amp;#39;red&amp;#39;. I want to make it so that the yellow light also comes on while a build is in progress. So the color scheme would be:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Green only - all builds are good, nothing in progress&lt;/li&gt; &lt;li&gt;Green + Yellow - all builds are good, build in progress&lt;/li&gt; &lt;li&gt;Red only - at least one build is broken, nothing currently building&lt;/li&gt; &lt;li&gt;Red + Yellow - at least one build broken, build in progress.&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;a href="http://www.dotnetkicks.com/kick/?title=CCTray+with+Hudson&amp;url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f02%2f09%2fcctray-with-hudson.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f02%2f09%2fcctray-with-hudson.aspx" border="0" alt="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=16305" width="1" height="1"&gt;</content><author><name>stevedonie</name><uri>http://www.lostechies.com/members/stevedonie/default.aspx</uri></author></entry><entry><title>Starting a new project - refactoring an existing system</title><link rel="alternate" type="text/html" href="/blogs/stevedonie/archive/2009/02/05/starting-a-new-project-refactoring-an-existing-system.aspx" /><id>/blogs/stevedonie/archive/2009/02/05/starting-a-new-project-refactoring-an-existing-system.aspx</id><published>2009-02-05T20:07:30Z</published><updated>2009-02-05T20:07:30Z</updated><content type="html">&lt;p&gt;Well, the team is starting on a new project. Our company is in a situation that is probably familiar to many people. We have some existing code, we have data in the database, everything &amp;#39;sorta&amp;#39; works. But now we want to add some new functionality, and there is fear. Fear that changes to the existing system will break things that currently work. &lt;/p&gt; &lt;p&gt;So far we have spent about a month trying to figure out the existing system. I spent some time meeting with developers who have worked on the existing code, spent lots of time meeting with the product owner, and lots of time looking at the code. It is definitely going to be a tricky problem. One of the most difficult things for me has been trying to work this project in an agile method. We have created stories and added them to a backlog, but a lot of them are very vague - &amp;quot;Understand and document Document table&amp;quot; is one example. &lt;/p&gt; &lt;p&gt;Here are some of the challenges we have already identified:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The whole system is basically a document management system that stores scanned images (Well Logs) and data about those well logs.&lt;/li&gt; &lt;li&gt;The system is comprised of loaders that read data coming from somewhere else that evaluate the data and then store the meta data in the database and the files on a fileserver.&lt;/li&gt; &lt;li&gt;Right now, there are at least 3 loaders in active use, each of which is similar to the others, but with a lot of copy-paste code reuse.&lt;/li&gt; &lt;li&gt;The database schema has a concept of a generic document, but has been &amp;#39;polluted&amp;#39; over time with well log specific columns.&lt;/li&gt; &lt;li&gt;The is very little of the SOLID principles in use - we have jsp&amp;#39;s that do presentation, database queries, and filesystem operations, for example.&lt;/li&gt; &lt;li&gt;There are very few tests of the existing system.&lt;/li&gt; &lt;li&gt;The document management system is fairly central to the company, and manages much more than just the well logs, so any changes made for well logs have to take other documents into account also.&lt;/li&gt; &lt;li&gt;There is a pricing system in place that charges customers for downloading the logs (naturally, with duplicated logic in various places).&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;One key thing we are trying to keep in mind as we work on this project is that we want to deliver business value as quickly as possible, but we also want to improve the system and reduce development effort, as we are fairly certain that there will be additional features and datasets to process in the future. So we&amp;#39;re trying to strike a balance between a full rewrite of large parts of the system and shipping something that provides value quickly. &lt;/p&gt; &lt;p&gt;I&amp;#39;ll keep writing as we progress on this project. It has definitely been one of the more difficult things I have ever taken on. I&amp;#39;d welcome anyone&amp;#39;s feedback on how they have taken on similar projects.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;a href="http://www.dotnetkicks.com/kick/?title=Starting+a+new+project+-+refactoring+an+existing+system&amp;url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f02%2f05%2fstarting-a-new-project-refactoring-an-existing-system.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2009%2f02%2f05%2fstarting-a-new-project-refactoring-an-existing-system.aspx" border="0" alt="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=15731" width="1" height="1"&gt;</content><author><name>stevedonie</name><uri>http://www.lostechies.com/members/stevedonie/default.aspx</uri></author></entry><entry><title>Break out the popcorn, it's movie time!</title><link rel="alternate" type="text/html" href="/blogs/stevedonie/archive/2008/11/25/break-out-the-popcorn-it-s-movie-time.aspx" /><id>/blogs/stevedonie/archive/2008/11/25/break-out-the-popcorn-it-s-movie-time.aspx</id><published>2008-11-25T20:46:00Z</published><updated>2008-11-25T20:46:00Z</updated><content type="html">&lt;p&gt;My team just finished up our most recent project - we spent about 4 months writing what we call a loader. It is basically an automated process that loads data from one database into another. &lt;/p&gt;
&lt;p&gt;Over the past 2 years, as I have worked through several projects, I have created a spreadsheet that I use to keep track of our projects. One of the things it does is generate a release burndown chart. To help keep the rest of the company aware of our progress, I print that out every day or two and post it to our team room door. I also have Excel auto-publish the sheet, including the graph, to a webserver.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;As we finished up, I decided it would be fun to see what the chart looked like in animated form. I was pretty pleased with the outcome of the project as we had been able to do several Good Things: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We were able to maintain a very consistent overall average velocity.&amp;nbsp; &lt;/li&gt;
&lt;li&gt;We were able to give the product owner information he was able to use to make decisions on what features to include or cut, based on a desired release date. &lt;/li&gt;
&lt;li&gt;We were able to hit a release date without drama. &lt;/li&gt;
&lt;li&gt;At the end of the project as we discovered problems with the data, our analysis, and the program itself, we were able to show how various decisions would affect the project. &lt;/li&gt;
&lt;li&gt;It helped us to prevent feature creep - we had established credibility in the overall accuracy of our estimates and in our velocity.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So without further ado, here is a 6 minute analysis of the project using an animated burndown chart:&lt;/p&gt;
&lt;p&gt;(Please visit the site to view this media)&lt;/p&gt;
&lt;p&gt;




&lt;/p&gt;
&lt;p&gt;(If you don&amp;#39;t see the video embedded above, use the link to go over to YouTube)&lt;/p&gt;
&lt;p&gt;One of the good things that has come from doing this is that when I first sent out a link to it inside the company, several people came up to me afterwards to say that they had learned a lot from it. One of the best comments was from our director of marketing. He said that he finally understood why I had been posting these on my door. &lt;/p&gt;
&lt;p&gt;Educating everyone in the company about the benefits of agile software has been one of my most difficult challenges, and it feels like we are really making progress on that front. &lt;/p&gt;
&lt;p&gt;For those interested, the tools used to create this are an Excel spreadsheet I use for burndowns, Windows Movie Maker for putting the movie together, Paint.net for doing modifications to various frames in the movie, Audacity for sound recording and editing, and Context programmers editor for editing the script. Basic process was to start at the end of the project and copy the graph from the spreadsheet into Paint.net and then save it as a .png file with a filename like yyyyMMdd.png. I then imported all the .png files into Windows Movie Maker and dropped them on the timeline after setting the default time for photos as short as possible. Watching the movie a couple times gave me some ideas on the script, so I started writing the script, deciding that I wanted to start at the end, rewind backwards to the beginning, and then move forward. As a wrote the script I saw that I was going to need some explanatory graphics, so I worked in paint.net to create the grayscale versions and the color-highlighted versions of some of the frames. After some final tweaking of the script, I used Audacity to record myself reading it. I did a little bit of editing to remove some pops and one or two places where I had to re-read something. After writing down timing down information on the script, I went back into movie maker to add frames and size everything to match up with the audio.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;I&amp;#39;ve &lt;a href="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/stevedonie/Drillinginfo-Burndown-Template.xls" target="_blank"&gt;made the spreadsheet template available&lt;/a&gt; - this is the first time I have made it public, and I don&amp;#39;t currently have any documentation for it other than what is in this post.  &lt;/p&gt;
&lt;p&gt;Basic usage is to start by editing the Work Remaining sheet. Set cell A2 to set your starting date. It will automatically fill out the remaining dates. It is up to you to factor in vacations, etc. Next, switch to the Stories sheet and start filling in one row for each story. You have to manually fill in the Code#, which is a unique ID. I just use incrementing numbers. The Buttons for Code# and Iteration sort the stories. For each story, fill in Story name, size (T, S, M, L) which automatically fills in the points column based on the lookup on the lookups sheet. Fill in importance - these should be unique numbers, with the most important things having the highest numbers. Fill in the created date and perhaps comments. Stories that have code numbers but no estimates get highlighted in yellow.  &lt;/p&gt;
&lt;p&gt;To start the project, just decide on an arbitrary number of points you think you can do in one iteration (we use 1 week iterations). You&amp;#39;ve sorted by importance, so start filling in the iteration column with &amp;#39;1&amp;#39; and watch the &amp;#39;points this iteration&amp;#39; cell until you reach your limit. As the iteration progresses, mark stories complete by filling in the &amp;#39;date completed&amp;#39; column and putting a &amp;#39;y&amp;#39; in the &amp;#39;Completed&amp;#39; column. If you decide to cut a story from this release, just put &amp;#39;cut&amp;#39; in the completed column. Usually I will update the burndown right after standup. Look at the numbers at the top right (Completed and remaining) and transcribe those to the correct row on the &amp;#39;work remaining&amp;#39; sheet. Watch your graph grow automagically. Use the built-in &amp;#39;publish automatically when saving&amp;#39; functionality to publish the sheet and the graph to some location on your intrawebs. Bask in the adulation your peers and managers will heap upon you. Don&amp;#39;t get too obsessive about it - the burndown is not the project, it is just a tool. &lt;/p&gt;
&lt;p&gt;Note that this spreadsheet is a release-focused (rather than iteration-focused) burndown that has been created for the style of project that we work on, and may not be the best thing for you or your company. This was developed using Excel 2003, but is known to also work with Excel 2007. Also note that it does have macros, and that it is not signed. It comes with no warranty, expressed or implied. Use at your own risk. Your mileage may vary. Batteries not included. Do not mock happy fun ball. Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;a href="http://www.dotnetkicks.com/kick/?title=Break+out+the+popcorn%2c+it%27s+movie+time!&amp;url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2008%2f11%2f25%2fbreak-out-the-popcorn-it-s-movie-time.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2008%2f11%2f25%2fbreak-out-the-popcorn-it-s-movie-time.aspx" border="0" alt="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=7464" width="1" height="1"&gt;</content><author><name>stevedonie</name><uri>http://www.lostechies.com/members/stevedonie/default.aspx</uri></author><category term="retrospective" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/retrospective/default.aspx" /><category term="ProjectManagement" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/ProjectManagement/default.aspx" /><category term="agile" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/agile/default.aspx" /><category term="burndown" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/burndown/default.aspx" /><category term="analysis" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/analysis/default.aspx" /></entry><entry><title>newest Los Techie</title><link rel="alternate" type="text/html" href="/blogs/stevedonie/archive/2008/11/21/newest-los-techie.aspx" /><id>/blogs/stevedonie/archive/2008/11/21/newest-los-techie.aspx</id><published>2008-11-21T19:48:00Z</published><updated>2008-11-21T19:48:00Z</updated><content type="html">&lt;p&gt;Thanks to all the Los Techies for inviting me to join the group. For those who haven&amp;#39;t met me, I am software developer and team lead in Austin Texas. I currently work for Drillinginfo, a smallish company that gathers data about the domestic oil and gas industry and then sells it through a subscription-based website. I manage the Data Integration group, consisting of myself and 4 other developers. I&amp;#39;ve been here about 2 years, and have been working on converting the company from &amp;#39;slash and burn&amp;#39; development to a more disciplined Scrum/XP process. &lt;/p&gt;
&lt;p&gt;When I&amp;#39;m not writing software, I take photos, do woodworking, and play with my kids. I&amp;#39;ve recently started learning Tae-Kwon-Do with my youngest daughter, which has been really cool.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I have been blogging on and off since 2003 - first on blogger (&lt;a href="http://stevedonie.blogspot.com/" target="_blank"&gt;http://stevedonie.blogspot.com/&lt;/a&gt;)&amp;nbsp;and then on my own server (&lt;a title="Something Pithy" href="http://donie.endofinternet.org/pebble/Steve"&gt;Something Pithy&lt;/a&gt; at http://donie.endofinternet.org/pebble/Steve/ ). At the Austin Tech book club the other day I mentioned that I was having some technical difficulties with my blog, and John invited me to start posting here. I&amp;#39;m really excited to be a part of this great group of developers.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;a href="http://www.dotnetkicks.com/kick/?title=newest+Los+Techie&amp;url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2008%2f11%2f21%2fnewest-los-techie.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.lostechies.com%2fblogs%2fstevedonie%2farchive%2f2008%2f11%2f21%2fnewest-los-techie.aspx" border="0" alt="Kick It on DotNetKicks.com" /&gt;&lt;/a&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=7076" width="1" height="1"&gt;</content><author><name>stevedonie</name><uri>http://www.lostechies.com/members/stevedonie/default.aspx</uri></author><category term="welcome" scheme="http://www.lostechies.com/blogs/stevedonie/archive/tags/welcome/default.aspx" /></entry></feed>