Nicole Sullivan (@stubbornella) gave a talk basically on how to organize a large web project, titled "Creating Living Style Guides." It was more of a tips and tricks style talk, and there were several good ones. She recommended keeping style guides (in this case, art assets/prototypes/etc from the graphics artist) in the same repo as code. This forces the graphics artists and the devs to work closer together which helps prevent getting out of sync. She also recommended regularly grepping code for common css properties (margin, padding, colors, etc) to see how often code is duplicated. This can be used to consolidate colors, styles, etc into common CSS base classes and can also be used to guide future color choices. Finally, she recommended splitting code into components folders. Each component (e.g. a button) should have a single folder with a sub folder for CSS and JS files. Simple idea, but tends to go against the common approach of having a root CSS folder and a root src folder and always keeping CSS and JS separate. Great ideas!
The last session I attended that day was "Constraint programming in the browser" by Adam Solove (@asolove), and it was probably my favorite talk of the entire conference. Adam talked about using linear programming techniques to solve a wide variety of UI problems. As an example, he showed a website that used Cassowary, a linear constraint solver, that showed how the US government's budget relates to tax rates, various program spending levels, and the deficit. The entire system was specified as a system of linear constraints, meaning that the system was very simple to program, yet very powerful at the same time. What really piqued my interest though, was the talk about using a system like Cassowary to do UI layout work. That was probably my biggest light bulb moment of the entire conference! At Appcelerator, one of my two primary projects is the Mobile Web platform implementation of Titanium. One of my key contributions to the platform was the layout system, which at its heart already converts the input parameters to a series of parametric equations. It's practically begging to be used with a system like Cassowary. What makes the whole thing sad, for me, is that the core part of my dissertation involved linear programming and yet I still didn't make the connection until this talk...c'est la vie. There is the possibility that I will be working on a revised version in the near future, and I will definitely be considering using Cassowary for it.
I also attended a workshop on Backbone.js. I never actually bothered to learn it before, so I decided to finally just buckle down and learn it. Now I know it. Yep...
That night, we had a big "southern style family dinner." I'm not so certain on the "southern" part (maybe it's just cause I'm from Texas, not the deep south), but the family part certainly rang true. I talked with so many awesome people that night and had so many wonderful conversations. It was a perfect ending to a incredible conference (travel woes aside).
The following day, I headed home. It was an early flight, and given the lack of sleep, all of the conference attendees I ran into (myself included) weren't exactly talkative. There is one memorable part of the day though. I took one of the best photos I have ever taken while waiting at the Jacksonville Airport. I am very proud of this photo. I don't have a title for it yet, but I feel that the main characteristic of the photo is the sort of corporate representation of motion, exemplified by the graphic in the window, contrasted with the rather sedated look of the few people present in the image and the lonely feel of all the empty chairs, especially the empty wheelchairs looking out the window. I spent about 10 minutes contemplating how to take this photo, and then another 20 minutes waiting for a flight to leave so that the chairs were empty. I think it was worth the effort :)