Tom and I left early on Saturday and drove to Manchester for Drupal Camp NH. Tom and I met around the turn of the century when he worked for me in the BCRC supported by our Pew course redesign grant. Since then, he's gone onto graduate school, fatherhood, and other harrowing adventures. He does freelance web design work in the area, but is super busy with babies and work and life, so I don't get to see him very often. We were both looking forward to the drive to actually have some time to talk and reconnect, let alone to share the experience of Drupal Camp.
We arrived right on time and in good order. Check-in went smoothly. They provided a little card you could slip into your badgeholder with the morning schedule on one side and the afternoon schedule on the other -- that was a useful innovation, to not have to refer to some separate piece of paper.
Tom and I intentionally selected different talks to attend in order to get maximum coverage. The first I attended was about Drupal security Hack-proof your Drupal App by ebeyerent. It was fantastic. I'm reasonably familiar with security and Drupal security, but I still learned a lot. The biggest insight I got was to understand that Drupal doesn't vet user input. Although you have "input filters", Drupal generally saves user input directly into the database (with the exception of escaping meta-characters that might allow SQL injection) and then its the responsibility of the themer/programmer to ensure that they check user input on output before displaying it (and there are eight different functions for doing this in particular contexts: check_plain(), t(), l(), etc). Getting this insight alone was worth the trip.
Another great insight I had actually learned from Tom on the way down. We had begun talking about developing for the mobile platform (something I've been meaning to learn more about for a couple of years) and he mentioned that the keyword was "responsive design" and that the modern approach was to design first for mobile, which is generally the most limited platform. This helps focus on the key functionality that the website needs to provide and make sure that its accessible. Later, you can easily add-on a pretty, fancy skin for giant monitors. But getting people to focus on what's important is harder when the primary concern most people have in that context is aesthetics. With this preparation, I went to Jake Strawn's presentation on "Responsive Drupal Today" where he said all this again with many excellent examples drawn from his work on Omega.
In the third session, nothing grabbed me, so I went to the code-sprint room and spent some time trying to hack on the Nodewords module. With the guest wireless, I couldn't use ssh to get to a server so, instead, I spent most of my time installing apache, mysql, php, drupal, and nodewords and, at the end of the hour, had only gotten to the point of configuring the module and looking through the issue queue. I tried applying a user-submitted patch for one issue to hack on it a bit, but it didn't apply cleanly and I didn't have time to sort out what was wrong. It was unfortunate to not get any actual coding done, but still good use of my time.
Lunch was great: pizza, salad, etc. There was plenty of food and lots of snacks later. There wasn't any Coke Zero, which I would have preferred, but lots of bottles of water.
I went to Christina Inge's presentation on Analytics and Usability. The presentation was a little basic for me: too much time on why you should care about analytics, installing the google analytics module, and signing up for an account. I could have used more in-depth tricks on actually using the data. But I don't know how representative I was for the audience: the audience might have needed the more basic info.
The last presentation I attended was Why Drupal Projects Fail. This didn't really hold any surprises, but was a good reminder that the key issue is one of expectations. No matter if you think the project is a "success", if you violate the stakeholders expectations, the project will be perceived as a failure. Managing expectations requires good communication, transparency, and honesty. Good reminders.
Tom and I skipped the last presentation and tried to head home. We had been watching the forecast, but the storm was ahead of us. After a few miles, it became clear that the intelligent thing to do was to go back and find a hotel for the night. We got back to the conference in time for the closing plenary. We each won a prize in the raffle: I selected a copy of the Drupal 7 book and got the available authors to sign it.
On the way to the afterparty, we reserved a room at the Radisson and then spent a pleasant couple of hours at Milly's Tavern -- a great microbrew in Manchester. I tried the IPA and the Hopzilla: excellent bitter beer.
By the time we headed to the hotel, the snow was already several inches deep. As we approached the hotel, we found the roads barricaded by the police due to an event at the Arena that was across the street from the hotel. We drove all around the block looking for a way to get up to the hotel -- nearly getting stuck once or twice. Eventually get got in and spent a reasonably pleasant night in the hotel. I tried to check email and found that the servers were down. I was able to reach my home server, which helped me sleep a bit better.
The next morning, I foolishly decided not to breakfast before we left the hotel. I was eager to get going and didn't want a giant buffet breakfast, thinking that we could pick something up along the way. But it was clear once we got going that no place along the highway had power. Trees were smashed down everywhere. Tom thought we were driving through giant stands of birch trees, until we saw it was just wet snow coating the north-east sides of the tree trunks. Power was out along the Masspike too. At the second rest area, we found a McDonalds that had generator power -- they were only serving coffee and a few food items, but we got a bit to sustain us.
In Holyoke, we stopped at Tom's house. The snow looked to be around 1.5 feet deep, where it was in the shade. Many streets had downed branches and wires, but Tom's street was not too bad. We had to park on a side street, but we were able to get up to the house and touch base with Kirsten and the kids. They hadn't lost power. In a bit, we got back in the car and headed for Amherst.
There were no working traffic lights. Crazy people were driving right through them, rather than treating them as a 4-way stop. Insane. The power was off everywhere. A few business had generators, but whole the valley looked to be shut down.
At home, everyone was OK. The power had gone off around midnight, but there was no damage to the house or even to most of the trees. The cherry tree looked undamaged. Our azaleas were a bit smashed, but looked like they might recover. There was some water in the basement, but it hadn't yet gotten to the hot water heater (the first serious concern). Since then, we're just waiting for power.
After a long cold, night, we went for breakfast at Kelly's in shifts. Lucy and went first and confirmed that they were open and serving food. Alisa got the rest up and brought them a bit later. Afterwards, we headed for the BCRC to charge up our devices and get some connectivity. It's still going to be days before power is fully restored in Amherst, but we're not in some isolated cul-de-sac and we hope to get power back sooner rather than later. It's been quite an adventure.