Sunday, January 13, 2008

CodeMash 2008 Day 1

OpenSpaces Conferences
Bruce Eckel

Bruce discussed the OpenSpaces conference technique. With this technique, the attendees determine the session schedule and topics. Kind of a like an in-person wiki. CodeMash 2008 had an OpenSpaces track. I didn't attend any OpenSpaces sessions as my schedule was filled with traditional sessions.

Software Engineering & Polyglot Programming
Neal Ford

Neal's presentations were, by far, the most thought provoking. He's an excellent presenter whose subtle humor makes his talks very entertaining.

Polyglot programming means developing multi-lingual software. Anyone who has developed a sql backed web app is most likely a polyglot programmer because you would have used

sql + c# / + html + javascript

Polyglot programming is about using the right language for the right problem.

Neal also presented a comparison of software engineering to traditional engineering.

The final output of a traditional engineering project is a set of drawings. Those drawings are the input into the manufacturing process. In traditional engineering, the design process is iterative, creative, and difficult to pin down to a schedule. The manufacturing process is very expensive.

The final output of software engineering project is the source code. As with traditional engineering, the design process is iterative, creative, and difficult to pin down. The manufacturing process, compilation and deployment, is incredibly cheap.

He contends that the primary tools of software developers are languages, not IDE's. He also states the the engineering rigor for software development is automated testing.

The critical importance of automated testing was one of the primary themes of the conference.

Testing Mandatory
Joe O'Brien

Joe is a Ruby guy, so his session was focused on testing in Ruby.

Joe described an interesting technique for improving your unit testing habit and for learning a language's api. He suggests writing unit tests against the language's api.

Say, for example, you're learning about the .Net String class. You could write a test like this:

public void TestStringTrimming()
{ Assert.AreEqual<string>("Trimmed", " Trimmed ".Trim()); }

If you're using Ruby and RSpec, your test could look like this:

describe String do
it "should remove leading/trailing whitespace when you call strip" do
"Trimmed" == " Trimmed ".strip

Joe also may an interesting point on code coverage. With Ruby, he goes for 100% code coverage. It's achievable because of Ruby's flexibility. He wouldn't try to get 100% coverage with C# or Java because the some things are just too hard to do, such as testing private methods.

FlexMock: We Don't Need No Stinkin' Objects
Robert Stevenson

I have to say that this was the weakest session I attended. Robert used wild west metaphors heavily in his presentation. I'm not a fan of westerns, so the metaphors didn't keep my interest. It's obviously not Robert's fault that he picked a metaphor that I'm not interested in.

In his presentation he shared a quote from Martin Fowler stating that stub objects and mock objects serve very different purposes. However, when he demonstrated FlexMock, he didn't highlight these differences. His session ended 30 minutes early. It would have been nice if he used that extra time to emphasize the difference between stubbing and mocking.

Mashing it up with IIS 7
Scott Hanselman

Scott gave the funniest presentation; a mockumentary about how great he was. The keynote audience was roaring with laughter. It was a great post lunch pick me up.

IIS 7 seems very impressive. Microsoft really seems to be embracing the polyglot programming world that we're entering. Scott's demo had a couple of technical difficulties, but overall it was a very nice presentation.

Surviving & Prospering as a Computer Industry Consultant
John Stout

John Stout is the founder of Stout Systems. His presentation was focused on marketing techniques for independent software developers. This was a vendor session, which meant he only had 30 minutes. That didn't leave much time for details. None the less, I liked how CodeMash tried to mix business sessions into the technical sessions.

Applied Service-Oriented Architecture
Brian Prince

Brian gave a good presentation on SOA. His presentation didn't contain much new material, but it was well organized.

Advanced Ruby Design
Jim Weirich

Jim Weirich is an excellent presenter. He's also one of the smartest people I've ever met. He presented real world problems he had to solve and the advanced Ruby techniques he used to solve them. He was quite good at getting the audience involved.

This presentation by Dave Thomas is another good source for advanced Ruby programming techniques (Dave Thomas wasn't at CodeMash, but I thought this was a good place to put the link). Code Ninja Challenge Part 1 had a booth at CodeMash and they are hiring. They posted a couple of code snippets on an easel, asking the attendees to explain what the code snippets did. The first snippet was a recursive function that took a list of strings as input. It prepends the string"Ninja" to each member of the list, unless the member was "Ninja", in which case it changes the member to "". I had to ask what language the snippet was written in. The snippet was in Perl, which shows what little experience I have with Perl. I was still able to give the answer they were looking for. I was rewarded with an Ninja Coder sticker. They were doing actual interviews right there, but the the jobs were in Seattle. I think it would be neat to work for, but not neat enough to move across the country.

Overall, I enjoyed my first full day at CodeMash. So far it's been worth the investment.

No comments:

Post a Comment