My son Evan (a high school junior) and I attended CodeMash at the Kalahari Convention Center in Sandusky, OH, from January 8th through January 11th, 2013.
We arrived Tuesday evening and spent most of out time playing the Artemis Spaceship Bridge Simulator. This was a great way to start the conference. I most enjoyed being the science officer, while Evan tried most of the stations and then took a shot at being the captain of a successful campaign.
On Wednesday morning, we attended the “C# Async Programming Workshop” by Bill Wagner. This was indeed a workshop, where we were given a working Windows 8 Store application and tasked with enhancing it to properly implement asynchronous programming constructs. Bill did a great job of making us think about how to solve the problems without just telling us the answers. During the session, Bill introduced Evan to Jon Skeet, indicating Evan was a very talented developer. Evan and I quickly found out that Jon likes to ask the presenter a lot of tough questions. At the end of the session, the group of Bill, Jon, Evan, and Cori Drew took a minute to pose for a picture. Bill also introduced Evan to Esther Lee (Microsoft MVP Program Lead).
On Wednesday afternoon, we attended “How it's made: Behind the scenes of building Microsoft Roslyn” by Kevin Pilch-Bisson and Brian Rasmussen. I thought it was a very courageous undertaking to re-write the C# compiler in C#, support scripting, provide a parse tree, allow for extensible code refactoring, etc. Evan was simply smitten. This is exactly what he was looking for to begin his next programming challenge. That night it took him 10 minutes to implement a REPL script processor, and another 4 hours of sheer glee working with Roslyn before he finally decided to get some sleep before his own presentation.
On Thursday morning we listened to Neal Ford’s very disappointing (and dare I say hypocritical) keynote. We then attended the first 10 minutes of “Machine Learning – Predicting the Future” before walking out. Evan went to “JVM Bytecode for Dummies” while I prepared for my presentation.
On Thursday afternoon Evan presented “Compute Faster with the GPU in C#”.
Abstract: We all know the GPU can be thousands of times faster than the CPU. Yet few of take the trouble to learn yet another obscure language just to gain a few clock ticks. If you think it would be nice if we could just write code in C# and have it run on the GPU, then this talk is for you. Join us as we write code from scratch to run on either the CPU or GPU. We will cover how to install and use Cudafy, pass data to and from the GPU and upload methods to run on the GPU’s massively parallel architecture. After this talk, the shroud of mystery preventing you from using the GPU will have been lifted.
Evan’s presentation was attended by 56 people, including Jon Skeet, Bill Wagner, Brian Rasmussen and an old friend Michael L. Jon asked a lot of questions, which was fine by Evan since Evan covered the material faster than he expected to. While the questions were tough, I felt they allowed Evan to demonstrate his depth and breadth in GPGPU computing and quick thinking. After the session, Brian mentioned that Evan’s session was the best he attended so far that day and casually invited him to visit Redmond sometime. Jon said the talk was “really good” and would install Cudafy. Evan continued to receive complements from several more attendees throughout the days.
Later Thursday afternoon, I presented “Controlling Precision Electric Motors”
Abstract: So you want to build a computer controlled device and toy motors just won’t cut it. It might be that you want to add motors to your telescope, build a model cable car with realistic acceleration, or add smooth precision motion to your parade float. If you want to graduate to industrial grade (and reasonably priced) small motor programming, then this talk is for you. We will dive deep into controlling intelligent stepper motor by tuning accelerations, experimenting with position accuracy, developing a homing sequence, adjusting run currents, and implementing dynamic position maintenance. After this talk, you will see the world of movement just waiting to be automated. The presenter has written code for many automation systems.
The session was relatively well attended and was fun for me. Because the room was not mobbed, I focused on participation and answering questions more than following the script I had prepared. I had no trouble covering all the material in the allotted time and received polite compliments after the talk.
As Evan was helping me gather the hardware together after my talk, Clark Sell stopped by to pick up Evan and bring him to the Dot Net Rock’s guys (Carl Franklin & Richard Campbell). Not long after, Carl and Richard took Evan behind closed doors to record a podcast session. The podcast should be out in a few weeks.
The waterpark party on Thursday night involved too much food, too many scraped knees, and too many coders sharing a hot tub. What could be better?
On Friday, Evan held an “open spaces” session on fractal rendering. Unfortunately, no one else was interested.
We attended “Touring the Universe with Scientific Python” where we both realized that Python seems to be a universe behind C#’s Linq. The concept of an active notebook where code snippets, output, and blog entries co-exist in a single document was impressive as a tool for the presentation of coding techniques.
I was invited by Jeff Blankenburg to co-present a KidzMash session “Why I Write Software”. We had a blast writing some code with the kids, even as they threw us for all kinds of “octagonal loops”.
Later in the afternoon, we attended “JVM JIT for Dummies” by Charles Oliver Nutter. This was an informative overview of how the compiler optimizes its work.
We could not help but to be impressed with the care and effort that went in to SRT Solutions’ very impressive Choose Your Own Application during their 20 minute vendor presentation. I strongly urge others to check out this great learning tool.
At the Bacon Bar, Evan topped his fresh hot bacon with chocolate syrup and sprinkles while I opted for a bit of white chocolate drizzle. A great way to end a great CodeMash!