Darrell Hawley: Home Page

Monday, January 22, 2007

CodeMash: What I Learned

What did I learn at CodeMash? First, planning conferences is a lot of work. Second, there is multiple ways to perform any task and you should be able to discuss the options. Third, software development is a human endeavor and, as such, has some very familiar limitations. This third point is really the most interesting to me. Two of the three keynoters - Bruce Eckel and Neal Ford - discussed different aspects of this very same thing. What I found really interesting was that both used art to illustrate their points. This strikes a chord for me since I've attempted to find philosophy in software development for quite some time. It started when I first read the Art of War, written by Sun Tsu over 2000 years ago. Sun Tsu actually seemed to be addressing the Agile versus Orchestrated development (a term I believe coined by Martin Shoemaker) controversy two millenia before the advent of the computer. So what was his stance? Plan carefully, but be prepared for contingencies or, put another way, plan to be agile. Back to my original point - taking the time to study the humanities is time well spent and can help you become a better developer.

So what do I do from here? First off, I'm really looking forward to completing the WCF webcast series. Along the way, I'm planning on learning something about producing professional webcasts. I may never get there, but I should certainly be able to improve my end product. Then I want to jump into Ruby on Rails. I may still do Turbo Gears instead, but my three minutes with Neal Ford has got me thinking Ruby. Functional programming is still an interest and I think it could really benefit me in my current projects. But what about the humanities part? I would like to learn to play the guitar. Music has been a huge mystery to me for quite some time and maybe it's time to address it.

And that's what I learned from CodeMash.

Labels:

Sunday, January 21, 2007

CodeMash: Thank You

Wow! Let me say it again. Wow! CodeMash was an amazing success and we have no one to thank but the community. If it wasn't for you - the organizer, the speaker, the sponsor, the attendee, the Kalahari employee - the event never would have taken place. I would, however, like to thank some individuals for everything they have done. I actually tried to do several posts during the event each of which was going to thank some random group of people. Unfortunately, I could only complete the one. So before I get into some of the specifics of what I've learned, I want to dedicate this post to those outstanding individuals.

Organizing Committee
  • Jim Holmes - Our leader and the guy who somehow or another talked me into this crazy venture. Without him, CodeMash would be nothing more than a good idea. Thanks for the opportunity, Jim.
  • Jason Gilmore - Another outstanding individual. His involvement in almost all facets of the event was key to our success.
  • Brian Prince - Talk about knowing how to get things done. Not only was he heavily involved in all of the prep work, but he made the registration process happen at the event happen among many, many other things.
  • Jason Follas - Jason was there recruiting sponsors, designing t-shirts, and anything else that needed to be done.
  • Dianne Marsh - Despite her one word mantra during our daily scrums - "Signs" - Dianne, was actively recruiting sponsors, attendees, discussing logistics with her event-seasoned friend, Lauren...Dianne was everywhere. I might also add, she was part of the conspiracy to get me involved. Thanks, Dianne.
  • Josh Holmes - He was there from the very beginning and was instrumental in getting things started. After taking his new position at Microsoft, he continued his involvement in many different arenas.
  • Drew Robbins - Always a major supporter of our community events, Drew has done a lot not only for CodeMash, but our user groups as well.
A couple of people who were instrumental during CodeMash
  • Joyce - Sorry I don't know your last name, Joyce. Joyce is Dianne's neighbor and has little or no interest in anything computer related. She simply wanted to help Dianne. She was a huge help.
  • Jeff Blankenburg - Jeff designed the logo which is peppered thoughout my blog and worked his tail off at the event.
  • Alexei Govorine - Worked hard at the registration booth and even got to put his SQL Server skills to the test.
  • John Hopkins - Yet another event he shows up to and pitches in where he can. The man has done a lot for the .NET community.
What's a conference without a venue. The folks at Kalahari were a real help and deserve a mention
  • Kathy Siford - My first contact at Kalahari. Thanks for all of the guidance.
  • Mary Smith - Great job dealing with all of my requests shuffling people all over the hotel. I know it was difficult.
  • Kathy Kopchak - If you saw it at the conference, Kathy coordinated it. And you probably noticed there was a lot of coordinating. Thanks, Kathy.
  • Steve Goris - He was the one that made sure all the things that Kathy promised us came true. Steve, the place was fantastic.
  • Matthew Dick - Last, but by no means least, Matt made sure all the attendees, speakers and organizers had internet access, making it possible for "live" blogging. Had some great conversations with him and even heard him say that he WANTS TO BE A CODEMASH ORGANIZER! Can't take it back now, Matt. Sorry. You'll be getting a phone call

Labels:

Thursday, January 18, 2007

CodeMash: The Late Night 3 Beer Blog

First event of CodeMash was just wicked cool. The Language Panel consisted of some of the BIG names in development: Bill Wagner, Bruce Eckel, Neal Ford, James Ward, Jay Pipes and David Stanek. Extremely enlightening. The big reason I was so interested in this pre-session, was that I want to start looking at a new language. Who better to ask which language to learn than the experts, right? Well, I did learn that I will probably put off Java for a while longer despite the fact that I am currently reading Thinking in Java. But that is pretty much the only decision I've made. I'm attracted to functional programming simply because it is completely different from what I currently know. But I've seen strong arguments for learning Ruby and Python.

Before I hang-up, I must put out some kudos and thanks to the very deserving people who have made this conference work, especially since I am an organizer (as opposed to being a disorganizer). CodeMash has run about as flawlessly as one could hope. Naturally, as a coordinator, the first thing I was concerned about was people would be able to register with both Kalahari and CodeMash with NO problems. Well, that happened thanks to Kalahari and Brian Prince and staff from Quick Solutions (I will certainly make sure that "staff" be recognized individually, since each of their contributions can stand on their own merit). John Hopkins also gets a big Pat-on-the-Back for jumping on any task that needed to be done. Thanks, John. Jim Holmes, our general, has been a rockstar. His guidance and organization has made the first hours just flow. I'd also like to thank Microsoft, one of our Adamantium sponsors. Drew, with out your support on behalf of Microsoft, this conference would never have happened. Thanks for all you've done. There are a lot of other people I have to thank, including the Kalahari staff, but we'll get to those tomorrow. It's late and my bed is calling me.

Sunday, January 14, 2007

Trying to Understand Functional Programming

I don't often write about the little nuggets of knowledge my boss, Bill Wagner of SRT Solutions, passes to me, usually because it takes so long for me to completely understand them. The latest thing he has me pondering is functional programming. First, here is the Wikipedia definition of Functional Programming:
Functional programming is a programming paradigm that conceives computation as the evaluation of mathematical functions and avoids state and mutable data. Functional programming emphasizes the application of functions, in contrast with imperative programming, which emphasizes changes in state and the execution of sequential commands.
A bit dense, but you can glean some things here. First, it's all about functions. Second, it avoid mutable data (variables). Third, this is a lot different than what you are used to (at the risk of sounding clairvoyant, you are used to imperative programming).

In pure functional programming, there are no objects and no mutable variables (all variables can only be assigned once, which makes them not very "variable"). You only have functions and non-mutable variables. Interestingly enough, functions can be passed to other functions. This is the point where it falls apart for me. Functions being passed to other functions is kind of tricky. What's worse, is that you can just pass the code for a function to another function. That is REALLY weird. Imagine a paramter being "x + y/2 - z". Without writing any code, I think I have reached my limit of understanding. More research is definitely needed.

For more on Functional Programming, I found this article very helpful. I would also watch Bill Wagner's blog for speaking engagements. He's been doing a lot with FP in recent months. Catch it before he moves onto something else.

Labels:

Thursday, January 11, 2007

Philosophy of If

After AADND last night, a bunch of us went to the Ann Arbor Brewing Company where I had quite an interesting conversation with Josh Holmes and Jason Follas. It turns out that during one of our many CodeMash conference calls, I mentioned that we needed to have a "default answer" in the event were unable to come to clear conclusion on a difficult decision. Meaning, if we were still shrugging our shoulders at crunch time we had a way of proceeding. Well, since Josh spends a lot of time in the car, he has been thinking a lot about how to apply this idea to all aspects of life. Though I was only using it as purely an analysis tool, he was looking for default answers throughout his entire life. And interestingly he realized, he didn't like most of them.

How about an example? A little over a year ago, Josh was a smoker who really wanted to quit. He noticed that when he was on the phone his default answer was to light up. To successfully quit smoking, he knew he had to change this as well as several other habits. So he successfully changed those habits (i.e., default answers) and THEN quit smoking.

Doesn't this sound like an If statement? I originally had thought of this as a switch since default is a keyword you commonly nest with in, but the more I think about it, I'm not sure that I like the switch or the use of "default", for that matter. Here's why. First, the example the above example written in code would look something like the following:

if (onPhone == true)
{
 Smoke
}

Note that the activity triggered the habit, not the lack of the activity. Let's look at how we would use this idea during a decision making process where we need a "default answer":

Answer answer = [some value]
while (DecisionHasBeenMade == false)
{
 if (haveNewInformation == true
   && mustChangeAnswer == true)
 {
  answer = [some new value]
 }
 if (needAnswer == true)
 {
 GiveAnswer(answer)
 DecisionHasBeenMade = true
 }
}

A bit more complex this time, but "if" is still at the core - with no "else" statement anywhere in sight.

Since every great philosophy needs a name, I propose that we call this philosophy "Ifism"

Labels:

AADND Success

Well, what can I say? AADND was a huge success. I haven't kept close track of the numbers in the past, but we were pretty close to a record turnout. Of course, when Matt Winkler is you speaker, there isn't much selling you have to do. And he certainly did deliver. Windows Workflow is really going to change the way you architect your applications and you need to know how. Doing so with Matt just makes the process a bit more clear and a lot more fun. If you were in attendance last night, you certainly know what I am talking about. Look for his slide deck at AADND later today.

Just a couple of "thank you"s before I end this post...

  • Dave Redding - worked hard on promoting this and has proven to be a strong leader.

  • Dave Baldwin - Keeps right on top of the website and has some fantastic - and very aggressive - ideas.

  • Dave Pease - Created the flyers that we posted around U of M and WCC. Defintely a future Board member.

  • Scott Zischerk - Yet another future board member. Great ideas.

  • Bill Wagner - He's the president - and my boss - who was there the for much needed advice.



and our Microsoft folks...

  • Josh Holmes - Thanks for booking Matt when you were still program chair for AADND and staying involved in the group

  • Drew Robbins - Thanks for the pizza!

  • Jennifer Marsman - Thanks for getting Matt to the meeting on time.

  • Gautam Reddy - We've only just begun using his expertise

Labels: ,

Tuesday, January 09, 2007

AADND Announcement

Tomorrow is the first meeting of the Ann Arbor .NET Developers User Group of 2007 and we are kicking it off in style with Matt Winkler (see previous posts). But as a voracious reader of my blog, you already knew that. Let me tell you something you don't know. Following the meeting, we are going to have a get together at one of my favorite gathering places, the Ann Arbor Brewing Company
where we will be talking about how we can continue to grow our group. One of the things we want to discuss is how we can increase our student presence. I truly - strongly - feel that our group should reflect the community that we live in. And if you've ever been to the Ann Arbor, you know that students make up a big chunk of that population. So all of you students in Ann Arbor (and Ypsi, WCC students) make a point of being at the user group meeting and our influentials meeting tomorrow night. Remember, 6:00 pm.

I actually wanted to announce a our new points program, but it appears my good friend Dave Redding has already beat me to the punch as well as making a very bold promise. Go read his blog to find out how you can get your prize winning AADND logo tattooed on his arm.

Labels:

Thursday, January 04, 2007

CodeMash, CodeMash and more CodeMash

CodeMash – I'll be there!Ah, yes. CodeMash is coming! As the "Facilities Coordinator", I was very busy making sure all of the details are taken care of. Let me assure you, there are a lot details! But Jim Holmes came to the rescue and has taken over a portion of said coordinating. Whew! Registrations are continuing to come in and we are inching closer and closer to to our original estimates. Dare I say that we'll go over?

Labels:

Wednesday, January 03, 2007

Matt Winkler Speaking at AADND on January 10

That's right. Matt Winkler, Technical Evangelist for Windows Workflow, will be speaking at AADND on January 10, 2007 in downtown Ann Arbor, MI. You've heard me prattle on and on about WCF, but WF is equally cool - maybe even more so. This is really going to change the way you architect your applications. Come and check it out.

A little about Matt...
Matt Winkler is the Technical Evangelist for Windows Workflow. He was born and raised in St. Louis, Missouri, home of Budweiser, the Cardinals and toasted ravioli. After college at Denison University, he returned to work for a consulting firm and a software development firm. For the last few years he has been focused on integration and workflow technologies, so he's very excited about Windows Workflow, and looking forward to finding many different cool uses for it.

Labels: ,