Monthly Archives: June 2008

Lansing Day of .Net Wrap-up

30 Jun 2008
by mjeaton, posted in Uncategorized   |  1 Comments

On June 21st, I attended the first Lansing Day of .NET.

After picking up a presenter mouse from Target Saturday morning, my friend Chris and I arrived at the event around 8:30 (just as the first session was starting).  As I was walking in, I ran in Patrick Foley, Alan Stevens (along with is wife) and Dan Rigsby (along with his wife).  After a quick registration, I hit the speaker room to catch up with people and to try and put some last minute changes into my slide deck and verify my VM was working.

I was in the second time slot of the day which was good because it meant the attendees would be somewhat awake. :-)   I was happy to see several of my tweeps/friends in the audience (including Chris, Dave Redding, Alan Stevens, Mike Wood and Alan Barber – I’m sure there were more, so I apologize if you’re not in this list).  I forgot my notes at home, so my talk (Introduction to Castle ActiveRecord, or Stop Writing CRUD!) was pretty much from memory and I know for sure I missed a couple of points I wanted to make.  The session was only an hour, so I felt a bit constrained by the time (most events I’ve been to have had 70-75 minute sessions).  Other than that, I think it went pretty well.  I need to do a better job of not leaning against the wall (that was one thing my tweeps commented on).  I’ve got a few weeks before I give this talk at Codestock, so I’m going to be re-working it a bit.

After my session, I bounced between Jay’s IoC talk and the speaker room.  While it sounds silly, some of the *best* conversations at events like this happen during the sessions – whether they’re in the speaker room or the common areas. 

Lunch, of course, was boxed lunches. :-\ I sat and talked with Jason Follas, Chris and a few others.  At one point, I caught up with a couple guys I worked with years ago (Pradeep and Fritz).

After lunch, I bounced between Patrick Steele’s Monorail talk and the speaker room.  The next session I attended was Jennifer’s “Intro to WPF”, but I bailed pretty quickly.  The pace of Jennifer’s talk was faster than my brain wanted to keep up with, and there wasn’t much I hadn’t heard from talks at other events.

For the last session, a bunch of us decided to hit Len Smith’s NHibernate session.  As he is quick to point out, the talk didn’t go so well.  I’m not sure what happened, but he struggled through most of the talk.  I can tell you from experience that once something goes wrong, it can be very difficult to recover.  I also know that NHibernate is a big subject and you can really only scratch the surface in an hour.  If he gives the talk again, I’ll make sure I check it out because I do think it’s good information.

The absolute *worst* part of the day was having to listen to the Mayor of Lansing talk.  It would be one thing if the guy had an IT background, but he was there for the photo-op and that was it. :-\  He had no clue who we were, what we were doing or why we were doing it.  Please…if you’re organizing an event, try to keep the politicians away.

During the giveaway’s, I won a copy of Snag-it from TechSmith.  I was really hoping for Camtasia, but no such luck. ;-)

After the event, about 20 of us headed to the after-party at Jeff’s house.  I’m not sure I can do it justice other than to say it was the event of the year. :-)   It’s always cool to see friends in a completely relaxed atmosphere.  There was great food, music and lots of good conversations.  Jeff and his wife did an amazing job of putting this party together!  I was introduced to Keith’s “The Elder” drink which consisted of vodka, cranberry juice, orange juice and Sprite.  It was good enough that I eventually had a second. :-)   While she couldn’t make the event, Sarah and her husband showed up at the party! 

Chris and I started the 90 minute drive back home around midnight.  It was a great time, but we really had to get going.  As in Cleveland, I was a bit sad having to leave all my friends, but I know it won’t be long before another event rolls around and we’ll see each other again. :-)

Pictures from the event: Jeff’s album, Ryan Doom’s album

 

Technorati Tags: ,,

I will be speaking at Codestock!

16 Jun 2008
by mjeaton, posted in Uncategorized   |  Comments Off

I got the notification today that I’ll be speaking at Codestock in Knoxville, TN on August 9th!  I’ll be doing my “Introduction to Castle ActiveRecord, or Stop Writing CRUD!” talk.  I’m really looking forward to this event because this will be my first trip to Tennessee!

Here’s the description of the conference from the website:

CodeStock’s mission is to bring the best and brightest code experts to East Tennessee for a one day conference open to all developers. This is not a trade show with slick salesman giving prepared demos – this is a gathering of real programmers learning about the latest in technology from each other.

Check out the website, register and hopefully I’ll see you on August 9th!

Technorati Tags: ,

Upcoming events for June, July and August

09 Jun 2008
by mjeaton, posted in Uncategorized   |  4 Comments

These are the events I’m attending over the summer months:

Lansing Day of .NET, Lansing, MI – June 21st (speaking)

Ann Arbor Give Camp, Ann Arbor, MI – July 11, 12 and 13th

Codestock, Knoxville, TN – August 9th (possibly speaking, don’t know for sure yet)

Devlink, Murfreesboro, TN – August 22, 23rd

The two trips to TN are gonna be killer, but I’m still looking forward to them!

Looking to September, there are a couple events that are up-in-the-air for me: The Chicago Day of .NET and the Agile Summer Camp.  I’m leaning toward the Agile Summer Camp (partially because I’ve been asked to help with some of the organization), but I’ve also submitted a talk for the Chicago Day of .NET.  We’ll see what happens as September gets a bit closer.  There’s talk of another Ann Arbor Day of .NET in October, so I’ll be blogging about that as it gets closer.

How did you get started in software development?

04 Jun 2008
by mjeaton, posted in Uncategorized   |  30 Comments

Update: June 5, 2008, June 6 and again on June 7, 8, 10 - Here are my tweeps that have answered so far.

I realized recently that while I know my tweeps (twitter friends), I don’t really “know” them. ;-)   I know most of them were band dorks (I love my tweeps, so hopefully they realize I’m just yanking their chains ) in school and some still play some kind of musical instrument.  I know some like to smoke cigars, some are vegetarians and some I know some have served in the armed forces.  I know one majored in drama and communications and some most like to drink beer.  What I don’t know is how most of them got started in software development.

Ok, so here are the questions. :-)   My answers are included.  Like I said, this is mainly directed at my tweeps, but if you’re a non-tweep and still feel like answering, cool. :-)   If you answer on your own blog, please link back and/or leave a comment so I know!

How old were you when you started programming?  Believe it or not, I was probably 20 (1992) before I first started programming.  Prior to that, my only experience with computers was an “exposure” class in 6th grade!  To go totally against the grain of most of my friends, I was 19 or 20 when I got my first computer (a rockin’ 386sx-25 with 2mb of RAM and a 130mb drive — yes, that’s megabytes).

How did you get started in programming?  I actually got started in programming after getting completely obsessed with that rockin’ 386. ;-)   I spent every waking moment learning everything I could about DOS and Windows 3.1.  I was totally into things like Stacker, Desqview and QEMM and wringing every last bit of performance out of that 386.  I spent hours and hours on local BBS’s, downloading all sorts of programs and games (at the blazing speed of 2400 bit/s).  There came a point that I finally asked the sysop of one of the boards about programming because I felt the need to make the computer bend to my will.  He referred me to one of the BBS members.  I contacted him and 15+ years later, we’re still really good friends. :-)   

What was your first language?  Believe it or not, my first language was probably the batch language (batch files)…if that doesn’t count, then it’d definitely be qbasic.  QBasic (think edit.com from back in the day) was a trimmed down version of QuickBasic, but it was enough to get me hooked.

What was the first real program you wrote? Honestly, that was so long ago, I don’t really remember.  I think my first DOS program might have been a front-end for the format command.  I know for sure my first Windows app was a replacement for progman.exe. ;-)

What languages have you used since you started programming?  qbasic, QuickBasic, Visual Basic for DOS, Borland Turbo Pascal (for DOS and Windows), Borland Delphi, perl, a tiny bit of Powerbuilder, some C, pascal (in college), a tiny bit of COBOL (in college), C# and VB.NET.  I suppose you could throw SQL in there as well.  I might have missed one or two languages, but if I did, they were probably worth forgetting.

 

What was your first professional programming gig?  My first paying gig was writing a small, silly utility for the local gas/utility company.  I don’t recall what it did, I just know I got paid $200 for doing it. :-)   The cool thing is that this was probably only a few months into my programming career. ;-)   After that small contract, I scored my first actual programming job after reading a posting in some CompuServe forum (probably VB related).  Someone was looking for a developer to create some Crystal Reports for a commercial app they were developing.  I remember being soooooo nervous driving up to the interview (Northville, MI), but being so happy when I landed the job!  Of course, I ended up having a hellish time because we were working on Chicago, running beta VB4 along with beta Crystal Reports.  Yuck.

If you knew then what you know now, would you have started programming?  I’m not sure.  I’ve had some good times and made a lot of great friends, but damn, sometimes the pace of change makes me want to pursue my dream of playing in a rock band. :-D

If there is one thing you learned along the way that you would tell new developers, what would it be?  Don’t get stuck in a cube farm. :-)   Actually, to be serious, I’d tell them to focus on communications and interacting with other people.  Programming is easy.  Working with others is a bitch. ;-)

Ok, and finally, I’ll steal the question Sarah asked recently:

What’s the most fun you’ve ever had … programming?  I’ll simply copy the comment I left on Sarah’s blog – “I don’t know that there’s one particular moment. I find those times when I’m in the zone to be the most fun. You know…when the code flows from your fingers and you lose track of time…yea, those are the times when I have the most fun. :-)

 


 

Tweeps that have answered so far: Sarah, John, Jeff, Josh, Rick, Nathan, Marty, Joel, Nate, Matt, Mike, Bruce, Chris, JeffH, Rob, Jennifer, Objo, Corey, Scott, Jason, Maggie, Tim.

 

 

Follow-up: Continuous integration

02 Jun 2008
by mjeaton, posted in Uncategorized   |  1 Comments

Here are some great posts on setting up continuous integration, specifically with CruiseControl.net:

CruiseControl.Net Tutorial  – Part 1
Setting up Continuous Integration

I know several people that have been looking at Team City as a good alternative to CC.  There’s also a decent article on doing CI with Team Foundation Server.

Let me know if there are any links / resources I should add to this list and I’ll update this post. :-)

When the going gets tough or, how to improve your life as a developer

02 Jun 2008
by mjeaton, posted in Uncategorized   |  11 Comments

A couple weeks ago when I gave my “Lessons Learned” talk at the Cleveland Day of .NET, I took some really good questions and wanted to share one here.  During my talk, someone in the audience described a pretty horrible situation at her job; a project that was behind schedule, overbudget, management won’t allow proper development practices to take place and everything had to be done NOW.  Unfortunately, projects like that seem to be pretty abundant.  Anyway, her question came down to this: what could she, as an individual developer with very little power in the organization, do to improve things.

Honestly, my first response was to tell her to quit because we all have to realize that there’s a point at which we can do nothing except deal with a horrible situation or find a better place to work.  For the woman that asked the question, she had no choice but to stay since she was working on some kind of visa (H1b?).  At the time, I simply told her to change what she could change.  Even the smallest things can have an impact on the larger organization.

The subject came up again at the May 22, 2008 Microsoft Developers of Southwest Michigan meeting.  Josh was talking about “worst practices” in an organization when someone in the audience asked pretty much the same question I had gotten in Cleveland.  After hearing Josh’s response and having time to think about it, here’s what I’d say if asked that same question again:

Things you can do

First, there’s not much you can do when it comes to the budget, but you can do something about being behind schedule and using proper development practices.  You need to set the example

Be an evangelist.  Find others that share the same values as you within the organization.  Sometimes having someone else to share the burden can help.  After all, if you find others that know the importance of “doing the right thing”, you won’t be the lone crazy guy in the corner mumbling about his red stapler, right? ;-)

Write unit tests for your own code.  Hell, you don’t even have to check them in.  Write them first, write them last, just write them!  Doing so will give you confidence that *your* code is doing what it’s supposed to be doing.  When you start cranking out solid fix (or change) after solid fix (or change), other developers (or even management) will start wondering how you’re doing it. ;-)   At that point, take them aside and show them the benefits of writing unit tests.  Remember, even the smallest changes can have an impact on the larger organization.

Setup your own continuous integration server.  Some people might debate this one, but I honestly believe CI works for a single developer all the way up to large teams (in fact, we discussed this on twitter a few weeks ago).  Can’t get the hardware?  Use a virtual machine.  Locked down and can’t install stuff on your own system?  Make friends with someone who can. ;-)  

Use source code control.  Is your employer not using source code control?  Install a local copy of subversion or git (or even Visual SourceSafe) and use it for your own changes.  Locked down and can’t install stuff on your own system?  Again, make friends with someone who can.  There is absolutely no excuse to not be using some kind of source code control system.

Set milestones for yourself and stick to them, but don’t be a hero.  Keep track of your tasks, your estimates and the actual time it took you to complete the task.  Use this information when you develop future estimates.

Don’t let the small things get in your way.  Sometimes it’s better (and easier) to ask for forgiveness than it is to ask for permission.  If you want to improve the way things are, you have to be willing to take some risks, BUT (of course there’s a but)…

Dealing with the decision makers

Technically, you don’t even need to tell anyone you’re doing the things I described above, but if you want to make any inroads within the larger organization and make it a better place, you need to learn how to communicate with the people that are making things difficult to begin with.

Ask.  Yep.  It never hurts to ask, right? :-)   You can start off by asking if you can do some “proof-of-concept” work within your organization.  Start simple.  Ask if you can start writing unit tests.  You might be surprised at the answer you get especially if they (management) don’t have to do much.  Write your tests and then ask about standing up a CI server.  If you hit some resistance, find out what the problem is and try to work around it.

Get a copy of Carnegie’s “How to Win Friends and Influence People” (and read it).  As cheesy as the title is, it’s actually a pretty good book that gives a lot of good advice.  It’s a really quick and easy read.  There is a course that goes along with the book, but I wouldn’t recommend it (bad experience when I *tried* to sit through the course about 10 years ago).

Learn how to communicate the benefits of TDD, CI, etc. in non-geek terms.  Learn how to communicate the benefits of TDD, CI, etc. in terms the decision makers will understand.  Explain how it can help the bottom-line (because that’s what they care about).  Explain how it can help you write better software faster.

Be prepared to back up what you’ve been doing.  At some point, someone may (will) challenge you on the things you’re doing.  Someone will tell you, “but this is how we’ve *always* developed software.”  Don’t back down.  Explain the benefits of what you’re doing.  Point them to blogs, articles, screencasts and books on the subjects.  Show them the gains you’ve made and how their software has improved.

Be prepared to leave.  If you believe in what you’re doing and are told to stop even after explaining the benefits in non-geek terms , you have a tough choice to make.  You can back down, crawl back to your cube and accept that your life at that company will always suck or you can move on to a company that appreciates what writing good software is all about. 

In the end

Remember, we work to live, we don’t live to work.  Do what you can do to make things better.  I believe this applies to every facet of life, not just work.  Do what you can do to make things better.  Change what you can change, but be willing to stand up for what you believe in.

Special thanks to Sarah for reviewing and providing some great feedback for this post. :-)