Goodbye 2008, welcome 2009!


I was going to write my standard end of the year wrap-up post, but given some recent events, I want to look forward rather than back.  Of course, after saying that, I do want to briefly talk about the last few days of 2008. :-)

If you follow me on twitter, you saw this tweet on Sunday:

"Been at the hospital since 2:30am (ER). Was admitted around 6:30am and will be here for the next 2 days because of this http://is.gd/dRbM"

On Tuesday morning around 9:15, my gallbladder was removed by an excellent surgical team and then I spent the next 24 hours recovering.  During this time, I was taken care of by a great nursing staff, including someone I graduated high school with. :-)  I was discharged on Wednesday morning and then I spent New Year's Eve with my wife, kids and some friends playing games.  It's been a crazy few days, but thankfully things are finally getting back to normal. 

I'm really looking forward to 2009.  In the short term, I'm looking forward to attending Codemash next week and seeing all my friends again.  In the longer term, the latter half of 2008 has kept me extremely busy and I hope to be just as busy all of 2009. I have an upcoming announcement regarding business, but it'll probably wait until next week.  I had a great time speaking last year and definitely plan to develop new topics and continue presenting at user groups and events throughout the year.

Technorati Tags: ,,

author: Michael Eaton | posted @ Saturday, January 03, 2009 12:26 PM | Feedback (3)

Blog changes


Due to a screwup at a domain registrar (not godaddy -- more in another post), I decided to move my blog to a new domain: http://mjeaton.net!  Please let me know if you find any issues.

The old feed is hosed, but will hopefully come back when the registrar pulls their head out of their ass. :-\ 

new feed

Update: 12/14/2008 @ 8:01 pm (Eastern): Old feed is up.


author: Michael Eaton | posted @ Sunday, December 14, 2008 6:41 PM | Feedback (0)

Twittering build status from cc.net


A few weeks ago, for no other reason than I had a few minutes to spare, I decided to setup a new twitter account that would be used to report build status on one of my projects.  I initially wanted to post the build status to my primary twitter account, but after mentioning it in a tweet (and receiving some negative feedback), I decided a separate account would be better.  After a quick search, I found this post by Thomas Freudenberg which described exactly what I needed: a twitter build publisher for CruiseControl.NET.  I did find a couple others in my search, but none as simple as 'ccnet.TwitterPublisher.plugin'.

After downloading the source, building it, copying the required assembly to my ccnet folder and adding the relevant section to my ccnet.config file, I was up and running.  I realized pretty quickly that I'd need to make some changes because out of the box, the tweet contains the project name and a link back to the ccnet dashboard.  Since this is tied to a client project I'm working on, all I really wanted to display was "build was successful" or "build failed".  If this was for a more public project, I'd definitely leave those other pieces of information in place.  I would like to add more information to the tweet, but I haven't quite figured out how to get the information I want.  For example, I'd love for the tweet to include # tests run / # tests passed.

Changing the code was actually really simple and if people care, I can post my changes. :-)

My build status twitter account.

Anyway, I've found that I'm definitely more careful before commit's because the last thing I want is to see "build failed" come across on twitter. :-)


author: Michael Eaton | posted @ Wednesday, December 10, 2008 9:40 PM | Feedback (1)

Balsamiq rocks!


I've heard about Balsamiq Mockups, but after seeing this tweet ("FYI, Balsamiq rocks for UI mock ups. Thanks @joeybeninghove for showing it to me!") by Joel, I had to take a look.

I spent about 15 minutes using it and love it!  I was in analysis paralysis last night and needed to break out of it.  Basically, I created a screen that sucks - it's fugly and not intuitive at all and I needed to fix it.  Instead of hacking around in Visual Studio trying to figure out what I wanted to do, I hit the Balsamiq site and very quickly laid out what I think I want the screen to be.  The cool thing is that the output looks like I sketched it in pencil. :-)

I've always been a big fan of pencil and paper for initial screen design because it helps me focus.  My problem with that method is that if I want to show anyone, I need to scan the paper and then email it -- this was no big deal up until my scanner died about a month ago. :-)  With Balsamiq, I can quickly and easily save the design to an image file.

I plan on using over the next couple of weeks to produce some prototypes for another client.

Check it out if you get some time!

Technorati Tags: ,,,

author: Michael Eaton | posted @ Wednesday, December 03, 2008 8:49 AM | Feedback (0)

Raleigh Code Camp - wrap-up


On Friday, November 14th, my family and I made the crazy 720 mile drive to Raleigh, North Carolina for the Code Camp.  We left around 5:30am and finally arrived at our hotel around 7pm.  The drive itself wasn't too bad until we hit some major fog somewhere in the southern part 100_1041of West Virginia/northern part of North Carolina.

After getting settled into our hotel, I headed to the speakers dinner where I hung out for a few hours with James, Justin, Kevin, Jayme, Dave, Nate, Derik, Dugald and many more super-smart developers.

Nate picked me up Saturday morning for the short ride to the venue.  I skipped the keynote to check out the open spaces area and catch up with friends I haven't seen for awhile (Mike Neel and Corey come to mind).  Since I was in the 2nd time slot of the day and Alan was giving his talking in the same room during the 1st time slot, I decided to hang out and see what he had to say about the DLR.  Due to 100_1046some hardware issues, he ended up giving his talk on someone else's system, so some of the demos weren't quite ready, but overall, it was an outstanding talk.  I still don't "get" what dynamic languages buy me, but I'm sure I'll figure it out at some point.

My "Introduction to Castle ActiveRecord" talk went extremely well.  I had some excellent questions and it appears I inspired at least a few people to take a deeper look at Castle ActiveRecord.  Since that was the final event of the year for me, I'm going to find the time to screencast the session and post it.100_1049

The open spaces turned out really well.  The venue itself kinda sucked and the open spaces room required some reconfiguration, but the topics were solid and the conversations were top-notch.  I was a bit bummed to see the event come to an end because we were involved in a very passionate discussion about software estimation.  After the give-aways, a group of us ended up at a small irish pub for dinner and drinks.  It was here that the mother of all "name drop" 100_1050events took place. ;-)  Between Alan and Rachel, I think I heard more names dropped than at all other events combined.  ;-)

Around 9pm, a group of us headed over to Jayme's house where we talked, played some Xbox and hung out.  Good times and I really want to thank Jayme and his wife for allowing everyone to come over.  Since I knew I had a long drive the next day, Nate and I bailed around midnight.

We left for home around 9:30 Sunday morning and arrived home around midnight.  If I attend the next Raleigh Code Camp, I'm going to make sure I extend the trip and extra day or two so I can actually explore the area a bit. :-)

Technorati Tags: ,,

author: Michael Eaton | posted @ Monday, December 01, 2008 10:07 AM | Feedback (1)

Heading to N. Carolina for the Raleigh Code Camp


I'll be leaving Friday morning around 5am for the long drive to Raleigh.  The plan is to arrive around 5 or 6 and then hang out with friends for the evening.

I'm speaking (I'll be giving my "Introduction to Castle ActiveRecord" talk) during the second time slot on Saturday and then plan on spending the rest of the time with Alan, James, Nate and OMG, I can't forget Dave, in the open spaces.

Sunday will be spent driving back home, although I may attend the Shadowcamp in the morning.


author: Michael Eaton | posted @ Wednesday, November 12, 2008 3:42 PM | Feedback (5)

Getting started with NUnit's RowTest


Maybe I've been living under a rock, but I just found out that the latest versions of NUnit support [RowTest]!  Over the weekend, I was about to replace NUnit with mbUnit because I need [RowTest], but thankfully, after a bit of surfing, I found this post by David Hayden (dated December 2007).  David's post described an add-in for NUnit that has since been rolled into NUnit proper.

Step 1: Download / install NUnit version 2.4.7 or newer.

Step 2: Add a reference to NUnit.framework.dll and NUnit.framework.extensions.dll.

nunit.references

Step 3: Add using NUnit.Framework and using NUnit.Framework.Extensions to your test class.  I include SyntaxHelpers because I like using the .That(condition, Is.<foo>) syntax.

nunit.using

Step 4: Decorate your tests with [RowTest], add individual cases and add parameters to your test that match the data from the test cases.

[RowTest]
[Row("foo", false, true)]
[Row("", false, false)]
[Row(null, false, false)]
[Row("___-__-____", false, true)]
[Row("___-__-____", true, false)]
public void testRequiredFieldValidator(string data, bool ignoreChars, bool result)
{
    var rule = new RequiredFieldValidationRule("test field");
    rule.IgnoreMaskCharacters = ignoreChars;
    ValidationResult temp = rule.Validate(data, CultureInfo.CurrentCulture);
    Assert.That(temp.IsValid, Is.EqualTo(result));
}

Step 5: Run :-)

nunit.results.1

nunit.results.2

Notes: I did have to download the a new version of TestDriven.net, but other than that, it was a pretty simple process.

Technorati Tags: ,,

author: Michael Eaton | posted @ Monday, November 03, 2008 8:00 AM | Feedback (1)

Ann Arbor Day of .NET 2008


My pictures | Sarah's pictures

Another great Ann Arbor Day of .NET is in the books. 

While Ann Arbor is only a couple hours away, my family and I always make it a weekend away from home and this year was no different.  We pulled the kids out of school early and left town around 1pm.  We didn't feel too bad about pulling them out since we knew we were going to spend some of the afternoon at the Ann Arbor Hands On Museum.  After a nice, leisurely drive on US-12, we managed to hit downtown Ann Arbor around 3pm. :-\  Ugh.  I love walking around downtown, but the traffic at that time of day was killer.  After 10 minutes of trying to find a parking spot, we finally scored a nice spot directly across from the museum.

100_0670My kids absolutely love the museum and this visit definitely did not disappoint.  :-)  Because of my work with the museum before and during the Ann Arbor Give Camp, they were nice enough to let my family and I in for free.  While my kids were running around being crazy, I spent a few minutes with my primary contact from the Give Camp: Ann N.  During our conversation, I presented her with the check from "The Codestock / DevLink T-Shirt Challenge".  I had mentioned it to her a few weeks ago in email, but she had forgotten and was actually quite surprised. :-)

After the museum, we headed to our hotel for dinner.  Shortly after dinner, as my wife and kids headed to the pool, Sarah and I hooked up and drove to Mike Letterle's hotel to pick him up.  After a quick stop to drop his car off at a repair shop, the three of us headed to downtown Ann Arbor to meet up with Dave Giard, 100_0728 Nino, Matt Brewer and Joe Wirtley.  The original plan was for us to meet at Gratzi's, but that felt just a bit too "fancy" for us, so we bailed and headed a couple doors down to Conor O' Neills.  The service was slow, but that gave us more time to talk. 

To wrap up the night, me, Dave, Matt, Nino and Mike sat in a nearby coffee shop and talked.  Good times. :-)  I wish I could do this more often.

The next morning, I was up bright and early (wearing "The" Ratt t-shirt BTW) so I could catch a ride with Sarah (and pick Mike up as well).  Since Sarah and I were speaking in the first time slot of the day, we signed in and headed to our rooms for final preparation.

Once again, I gave my "Introduction to Castle ActiveRecord" talk.  I think the talk went extremely well, although at one point, I realized I was moving too fast and had to slow the pace down a bit.  I had some really good questions both during and after the talk and hopefully I answered them satisfactorily. ;-)  (note: My plan is to screencast this talk in the near future and post it.)

After my talk, I hit the speaker room to meet up with my friend Chris.  Chris was preparing to give his very first talk EVER and I wanted to see what I could to help him during his final preparation.  He was speaking in the final time slot of the Chris Roland and Mike Eatonday, and early in the day he seemed pretty at-ease.  I could see him get more nervous as the day progressed.  For a first-time speaker, I think he did pretty damn good.  Of course, I plan on talking to him this week to give him more feedback, but I really hope he continues to speak and develop this particular talk (SQL Server BI).

I floated between sessions most of the day.  I caught part of Carey Payette's WPF talk and actually came away with some ideas for the application I'm working on.  I also hit a little bit of Jay's Boo/DSL talk and Len's JQuery talk.  

Lunch, thank God, was pizza and not box lunches. ;-)  My hatred of boxed lunches is pretty well known, so I was definitely happy to see something different.  As expected, the conversations during lunch were awesome.  After lunch, I ran into a friend and former co-worker (Vinay) and caught up with him.  He started a new job a few months ago and it sounds like he's having a great time.  It's definitely a step up from where he was and I was glad to see he made the right decision.

I think the high-point of my day was a 30-minute conversation with Jim Holmes.  Jim is one of those guys that I'd love to talk to more often because I know I'd learn a ton from him. :-)  He definitely didn't disappoint on Saturday.  We talked about estimation and then I started rambling on about how difficult it is, as an independent developer, to keep track of all 100_0741 the tasks from multiple clients/multiple projects without using multiple applications.  Jim had some great ideas that I hope to pursue in the very near future (I'll try to blog about them).

I was really glad to see that Alan Barber made the trip up from Bowling Green.  Unfortunately, he had to leave right after the giveaways so I didn't get as much time to talk to him as I would have liked. Hopefully he had fun at the Halloween party he left us for. ;-)

After the end-of-day giveaways, we all headed to a local sports bar where we ate, drank, played pool  and talked for a few hours.  A huge thanks to Sogeti for picking up the tab for the after-party!

It was great seeing all my friends again...Dave, Dan, John, Jason, Jay, Jeff, Marty, John, Martin, Mark, Chris...god the list goes on, so if I missed you, cut me some slack. ;-) 

The organizers did a great job this year (again) and I can't wait until next year!


author: Michael Eaton | posted @ Monday, October 20, 2008 8:58 AM | Feedback (6)

Project: re-writing a VB6 app using .NET / WPF


As I mentioned in a previous post, on June 1, I started a new project that entails re-writing a VB6 desktop application.  I actually led the team in 2000 that wrote the original VB6 application, so I'm excited to be the one that's re-writing the application.  I wanted to give a little more detail about the project and some of the things I'm doing.

The original application took myself and 3-4 other developers about 6 months to deliver back in mid-2000.  The consulting firm I was working for at the time had a "process" and it was called Waterfall. ;-)  We spent weeks gathering requirements, a few more weeks on a "BDUF" (big design up front) before we finally got to writing code.  In the end, we generated a huge stack of paper that was looked at once and then ignored for the remainder of the project.

At the time, we followed Microsoft's guidance for creating client-server desktop applications (aka Windows DNA).  The user interface wasn't necessarily thin, but it wasn't exactly thick either.  It called into our business objects which, at the time of rollout, were hosted in Component Services (COM+).  Over the years (while another consultant was maintaining the application), it was decided that COM+ was unnecessary, so the business logic was removed from Component Services and re-located to each workstation that runs the application (currently  6-8 systems).

Besides that change (and a couple other minor enhancements), the application has remained pretty much untouched since we rolled it out in October 2000.  Even with 8-years of data, the application remains very snappy and stable.  There is one issue that appears at "random" times, but I think it's a display driver issue and not an application problem.  The end-users (most of whom were there when we developed the original application) are still happy, but are also looking forward to some enhancements.

As I mentioned in my previous post, I decided to go with C#/WPF.  This decision was made with input from my client and it was based on a few things: first, we (the client and I) wanted to get away from the plain old battleship gray application and make some usability improvements.  I saw WPF as being a good way to do that.  Third, my plan is to re-use/share some of the Xaml between the main application and a Silverlight-based application.  Finally, it's 2008 and I wanted to work with some cutting-edge technology. :-)

I've done a couple walkthroughs with some early prototypes and they seem to like it.  Time will tell of course.  I'm hoping to get a version on their desks soon and then get into the rhythm of releases every 2 weeks.  I want to reduce the amount of manual work they do as well as eliminate the work-arounds they've come up with over the years.  This is harder than it sounds because these particular users consider these things (work arounds, etc.) "normal".

Overall, I find this project to be really fun and exciting.  My next post will talk about some of the tools and technologies I'm using outside of WPF/C#.


author: Michael Eaton | posted @ Monday, October 13, 2008 8:02 AM | Feedback (1)

Recent and upcoming events


I recently spoke at two user groups: The West Michigan .Net Users Group in Grand Rapids and the Microsoft Developers of Southwest Michigan group in Kalamazoo.

On September 9th, I gave my "Introduction to Castle ActiveRecord" talk for the West Michigan group.  I went to Grand Rapids early that day and had lunch with some friends (Steve, Matt and Joel).  I wish I could have talked to them all day, but since they had to get back to work, I ended up spending most of my afternoon at a Panera trying to get a reliable internet connection.

That was my first time attending one of their user groups and I have to say, it was a nice experience.  The Watermark Country Club is a pretty nice venue.  The pizza was really good and it was nice to grab a drink before I gave my talk. ;-)  It felt strange having my old boss (Steve) in the audience, but beyond that the talk itself went pretty well.  My only complaint was that the projector could only do 800x600. :-\  That made some of my demos tough, but I got through it. 

On September 25, I opened up MDSM's 2008-2009 season with a brand new talk: ALT.NET, The Community and You.  I originally wanted to do a talk just on the community, but after talking to the group leader (Mark), I found out the group wanted to know about ALT.NET, so I decided to combine the two.  Actually, talking about alt.net was a great segue into the community in general. 

The alt.net portion of the discussion talked about the history of the "movement", but I really tried to focus on the positives, especially from the standpoint of David Laribee's original post.  I also talked about some of the principles and practices and then I jumped into how we as a community can drive change in the world of software development.  I finally talked about how each of us can help affect positive change within the larger community.  I enjoyed giving this talk and might work it into my rotation. :-)

I'm speaking at the upcoming Ann Arbor Day of .Net on October 18th.  This will cap off speaking in the heartland region for me this year, and once again, I'll be giving my "Introduction to Castle ActiveRecord" talk.  After the Ann Arbor event, I have a month of no events and then on November 15th I'll be attending the Raleigh Code Camp.  :-)  Originally, I was going to this event to help Alan and James with the Open Spaces event, but James said I should submit to speak, so it looks like I'll also be giving my "Introduction to Castle ActiveRecord" talk one last time this year.


author: Michael Eaton | posted @ Monday, October 06, 2008 7:25 AM | Feedback (0)

Maintenance project: baby steps


This is the first in what I hope will be a series of posts about my attempts to make this particular project better.

A couple months ago, I took over a pretty cool C#/WinForms project that deals with RFID scanning.  I was given the green light to refactor the application as needed, which is awesome because the application really needs it. :-)  I've been working on a new feature which consists of several data-entry screens and three reports.  The screens and reports are all hitting about a dozen new tables I added to the system.

One of the requirements of the application is that as new versions are installed at customer sites, it should be able to handle updating the local databases without the use of external scripts or setup applications.  Basically they want to be able to send an updated .exe and application .dll to the customer, have them run it and know that the local database schema has been updated (if needed).  While I have my own opinions on this, there are bigger fish to fry, so I decided to follow the existing method for database updates.

When I first dug into the code, I saw many, many methods that had hard-coded SQL in them for creating new database objects, altering existing objects, etc.  Ugh.  Here's an example of what I'm talking about:

string sqlCmd = "create table Accounts (" +
    "AccountID varchar(50) NOT NULL PRIMARY KEY," +
    "ClientName varchar(50) NULL)";

SqlCommand dcmd;
int rows;

dcmd = new SqlCommand(sqlCmd, dc);

try
{
    rows = (int)dcmd.ExecuteNonQuery();
}
catch (Exception e)
{
    // log the exception
}
 

Ok, now there are obviously more problems here than the hard-coded SQL, but that's not the point of this post. :-)

When the application starts, it connects to the database and checks the "VerInfo" table.  It grabs the "current" database version from this table and then executes "upgrade" code (like the code above).  It is smart enough to perform all the upgrades it needs in order to become completely current.

private void CheckToUpgrade()
{
    int version = GetDbVersion();

    if (version <= 102)
    {
    DbTo103();
    SetDbVersion(103, DateTime.Parse("6-1-2007 12:00:00 PM"), "Added Accounts Table");
    version = 103;
    }

    if (version <= 103)
    {
    DbTo104();
    SetDbVersion(104, DateTime.Parse("6-19-2007 12:00:00 PM"), "Added AccountID/ClientName field to Synch Table");
    version = 104;
    }

    if (version <= 104)
    {
    DbTo105();
    SetDbVersion(105, DateTime.Parse("6-21-2007 12:00:00 PM"), "Added SyncLog table");
    version = 105;
    }

    if (version <= 105)
    {
    DbTo106();
    SetDbVersion(106, DateTime.Parse("9-16-2008 12:00:00 PM"), "Added several new tables table to support Admin station.");
    version = 106;
    }
}

In the whole scheme of things, NOT the way I would have approached this particular problem, BUT I also need to work within the constraints of this client (and their clients).  They do NOT want external scripts that have to be manually executed.  Ok, I'm fine with that.  The application also doesn't have a setup because they want to easily do x-copy installs. 

Fine.  So, my solution to this particular problem (the hard-coding of SQL statements in the code) was to:

  • Take my SQL scripts that I already generate for checking in to svn and add them to my project as embedded resources.  This gets me away from hard-coding the SQL (and worrying about proper escaping, quote matching ,etc.) and allows me to easily change the scripts (either by hand or by modifying the objects in the database and re-scripting from the database).  It also allows me to do more such as checking to see if the object exists within the script itself.  As one of my reviewers pointed out, this is still "hard-coding", but honestly, isn't this better than hard-coding the actual "create" and "alter" statements? :-)
  • I created a method named "ExecuteSqlUsingSMOFromEmbeddedResource(string resourceName) and used SMO to execute the embedded scripts.  I used SMO (which was already referenced in the project) so I wouldn't have to worry about stripping "GO" statements from the scripts.  Yea, the method name is a bit verbose, but I'd rather see a long name like that than "execSQL".  I wanted to make it clear exactly what I was doing to any other devs that look at this code. :-)
private void ExecuteSqlUsingSMOFromResource(string resourceName)
{
    SqlConnection connection = this.dc; 
    Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(new ServerConnection(connection));
    if (server != null)
    {
        using (StreamReader s = new StreamReader(this.GetType().Assembly.GetManifestResourceStream(resourceName)))
        {
             string createScript;
             createScript = s.ReadToEnd();
             server.ConnectionContext.ExecuteNonQuery(createScript);
        }
    }
}

I actually feel a lot more comfortable with this solution.  I have control over the scripts, and if/when a table/object change is needed, I can make them in one place, script them out and call it good.  As for dependencies...well, right now I'm simply making sure objects are created in a specific order and then applying all indexes, etc. at the end.  It works well for my very limited scenario.

So, what do you think?  Good idea?  Is there a better way?  One of my reviewers mentioned migrator.net as an alternative, so I might look into that for future revisions.  Another mentioned a tool from Red Gate.  As the title of this post suggests, my solution is a bit better than the original, but it can still be improved.  It is a baby step toward a better, more robust solution.  What that final solution is remains to be seen. :-)


author: Michael Eaton | posted @ Thursday, October 02, 2008 8:36 AM | Feedback (6)

What I've been working on


Right around the first of June, I started a new project.  This is one that's been in the pipeline since last September or October.  After submitting a proposal near the end of November 2007, final approval was given near the middle of May and the official kick-off was June 1st (although our kick-off meeting didn't actually occur until June 3rd).  The project itself is pretty cool; it's a re-write of a VB6 application that I worked on in 2000.  When I led that team back in 2000, I never imagined I'd be re-writing the application 8 years later.  Cool stuff. :-)

The application itself has been pretty stable and the users have no major complaints, BUT new features are being requested, the possibility of this software being used at other offices combined with the fact that VB6 is "end of life" means a re-write is required.  This rewrite is giving me the opportunity to bring this application into the 21st century, both with the technology I'll be using as well as the look and feel of the application.

The decision has been made to forge ahead with C#/WPF and some ASP.NET thrown in for good measure. :-)  The cool thing is that I will be using the latest and greatest tools and technologies.  This means all the goodness that is .NET 3.5 combined with some really great open source tools.  My client has bought into the idea of improving the user interface /user experience and have given me a lot of leeway in that regard.  Early prototypes have met with good feedback and I'm moving along.

On top of that, I picked up a part-time gig that consists of maintaining an existing application that does RFID scanning.  In the last 2 months, that maintenance has included adding a pretty big feature to the application.  It's been a learning experience, especially since some of my team mates are in Europe. :-)  The original developer on the project is long-gone and I've been given permission to refactor as needed.  One of the first things I did was introduce Castle ActiveRecord for use with all of the new tables I added (for the new feature).  This has meant a huge boost to my productivity.

Anyway, this blog has been a bit quiet and I wanted to let everyone know why. :-)

Technorati Tags: ,,,

author: Michael Eaton | posted @ Wednesday, October 01, 2008 10:45 AM | Feedback (0)

Agile Summer Camp wrap-up


Pictures from the event

On September 5th and 6th, I joined about 20 other people at the Brighton Recreation Area in Brighton, MI for the Agile Summer Camp.  This camp was the brainchild of Josh Holmes and Chris Woodruff.  I was lucky enough to be brought into the planning a couple months ago, so instead of heading to Chicago for Codeapalooza like a lot of my colleagues, I spent 2 days talking, drinking, talking, walking, talking, drinking and talking. :-)

Friday night was supposed to be the opening circle, but we decided to postpone that until Saturday morning.  That didn't affect the quality of the conversations Friday night though!  It was really cool to sit with some super smart people and talk about software development.  I didn't got to bed until after 4am because I was so caught up in a conversation about TFS with Steve Andrews and a couple others. :-)  Good times!

Saturday brought the opening circle and a bunch of great sessions including an overview of agile methodologies, agile for the independent consultant and software complexity.  Martin Shoemaker did a great job keeping notes, so check them out. :-)

It was great to hang out with so many smart people.  It was really nice to be focused on the conversations and not on laptops, slides or code.  Everyone was concerned about phone batteries, so for the most part, people didn't even twitter during the event.

In the end, any pain of being without electricity or running water was overshadowed by the learning and the strengthening of friendships.  Good times. :-)

Technorati Tags: ,

author: Michael Eaton | posted @ Sunday, September 21, 2008 3:50 PM | Feedback (0)

DevLink Wrap-up


My pictures | alan's pictures | dave's pictures | sarah's pictures

This post is a long-time coming, but...

It's been a few weeks since I got home from DevLink and honestly, I'm still digesting the things I learned and the conversations I took part in.  A few weeks before the event, I was ready to cancel my trip, but after experiencing both the DevLink bus and the event itself, I am happy with my decision to go.

I had a great time and I'll definitely be going back next year.  The open spaces event run by Alan was AWESOME.  The after-hours hangout sessions with everyone ROCKED.  This community is AMAZING!  It's just too hard to put into words...so instead of a play-by-play recap of the bus and DevLink, I think it can best be summed up by Dave Giard's great slideshow.

 

Technorati Tags:

author: Michael Eaton | posted @ Friday, September 19, 2008 9:21 PM | Feedback (0)

Some new blogs you should check out


a view of the Marsh, Sights & Sounds of John Burns III.  - John is someone I met at the Ann Arbor Give Camp in July.  Since then, I have gotten to know John a bit better through twitter and through our involvement in the Microsoft Developers of Southwest Michigan user group.  He already has several great posts and I'm looking to many more.

Lets talk computer language! - Sirena is a really passionate student from Nashville that I met at DevLink.  Not only has she recently started blogging and twittering, she's in the process of starting a user group!  I'm looking forward to watching her blog grow.

Pinyination - After meeting Alyssa briefly at DevLink, so when I heard she started a blog, I had to check it out.  If her initial posts are any indication of where this blog is going, it'll stay on my subscribed list. :-) 

Technorati Tags:

author: Michael Eaton | posted @ Monday, September 15, 2008 2:49 PM | Feedback (0)

9/11 - 7 years later


It's amazing how quickly 7 years have gone by.  I still remember that day...hell, that entire week, so vividly.  I remember holding onto my 4-month old daughter as the towers fell and wondering to myself, "what kind of world have we brought her into."  I remember the long days and nights of watching the non-stop news coverage, trying to figure out what happened.  I remember feeling so helpless as the details began to unfold.

*sigh*

Michelle has a great write-up (as always).

Never forget.

Update: 9/11/2008 @ 9:31pm (EST) - my wife caught a mistake.  Our daughter was 4 MONTHS, not 4 years. ;-)  Not sure how that got through. :-)


author: Michael Eaton | posted @ Thursday, September 11, 2008 8:41 AM | Feedback (1)

The Codestock / DevLink T-shirt challenge wrap-up


As I posted here, here and here, I (with James' help) have been raising money for the Ann Arbor Hands-On Museum.  After some shipping issues kept me from following through at Codestock, I finally received the shirt the Monday before I left for DevLink

Instead of wearing it on the bus, I decided to wear it for the first day of DevLink.  As I was getting dressed that morning, I actually realized it was gonna be a bit tougher than I thought.  :-)  The cool thing is that it turned out to be a conversation starter throughout the day and into the evening.  As you can see, it appears to be a picture of the band Ratt.  If you look close, you'll see it's this picture (courtesy of James).

IMG_9484

Let me give everyone the background on this particular picture.  A few months ago I mentioned on twitter that I had never been to a concert.  I actually caught a lot of flack from people for that simple comment.  Keep in mind that during this twitter exchange, I NEVER mentioned anything about Ratt or wanting to see them. :-)

James, for whatever reason, decided to fire up Photoshop and add me to a picture of the band.  Even as the above twitter conversation was still going on, James twittered the picture.  It has since become a running joke with my friends and was even used as an icebreaker when I first met Sarah.

It still pops up on twitter and IRC every now and then, but now that I've turned the tables and actually raised some money for charity, I'm ok with it. :-)

Like I said, it was a conversation starter during DevLink and I enjoyed talking about it AND how it was being used to raise money for the museum.

So, finally, in the end, how much did I raise?  More than I expected, but not as much as I hoped.  Including James' donation of $125, I received a grand total of $365.  Not bad for the simple act of wearing a t-shirt. :-)  I'll be heading to Ann Arbor soon to hand them a check.  I hope to get a picture while I'm there.  If I do, I'll update this post.

Personally, I would love to see more of us do things like this to raise money for charities we care about.  It definitely feels good. :-)


author: Michael Eaton | posted @ Saturday, August 30, 2008 12:41 PM | Feedback (0)

The Codestock T-shirt challenge


As I mentioned in this post, James and I decided to raise some money for what I consider a very worthy charity: The Ann Arbor Hands-On Museum.  The plan was for James to bring a custom-made t-shirt to Codestock for me to wear.  The shirt, which was supposed to cause me some embarrassment during my talk, ended up not being delivered to James' house until *after* he left for Codestock.  We were both really disappointed, BUT there's some backstory I can share.

James originally tried to get the shirt made at zazzle.com, but for whatever reason, they rejected his design (copyright issues?).  He eventually got the shirt made at Cafepress, but even though he chose "2-day shipping", it took about 8 days for the shirt to be delivered.  I feel pretty bad about it because I did get quite a few donations and was really looking forward to "earning" them.  I even added a slide to my session deck that talked about it. :-\

We've decided to extend the challenge a bit.  He is sending the shirt to me sometime *before* I leave for DevLink.  My plan is to wear it on the DevLink bus (more on that in another post), although James suggested wearing it during the event.  We'll see how things go. :-)

So, no pictures yet, but I promise there will be. :-)

Oh, I should mention something else.  After the Codestock poker game, Dennis Burton donated his winnings to the "challenge"!  That was an additional $70 I wasn't expecting!  Thanks Dennis!

While I'd prefer everyone click on this donate buttonThe Codestock/DevLink T-Shirt Challenge - raising money for the Ann Arbor Hands-On Museumso I can collect all donations and then write the Museum one big check after DevLink, you may certainly skip that and simply donate directly to the museum using this link.  If you do donate directly to the museum, please leave a comment on this post. :-)  100% of the donations I receive will go directly to the museum.  If you have any questions, please use the contact link on my blog.

Technorati Tags: ,

author: Michael Eaton | posted @ Tuesday, August 12, 2008 3:14 PM | Feedback (1)

Codestock rocked!


My pictures | Alan's pictures | Jeff's pictures

Note: blog post about the T-shirt challenge is coming soon.

What a weekend!  Huge thanks to Mike Neel, Alan Stevens, Wally and whoever else helped organize and run Codestock!

It all started for me when I packed things in my neighbors car around 8:30am.  Since I was meeting Jason and Jamie in Toledo, my wife and neighbor decided to take all the kids to the Toledo Zoo after dropping me off.  It worked out really well, so while we were driving through Ohio, Kentucky and Tennessee, they were all enjoying the zoo. :-)

The three of us left Toledo right around 10:30am in the car Jason rented.  The rental was equipped with GPS, so after entering the address of the La Quinta in Knoxville, we headed out.  The drive down was pretty uneventful.  While we stopped once for gas and once for food, we arrived at the hotel just after 6.  dinnerAfter a quick check-in, we made our way to the restaurant (which was, thankfully, within walking distance of the hotel) and met up with a bunch of people.  I'm pretty sure we must have had over 20 at dinner.  It was awesome to finally meet James and Scott, although when Scott first introduced himself to me (only as "Scott"), it took me a couple minutes before I made the connection. ;-)  We had a great time at dinner, if not a just a bit too much to drink.

After dinner, a bunch of us headed over to the hotel's pool area and hung out, drinking and talking, until the hotel staff kicked us out asked us to leave.  That was around 10:20.  After that, we ended up on the second floor balcony, just 100_0016outside (and inside) Steve Andrews' room.  Thankfully, we were able to stay there until after 2am. :-)  I had a great talk with Robert Cain (Arcane Code), Scott Spradlin, Jim Wooley and Mark Watson.  There were some other really good discussions and I had a tough time leaving, but I knew the conversations would continue a few hours later at the event.

My alarm was set for 6:30, and since I didn't sleep too well to begin with, I was up and around by 7.  Jason, Jamie and I headed for the event sometime between 7:30 and 8.  While I was standing in line, I met Nathan Blevins (Nate and his team kicked ass at Give Camp last month, so it was great to meet him).  Check-in at the event went really smoothly, but I have to say, the keynote really felt like a Microsoft marketing speech even though it was given by Jeff Prosise from Wintellect.  Silverlight is cool, but I don't believe it's the game changer he described.

During the first time slot I attended most of James' session, "10 Open Source Tools You Should Use".  After that, I spent the rest of the day in the open spaces room for some really great discussions.  Chris Williams caught some on tape, but I don't know what the plan is for them.  I'd love to see them posted somewhere.  My talk was in the last time slot of the day, and while the room wasn't packed like it was for James, I think it went really well.  Hopefully those that attended agree. :-)

After my talk, it was time for the giveaways.  Once again, I didn't win the 360, but I did win a book, so it wasn't a total loss. :-)

After the giveaways, me, Jason, James, Justin, Scott, Kevin Hazzard, Jamie and Phil Japiski (did I miss anyone?) went to dinner instead of hitting the after-party.  To be honest, I think the after-party sounded kinda cool, but I was hungry and wanted more than hotdogs and chips.  After dinner, we headed over to 100_0129Alan's house for a few more hours of great conversations.  I ended up *not* drinking all night, but instead played poker with some great people including Jeff (he started the game), Jamie, Aaron, Amanda, Dennis, Amy, Rick, Dave and Jay.  I had a lot of fun, but expected to be out early.  I was definitely short-stacked through most of the game, but ended up hanging in and made it to the final 3. :-)  By that time the blinds were crazy-high, so it only took a couple hands before I was knocked out.  I was a bit disappointed, but at the same time, I got my money back for coming in 3rd. :-)  The heads-up game was between Dennis and Jeff with Dennis winning.

After the game, I went out and hung out with whoever was around the camp fire. :-) 

Jason, Jamie and I headed back to the hotel around 1:30am or so.  A few hours later (sometime around 9:30) we headed out for the trip back home.  I think we arrived in Toledo a bit before 5.

Overall, I had an awesome time at Codestock and I'll definitely go next year!  My biggest complaint? Not enough time to talk to everyone I wanted. :-\  So many smart people, so little time.

Technorati Tags: ,

author: Michael Eaton | posted @ Tuesday, August 12, 2008 1:53 PM | Feedback (1)

Codestock countdown, the Codestock T-shirt challenge and helping a great non-profit organization


Wow.  I can't believe it's August already.  Where did July go?

In a few short days I'll be jumping in a car and making the long drive down to Knoxville to speak at Codestock.  Of course, I'm not crazy enough to make the 9-hour trip by myself, so Friday morning I'll be driving to Toledo to meet up with Jason Follas.  I'm really looking forward to this event for several reasons.  Not only will this be my first trip to Tennessee, but I'll be meeting lots of great people.  It'll be great to finally meet James, Scott, Nathan and several other tweeps in person.  Of course, as I review the speaker list, I start to panic  a bit and wonder if they really meant to select me as a speaker. ;-)

Once again, I'll be doing my "An Introduction to Castle ActiveRecord, or Stop Writing CRUD!" talk.  Based on the recently-released schedule, it looks like I'll be speaking in the last timeslot of the day. :-)  That should make for an interesting day.  I'm making a few tweaks to my presentation and hope to record the talk.  The last time I tried to tape a session, it didn't turn out too well, but I'll certainly give it another try.  :-)

A few weeks ago, James approached me with an idea.  He said, "I'll donate 'x' dollars to the Ann Arbor Hands On Museum' IF you wear a t-shirt I'm having made during your presentation at Codestock."  After a little thought, I told him I'd do it. :-)  The t-shirt I'll be wearing will remain a surprise, but I will post pictures after the event.  When I mentioned this to several friends in IRC last week, they chimed in and said they'd be willing to donate some money as well.  Sweet!  In the spirit of helping a fantastic children's museum in Ann Arbor, I'd like to open this up to everyone.

I can say that the t-shirt will be in good taste, but it will be cause me a bit of embarrassment. ;-)  So, if you'd like to a) see me sweat just a little bit more during my presentation and b) help a great organization, please take a minute and donate what you can.  It's a great cause - the museum is an awesome place to take your kids for a few hours!

While I'd prefer everyone click on this donate buttonThe Codestock T-Shirt Challenge - raising money for the Ann Arbor Hands-On Museumso I can collect all donations and then write the Museum one big check after Codestock, you may certainly skip that and simply donate directly to the museum using this link.  If you do donate directly to the museum, please leave a comment on this post. :-)  100% of the donations I receive will go directly to the museum.  If you have any questions, please use the contact link on my blog.

Technorati Tags: ,,

author: Michael Eaton | posted @ Monday, August 04, 2008 9:27 AM | Feedback (1)

Inspired by...


Wow, so Josh called me out in his "Inspired by" post.  :-) 

When I first read his post and realized I needed to write about someone that inspires me, my first thought wasn't anyone in the technology field.  As I read further I realized he asked that we talk about someone from the community that inspires us.  So, I'm going to go above and beyond in this post and talk about two people that inspire me.

Inspiration #1

The first person I thought of when I read Josh's post is my long-time friend Wil (Wil doesn't blog anymore which is a real shame).  I've known Wil close to 20 years; we were friends in high school, he was the best man at my wedding and he continues to be there for me when times are tough.  I can only hope I'm as good a friend to him as he is to me.

Right after high school graduation (1991) Wil fulfilled his lifelong dream of becoming an infantryman in the United States Marine Corp.  While I was hanging out with my friends, going to college and having a good time, Wil was serving his country.  He was there when the United States closed our naval base in the Philippines.  He was in Somalia in 1993 (if I recall correctly, it was a few months before this) and Rwanda in 1994 to help evacuate American citizens.  When he returned home from active duty, he jumped straight into life as a student at MSU (James Madison College) and double majored in International Relations and Political Theory all while working some crappy jobs (management in restaurants, security, etc.)  Not only did he fulfill his dream of becoming a Marine, he came home and focused on his next goal and didn't let the small things get in the way.  He also continued to serve as a Marine in a Reserve unit.  The discipline he displays has always been an inspiration to me.

In 2003, Wil's Marine Corp Reserve unit was called up for duty in the Global War on Terrorism.  He put his life on hold and spent several months in the Horn of Africa performing counter-terrorist operations before coming home and resuming his life.  Honestly, when he was gone in the early 90's, I never worried.  When he was gone in 2003, I never worried.  Wil is, was and always will be a good Marine.  In 2006, now a Gunnery Sergeant, Wil was once again called up to serve, although this time his destination was a bit scarier: Iraq.  Wil was the first person I know to serve in Iraq and I have to say it scared the hell out of me.  I know people who did everything they could to get out of serving after September 11.  I still get angry when I think about the lengths some people went to avoid having to go (close family relations actually), but Wil didn't.  He knew he had an obligation to his country and to himself and he did his duty.  After 7 months in Iraq, Wil arrived safely back home in May 2007.  He takes his duty seriously and I am inspired by that.

After all that, I can add this: his loyalty to his Marines and to his friends inspires me.

What have they inspired you to do?

Wil has inspired me to stop worrying about the stuff that's out of my control.  He has inspired me to focus on the things that are important and not complain when things get tough. 

Who else have they inspired?

I would hope that Wil has inspired all of his Marines in some way, shape or form as well as his other friends and co-workers.

Inspiration #2

The second person I thought of is part of our software development community: James Avery.  While I've never met James in person (soon to be remedied at Codestock), James is an inspiration to me because he is a doer.  He not only talks the talk, he walks the walk.  I can look at sites like 22books.com and The Lounge or one of his two books on my bookshelf and see it. 

James has the focus required to bring products to market and that definitely inspires me.  He has told me many times that in the amount of time I've spent playing WoW, I could have easily knocked out some cool stuff. :-)  In fact, James inspired me to treat my side-projects more like real jobs and because of that, I have made more progress on my side projects in the first 6 months of this year than I ever have.

What have they inspired you to do?

James has inspired me to stop over-analyzing things.  He has inspired me to just "get things done" and to stop looking for excuses.

Who else have they inspired?

That's tough to say, but I would hope other developers are inspired by his talks, his books and the sites he's created. 

Call to action

To repeat Josh: I'm going to call out 5 people because I want to know who inspires them.

I'm calling out the following people:

Sarah D.

Dan Hounshell 

Mike Wood 

Jason Follas

Jim Holmes

Technorati Tags:

author: Michael Eaton | posted @ Thursday, July 17, 2008 1:51 PM | Feedback (1)

Ann Arbor Give Camp - Wrap-up


My pics

My original plan was to blog throughout the event, but due to lack of sleep, the days blended together and when I sat down Saturday night to write my post, I was in a daze and had no idea where to start. :-)

Now that the event is behind us and I've had some sleep, I'm struggling to put into words the amazing experience I had over the weekend.  I woke up today feeling energized and inspired.

DSC_0012

This event was truly the event of the year.  I met so many awesome developers that gave up an entire weekend to help some really great charities.  They came together as small teams (who, for the most part had never worked together), figured out what had to be done and they did it.  They did it with NO complaining.  They did it with very little sleep.  They did it better than most teams I've seen in almost 15 years of software development experience.

A few weeks ago I was asked by Jennifer to help out with the "requirements" gathering / vetting of projects stage.  I jumped at the chance and enjoyed the chance to talk to four of the charities about their wants and needs.  Of those four, two were selected (the Ann Arbor Hands On Museum and the Washtenaw Chapter of the American Red Cross).  Shortly before the event, I was assigned to the Hands On Museum project.  My assignment was based on my strong feelings about that particular organization so Jennifer made sure that's the team I was on.  My wife and kids have spent a lot of time at the Hands On Museum and unfortunately, places like that are pretty tough to come by so I really wanted to see this project be successful.

The project needed a team that was strong in PHP/mySQL.  I, on the other hand, have absolutely no skills with either of those technologies, so after the opening ceremony when the teams were talking to the non-profit representatives, I paid close attention to the three other developers who were assigned to the team.  I very quickly 100_1401realized that they had exactly what was needed for the project to be successful and I wouldn't bring much to the table.  After a quick team meeting to make sure everyone else was cool with me stepping away, I let them get to work and found Jennifer and Josh.

For the week or so prior to the event, I had decided that I really wanted to be free from a single-team assignment and play the role of "roamer".  I wanted to be free to roam around, talk to the other teams and offer my assistance where it was needed.  Luckily, Jennifer and Josh both gave me the green light to do just that.  Not too long after that meeting, Josh snagged me to do some video interviews with the charity representatives.  I was a bit nervous at first, but it was awesome talking to the charities and getting my first look at all the teams.

While I was walking around interviewing the charities, I ran into one team that looked...well...they looked like deer in the headlights.  That's no criticism of them at all, because once I found out which project they were on, I understood immediately why they looked the way they did.  *sigh*  This is the short version: they were assigned to 100_1469the Red Cross project.  As luck would have it, I helped gather the requirements for this project so I already knew what the issues were.  Unfortunately, they didn't know any of the backstory on the project so they were left wondering what they had gotten themselves into. :-)

They were actually packing up to leave for the night because they realized they couldn't do anything without the Red Cross reps being there and they weren't scheduled to be back until the next day.  After talking to them for a few minutes, I told them to get some rest and that we would have a meeting first thing in the morning to get things straightened out. 

At 9am, the Red Cross team had a meeting where it was decided that the team would push on with the code while I called the Red Cross to discuss options.  Before I called, one of the reps showed up (Jason - AWESOME guy) and we talked about the issues.  He hooked me up with a couple people to talk to.  Long story short, we ended up stopping the project early due to issues beyond our control, but the Red Cross reps that I talked to (Sherri and Julie) were amazing.  Julie (communications director) was super cool and even stopped by Saturday afternoon to talk and get a tour of the event (she also came to the closing ceremony and gave great praise to Give Camp)!  The team was a bit disappointed when the project ended, but I did what I could to let them know how important their participation was and we did find teams for most of them.

What I found myself doing during the weekend was hitting each and every team multiple times to see how they were doing.  I offered my assistance to everyone.  Most were good-to-go, but some took me up on my offer.  Granted, it wasn't to write code, but I did offer guidance where I could (mostly on DotNetNuke) and provided my input on some issues that cropped up.  I was also the guy that went around to each room and took hundreds of pictures and a lot of video.  Hopefully the teams didn't find me too annoying. :-)

During the day, I found out about the Knoxville team and how they had nothing to do. :-)  I knew other people were busy and since Nate Blevins and I had been following each other on twitter for quite some time, I volunteered to call him and try to get them hooked up with a project.  I have never talked to Nate on the phone, but I'll tell you...it was like talking to an old friend.  He is an amazing guy.  We talked briefly, and since it was late, agreed to talk again Saturday morning.  As luck would have it, we found plenty of work for them to do and I can't say enough good things about them (Josh did a great job praising them in his post).  I can't wait to meet Nate and the rest of the devs when I head to Knoxville next month for Codestock.  We also had a great team working from Columbus!

During a good portion of the event, if you saw Josh, you saw me close by.  Over the past few months he has not only been a mentor, he has become a good friend as well.  I enjoyed working with him and being his "go to" guy during the IMG_1095event.  At one point during a 1am status meeting with Josh and Jennifer, Josh looked at me and said, "you and Jennifer are the foreman tonight".  Of course, as he was leaving to get some sleep, he also said, "I want you to get some good video around 4:30am". ;-)  Good times.

I didn't sleep at all Friday night or all day Saturday.  In fact, it wasn't until midnight on Saturday that my friend Chris and I headed to a nearby hotel to grab some Z's.  I probably could have stayed up, but damn...as soon as my head hit that pillow, I was OUT.  It felt really good to get some sleep, but Chris and I were up and out the door headed back to the event by 8am.

Sunday was spent doing more of the same stuff: walking around talking to the teams, seeing if they needed anything, etc.  I took some more pics and some video.  To be perfectly honest, I was getting pretty down on myself because I realized I hadn't written a line of code...that all I had done was take some pictures and talk.  I'm still struggling with it, but after talking to a lot of people including Josh, Jennifer and some of the other organizers (as well as Sarah and Chris), I'm slowly coming to the realization that I *did* help.DSC_0034

The closing ceremony was actually pretty emotional, but that's probably due to the lack of sleep. :-)  The results of the weekend were shown to the other devs as well as all the charities!  It's all on tape, so hopefully it gets posted soon.

Overall, I had a great time and I think the organizers of the event did an absolutely amazing job at putting this thing together.  Huge thanks to John, Jennifer, Patrick, Greg and Todd.  Wow. 

I also want to thank all the great sponsors we had -- especially Verio!  Anyone that was there knows that the Verio rep (Matt) was super cool.  I think he definitely went above and beyond.

I made some new friends over the weekend and got to hang with some old friends. 

I was gonna do a "shout out" section but I realized I'd forget someone, so just know this: my respect has increased for every single developer that showed up this past weekend.  They kicked ass and I hope to see them at future events.

Technorati Tags: ,

author: Michael Eaton | posted @ Monday, July 14, 2008 11:14 PM | Feedback (6)

Great posts on public speaking


A couple months ago, Josh Holmes started writing a great series on public speaking.  While you can click the "Speaking" category in the sidebar of his blog, the current series is intermixed with other posts, making it difficult to pinpoint what you want.  I figured I'd create one post (for my own reference) on my blog and update it when he adds new posts to this fantastic series. :-)

Public speaking and movement onstage

Words as Filler when Public Speaking

Prepare Yourself To Give a Great Talk

Doing a Demo while Public Speaking

Public Speaking - Great Beginnings

Technorati Tags: ,

author: Michael Eaton | posted @ Monday, July 14, 2008 12:06 PM | Feedback (0)

Ann Arbor Give Camp - First night


Wow!  We have had a great turnout for the first night of the Ann Arbor Give Camp!

My friend Chris and I got to Ann Arbor around 3:30 this afternoon and stopped by one of the non-profits: the Ann Arbor Hands-On Museum.  I took the point on this project a couple weeks ago and really looked forward to checking the museum on in person.  My wife and kids have been there numerous times, but this was my first time.  The museum rocks!

After 30 minutes touring the museum and playing with a lot of the exhibits, Chris and I headed for Washtenaw Community College.  Upon arrival, we helped Josh and a couple others put together the name tags and then made our way to the break room to hang out before the event started at 6.

It's pretty much been a blur since then.  I've been "floating" around the event, offering help and doing some video interviews with some of the non-profits (a job given to me by Josh after I said I didn't have much to do). :-) 

I'm blown away by the number of great developers that made it to the event.  If it wasn't so late right now, I'd actually list them. :-)

More tomorrow!


author: Michael Eaton | posted @ Saturday, July 12, 2008 1:21 AM | Feedback (0)

My software dev post has taken on a life of its own


A few weeks ago, I wrote a