Being busy seems to always come in spurts for me… just when it looks like I’ve got too much to do already, something cool turns up and takes things to whole new level of busy.
That would be this week. SocialDevCamp East, the barcamp-style unconference that I started with some friends last spring is back tomorrow, and that’s certainly required some coordination and planning. That would have been plenty. We have over 200 RSVP’s now (between the Wiki and Facebook) and we expect a truly incredible day of networking and learning. See you tomorrow!
The other big news of the last two weeks has been the TwitterVoteReport project, for which I’ve been acting as defacto CTO since about October 18th. This is a great project, a great cause, and an awesome idea. The data we collect will be an archival quality primary source document for future generations to study the evolution of the election process.
We have five distinct data sources coming in about people’s experience at their polling places: Twitter, Telephone, Direct SMS, and Apps for Android and iPhone. These are all normalized and aggregated into a single database and reviewed by humans for maximum accuracy. The data will then be made available in real time to anyone who wants it — from the media to watchdog groups to mapmakers — to help the world understand and monitor the 2008 US elections.
Putting this project together, with all these diverse inputs, has been a monumental task and a real demonstration of what’s possible when people decide to work together. We had over 600 phone channels donated. We were able to think up, code, and submit an iPhone app in just 3 days. We’ve received press coverage far and wide from sources as diverse as TechCrunch and Fox News. Not bad for a few days’ work.
There’s plenty more to do still (between now and Monday), and I’m busy all day tomorrow at SocialDevCamp. We’ll do a session there on TwitterVoteReport and what we’re up to… we still need more help from people good with maps!
I’ll post more here as things evolve, and a recap next week, but remember, nothing’s impossible when caring people dedicate themselves to a common endeavor.
I spoke at eComm 2008, held this year in March 2008 at the Computer History Museum in Sunnyvale California. I’ve been involved in the VoIP and open source telephony world for the last several years as a contributor to Asterisk, hacker on OpenSER and several other projects small and large involving tearing down the 100 year old telephony infrastructure and replacing it with something better different.
If you’re a part of the Asterisk community, you know that I have a certain amount of notoriety as The Roomba Guy. In a visionary fit of silliness during the Christmas holiday week in 2005, I decided it would be interesting to play with the Roomba API and see if I could hook it up to a Linksys WRT54G wireless router.
The Roomba uses an RS-232 CMOS 3.3V interface
The WRT54G has an RS-232 CMOS 3.3V interface
The Roomba supplies a 14V DC unregulated power output
The WRT54G can run off about 12V DC and has voltage regulators
You can see that based on this, the rest is inevitable. The Roomba has a 7-pin mini-din connector that provides the power and the RS-232 connection, so I made up a cable that goes from that connector to the 10-pin serial header interface on the WRT54G.
I got the serial port working pretty quickly and could send basic hex commands like start and stop to the Roomba. My friend made up some mounting “rails” to hold the WRT onto the top of the Roomba, and now the thing was autonomous and could be controlled via an SSH session established via WiFi. The WRT runs the White Russian OpenWRT Linux distribution.
The prospect of controlling the Roomba using SSH or a web interface wasn’t too compelling. I happened to be aware that some folks had success getting Asterisk (the open source telephony PBX) working on the WRT. So, I thought, what if we could put Asterisk onto the WRT and control the Roomba with that?
So, I did. Asterisk was easy to install on the WRT and in pretty short order I had cooked up an Asterisk dialplan that tied the telephone keypad to actions on the Roomba. 2 is forward, 5 is back, 6 turns right, 4 turns left, 5 stops, etc.
I was demonstrating this at Astricon 2006, a few months later, and my friend John Todd suggested that we contact Allison Smith, a voice artist of some renown and the “voice of Asterisk” — she supplied all the default english prompts for Asterisk.
She was incredibly accomodating and obliged graciously. She recorded about 20 prompts, including “forward”, “backwards”, “right”, “left”. We also allowed for control of the vacuum and brushes in the robot. So, you can press 1 to “start sucking” and press 3 to “stop sucking”. Did I mention that Allison is an incredibly good sport?
So, the final form took shape. A talking, SIP-enabled, WIFI, autonomous, cleaning, sucking, four-port ethernet switch able to run a small business phone system and clean it at the same time. It’s really quite baroque in its overall frilly uselessness, yet still compelling in a circus side-show sort of way.
We’ve experimented with adding a camera to it, but have found that it tends to create too much power draw. I’ve looked at using other routers that can run embedded Linux, but there always seems to be some reason why it doesn’t work. I really don’t have the time to spend on this, and that’s probably a good thing.
But, the overall lesson is an important one: Imagination is more important than knowledge. Einstein said it , but it should be repeated. As techies, we spend too much time thinking about how to solve a problem, rather than playfully considering new ways of framing problems. Imagination is truly the plutonium of technology, and we tend to lock it up and not use it that often. Knowledge is certainly important, but knowledge without imagination is everything that’s wrong with tech today. Certainly the telecomm industry needs more imagination.
So, Lee Dryburgh, who did an incredible job of organizing eComm 2008 (it’s the successor to the O’Reilly produced eTel conference) posted my presentation from eComm online last week, and I wanted to share it with you.
If you’re interested in more of the Roomba Asterisk specifics, ping me and I’ll blog in more depth about it.
Over the next two weeks, Jay Phillips, Chad Fowler, Marcel Molina, Rich Kilmer, Ed Guy, Glenn Dalgliesh and myself are getting together to work on advancing Adhearsion, the open source VoIP technology.
For those of you who don’t know about Adhearsion, it brings a simple, elegant grammar to the world of VoIP. It’s an object-oriented DSL (domain specific language) written in Ruby. But that’s what’s going on underneath. Here’s what’s going on for you, the user:
# This is an example extensions.rb file which # would handle how calls are processed by # Asterisk. This is all completely valid Ruby internal { case extension when 100...200 callee = User.find_by_extension extension unless callee.busy? then dial callee else voicemail extension
when 111 then exec :meetme
when 888 play weather_report('Dallas, Texas')
when 999 play %w(a-connect-charge-of 22 cents-per-minute will-apply) sleep 2.seconds play 'just-kidding-not-upset' check_voicemail end }
Obviously this is much more palatable than what you might find in your average asterisk extensions.conf file.
Chad, Marcel, and Rich are some of the biggest names in the Ruby & Rails communities. Ed Guy is a legend in Open Source telephony. Jay is the originator of Adhearsion. Glenn, Ed, Jay, and I all work together for the project’s sponsor, Truphone. There is some thought that with all of us on the job, Adhearsion might just become the next big thing to come out of the Ruby community.
We’ll see about that; it could certainly happen. One thing that is for sure though is that our efforts should bring a level of beauty and clarity heretofore unrealized in the VoIP/telephony/collaboration world, and that certainly is a good thing.
I am CEO and co-founder at 410Labs, and creator of Mailstrom. I'm a serial entrepreneur, software developer, and community builder in Baltimore, Maryland, USA.