I recently attended the annual CodeMash conference in Sandusky, OH. And once again, it was an intense, learning-filled three days in the company of other great software developers. This year I focused my learning on cloud computing and other database topics.
Day 0 – The pre-compiler
I spent the pre-compiler learning about Windows Azure in the morning and Amazon Web Services in the afternoon with Rob Gillen and Michael Wood. Both sessions were excellent. Both leaders have worked in both technologies, so they were able to talk about the differences between them and when you might choose one over the other. They offered up time for the attendees to sign up for both services and work through a simple app in these two versions of the cloud. My overall impression is that it can be fairly straightforward to get a basic app up and running. It might take an hour or two, but the concepts are not difficult. Both Amazon and Microsoft have and continue to work hard to streamline the process. Converting an existing application will take some effort because certain aspects of the app might need to be rethought and reworked. I didn’t complete the exercise on site, but will continue to work on them in the weeks to come to continue the learning.
Day 1 – How many presentations can you pack into a single day?
The day started bright and early with a plenary session given by Chad Fowler of The Passionate Programmer fame. This was an entertaining and engaging talk about software as a craft. The two notes I made from the talk are:
- Stockholm Syndrome in the work place – Check out Chad’s blog to read more about this, then ask yourself if you’re suffering from this. And if so, how do you escape?
- Virtual personal assistants – I’m intrigued! Might try this out some day.
After the plenary, it was onto the breakout sessions. The first I attended was “Netflix in the Cloud” with Carl Quinn. He talked about how Netflix is moving away from having their own data centers in favor of Amazon Web Services, and their process of moving their various services and apps into the cloud piece by piece. He touched on re-architecting for the cloud and latency issues. Honestly he could have used about 3 more hours for this talk. Netflix is a big operation and we could learn a whole lot from their experiences. It was a very interesting talk.
I followed it up with a “Asymptotics and Algorithms – What You’ve Forgotten Since University” with Gary Short. Gary’s a great speaker, but this was a too beginner for me. I guess I haven’t forgotten all that much since school, as I feel like I worry about algorithm complexity on a daily basis, particularly with my engineering clients who process huge amounts of data routinely.
During lunch I had a long conversation with Tim Wright, a fellow developer who works with engineering applications. It’s always good to talk to others doing similar things to hear what tools they are using, what approaches they take to problem solving, what insights they can offer. CodeMash is a great opportunity for this, as are most conferences, a chance to get out of one’s normal work environment and socialize with folks while learning from them.
In the afternoon I delved into relational vs. non-relational databases during Mark Ramm’s “SQL to NoSQL: A Typology of Databases”. Mark is a good speaker with a lot of experience, and this talk was definitely helpful in introducing us to NoSQL concepts and when a NoSQL database might be a better choice than the oft-used relational ones.
My last session of Day 1 was “Building a Self-Scaling and Self-Healing Could-Based Processing System with Amazon AWS and PHP” by Dirk Merkel. This was a nice complement to the first session of the day, because while the application he discussed was much smaller in scale, it still required some architectural thought and made use of many of the same concepts as the Netflix application in order to be implemented in the cloud.
The learning portion of the day ended with another plenary session during dinner with T.J. Giuli from Ford’s research center. He talked about university students developing social networking applications for in-vehicle use. It was a somewhat interesting talk, but I was reminded of the work that I did at Ford 10 years ago on how to access information while operating a vehicle and the problems associated with driver distraction.
Day 2 – There’s still a little room left in my brain, so let’s cram some more in there
Thank goodness the breakfast was later on Friday and there was no speaker during it, because after the marathon the day before I needed a little more time to ramp up to full learning speed.
I really wanted to listen to Jim Weirich’s “Are You Satisfied With Your Tests?” talk because I heard he’s a good speaker, and no, I’m frequently not satisfied with my tests, but alas it was standing room only and I couldn’t even get in the room. Instead I chatted with a fellow dev from Speedway (the gasoline company!) about life in the software trenches. The hallway sessions can be educational, too.
My first talk of the day was Joe Nuxoll’s “Rules For Good UX Design”. Joe is great speaker who’s comfortable in front of a big audience, and his session was very well attended. I chuckled when he suggested to us that the underlying data structures should not dictate the UI, and then showed this god-awful engineering app dialog with a million different controls and inputs and such. It’s a good reminder, because engineers writing software can frequently design some really awful UIs, and they notoriously undervalue a really good UI. A straightforward, simple to use, simple to understand UI can improve productivity and bring clarity to a process, which has value if the net product ultimately saves a company money. If I can get my engineering clients spending more time really developing insights into the problem they’re working on and less time hunting around for that one little option that lets them tweak a parameter, I’m bringing value to them. I also learned the term “assy” in reference to poor UI design. Thanks, Joe!
The lunchtime keynote speaker was Scott Chacon from GitHub, who gave a very provocative talk about making the workplace a better place to work. His main premise is that workers should be empowered, and if they are they will be better employees. My own employers follow this principle, and it’s what makes working at SRT Solutions so wonderful. However, some of Scott’s suggestions, such as banning all meetings, are impractical and I don’t think actually address this issue. Still, he was fun to listen to, even if I did come out of the talk ready to share how much I disagree with him on several of his points!
My final cloud talk of the conference was “Windows Azure – What, Why, and How” with Michael S. Collier. This was largely a review of what was covered in the pre-compiler, but good reinforcement and he gave a nice talk. He gave a nice plug for Cerebrata Tools, which I’ll have to check out.
My last talk of the conference was “Becoming an rX Pusher with the Reactive Framework” by Jim Wooley. It was an interesting dive into writing LINQ expressions using the Reactive Extensions event queues to process events. This is the sort of thing I can try out directly in code I’m writing for customers, so it was a good ending to the conference.
Summing it all up
CodeMash was a great opportunity for me to get started down the cloud computing path. Before I went I knew almost nothing. Now I feel like I have a basis upon which I can start building my first cloud apps. During the conference I had some great discussions and left with a number of new technologies to try and things to consider when working on my day-to-day projects. The conference was time well-spent.