New bikes for the Bike Share

Thanks to Regions Bank for donating two new bicycles for the Bike Share at my office, the Innovation Depot. We now have six bikes available for free to anyone that works at the Innovation Depot to use.

The Innovation Depot is a technology incubator for start up technology companies. My company, VIPAAR, is one of those.  Currently, there are over 80 companies at the Innovation Depot. I started the bike share last fall because the Innovation Depot is on the west side of downtown, just slightly out of range of a comfortable walk, but easily within biking distance to all the restaurants and shops.  Since then, I have seen a steady progression of use, and am expecting it to gain popularity even more as Spring rolls around.


Initial Bus Transit Directions

Continuing on with my project to get Birmingham’s MAX bus system on Google Transit, I was able to get the Open Trip Planner software up and running. This is letting me visualize some of the preliminary GTFS data to validate it before I continue work on the rest of the routes.  Here’s two examples showing trip planning between various locations. The stop locations are coming from my stop cataloging site.


Riding from Downtown to the west side on Bus #8
Riding from Downtown to the west side on Bus #8
Riding from Highland Park to South side on bus #12
Riding from Highland Park to South side on bus #12

Getting Birmingham, AL’s BUS system on Google Transit

Birmingham’s bus system, the MAX, still isn’t up on Google Transit. As a bus rider, I have found this to be a huge hurdle in getting more riders. After four years of their website having a coming soon, and still no trip planner in site, I’ve decided to take on the project myself.


I started off looking for some free programs to create GTFS data. I was unable to find what I needed as they all assumed you already had a database of your stops, and just need to convert the data.  Unfortunately, the BJCTA does not publicly publish their stop locations, and I’m convinced they don’t even know where their stops are located. This meant I needed to catalog all the stops too.


I’ve started work on software to help me with this project. The project consists of two parts:

  1. A website to crowd source the stop locations
  2. An application to take all the cataloged locations, build routes, create time tables, and generate GTFS data


You can find my website for cataloging stop locations here. This site is designed so that anytime you see a bus stop, take a picture of it with a GPS enabled phone, and upload it. This gives me the location of the stop, plus I can see which routes pass through that stop. So far, with the help of the community, I have cataloged over 800 stops. I am estimating there are about 2500 stops in Birmingham, so we still have a long ways to go.


As the community helps me catalog stops, I am also developing an application that takes those stops, builds routes, creates time tables, and generates all the GTFS data. This program has been developed for me, so it is still very rough around the edges, and only implements what I need, but I have released the source, so you can branch it and use it. It currently only runs on linux, I’m running it under Fedora 18. If you want to branch the code, you’ll need the bzr tool.

bzr branch subte-master


Hopefully, in the next few months we’ll have finished cataloging all the stops and will be able to begin beta testing the trip planner on Google Transit! If you are interested in helping out, please visit the above site and start cataloging. Every picture helps!

Birmingham Neighborhoods on Click that ‘hood

Click that ‘hood is a fun site developed by Code for America where you test your knowledge of the neighborhoods in your city. Being an activist for Birmingham, along with my fondness of maps, I decided I would get Birmingham up on their site. After all, they just need some GIS data formatted properly. No problem, I’ve worked with GIS data plenty of times before!

Unfortunately when it comes to GIS data, neighborhood boundaries are difficult to come by. This is probably because neighborhood boundaries are fluid and aren’t completely defined like political boundaries. The most popular site for neighborhood boundaries,, didn’t have any available for Birmingham. I kept searching and came upon Birmingham’s Map Portal. This site has some great data on it, including all the neighborhoods. It was just what I was looking for, except, you can’t actually export any GIS data off of it. You can only view it and take screen shots. (It sounds like it’s time to get an open GIS site running for Birmingham… maybe my next project?)

I had images of the neighborhood data now, but this meant I still had to draw the vector data to overlay on a map. Using QGIS, openstreetmaps, and finally Google Maps, I traced out each of the neighborhood boundaries as vector data. I have it available in both KML and GeoJSON formats:

You can also view my Google Map of the neighborhoods.

With that, I was able to upload the data to Click that ‘hood. So, go play and see how well you know Birmingham’s neighborhoods!

ELO Touchscreen monitor under Linux

*Edit* I have updated this to no longer require you to edit xorg.conf. This also fixes issues if the touchscreen’s usb cable is hotplugged while X is already running.

I recently purchased an ELO 1537L 15-inch open-frame touchmonitor for a project I am doing at work.  I have successfully gotten the touchscreen monitor to work under linux (specifically Scientific 6.x) using USB (I haven’t tried the serial interface).  Plugging in the monitor, it is recognized as a 5020 Surface Capacitive:

19746:Aug 3 02:51:13 localhost kernel: usb 2-1: Product: Elo TouchSystems Surface Capacitive 5020
19747:Aug 3 02:51:13 localhost kernel: usb 2-1: Manufacturer: Elo TouchSystems
19750:Aug 3 02:51:13 localhost kernel: input: Elo TouchSystems Elo TouchSystems Surface Capacitive 5020 as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/input/input7
19751:Aug 3 02:51:13 localhost kernel: generic-usb 0003:04E7:0042.0003: input,hidraw2: USB HID v1.11 Pointer [Elo TouchSystems Elo TouchSystems Surface Capacitive 5020] on usb-0000:00:1d.0-1/input0

ELO provides some generic drivers for this device. I first attempted to directly use them and found them to be a complete disaster. The whole configuration was really silly (putting stuff into /etc/opt, are you kidding me?). The elo daemon constantly hung and had to be restarted. Restarting X caused the daemon to stop working, thus the touchscreen stopped working.

I quickly removed these drivers and tried it with the evtouch drivers which I have used for a USB displaylink touchscreen monitor in the past (MIMO). With a few changes to my xorg.conf, the evtouch driver immediately recognized it and I was able to capture touch events. Although the calibration was initially completely off.

Here’s the steps I took to get this working on Scientific Linux 6.0

Install evtouch

Unfortunately, Scientific Linux does not come with the evtouch driver. I have built a 64-bit rpm for Scientific Linux here . If you need a 32-bit version or for another platform (Fedora), download the src rpm and rebuild it (rpmbuild –rebuild xorg-x11-drv-evtouch-0.8.8-1.el6.src.rpm).

Setup Xorg

It is not required to directly edit xorg.conf. Instead, we will create a hal fdi file

We will create an fdi file in /etc/hal/fdi/policy called elo_touchscreen.fdi


<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<match key="input.product" contains="Elo TouchSystems, Inc. Elo TouchSystems Surface Capacitive 5010">
<merge key="input.x11_driver" type="string">evtouch</merge>
<merge key="input.x11_options.MinX" type="string">3724</merge>
<merge key="input.x11_options.MaxX" type="string">318</merge>
<merge key="input.x11_options.MinY" type="string">3724</merge>
<merge key="input.x11_options.MaxY" type="string">318</merge>
<merge key="input.x11_options.SwapX" type="string">true</merge>
<merge key="input.x11_options.SwapY" type="string">true</merge>

If your monitor is slightly different, you will need to get the product id, and replace the match key=”input.product” line in the above file.

$ lshal | grep input.product
input.product = 'Sleep Button' (string)
input.product = 'Power Button' (string)
input.product = 'Macintosh mouse button emulation' (string)
input.product = 'ImExPS/2 Generic Explorer Mouse' (string)
input.product = 'AT Translated Set 2 keyboard' (string)
input.product = 'Elo TouchSystems, Inc. Elo TouchSystems Surface Capacitive 5010' (string)

You should now be able to unplug and plug your touchscreen back in and have it work without restarting X


The MinX,MinY,MaxX,MaxY values are used for calibrating the touchscreen. The evtouch source available on their site comes with a calibration utility. However, I was unable to get this to run. For me I played with the MinX, MaxX, MinY, MaxY values in my xorg.conf until it was close enough. As you can see, I had to mirror both the X and Y values.

Other Drivers

I noticed that Scientific Linux also includes an elographics package: xorg-x11-drv-elographics. I have no idea if this works better or not although I have heard they only work with the serial interface. I have it working with evtouch, so I’m happy. If anyone has tried the elographics and had success, please comment!

Gnome Shell Extension: Search Window

The Gnome desktop recently release version 3 of their desktop, which includes their all new Gnome Shell. I have been using it for several months now, and I must say I really like the direction it is going. It is still early and is missing a lot of little things, but those will come soon. We are starting to see new extensions being built for it to extend the functionality.

One feature I have found blatantly missing is the ability to search active windows in the overview. In overview mode, you first see a live preview of all your windows. But if you’re like me, you have 15 terminals and 10 web browser windows up (I despise tabs!). Typing starts a search, which by default searches: your installed applications to quickly start one, files, and places. Search is completely missing the ability to search through open windows based on their title!

I quickly wrote my first gnome-shell extension to do just that. It is still an early version, and I would like to update it to add more features such as showing a live window preview instead of just the application icon.

Initial Overview Display
Initial Search for "fed" with results being narrowed down. Two open terminals and three open web browsers have titles that match
Search for "fed wiki" showing an open browser on the Fedora Wiki

Try it out, and send me your thoughts:


You can use the gnome-tweak-tool to install it, or extract it into