New England GiveCamp 2011: What A Weekend!

Last weekend was New England GiveCamp 2011, in which 100+ developers, designers and other volunteers gathered to donate time and skills to some 30 charities who needed IT help.

This year, I was project lead for Alex’s Team Foundation, based in Andover, Mass. Our team was Saurabh Moondhra and William Wade, both experienced ASP.NET developers.

Alex’s Team Foundation, named after 16-year-old Alex Miliotis, who passed away from leukemia in 2002, raises money to support nurses and other oncology professionals, and supports youth sports. The foundation is largely the labors of Patti Rae Miliotis, Alex’s mother, and a handful of reliable volunteers. Like every small nonprofit, Alex’s Team doesn’t have a lot of money.

Like every other leader of a small nonprofit, Patti is pulled in a lot of different directions and has all she can do to keep track of the people with whom she comes in contact, nonetheless all the donations she gets. Patti also hosts a few events every year. She basically needs a way to keep track of who attends those events or otherwise supports her organization, and to mail merge thank-you notes.

So that was the project I led this weekend: Converting a bunch of data stored in (of course!) Excel spreadsheets into a more relational database, with the ability to export that data in order to mail merge thank-you and fundraising letters.

CiviCRM: Too Much, Too Late

At first, I thought we could use CiviCRM, which is a Joomla / Drupal extension to manage membership, events, capital campaigns, email lists and the like.

The primary benefit in it, to my thinking, was that it does most of what Patti needed done; so, if she could use it, most of the work would already be done. That would allow us not only to import her spreadsheets, but also pay some attention to re-skinning the foundation’s current Web site (which is sorely needed).

CiviCRM’s biggest drawback is a huge learning curve. It is not easy to understand out of the box, especially if someone doesn’t have prior experience with customer relation management software. That was Patti’s problem: It was too daunting, much like the system she had tried previously.

So our task played directly to our strengths: Make an easy-to-use contact database on the Web, which could also track donations and event registrations.

Friday: Three Ways To Skin A Cat

Patti asked that we use Access to make her database, since she has some experience with it. Unfortunately, nobody on our team knew much about Access, and at least two of us have had negative experiences with it.

At last year’s GiveCamp, William wound up having to become an on-the-spot Access developer, and it left something of a sour taste. I’ve never had much success building standalone Access databases, largely because I find its visual query and form designers extremely limiting. Saurabh said he had little to no experience with Access.

The one thing we all knew was ASP.NET Web Forms. Well, to be specific, we knew three different versions of ASP.NET Web Forms. Saurabh programs in C#. William and I prefer VB.NET. William likes using Linq; I prefer old-school stored procedures; Saurabh likes inline SQL statements.

The good thing in that is, an ASP.NET Web application doesn’t need to run under just one language, and so long as the connections and queries are good, you can mix and match database layers to your hearts’ content.

So we settled in to design a database schema that could record contacts, donations and events. That consumed most of Friday night’s efforts.

Saturday: Tackling The Obstacles

Saturday started with a lot of little hiccups.

DiscountASP.NET very kindly donated the Web hosting for our application. However, they require a domain name in order to host a site, and wouldn’t donate that. Because we weren’t redesigning the Alex’s Team site, which needed to remain on its current server, we couldn’t use the one domain name Patti had. So I popped on over to GoDaddy and bought a special domain for the occasion.

With a domain in hand, we could go ahead and create our application. Except that DiscountASP.NET, which would also donate a SQL Server database, has a separate ordering process for add-on services, which meant we would be delayed for several hours while we waited for the database to be set up.

Since our entire application was basically just a GUI to a relational database, we really couldn’t get much done without a database. So I tried to use one of my free GoDaddy Web hosting credits to set up service sufficient to get us started.

Unfortunately, I couldn’t use the newly registered domain to access any free service, because I guess the registration was too new; also, all the other domains I have registered through GoDaddy point to something, so I couldn’t use one of those.

Thankfully, GoDaddy will sell Web hosting for $8 for one month without need for a contract, so I just went ahead with that; and within 30 minutes, we were able to build our database and start making forms.

For the record, DiscountASP.NET came through for us completely by early Saturday afternoon. It was only my panic, lack of timely preparation / organization and impatience that made me use GoDaddy. This application will soon be moved to DiscountASP.NET, where it will permanently reside. I’ve used DiscountASP.NET for Web hosting in the past and in terms of features and reliability, they simply cannot be outdone.
  • I didn’t pre-install Visual Studio on my crappy laptop; that took two hours out of Saturday morning. A new laptop will definitely be in the offing for next year.
  • While waiting for that install to finish, I went on a wild goose chase for a convenience store in Cambridge. Suffice it to say, the one nearest to NERD is a 7-Eleven about a half-mile away; but I wound up hanging around for about 45 minutes outside the Coop, waiting for it to open, because I was mistakenly led to believe it sold tobacco. (I fell off the no-smoking wagon for the weekend; I knew there would be some stress, and nicotine definitely keeps me calm.) So what should have been a 20-minute break turned in to an hour and a half.
  • Somewhere around 1 pm, I mistakenly thought we would have to work in ASP.NET 2.0 in order to resolve some namespace and other issues, and I communicated as much to my team. This led them to delete what they had made to that point. Within 5 minutes, William had corrected my error. Saurabh was nonplussed.
  • After dinner, we were ready to start integrating our files. Non unexpectedly, we ran into a number of small issues. It took a little while to get William’s files working on my laptop, but try as we might, we just couldn’t get Saurabh’s C#-based solution to work. So he wound up converting them to VB.NET. I went back to the hotel to finish my part of the solution.

On Saturday night, I gave a quick overview on WordPress for the non-profits that I fear was a real snoozer. (Memo to self: Never host a seminar after dinner.) During that, I won my choice of a number of software prizes; but what was left available in the first-come, first-served prize pool didn’t really thrill me.

William had his eye on a copy of DevExpress DXPerience Enterprise, a bunch of .NET controls, worth about $1,300 on the retail market. I seldom program in Windows and he does all the time, so I transferred my winnings to him.

A Word About The Royal Sonesta

While many GiveCampers — William and Saurabh among them — spent the night at NERD, I stayed at a hotel, because I’m too old and fussy to be sleeping on hard floors. Also, I’m in Cambridge, which is quite a treat for me, and I wanted a chance to spend at least a little time in the city each night, even if it was just walking a half-mile to the hotel and having a drink or two in the lounge. So I opted to stay at the Royal Sonesta, which had the best rates.

This simple plot was foiled, however, by the Royal Sonesta’s unfathomable renting out of the first-floor lounge on both Friday and Saturday night. On Friday, I was able to get a single beer, but it felt very strange crashing a private event and I wound up calling it a night early. On Saturday, they just turned me away, period, because a wedding reception was being held there.

Also, while the Sonesta loudly advertised its local shuttle service, they require you to register for it; and nobody saw fit to remind me of it at the concierge desk, when I asked for a shuttle schedule. As a result, I stood outside for a half-hour on Friday night, waiting for a shuttle that never showed up.

Overall, the Sonesta’s staff was courteous and friendly; especially the front desk, porters and valets. But the concierges were inexplicably surly, brusque, unapologetic and unhelpful.

So while the price was great ($144 per night, amazingly good for Cambridge), the hotel was clean and the room / amenities nice, I cannot recommend the place. I mean, what kind of hotel closes its lounge to guests? And has concierge service that basically looks to do as little as possible, and that with a frown on its face?

Sunday: It All Comes Together, Like Magic

The great benefit of having competent, skilled and motivated team members is that their sense of urgency and their ability to adapt and overcome adversity are both fine-tuned. That was certainly the case with William and Saurabh; they were pretty much done by Sunday morning, and all we had to do was take one more crack at getting all three parts to play nicely with one another.

I let that task fall to William, and he did an extraordinary job getting everything to work; certainly, a much better job than I would have done. Meanwhile, Saurabh settled in to help Patti make some upgrades to her Web site, notably in getting her Paypal donation button working again, adding in some alternative donation options and adding Google Analytics to her site.

Saurabh also won an instant drawing on Sunday and scored a copy of Age of Empires III for PC. I had my heart set on winning a WiFi-enabled Kindle, which was being given away at the end of GiveCamp; but that didn’t happen.

Not to say we didn’t get some great swag:

  • A full-boat copy of Microsoft Office 2010 Professional. Awesome!
  • A thumb drive. You can never have too many of those.
  • A set of jewelers’ screwdrivers. Again, you can never have too many of them.
  • A screw-top sippy cup with durable straw. Which is exactly what my spill-prone self needs to have on his work desk.
  • A miniature Nerf football. Awesome stress reliever.
  • A pen and pad of paper. Again, never can have enough of either.
  • A puzzle book. Not that I had time during the weekend to mess with puzzles.
  • A GiveCamp T-shirt. I like T-shirts as mementos.

During the weekend, Jim O’Neil dropped scores of additional treats on a giveaway table, many of which were O’Reilly books. I managed to get a spare puzzle book, several notepads, a PL/SQL quick pocket reference, Access 2010: the missing manual and Visual Basic 2010 Step By Step. There were a number of other books available but I was too slow to score them. However, I understand I am allowed a free ebook from O’Reilly, as well.

The bottom line is that we got our project done, it works, Patti seems fairly pleased with it and we had a great time this weekend. It’s definitely renewed my commitment; I’ll be a GiveCamper until I can’t do it any more.

All links in this post on delicious:

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  • Check out the Commenting Guidelines before commenting, please!
  • Want to share code? Please put it into a GitHub Gist, CodePen or pastebin and link to that in your comment.
  • Just have a line or two of markup? Wrap them in an appropriate SyntaxHighlighter Evolved shortcode for your programming language, please!