June 2008 Entries

I LOVE being a .NET User Group Member, but I was raised by a hippie mother who believed in activism. She believed in getting involved. I guess a bit of that rubbed off on me. I wanted to get more involved in the .NET community this year, and I am having a blast doing it. One thing still rubs me the wrong way about the .Net community and the IT industry in general: they don't consider Kansas City a player in the IT world.

I've blogged about this before. I see conference after conference being held in New York, Seattle, San Francisco, Las Vegas and Florida. Lately, I hear a lot about Austin, TX. There are a lot of really great programmers in Austin. I think there are a lot of great programmers in Kansas City as well. But we never see conferences come here. You'd be hard pressed to find a major event here.

I want to change that. I want to organize (or help organize) some major IT events here in Kansas City. Maybe if we start to organize our own events and people start to travel here for those events and begin to love this city the way we do, they'll start planning their OWN events here. Once they've visited The Country KCKYLINEClub Plaza, Westport, 18th & Vine or even Shawnee Mission Park, they'll start to WANT to have their events here. This is, after all, the middle of the country. Halfway between EVERYTHING! Why WOULDN'T you want to have your event in Kansas City? Why have your event in New York and make people have to shell out $500/night for hotel rooms? Why make people in L.A. travel that far? Why have you event in San Francisco (same problem)?  I think KC is a PERFECT place to have an event. Hotels are (relatively) inexpensive, there are lots of good venues, and we have an EXCELLENT community of developers who are just DYING to go to some of these things, but can't convince their company that it's worth $5000/person, once all is paid for.

This will take your help Kansas City. I want to hear from you about what you'd LIKE to see in a conference. What kind of speakers would you like to see? What kind of topics? Workshops? Fishbowls? Panel discussions? I'm not saying this is going to be easy. We probably won't even be able to put something like this together before the end of the year, but we should start planning now. Most great speakers don't have anything on their calendar for next spring, and spring is an AWESOME time to come see KC, when the fountains are getting going and it hasn't hit the hottest part of the summer yet.

So send me your ideas. Start blogging about it. Start bringing it up at the User Group meetings. Where should we have it? What should it be about? This could be something as simple as an Open Spaces type thing. Just something to get the tech community to realize that there is a thriving geek community here in Kansas City.

~Lee

The Test-Driven Development talk I gave last night at the Kansas City Dot Net User Group meeting seemed to go really well. This was my first ever talk and it is something that I am very passionate about. There were definitely some technical glitches. I recorded my demos ahead of time using Cam Studio and that was tdd_logo good, but I didn't bump up my resolution so the people in the back could see the code. I will have to make sure to set the resolution higher next time.

The turn out was stupendous. There were 62 that signed the sign-in sheet. I imagine there were probably more people there that didn't get the sheet because they were standing in the hallway. The turn out was great but it only made me more nervous. I was sweating like a nun at Sturgis, and I may have talked a little to fast at the end.

I want to (again) challenge all the KC DotNetSig people out there to come up with a topic to speak about. Even people who are not KC natives. Volunteer to come speak at our user group meeting. Come share some passion or expertise that you have about a .Net topic. I'd love to get Jeffrey Palermo to come do an MVC or Agile talk. Hopefully, we'll be able to work something out. We may also need to see if Centriq has a larger room! :0)

 

UPDATE: PowerpPoint and .avi files located here. used WinRar for compression

 

Lee 

OK. I've had a few days to decompress. I am still beating on my deck for the TDD presentation tomorrow (actually tonight) for the .NET Users Group. So I have had some time to decompress and debrief my boss about what I am bringing back from the Agile .NET Boot Camp with Jeffrey Palermo in Austin, TX.

Man! we actually covered a lot! Jeffrey did a great job of making it seem like not much, but when I got back and started telling my boss about it, there were just TONS of things to talk about. We talked about Team Estimation and Design, NHibernate Mappings, Test-Driven Development, Domain Driven Design, Automated Builds and on and on and on. I have absolutely no idea how we managed to cram all that stuff in three days, but we did. There were some things I'd already done, like TDD and setting up CCNet and AgileBootcamp using TortoiseSVN, but I even learned a few new thing in those areas. I HIGHLY recommend this class to any senior level .NET developer ready to take their skills to the next level.

Jeffrey takes a VERY pragmatic approach to software development. He emphasizes focus on what it is you're trying to accomplish and NOT the tools you use to get there. Tools come and go, but the reason you use the tools remains.

I'd like to thank Jeffrey putting up with me and all the questions that go along with trying to explain stuff to me. I'd also like to thank and Tom Jaeschke for just plain putting up with me. I had to call him up after hours two nights in a row, to have him help me out of my own stupid mistakes and he was MORE than helpful.

Thanks Headspring!

~Lee

I was thinking about the level of programming abilities lately, as we are starting to interview for an open position. I thought, "Wouldn't it be nice if programmers came in version numbers like software?" This would make it easy to say, I need a version 3 programmer with abilities in languages A, B and C. It's so difficult to say Mid-Level developer, because mid-level is so subjective. Mid between WHO? So here are my thoughts of what the versions for a web programmer might be:

Alpha: Has read some books and has put together some web sites for friends (mostly using Dreamweaver or FrontPage), but the quality is such that you probably would be leery about hiring them professionally until they learn how to hand-code some HTML.

Beta: Is getting better at putting together sites and has some skill with HTML; but still uses tables for everything, and knows next to nothing about CSS. Still is intimidated by the thought of dynamic web sites or database.

Pre Version 1 (0.1): Just a bit above Beta. Knows HTML and is starting to understand how CSS is supposed to work. Does some with JavaScript, but is still amateurish style. Starting to get into dynamic sites and how to connect to database. Still not someone you'd hire as a web developer for a professional team.

1.0: Can put together a web site. Will take the most direct route to every problem. Has no concept of scalability, extensibility or what's really going evolutionon "under the covers" of their favorite web design tools. Good entry-level developer. Needs lots of help and supervision.

2.0: Understands Object-Oriented development. Understands that there is a need for tiered development and separation of concerns. Tends to find more elegant solutions to problems and may, on occasion, use a design pattern, but has no concept of design patterns. Good junior developer. Can be let loose on coding things and may need some help finding a better solution to complicated problems.

3.0: Starting to understand object-oriented development and design patterns enough to see the use of them. Can even recognize a design pattern when they see one, but may not always be able to see a patterned solution to a problem. Starting to be able to architect solutions that have good separation of concerns and is testable. Knows a few different languages and WHY they are different (i.e. their best uses). Good mid-senior developer. Can easily be trusted to develop a solution and provide guidance to v1 and v2 developers. May still have trouble with more difficult architectural solutions but, with a little guidance, they understand and will remember the decisions they made and WHY for future projects.

4.0: Understands patterns and sees patterns within user stories. Starting to explore methodologies, architectures and approaches to  software development. Learning has begun to transcend language and technology. Constructs and deconstructs applications from their requirements in her head. Can see abstractly, how patterns fit together and how different x-driven designs can be applied to different situations. Is a decently versed Polyglot Programmer. Understands the nuances of different systems and methodologies. Good Senior programmer. Will easily be able to help v2 and v3 programmers to push themselves to the next level.

5.0: Thinks in terms of systems. Can still get down into the bowels of any system and rescue it from total code rot, but is much more valuable in making teams cohesive and preventing code rot. Can easily see when a v1-4 programmer might be starting to derail in their designs and can keep a team of developers motivated and excited about creating software solutions. Leads by example. Is always hungry for new and easier ways to accomplish development tasks. Can easily be trusted to run the entire IT department if they are required to. Good Senior Developer or Architect.

OK. So those are my thoughts. I didn't really edit these or spend a lot of time revising the definitions. Anyone got extras to add? changes to mine? I'd like to make this a group-think project. I know people have been trying to do this from the beginning of time. I have no delusions that this will become an ISO standard for identifying developer competency. But we should at least be thinking about it. What are YOUR versions? I want to challenges dev bloggers to write a blog about THEIR thoughts on developer versioning.

~Lee

BTW - I see myself as a v4 programmer, working REAL hard to live up to my v5 responsibilities. :)

Today was the first day of the Agile .NET Boot Camp in Austin, TX. The class is a blast. Jeffrey Palermo knows his schist. Today covered lots of stuff I have already worked with: TortoiseSVN, TDD, CCTray, etc. There were also some things that I had not worked with before, like Story Boards, and Team Estimation. Overall, it is just what they promised. We are working as a team in a way that a team might work in the real world.

Today, we set up the Team Project, it’s a basic issue tracking system. It uses the ASP.NET MVC framework. It is (intentionally) not complete and we started estimating with not much of a glimpse at the code base at all. Surprisingly, our estimates were not as bad as would’ve guessed, given our lack of exposure to the code.

Team estimation was very interesting as was dividing up the tasks for the stories. I am definitely starting a story board at my work for our big project coming up. Then, we pair-programmed the tasks. At the end of the day we finished the iteration (a little early!) and we talked about what’s on for tomorrow.

capitol

Tomorrow, we will talk more about Domain Driven Design, IoC containers (StructureMap) and  NHibernate. I am excited also to learn about creating custom build files to run tests, code coverage, etc. through CCNet and NAnt.

After class, a friend of mine, Brian Laird, introduced me (via email) to Dan Drown from DataPipe who lives here in Austin. Dan came by my hotel and we took a cruise around Austin. It is quite a beautiful city. Generally, it seems that capitol cities tend to have very little to offer in the way of lifestyle. That is definitely not the case with Austin.

We drove downtown and saw the capitol building (really bad picture) and we even tried to stop at one place to grab a beer, but it closed at 10:00 (not a late night city evidently).

hillary-ousI also got a picture of a car in the hotel parking lot this morning of a Texas state official’s car with a “Hillary for President” bumper sticker. I found that Hillary-ous and thought I’d share. :0)

I look forward to tomorrow.

 

 

 

~Lee

Emulation The good folks at SlickEdit® hooked me up with a review copy of SlickEdit 2008 Professional, and I gotta tell ya I was pretty surprised. I didn't really know what to expect. I guess I just expected a less feature-rich Visual Studio, but that's definitely not what I found.

First of all, I wouldn't consider SlickEdit to be a competitor to Visual Studio. It's more of a multi-purpose polyglot programmer's editor on steroids. First, on install, it asks about your editing environment emulation. This is a great way to ease into SlickEdit from another editing environment (for me Visual Studio).

BuildTagFileIIThen, it asks about language Tag Files (which is basically how the environment will handle you  chosen languages like syntax highlighting, compiler options, etc). Then it starts on a long journey of building these Tag Files. This was really the only unpleasant part of beginning to use SlickEdit. It seemed to take an inordinately long time to build these files. Chances are there are more things going on than I am aware of in this step of the set up process. Nonetheless, you only have to live through this once.

ColorSchemeOnce this was done, I moved directly to the Tools -> Options. I was able to  setup my color scheme pretty close to the what I like using some preset color schemes. In Visual Studio, I use Jon Lam's Vibrant Ink Port for Visual Studio. It's very easy on the eyes. So just choosing the "Black" color scheme got me pretty close.

I then saw Tools in the tree on the Options panel and opened it up. I saw Version Control Setup and was able to add Subversion by just clicking setup and pointing it to my Subversion executable on my machine. Couldn't have been easier.

 

AppLanguagesOptions

 

Cruising around the Options panel some more, I saw the Languages Item in the tree view. I think there is probably a choice for every programming language ever used (what the hell is YACC?). There are so many options in the Options Panel I could write a book about just that panel.. but I'm not gonna. Suffice it to say, that if you want to program in ANTLR, you can use SlickEdit.  :0)

 

Finally, I sent an email to SlickEdit and asked about setting up MbUnit unit testing within the IDE. This tests two things: whether or not I could do it (it wasn't obvious from the menus) & how fast the respond to support questions. I sent the email at 3:22PM and got a response at 4:33PM, so that is a damn good response time. They actually answered my question, too. I was able to setup MbUnit to run from within the IDE, by setting up a new menu item and pointing to the MbUnit executable to run my tests. (My tests didn't actually run, my command line arguments were not correct, but I didn't want to take the time to figure out what they should be and that is not a problem with SlickEdit, it's a problem with me. PEBKAC)

Even though, I'm not going to stop using VS in favor of SlickEdit, it is definitely going on my machine for programming in other languages that don't have a good IDE. All in all, SlickEdit is pretty... slick.

 

~Lee

I've been thinking about trying to do some custom CSS to my blog for a while now, and with all the back end stuff I've been researching lately, this was a good mental break for me to pound on some CSS for a bit. I still have yet to style the galleries, but it's now 1:30am and I am heading to bedding.

Leave me a comment to tell me what you think of the new look! How does it look in your browser version. (I only checked it in IE7 and FF 2.)

~Lee

It's been over two weeks since my last post.. Life's been hectic... 'nuff said.

As I've been researching different languages/methodologies/software, one thing has begun to bubble up over and over again: do we NEED another Whatever Oriented Development/Design/Programming/Architecture thing? Let me just list a few of the ones I have encountered in the last month:

Well, I may have made a few of the last ones up, but the point remains: doesn't this list seem excessively long? Maybe I'm just pissed because I don't understand all the deferent ODDPAs. Maybe I'm just confused by all the acronyms.

The problem for me (and maybe for others) is I don't know whether these are competing or complementary or independent technologies. Should I spend a little time researching the merits of Object Oriented Programming over Aspect Oriented Programming? Should I compare and contrast Agile Model Driven Development and Domain Driven Design? Or could they all be completely different technologies that solve completely different problems? Isn't there enough FUD out there?

Now, I'm not bashing the folks who champion these different technologies/methodologies/architectures. We just all need to decide on some nomenclature and stick with it. Should it be Aspect Oriented Programming or Aspect Oriented Design or Aspect Oriented Architecture?

Software development (and especially architecture) is largely centered around picking the best tools for the job, and sometimes it takes a few hours of reading before you can tell whether you're comparing apples and oranges. Maybe I'll task myself with putting together the comprehensive list of technologies so that people can compare competing technologies to each other and decide whether some new thing complements another.

Am I just being an Over Sensitive Driven Developer/Architect?

 

~Lee