Page 50 of 170

Using open data: Showing what projects licensed Chicago contractors are working on

The New City developer recently received permits for over $50 million of construction work across from the Lincoln Park REI.

The New City developer recently received permits for nearly $50 million of construction work across from the Lincoln Park REI.

I wrote in my last post that I found “pain” in the process of finding a licensed contractor in the city (the pain of finding one who can install in the public way remains unmedicated).

I wanted to provide more than a list (and a map) and EveryBlock has already answered “What’s going on across the street from my house?”. I wanted to add value by helping people answer the question, “What contractor should I choose?”

Several other sites help you do this, like BuildZoom, Angie’s List, and the Better Business Bureau, by showing you customer reviews or complaints. I needed something different from mimicking a review site (a lot of the businesses are also on Yelp) so I decided to answer the question, “What projects have these companies done?”

That’s where the City of Chicago’s open data portal comes in: it has a dataset for Building Permits.

Check out 180 Properties, LLC from Skokie, Illinois. They’ve had two permits issued within the last three months. One project, at 3705 N Hoyne Avenue, is for interior renovation: “Remove/replace cabinets, countertops, flooring, patch & repair drywall”. The estimated cost for the project is $80,000. Sound like the kind of contractor you’re looking for? Call them up or keep researching.

You can even see who else is working on this project. Burnham Nationwide is listed as an expeditor on this project which means they’re likely acting as the intermediary between the Chicago Department of Buildings and the companies actually doing the work. Burnham will do site plans, drawings, occupancy, and ensure everything is in order. The property owner is also listed in the permit information.

For people who want to explore construction activity the other way around, finding projects before contractors, I created a “Permits explorer” page. This page searches the Building Permits dataset to show the most recently issued permits for the most expensive projects. Right now a project to alter and renovate Chicago Vocational High School at 2100 E 87th Street has an estimated cost of $40 million. I didn’t realize how much the Department of Buildings is funded by permits until I saw the permit fees.

The permit fee for the school renovation would have been $372,598 fee but the dataset said the entirety was waived (likely because it’s a Chicago Public School). Other projects I reviewed had permit fees between $30,000 and $75,000.

Real estate speculators, development watchers, and editors of Curbed Chicago should find browsing permits useful. The list includes two projects associated with the New City development at Halsted Street and Clybourn Avenue, across from the Lincoln Park REI store. The two permits are held by 1515 N Halsted, LLC. The first is for a “3 story steel framed mixed-use retail, restuarant, assembly (movie theater) building” at 1500 N Clybourn Avenue (for an estimated cost of $26,403,193), and the second permit describes a 7 story parking garage at 710 W Schiller Street (for $21,518,012).

How it works

I used my programming magic – I prefer PHP – to query the Socrata Open Data API (or SODA) to look for the given contractor’s name in one of eight name fields (there are 16 name fields) and then return information about the most recent permits. The Building Permits dataset gives the project location, work description, and its estimated cost. I figured you could use the project’s estimated cost to gauge the kind of work the contractor does – is the contractor more familiar with big jobs, or little jobs?

This method isn’t the best. Ideally there’d be a relational database where the “Contractor ID” in the licensed contractors dataset would match a “Contractor ID” field in the permit dataset. But the licensed contractors dataset doesn’t have a unique ID field, and isn’t even on the data portal.

Instead, I’m finding contractor-to-project matches by finding the first two or three words of the contractor’s name at the beginning of eight of the 16 name fields in the permit field. SODA works quickly on the query and it passes the results back to PHP in no time.

In the future I’d like to pull in scores and reviews from Yelp and other sites that have APIs (Angies List and Better Business Bureau don’t), as well as try to determine the name of the building – if it has one – by querying OpenStreetMap Nominatim.

Outta left field: I recreated the city’s contractor listing website

The site looks good and works quickly on mobile devices.

LicensedChicagoContractors.com looks good and works quickly on mobile devices.

I’m working on a secret project to get something installed on the public way. The process to find out how to do it is as arduous as getting it done because you never finish learning the process. Every time you think you’ve figured something out, there’s something else.

To get the secret project installed I need a licensed contractor. Not only do a need a licensed contractor, but they must have the license to do work in the public way (versus doing work at your private property).

The Chicago Department of Buildings publishes a continually updated list of licensed contractors on its website but it’s annoying to use. There’s no search, no permanent links, and if you leave the window open long enough this weird session manager kicks in and stops you from browsing to the next page of results.

I asked my followers on Twitter the best way to scrape the data. The ever-amusing Dan O’Neill, who leads the Smart Chicago Collaborative (which hosts the Chicago Crash Browser), recommended just copying and pasting all 10 pages. That would work fine for the first time, but I might need to do it a second time when the data updates. Nick Bennett jumped in and used Selenium, a tool that automates web browsers. He said, “it’s inefficient but for a small job like that I figured why bother with something faster”.

I imported the data into a MySQL table and ran through some of my “standard” data cleaning methods (like trimming leading and trailing spaces, removing odd characters, and extracting good information into other columns, like phone numbers and ZIP codes).

With PHP – my favorite web language – I created a single page website that loads all 3,930 licensed general contractors extremely fast, loads the DataTables JavaScript library to enhance the table with search and sort. I used Bootstrap to make a responsive design meaning it adjusts to fit multiple screen sizes including smartphones and tablets.

I call it LicensedChicagoContractors.com.

The new website still doesn’t solve my problem of finding a company that can do work in the public way – I’m still working on this. The last online dataset I could find is on the city’s old http://egov.cityofchicago.org domain, and was cached by the Internet Archive’s Wayback Machine on January 25, 2010. Ideally this information – plumbers, public way, and general contractors – should be posted on the City’s data portal.

One day left to enter the Divvy Data Challenge

Divvy dock post-polar vortex

Divvy bikes have been covered in snow frequently this winter. Photo by Jennifer Davis.

As self-proclaimed Divvy Data Brigade Captain* in Chicago’s #opendata and #opengov community I must tell you that all Divvy Data Challenge submissions are due tomorrow, Tuesday, March 11. Divvy posted:

Help us illustrate the answers to questions such as: Where are riders going? When are they going there? How far do they ride? What are top stations? What interesting usage patterns emerge? What can the data reveal about how Chicago gets around on Divvy?

We’re interested in infographics, maps, images, animations, or websites that can help answer questions and reveal patterns in Divvy usage. We’re looking for entries to tell us something new about these trips and show us what they look like.

I’ve seen a handful of the entries so far, including some to which I’ve contributed, and I’m impressed. When the deadline passes I’ll feature my favorites.

Want to play with the data? You should start with these resources, in order:

  1. Divvy Data Challenge – rules and data download
  2. divvy-munging – download an enhanced version of Divvy’s data, with input from several #ChiHackNight hackers
  3. Bike Sharing Data Hackpad – this is where I’m consolidating all of the links to projects, visualizations, analysis, data, and blog posts.
  4. Divvy Data Google Group – a discussion group with over 25 members
  5. #DivvyData – chat on Twitter

It’s not too late to get started now on a project about the bikes themselves. Nick Bennet has crunched the numbers on the bikes’ activity and posted them to the Divvy Data Google Group. Want to use his data and initial analysis? He said “run with it”.

Share your work ahead of time and leave a comment with a link to your project.

* This title is a play on Christopher Whitaker’s position as Code For America Brigade Captain and all around awesome-doer of keeping track of everything that’s going on in these communities and publishing event write-ups on Smart Chicago Collaborative.

Let’s get rid of beg buttons

As much as you may believe, because you encounter them so rarely, Chicago indeed has several types of “beg buttons”. This is a mechanism wherein a person walking along a street must apply to cross another street. You are begging for permission. They are not popular, many are not even hooked up anymore, and they don’t call the pedestrian signal any sooner (their purpose is to make the green traffic signal long enough for a person to cross).

Jan Gehl et. al. succinctly demonstrate in Cities for People the opposing methods of telling a person when they can cross the street (meaning cross traffic has been halted).

The 2013 Chicago Complete Streets Design Guidelines and 2012 Pedestrian Plan reorients the city to prefer facilitating and encouraging transportation by foot over all other modes of travel.

The Pedestrian Plan says that beg buttons should have an LED light that indicates to the pusher that the button has been pushed. (The Pedestrian Plan also calls “traffic signals” a high cost pedestrian safety tool, alongside the high cost of “pedestrian hybrid beacons” and the medium cost of “rectangular rapid flash beacons”. Slow traffic, on the other hand, doesn’t have an operating cost, but it definitely has a “we’re getting there cost”.)

The Plan also says to get rid of them “except for locations where they are necessary to bring up a WALK phases for pedestrians” and without saying what makes it necessary to bring up a WALK phase (versus always having a WALK phase for that direction of traffic) and if that “necessary” is aligned with the Complete Streets Design Guidelines’ paradigm shift. Systematically removing inoperable ones is a separate, medium term milestone (alongside developing a location database).

The CSDG thankfully considers many other realities in Chicago that go against the new transportation paradigm that puts the pedestrian first. For example, it calls for the systematic removal of all slip lanes – none of which I’ve heard or seen removed in the year since CDOT created the guidelines.

Untitled

I want the city to systematically remove all beg buttons. If the green signal is too short for a person to cross the street, then it’s probably too short for a bicyclist to cross in the green signal (yes, this exists in Chicago). It also means the street is too wide to foster it being a place over being a pipe for cars. And if it’s not a place, what is it and why are people walking there? What personal needs – like a job, food, and socializing – are not being fulfilled where they live that people have to cross this road to meet those needs?

Updated March 10 at 12:56 to clarify what the Pedestrian Plan says about beg buttons.

Divvy activity in Wicker Park-Bucktown

Divvy Bikes Outside Smoke Daddy

The Divvy bike-share station outside Smoke Daddy on Division Street at Wood Street is the fourth most popular in the Wicker Park & Bucktown neighborhoods. Photo by Daniel Rangel.

This is an analysis of the station use for Divvy bike-share stations in the Wicker Park and Bucktown neighborhoods (they blend together and it’s hard to know if the club or bar you’re going to is one neighborhood or the other).

Numbers represent a discrete trip, from one station to another (or the same station if the trip was greater than 3 minutes, to eliminate “hiccups” where the bike left the dock but didn’t actually go anywhere). Customer means someone who used a 24-hour pass and subscribers are annual members. Gender is self-reported on a member’s DivvyBikes.com user profile.

17 stations listed.

[table id=10 /]

This map of Wicker Park Divvy stations shows a residential service gap among the Damen/Cortland, Ashland/Armitage ( Metra) and North/Wood stations.

This map of Wicker Park Divvy stations shows a residential service gap among the Damen/Cortland, Ashland/Armitage (
Metra) and North/Wood stations.

Based on the popularity of the Ashland/Armitage station, which is right outside the Clybourn Metra station – a very popular train stop – I think there might be a residential service gap near Saint Mary of the Angels School. I recommend a Divvy station at Walsh Park this year because the Bloomingdale Trail will open and terminate there.

Notes

Not all of these stations were online when Divvy launched on June 28, 2013, but I haven’t yet looked into the history to see when each went online. Therefore direct comparisons are not appropriate until you have a trips per day number. Then, seasonality (very cold weather) has its own effect. At the very least, all stations were online by October 29th, with the final addition of the Lincoln Ave & Fullerton Ave (at Halsted) station.

Can someone use “R” to make a time series chart on the entire trips dataset so we can find the best cutoff time to eliminate “hiccups”?

Query used: SELECT count(`trip_id`), usertype, gender FROM `divvy_trips_distances` WHERE (start_station = ‘Claremont Ave & Hirsch St’ or end_station = ‘Claremont Ave & Hirsch St’) AND seconds > 180 GROUP BY `usertype`, gender