The Golden Gate Ruby Conference was almost totally awesome.  There only two sour notes.  First, it was almost unbelievable how few women attended.  With about 200 attendees, six were women.  I have never been to a technical conference with so disproportionately few women.  I can think of all sorts of reasons (along with a number of solutions).  However, with this technology becoming in such widespread use and with such an awesome community supporting it, that stat must be radically improved for next year.

The second low point was Matt Aimonetti’s talk “CouchDB + Ruby: Perform Like a Pr0n Star.”  It is unfortunate that he took this joke too far.  What might have been a short, juvenille, eye-rolling bit of humor continued throughout the talk to become increasingly disturbing.  Amidst this normally warm, welcoming community, I spent an uncomfortable half hour wondering if I had somehow found myself in 1975.

The talk started out with a few gags: “size matters” (memory usage, amount of servers, infrastructure), reliability equated to viagra (no downtime, ready for traffic peaks, ready for more data), multiple partners (public interfaces, no discrimination), etc.  Matt even gave a nod to gender balance when he asked “are you a porn star?” and showed a picture (slide 13) with four drab looking people, including one women, and then the porn references slowed down and I expected him to get into the details of CouchDB.

If he had left it at a few introductory jokes, I would be writing a very different post.  Instead the porn references continued with images of scantily-clad women gratuitously splashed across technical diagrams and intro slides. As he got into code snippets, he inserted interstitial images every few slides (removed from the slides below).  The first time it happened, he mentioned that he wanted to keep everyone’s attention.   It had the reverse effect.  This technique was distracting and disrespectful to an audience who, frankly, is turned on by code.  This crowd had just watch hour upon hour of code slide shows and live irb sessions, often on the edge of their seats as they absorbed the latest whiz-bang plugin or coding technique from one of the masters.

My point is not whether pornography is good or bad.  I personally have no issue with it as long as it is created and viewed by consenting adults.  Watching pornography in the privacy of one’s own home or sex club is entirely different from unexpectedly sharing the experience with a couple of hundred Ruby enthusiasts.  I imagine that there were many men in the audience who were as uncomfortable as I.

What most pisses me off is that I had to write this blog post, instead of one about Ruby & CouchDB, which is a far more interesting topic.  Thankfully dedicated Pivotal live blogger, Ryan Dy, captured notes on the talk sans porn.

Josh Susser, organizer of the Golden Gate Ruby Conference, introduced this talk by saying that he wanted to have talks that weren’t only about how we do what we do, but also about why we do what we do. Gregory Miller’s talk “Trust the Vote: An Open Source Digital Public Works Project” addressed a significant issue for the United States and for democracy in general, and spoke to why the open source process that is so alive in the Ruby community is critical to solving many of the problems of our day.

Here in the U.S., we have some serious problems with our voting system:

  • No Federal Guidelines about how votes are counted
  • No assurance in California that absentee votes are counted
  • Problems with the voting machines and the companies who make them
    • Most voting machines are written on Windows95
    • 4 vendors creating voting systems in the US, may be 2 by the end of the year.
    • Very high barrier to entry: certification costs millions $, this is actually a dis-inventive to innovate
    • Natural conflict of interest: shareholder interest collides with public interest.  The companies have feduciary responsibility so the shareholder interst always trumps public interest.

The Open Source Digital Voting Foundation is seeking to fix this “critical democracy infrastructure.” We should consider it a “digital public works project” since it is so imperative, creating transparency by using an open source approach.  They are creating an endowment to support a public technology repository.

“Sunlight is the best disinfectant”


  • Dev process: core team essential for continuity
  • RFC Services: similar to IETF process
  • Design Congress: state elections directors arround the country in a virtual community to drive the business requirements
  • Federal Certification undertaken by the non-profit

All the software will be dual license; Public Development License & Commercial Deployment License, so that it can be easily adopted by corporations.  The goal is to create transparency by using an open source aproach, and actually build things that we can see, touch, and try.

Major work areas (*=Ruby on Rails projects):

  • Digital voter registration system*
  • Ballot design*
  • Ballot casting and counting
  • Election management* – back office web app for supporting the admin tasks of an election, including district data
  • Operating system platform: they are building on “commodity” hardware and components, but for some customer who are seeking additional security features they are collaborating on open source hardware with Intel and AMD

A good portion of the work is Rails-based, with Pivotal Labs as a development partner.  He also noted that they are in the process of putting together a “core team,” recently joined by Alec Totec, one of the original Netscape engineers (a very smart, practical guy who I had the opportunity to work with in ’95 tracking down bugs in the Netscape Plugin API when I worked on Shockwave).

After the talk, I got the chance to speak to John Sebes, OSDV CTO. He noted which projects are being implemented with RoR (see * items above). Some of the web apps they are buiding will solve fairly simple technical problems, but they answer a huge need.  The folks who run the elections generally work with very poor quality software with awkward UI that can lead to errors.  For example, one might think that putting together a ballot would be straight-forward, but there are countless examples of very basic design flaws, which could be remedied by some relatively simple, effective software.  He told a story of the election of Rush Holt, who was fortunately uncontested, yet the ballot made it very hard to tell the intent of the voter:

I can imagine all sorts of ways that ballot design in general could be improved for usability in addition to fixing outrageous bugs in the system like the one illustrated above.  As a voter and open source developer, I am very excited about this project.

There are lots of ways to get involved.  Join their new facebook group to stay in touch.

We just heard a fantastic talk by Jacqui Maher about her work on the Boabab project, fighting AIDS in Malawi, Africa.

First, she gave us an overview of the AIDS epidemic, especially in Africa:

  • Africa has 12% of the world’s population, but 60% of the people with AIDs
  • In Malawi
    • 14% of adults have AIDS
    • 8 people die every hour from aids
    • there are 280 doctors
    • 3500 HIV/AIDS patients per doctor

When she arrived, patients would wait in long lines to see a doctor and patient intake would typically take 15 minutes.  It was all paper-based an error-prone.  In Malawi, they have a national id program where every ID card has a bar code.  This could be used for easy patient intake.  After they developed the hardware/software solution, it would take less than 1 minute to register new patients and less than 10 seconds for returning patients to get through the intake process.

The solution was designed to help  in a number of areas:

  • Patient Registration: entering new patient data, generate national id bar code, or scan an existing one
  • Encounters: any patient interaction
  • Observations: diagnosis, progression, vitals, patients complaints, drug regimen
  • Prescriptions: drugs, ingredients, inventory, etc.

They overcame challenges with spotty internet connections and low bandwidth.  They use a wireless mesh network, which is self-healing.  The portable computer they used was based on the I-Opener (initially bought from the US on eBay, then 2000 were donated) which was hacked to include a touchscreen, ethernet, PoE (power over ethernet) and a bar code scanner.  The software is Ubunto, Ruby on Rails, and MySQL.

More details on the software:

  • BART – Baobab Anti-Retroviral Treatment
  • OpenMRS Data model
  • templating using ERB
  • App calls via AJAX
  • Rspec tests

Jacqui told a great story about Gem the Janitor (yes, that is his real name) who just picked up the device during a busy time when all of the nurses were busy, figured out the interface quickly and started helping register people.  Now he runs the whole intake process.

Why RoR?

  • great community
  • common consensus on best practices
  • active contributions to OSS
  • very accessible information on every part of the stack
  • supurb interactive tutorials like peepcode
  • Ruby is easier to learn offline that other languages, comes with documentation
  • ActiveRecord: makes complex data models easier

Now 265 of the 280 doctors are using this app.  The data collection enables extensive reporting, enables agencies to use the data to focus research & funding, and influence policy decisions.

You can help!