Mad, Beautiful Ideas
Portland Code Camp 2010 Recap

If I had to choose a single word to sum up the Portland Code Camp event, it would be 'inspiring'. I sat through some excellent presentations, which certainly have recharged my interest in technologies like F# and Clojure, but also the scale that the organizers for this event managed to meet was awesome. We were lucky, in that we were able to meet with the organizers for a short while in the evening and get some really amazing advice that we hope to use to make our own event a success this fall.

What were some of the impressive things about this event? Well, they had the Mayor of Portland on hand to talk about Technology companies in the area, with questions submitted via Twitter. Presenters and Volunteers were provided with work-quality Polo Shirts, instead of T-Shirts that I would likely never have worn again. There were hundreds of people present, and while I haven't seen a final count just yet, I'm certain they reached their goal of 600+ people. In all, it was by far the most professional code-camp that I've seen.

If it had a weakness, it's a similar weakness that all Code Camps I've been to have had: They feel too heavy with Microsoft technologies, which is a turn off for a certain segment of the coding population, including myself though (and perhaps because) I deal with these technologies on a daily basis. However, having spoken with the organizers, they were trying to work with the Bar Camp Portland people to try and bring that Open Source perspective into the Code Camps. I hope that our event, since there is basically no open-source heavy events to compete with, might help bridge that gap.

I also took the opportunity to test taking notes via the Mind Mapping method of taking notes, trying the VYM software package I found in the Ubuntu Repositories. I'll have to try a few other software packages, but I found VYM easy to use for simple mapping, though I couldn't discover keyboard shortcuts for flagging entries or changing colors. I didn't have time to look very hard though.

I began with the F# talk given by Microsoft's Michael Hale, a PM at Microsoft on Visual Studio and F#. I've been hearing about F# for several years, and been meaning to look into it, having been exposed to Functional Programming via LISP in college, and believing in the potential of functional programming for making concurrency far easier to solve. F#'s syntax kind of reminds me of JavaScript, in that it's a LISP-derivative that looks more like C, though admittedly, F#'s syntax is further from C than JavaScript's.

F# is still a .NET language, so it's object model is the same as in every other .NET language, which makes sense in that F# can be merged seamlessly in with other .NET code. Plus, Michael gave us several examples of code written in 'normal' iterative methods, and expanded into how they could be rewritten functionally. In some ways, I think the syntax of F# is more clear than the languages from which it is derived. Rather than nesting functions with parenthesis as you do in LISP, you can basically pipe commands together, the only weakness to that method being that the pipe can only be applied to the last argument of a method. However, that's only a minor inconvenience. Best part about F#? Not only does it work in Mono, but Microsoft actually provides an install script for Mono. Awesome. And it encourages me to spend some more time with F# in the near future.

My next hour was spent learning more about the Reactive Framework, which is a pretty interesting way of looking at events (I just hope Microsoft doesn't enforce any patents I'm positive they've applied for on this technology). Basically, with the Reactive Framework, you subscribe to a sequence of events, but then you can easily mash events up to do things like "When X happens, followed by Y, do Z." With Rx, this can be done with a couple of lines of code, instead of dozens of lines of state machine and state tracking code. Given that Rx has been ported to JavaScript, and my favorite framework, I'll definitely do an upcoming post on Rx and YUI3.

Speaking of YUI, my talk went well. I had a dozen or so people come, some of whom left early (I assume I was being too basic, but that was my intent), and I had some really good discussion. I might have done too many comparison's to jQuery, but jQuery is the 800 pound gorilla in the JavaScript room right now, and since Microsoft endorsed jQuery last year, most people programming in the MS ecosystem have little to no exposure to any other options. It is something I'm going to consider revising for September however, when I hope to also do a section on creating custom YUI3 modules.

I also had the opportunity to meet Ryan Grove, YUI Core Team member, and it was nice to finally meet in person someone from the team, as well as have them feel that I'd done a good job of describing the framework. I freely admit to being a bit of a YUI cheerleader, and I fully intend to continue telling people about it and trying to convince them to give it a shot.

After my talk, I decided to go to a conversation about Clojure and the Semantic Web. To be clear, I was more interested in the Semantic Web discussion, which barely happened, but Clojure was an interesting Java-based LISP. Unforuntately, the version in Ubuntu 10.04 seems to be just a bit out of date, and some of the code examples he presented didn't work. Still, it might warrant a bit more looking, though at this point I'm a bit more interested in F#.

I ended the day learning about the Mobile Web from a developer who seems to know what she's talking about. This is a relevant session to me, as I'm planning to do a mobile version of one of our websites this summer. There was a ton of great, useful information in this post, and I think it definitely provided me with a solid framework for starting this project. If I have a complaint about the talk, it was that it kind of felt like a sales pitch for her class sometimes. I can't really begrudge her mentioning the class, but there did seem to be a lot of 'we go more in depth on this during my class' kinds of comments. Still, Gail was very knowledgeable, and certainly got me excited to get going on mobile web development, even in spite of the fact that doing it right is going to be more work than I'd hoped it would be.

In all, it was another successful event. I got some great information, met some pretty awesome people, and got back in touch with some people from years or events past. It was a really long day (some 14 hours), but I'm exceedingly glad to have gone, and if our event can be even a quarter as good as this one was, I'll be thrilled.