Tag: app

Android versus iOS: my Chicago Bike Laws experience

Chicago Bike Laws: dooring info

Screenshot of Chicago Bike Laws, highlighting the dooring law.

For all this talk that more people use Android, and Android has the biggest and still-growing chunk of the smartphone market (in the United States and the world), I’m not seeing that reflected in how many downloads there are of my two apps.

Chicago Bike Laws is a free app that has been available for Android (download) since November 4 and on iOS (download) since November 9, a 5-day difference. Yet the iOS version has had more installations (58) since then while people have downloaded the Android version 32 times (but 5 people removed it).

What gives? The app is exactly the same for both platforms.

Are Chicago bicyclists more likely to have iPhones? I don’t do any platform-specific promotion so you can count that out.

(The experience I’ve had with Chicago Bike Guide activity is different because the Android version came online over a year later and has always been a paid app – Android apps cannot switch between free and paid while iOS apps can. By the way, the Chicago Bike Guide is free for iOS right now and half-off for Android. The comparison is that the adoption rate is much slower for the Android version.)

Google Maps’s lies are why I made my own bike map

http://goo.gl/maps/BlIZF

Bright green lines indicate trails while darker green lines indicate bike lanes.

Because Google Maps lies about where bike facilities are. Check out the bicycling layer at 16th Street and Wood Street in Pilsen, Chicago, Illinois.

Google Maps bicycling layer legend

Google Maps bicycling layer legend

The bright green lines represent trails, but the ones in this part of Pilsen are not trails. All of the north-south “trails” you see are actually sidewalks underneath railroad viaducts. The east-west trails…well, I’m not sure what they are but they are on elevated railroad property. Don’t go up there.

I created my own bike map to deal with the inaccuracies across Google Maps. I used my local knowledge (“ground truth”) and high-quality bike facility data from the Chicago Department of Transportation.

I also used contributions to OpenStreetMap, mainly for trails. I’ve been correcting and adding new bike lane data to OSM as CDOT installs them. View this area with OpenCycleMap’s tiles, which shows only bike lanes on 18th Street.

If you’re an editor on Google’s Map Maker data editing platform, please correct these errors. I would do it except that Google doesn’t allow others to benefit from my data contributions like OpenStreetMap does, where anyone can give and take. (I also had a negative experience on Map Maker, getting myself into a tiff with an unnamed user who disagreed with my changes, based on a personal visit to the location, that were not visible on the satellite imagery because that location had outdated imagery.)

 

Update on my work this summer: Chicago Bike Guide now on Android

Yesterday I released the first version of my app for the Android operating system. The Chicago Bike Guide (born the Chicago Offline Bike Map) had been available for iOS since April 2012 and the most frequent question I heard was, “When will you have an Android version?” At first I was probably joking when I said it was coming soon as I had no interest in it. But things change: more people kept asking, I was slowly learning how to publish an app for Android, I bought a tablet myself on which to test it, and Android eclipsing iOS as the most dominant mobile OS had some effect.

I use PhoneGap software to compile the Chicago Bike Guide for iOS. My app is actually an HTML5 compliant website using jQueryMobile and PhoneGap allows this website to interact with some of the hardware on the iPhone (like the GPS components) and software (native notification buttons). PhoneGap compiles for Android and other operating systems, but my experience using the Android emulator put a damper on my progress.

I would install Google’s software development kit (SDK), including Eclipse, and load the app (er, website) into the emulator and it would be terribly slow. It didn’t emulate the Android experience very well. I did this twice; I don’t remember making any additional progress the second time but I probably made different progress, slightly expanding my understanding of how to make Android apps.

PhoneGap 3.0.0 came around, and its use requires focusing on the command line to build apps. In prior versions, for iOS, you would add “helper software” to Xcode but now it creates the Xcode project for you. It was easier to use this time around, as the process in this version was simpler to understand, use, and the documentation had improved. I felt it was time to try again to make an Android version so I “made the plunge” and bought the Asus MeMO Pad HD 7″ tablet from my local Micro Center.

At first I used the tablet to test my app (website) as a website, loading it over the network from my Mac’s web server. After fixing a lot of the display bugs I moved into native app testing. One command, “cordova build android”, and an APK I can email to my tablet appears 30 seconds later. This is one of the few areas where Android has iOS beat in terms of testing.

The iOS development environment requires so much setting up with developer profiles, team profiles, and other gunk I forget the names of. With Android, you simply email the ChicagoBikeGuide-debug.apk file to your device and open it in the Gmail app. Voilá.

After getting this far I stopped progress on developing for Android as I wanted to issue a new version for iOS with features and bug fixes I’d been working on since the last release in July (version 0.8.2). With that out of the way last week, and the new version waiting for Apple’s review, I worked on the Android version on Sunday and finished it today.

Did you catch that? I uploaded version 0.8.3 for iOS on October 3 and it’s been in review since then while in less than 24 hours I set up my Google Play Developer Console ($25 per year), merchant account, store listing, and started selling the Android version.

N.B. Google Play doesn’t allow you to switch the app between free and not free like the iTunes App Store does, so I cannot release it for free during a short promotional period like I did for the iOS platform.

After a sufficient period (a few days, perhaps) of no reports of it crashing, I will promote the Android version heavily.

Some reasons why the CTA doesn’t make its own mobile apps

Where’s the train?

“Twitter updated their app and now it sucks”. (Here’s some evidence.)

Have you heard that before? Thankfully there are tens – perhaps hundreds – more options to post to and read Twitter on your appy device.

The Chicago Transit Authority provides 1.7 million rides per day. A lot of passengers like to know where the trains and buses are. And it’s possible to know with many tools like Bus Tracker and Train Tracker, both of which are available through APIs, SMS, and websites.

Some people (eh, I can’t exactly point out who right now) have noted (complained?) that the CTA doesn’t make its own app for smartphones and tablets. I’m glad they don’t!

Here are more reasons why the CTA doesn’t make its own mobile apps:

  1. It would be racist of the CTA. (Pretty much everything the CTA does is racist according to someone but making an app would only be useful to those with compatible devices, so it’s probably more accurate to say income discrimination.)
  2. Bus service is getting cut but they’re spending money on making apps.
  3. There are 4 platforms to write apps for (at least 4 – not sure if any CTA passengers would demand Symbian or webOS).

The best reason?

Developers can do it better. So the CTA gives them the tools.

How to split a bike lane in two and copy features with QGIS

A screenshot of the splash image seen on users with iPad retina displays in landscape mode. 

To make the Chicago Offline Bike Map, I need bikeways data. I got this from the City of Chicago’s data portal, in GIS shapefile format. It has a good attribute table listing the name of the street the bikeway is on and the bikeway’s class (see below). After several bike lanes had been installed, I asked the City’s data portal operators for an updated shapefile. I got it a month later and found that it wasn’t up-to-date. I probably could have received a shapefile with the current bikeway installations marked, but I didn’t have time to wait: every day delayed was one more day I couldn’t promote my app; I make 70 cents per sale.

Since the bikeway lines were already there, I could simply reclassify the sections that had been changed to an upgraded form of bikeway (for example, Wabash Avenue went from a door zone-style bike lane to a buffered bike lane in 2011). I tried to do this but ran into trouble when the line segment was longer than the bikeway segment that needed to be reclassified (for example, Elston Avenue has varying classifications from Milwaukee Avenue to North Avenue that didn’t match the line segments for that street). I had to divide the bikeway into shorter segments and reclassify them individually.

Enter the Split Features tool. QGIS is short on documentation and I had trouble using this feature. I eventually found the trick after a search that took more time than I expected. Here’s how to cut a line:

  1. Select the line using one of the selection tools. I prefer the default one, Select Features, where you have to click on the feature one-by-one. (It’s not required that you select the line, but doing so will ensure you only cut the selected line. If you don’t select the line, you can cut many lines in one go.)
  2. Toggle editing on the layer that contains the line you want to cut.
  3. Click Edit>Split Features to activate that tool, or find its icon in one the toolbars (which may or may not be shown).
  4. Click once near where you want to split the line.
  5. Move the cursor across the line you want to split, in the desired split location.
  6. When the red line indicating your split is where you desire, press the right-click mouse button.

Your line segment has now been split. A new entry has been added to the attribute table. There are now two entries with duplicate attributes representing that together make up the original line segment, before you split it.

This screenshot shows a red line across a road. The red line indicates where the road will be split. Press the right-click mouse button to tell QGIS to “split now”.

After splitting, open the attribute table to see that you now have two features with identical attributes. 

Copying features in QGIS

A second issue I had when creating new bikeways data was when a bikeway didn’t exist and I couldn’t reclassify it. This was the case on Franklin Boulevard: no bikeway had ever been installed there. I solved this problem by copying the relevant street segments from the Transportation (roads) shapefile and pasted them into the bikeways shapefile. New entries were created in the attribute table but with blank attributes. It was simple to fill in the street name, class, and extents.

Chicago bikeways GIS description

Bikeway classes (TYPE in the dataset) in the City of Chicago data portal are:

  1. Existing bike lane
  2. Existing marked shared lane
  3. Proposed on-street bikeway
  4. Recommended bike route
  5. Existing trail
  6. Proposed off-street trail
  7. Access path (to existing trail)
  8. Existing cycle track (also known as protected bike lane)
  9. Existing buffered bike lane

It remains to be seen if the City will identify the “enhanced marked shared lane” on Wells Street between Wacker Drive and Van Buren street differently than “existing marked shared lane” in the data.