
This is the fifth and final part in a series of blog posts about building a real-time SMS and voice voting application using Node.js and TwiML. I began working on this application during some downtime at a Startup Weekend event back in the summer of 2012. It was both an excuse to learn Node and build a reusable app for something that my team is often asked to provide at events (SMS voting). Let’s take a moment and recap where we’ve been.
In part one, we created the Node application and captured incoming votes over SMS and stored them in a CouchDB. I chose to use Express as the web framework and Cloudant and my CouchDB provider.
In part two, we created a real-time visualization of the voting using Socket.io and Highcharts. As votes came in a bar chart depicting the current state of the vote would …

Last year I wrote a blog post about shipping my first conference. I attended dozens of conferences prior to that and it was shocking how hard it was to put together even a modest 200-person event. I learned that running a good conference was much more than just gathering people together for a series of talks; it was about creating an experience. Based on the feedback I received during and after the conference, I think we succeeded. It was the highlight of my year to work with such an amazing group of volunteers and create an event by developers and for developers in the Pacific Northwest.
A year later, I was excited to ship CascadiaJS 2013 in Vancouver, BC. I figured it would be a great deal easier this year based on everything my co-organizers and I had learned. In many respects this was true, but something happened that …

This is the fourth part in a series of blog posts about building a real-time SMS and voice voting application using Node.js. In part one, we created the Node.js application and captured incoming votes over SMS and stored them in a CouchDB. In part two, we created a real-time visualization of the voting using Socket.io and Highcharts. In part three, we tweaked our app to scale to thousands of votes per second and millions of total votes.
Through the first 3 parts of this series we now have a scalable voting application that can process votes for events via SMS or voice and display the real-time progress of voting. However, there is currently no web interface for an administrator. Creating events or modifying them require making changes directly to the documents in CouchDB. In this blog post, I will walk through the process of creating a simple …

After about a year of working for Twilio as a Developer Evangelist in Seattle, I was still having trouble answering simple, recurring questions:
- What are the best developer meetups in Seattle?
- Are there any cool hackathons or conferences coming up?
- Why do developers love bacon so much?
These are questions asked by developers and should be answered by developers. So some friends and I got together and created Seattle Hacks, an open source, community powered event calendar and information resource for developers in Seattle.
However, there was a massive problem with using an off-the-shelf CMS, blog or wiki tool that I was worried about: SPAM. Every time someone tries to make a dev calendar, it gets completely overrun with recruiters, pay-to-play events, and other crap hackers could care less about. Any site that allows the general public to make contributions will attract spam at a rate that is proportional …

This tutorial uses the Twilio Node.JS Module and the Twilio Rest Message API
This is the third in a multi-part series of blog posts on building a real-time SMS and voice voting application using Node.js. In part one, we created the Node.js application and captured incoming votes over SMS. In part two, we created a real-time visualization of the voting using Socket.io. In this blog post, we will discuss tweaking our app to scale to thousands of votes per second and millions of total votes.
At the end of part two of this blog post series, I mentioned that while we had a working SMS voting app with a cool real-time visualization, it was not a solution that was going to scale. The reason for this was because of how I chose to structure and retrieve my data. My database consisted entirely of event documents that looked like …

This is the second in a multi-part series of blog posts on building a real-time SMS voting application using Node.js. In part one, we created the Node.js application, set-up the CouchDB database and captured incoming votes over SMS with Twilio. In this blog post, we will create a chart that displays the status of the voting and update that chart in real-time using Socket.io.
Now that we can accept votes via SMS and store those votes in our database, it’s time to create a live view of the voting. There are many ways to visualize voting, but a bar chart is probably the most simple way. There are numerous graphing and charting libraries, and I spent quite a bit of time looking for the right one. Here were my requirements:
- Client-side JS
- Easy to update data and refresh
- Great default styles
After doing some digging, I found a great …

Join the conversation on Hacker News!
Back in July, someone named Troy Howard sent me a tweet. I didn’t know him personally, but I knew he was involved in the JavaScript community in Portland:
@thoward37 had a quick question (@mikeal pointed me your way), could you shoot me an email at carter@twilio.com?
— Carter M Rabasa (@CarterRabasa) July 16, 2012
I wanted to talk to Troy about organizing a JavaScript conference that would bring together developers from the Pacific Northwest for two days of amazing talks and fun. I had lived in Seattle for the past three years and thought it was strange that I kept having to travel to attend a great JS conference. I also felt that while the PacNW was a pretty cohesive region, the developer communities in Portland, Seattle and Vancouver were very separate. This conference would seek to change that.
Almost four months …

This is the first in a multi-part series of blog posts on building a real-time SMS and voice voting application using Node.js. In part one, we will create the Node.js application, set-up the CouchDB database and connect everything to Twilio so that we can process votes via SMS.
A few months ago, I was attending Startup Weekend GOV in Seattle where Twilio was a sponsor. I was there to support the event and help out teams that needed assistance with marketing validation, prototyping and pitching. I love helping out with Startup Weekend events, but sometimes I get a little antsy and wish I was working on something of my own. During this event, I happened to have some downtime so I decided to scratch my itch and start working on Votr, a SMS voting application built on Node.js.
Although I have been building web applications since 1999 and have used …

Are you ready for some foooootbaaalllll?! I know I am. I grew up in the Washington, DC area and am currently suffering from RGIII fever, so forgive me if I sound a bit giddy. The start of the NFL season is essentially my Christmas, which I guess makes the start of Fantasy Football my New Years.
For the past couple of years, I have been playing in the same fantasy football league with a bunch of friends who are spread out all over the country. We even play with one guy who is currently living in Amsterdam. Every year, we struggled to pull together a league wide conference call. This process would involve people needing to install software, configure settings and would inevitably result in a massive IT headache for whoever was in charge. This year, I decided to roll-up my sleeves and fix this problem by building the …


This past June I was fortunate enough to play host to an entrepreneur by the name of Assane Seck. Assane is the founder and CEO of Djanoa, a cloud SMS platform that is currently in beta in Senegal. Assane was visiting the U.S. as part of the Innovation Summit and Mentoring Partnership with Young African Leaders, a three-week professional development program sponsored by the U.S. State Department.
As part of the mentorship program, participants were matched with companies in their field and spent a week or so at their offices. Assane ended up spending a week with HTC here in Seattle where he met James Pratt, a former colleague of mine.
When James learned that Assane was building an SMS platform for developers, he reached out to me to see if I was interested in spending a day with …