Bodie Island 100x

About two weeks ago I started a 100-day project.

During an episode of Track Changes, design instructors Michael Beirurt and Jessica Helfand discussed an assignment they give: “Just pick something and do it over and over again for 100 days.”

One of the goals is to build a habit of doing something. Beirut quotes Chuck Close: “Inspiration is for amateurs. The rest of us just show up and get to work.”

For my 100-day project, I’m taking a photo of the Bodie Island lighthouse. (It’s pronounced like “body.”)

In addition to “showing up,” I expect this will help me develop my creative muscles. In order to take 100 photos of the same object I’m going to have to think about different ways of shooting without it becoming repetitive.

There are a few rules for this project:

  1. One photo per day toward the project. I might take shots with different exposure settings, but I do my best to keep the camera and framing steady.

    I can take other photos, but they don’t count towards the project. That means I can’t “bank” photos.

  2. The light station must be in the photo. It doesn’t have to be subject, but it needs to be identifiable.

  3. When I leave town, the 100-day counter is paused. When I return, the counter resumes. I’ll end up with 100 photos of the station, but it may take more than 100 days.

That’s about it. I’ve deliberately not included uploading as part of the schedule. I’ve managed to upload most of the photos on the same day, but sometimes I’m busy and need to wait a day or two to process and upload.

Which brings me to processing. I am making adjustments in Lightroom before uploading. The changes are usually slight modifications to exposure, contrast, color balance, and/or cropping. It’s not an explicit rule, but I don’t expect to use any Instagram-like filters or do other heavily stylized post-processing.

I’ve managed to keep things interesting (at least to me) for 13 days, we’ll see if I can keep it up for 87 more.

View the album

A reading from The Martian

“Every human being has a basic instict: to help each other out. If a hiker gets lost in the mountains, people will coordinate a search. If a train crashes, people will line up to give blood. If an earthquake levels a city, people all over the world will send emergency supplies. This is so fundamentally human that it’s found in every culture without exception. Yes, there are assholes who just don’t care, but they’re massively outnumbered by the people who do.”

Shutting down Indego+Status Board

While I was living in Philadelphia, the city launched a bike share program, Indego. I signed up early and used it regularly to get from my apartment in Society Hill to CityCoHo, where I was renting a desk.

Indego key fob

I had played around with Status Board, but hadn’t had much of a use for it until I found the API for the status of the bike share stations. It didn’t happen often, but it was annoying to get to a station and find that there are no bikes to check out, or no docks available to return a bike.

Since I used the same stations regularly, it seemed like a good use case of Status Board: I could create a table showing the available bikes and docks for my favorite stations and check it whenever I was about to head out.

So I created Indego+Status Board.

I built the site using Flask. The index page calls the bike share API to create a map of stations. You can click on stations to add them to your list and then view them in Status Board or in the browser.

The data are collected the same way for both Status Board and the HTML view. The URL contains a list of station IDs as part of the query string. When the Flask route is called, it fetches the station data from the API, loops through the stations to find the ones with the right IDs and then renders a simple HTML table with the requested data.

The Status Board table has very little styling—the app has a table style already—just enough to align the blue and gray bars.

Status Board screenshot

I used it pretty regularly, though, and it was useful for me. There were a couple of times that I could see that the station nearest my apartment was full, so I knew to use an alternate on my way home.

But then I moved out of Philly and Panic announced they were shutting down Status Board, so now seems like a good time to retire this project and save myself a few bucks a month by powering down the droplet1.

The code is on GitHub if you’d like to run your own version. And it turns out that other bike share programs have data APIs, so it could be adapted. For instance:


  1. If you’re looking for a cloud server, I’ve been happy with Digital Ocean. If you use this link to sign up, you’ll get $10 in credit. If you keep your account for a while, I get a referral discount. 

2016 in Review: Books

I’ve been trying to read an average of one book per week for the past couple of years. I didn’t get there in 2016, but I got a little closer than the year before.

Here are the books I read this year, in chronological order1:


  1. Most of these are Amazon Affiliate links. If you complete a purchase after following the link, I receive a small commission, which I’ll probably use to buy more books.