One-Page Notes: Weapons of Math Destruction, by Cathy O’Neil

Folks ask me about the dangers of trusting computer-generated algorithms and artificial intelligence. The conversation usually brings up a future scenario in which the machines outsmart humans.

But there’s a more current problem: we trust machines to build algorithms based on incomplete or biased data that we feed them, and they perpetuate poor and unfounded decisions under the guise of ‘scientificness’ because a computer made the decision. Continue reading “One-Page Notes: Weapons of Math Destruction, by Cathy O’Neil”

The First Two Weeks at Pivotal Labs

About twelve weeks after graduating from bootcamp, I walked into the Chicago office of Pivotal Labs for my first day as a professional software engineer. Given the boundless intelligence and vast expanses of knowledge of other people I knew who held this title, I felt like an impostor. This isn’t uncommon in the tech community, especially among women, but just because it was a normal feeling didn’t make me believe that it didn’t have some basis in reality. So I decided that my best bet was to level up as quickly as possible so I could be of some service to the other engineers with whom I would be pairing each day.

I also decided to document, for each day of my first two weeks, what I studied outside of work. Many of the resources mentioned herein were recommended to me by other Pivots, to whom I owe a debt for their continuous support. I hope that this resource list, though it is specific to the project I worked on in those first two weeks, can be of some service to others who want to improve quickly in their full-time developer roles.

Continue reading “The First Two Weeks at Pivotal Labs”

Pairing with Coraline, Entry 3: Recommendations for “Spiking” and the Skeleton of a Ruby Project

Over Thanksgiving break, I once again had the opportunity to pair with the lovely Coraline Ada Ehmke. This time, instead of working on an existing code base, we started from scratch on something I had spiked out: a CSV parser! The original version worked, but the design contained some duplicate code and included no tests.

I had spent so much time on the original version that I could not imagine letting go of it: I intended to go back and add tests after the fact. The problem with this approach is that it gives the test suite no opportunity to help figure out which code isn’t needed: we write tests, one by one, before we implement them to ensure that we aren’t adding extra code, and also to keep the code’s design flexible and modular: that is, easily testable (well-written code should have a passing test suite regardless of the order in which the tests are run). For that reason, Coraline recommended that we start over from scratch, suggesting that, if there were any really important implementation details that I had learned while spiking, I would remember them.

Continue reading “Pairing with Coraline, Entry 3: Recommendations for “Spiking” and the Skeleton of a Ruby Project”

DCamp Code Retreat: Lessons Learned

Ruby DCamp begins with a code retreat: that is, over the course of a day, each developer rotates through pairing with six other developers to program Conway’s Game of Life. Between each session, all of the code must be deleted, and everyone must start fresh at the beginning of the next round. Some rounds have interesting or silly constraints to push the devs outside their comfort zones. It’s a great exercise in meeting new people and learning more about Ruby.

Though I did start fresh from session to session (Evan, I promise), I also took screenshots of the code from each of my pairing sessions. In this post, I’ll walk through five of those sessions and share the lessons that I learned from my pair partners.

Continue reading “DCamp Code Retreat: Lessons Learned”

Hacking Chart.js: A Crash Course in Down-and-Dirty Front End (Part 1)

What’s going on? I wanted to make clean, elegant, simple charts to represent data about armed conflicts in Africa. I used the Chart.js javascript library to obtain some pretty graphs, but I added functionality to the graphs and then wrote about it here so you can do it, too. This is the first in a series of three posts, and it’s about auto-generating nice-looking legends for line graphs.

Addendum: to see, copy, and run the code itself, you can pull from

What is Chart.js? Chart.js is a javascript library originally drafted by Nick Downie (available here on GitHub). The library offers relatively quick setup in Javascript for several types of simple and elegant charts so you or I can create visual representations of data in our apps:

Screen Shot 2014-09-11 at 7.17.49 PM

Thank you to Sajal Sarkar for the image:

Continue reading “Hacking Chart.js: A Crash Course in Down-and-Dirty Front End (Part 1)”

OpenGov Hack Night: Dan Platt and Craig Booth on Chicago Crime Stories

Tonight at OpenGov Hack Night in 1871, Dan Platt and Craig Booth of Narrative Science came in to give us a tour of ‘Chicago Crime Stories,’ which, as described on the EventBrite Description, is:

an application utilizing Chicago open data to produce narrative on crime in any Chicago neighborhood.

The app takes mountains of Data about Chicago crime and presents a story based on a specific neighborhood, which you can specify on the homepage.

Continue reading “OpenGov Hack Night: Dan Platt and Craig Booth on Chicago Crime Stories”

Blog at

Up ↑