Ann Arbor Parking Information by Phone - an Adhearsion Example

Media_httpjsgoeckefil_kjmqy
Recently I was inspired by a post to develop a phone app that could playback information scraped from a website. The folks in Ann Arbor, MI have created a webpage that displays, in HTML, the number of spaces currently available in their 9 downtown lots. Using Hpricot I was able to fetch the webpage and then parse out the appropriate data as follows: [sourcecode language='ruby'] #Fetch the available parking spaces by scraping the Ann Arbor website def fetch_available_spaces doc = Hpricot(url) parking_spaces = Array.new cnt = 0 (doc/"td").each do |row| if row.inner_text =~ /\.{28}/ parking_spaces[cnt].merge!( { :spaces => row.inner_text.gsub("............................ ", "") } ) cnt += 1 else parking_spaces[cnt] = { :name => row.inner_text } end end return parking_spaces end [/sourcecode] Then using the open source Text to Speech engine (TTS) Festival, I was able to create a menu that played back all of the available parking spaces in each lot to a caller. This work resulted in an Adhearsion Component which I then posted on GitHub as a working example app:
Media_httpjsgoeckefil_dsjeb
With the wealth of data and APIs available on the internets coupled with Adhearsion, developing voice mashups just got a lot easier.
Posted
 

ECHI-Converter Refactoring & Migration to Github

Media_httpjsgoeckefil_spcru
Much time has passed since I wrote the first release of the open source ECHI-Converter on a train ride from Sevilla to Madrid on the AVE. At the time I had a customer that had been promised a deliverable by a system integrator that in the end did not do so. I was faced with a strong rebellion or I had to simply get the deliverable done on my own, and fast. So on a break from my holiday for a meeting in Madrid, I found myself on a fast train with a lousy GPRS connection (suppose to be 3G of course) reading through cryptic docs and hacking away. That was July 2007. Since then the utility has been adopted around the world in many different settings, by company names you would know. The time has come to refactor the code-base since it appears the Avaya CMS will live longer than originally thought. To this end I have already extracted the core conversion capabilities into a stand-alone library, ECHI_Files, and place it on Github.
Media_httpjsgoeckefil_fhffy
The library will serve as the cornerstone of the refactoring of the code-base that will allow me to easily add new features and maintain it going forward. The ECHI-Converter project will also migrate from the SVN repository at Rubyforge to the Git repository at Github. Stay tuned for the 0.5.0 release!
Posted