Election Meltdown

I was a volunteer for the Democratic Committee in Arlington Mass. They have an impressive operation, just like what you’ve heard. For example, the systems they used to deploy us volunteers.

I walked in the campaign office, untrained and unschooled. Within minutes I was assigned my very own ‘turf’. What is a turf? A turf is a neighborhood of about two to four streets  assigned to me and only me. 

I was handed a clipboard with a sheaf of sheets describing my turf. The clipboard included:

  • A map of a nearby neighborhood, with a series of dots on certain, but not all houses
  • A list of addresses in street order, first one side and then the other
  • With each address a list of names of people, and an area for notes
  • And a short script explaining what I was expected to do once I knocked on the door

Note that not all houses on the streets are marked. Only those that that their database said were kind of on the fence and with a little nudge might decide to go and vote for Obama and Warren. Supposedly, no definite Republicans nor committed Democrats were on the list. The list had about 50 houses, probably they had figured out that that was the approximate tolerance of a volunteer.

I could tell you similarly impressive stories about their dial-a-voter tool that would allow me to make one or 100 calls from my home computer, specifically targeted at undecided voters or those who might forget to vote, tell me who they were, what to tell them, remind them where to vote and so on. All from a web browser.

Very cool.

Now, in contrast. Here’s an article about how Romney’s system was developed (Microsoft,) deployed (centralized in Boston) and basically crashed on election day. Here’s a nice quote:

“…The end result,” Ekdahl wrote, “was that 30,000+ of the most active and fired-up volunteers were wandering around confused and frustrated when they could have been doing anything else to help. The bitter irony of this entire endeavor was that a supposedly small government candidate gutted the local structure of [get out the vote] efforts in favor of a centralized, faceless organization in a far off place (in this case, their Boston headquarters). Wrap your head around that….” (from Arstechnica)

Tens of Thousands of Servers. Wait.

Just one phrase that jumped out of the new missive from Zuck about privacy:

“As a matter of fact, privacy is so deeply embedded in all of the development we do that every day tens of thousands of servers worth of computational resources are consumed checking to make sure that on any webpage we serve, that you have access to see each of the sometimes hundreds or even thousands of individual pieces of information that come together to form a Facebook page.” (from Our Commitment to the Facebook Community)

When I tell (non computer) people that it takes hundreds or thousands of servers in hundreds of data centers to run something like Google or Facebook they are surprised.

Even I am surprised at “tens of thousands of servers worth of computational resources.”

Wait, why the nuanced phrasing? What is a server’s worth of computational resource? Is that a server or something else? Wait, what’s a server anyway? Oh well. Parsing.

I’ll be teaching a course at Brandeis University

Follow along as I develop the course: Brandeis University Web App Dev, Mobile App Dev and Incubator

I’m fortunate to have the opportunity to co-teach 3 courses next year at Brandeis University. It’s something that I have wanted to do for a long time now and I am looking forward to it. As an experiment, I thought I would publish the course notes as I am developing them and perhaps get some feedback, suggestions or even volunteer guest speakers.

Here are the blurbs:

  • Web Application Development: An introduction to web programming that covers the fundamental languages and tools, including HTML/CSS for page layout, javascript/ajax for client-side interaction, and server side programming in Java, Ruby, and SQL. The course will also discuss security, scaling/optimization, and multi-tier architectures.
  • Mobile Application Development: An introduction to the design and analysis of mobile applications that covers the architecture of mobile devices, APIs for graphical user interfaces on mobile devices, location-aware computing, social networking. The course also covers the theory and practice of space and time optimization for these relatively small and slow devices.
  • Incubator: An introduction to software engineering for web and mobile applications. This course covers agile programming techniques, rapid prototyping, source control paradigms, effective software documentation, design of effective APIs, software testing and analysis, software licensing, with an introduction to business plans for software entrepreneurs.

I hope you are interested and take a look at the detailed syllabus and course notes and give me your comments and also volunteer as a speaker (we will be looking for a different speaker every week.)

Follow along as I develop the course: Brandeis University Web App Dev, Mobile App Dev and Incubator