Geekfest: Ray Hightower Dumps a Robot into Lake Michigan

Today at Groupon’s Geekfest, Ray Hightower presented his underwater robot!

The robot is the product of OpenROV, an open-source project to develop a Remotely Operated Vehicle (that’s the ROV part) that can navigate underwater.

Most underwater ROVs are much larger than a human being and cost millions of dollars to buy and maintain. The OpenROV team wanted, instead, to create a robot that would cost less than $1000 and would be much smaller than its counterparts. The result is a machine smaller than a breadbox, which sells (disassembled) for $850. Ray showed us his model, and he talked about the process of getting her to work:

Continue reading “Geekfest: Ray Hightower Dumps a Robot into Lake Michigan”

My Five Favorite Things About SASS (The CSS Extension Language)

I recently had the opportunity to teach HTML and CSS to a class of women through Chicago Women Developers, an organization devoted to the advancement of women in tech. As a part of that course, we covered Sass: a CSS extension language that makes stylesheets easier to read and use for developers, then converts into plain CSS for the browser to read at runtime.

In order to demonstrate how Sass works, I showed the class a few examples of the language in Sassmeister, which does the Sass-to-CSS conversion before your eyes. Then I took screenshots! Though we didn’t cover all of Sass, we did cover several well-loved staples. Here are demonstrations of my five favorite Sass functionalities, in ascending order:

Continue reading “My Five Favorite Things About SASS (The CSS Extension Language)”

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”

How to Make the Most of DCamp

Nerd communes in the woods. They happen.

This past weekend, one in particular happened: Ruby DCamp, a semi-organized unconference for programming enthusiasts of all skill levels. This also happened to be my very first unconference!

I have elected to write down what I learned for the next unconference I attend. The title of this post does not attempt to tell you what to do: it reminds me what to do in the future. If some of it helps someone else, all the better. In fact, if you yourself attended DCamp (and if that’s the case, I can’t imagine how you found this post), your additions to the list are most welcome in the comments :).

So, without further ado,  a sparse scrapbook of DCamp 2014, plus things to remember for next time:

Continue reading “How to Make the Most of DCamp”

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

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 third in a series of three posts, and it’s about automatically assigning colors to the sections of a circle chart.

For more info on Chart.js, have a look at the first post in this three-post series. 

To see how I adjusted the labels on line charts, look at the second post in the series.

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

Chicago Ruby: VIM for Ruby

An IDE can heavily influence the development experience in a language, as I found last week with IntelliJ for Java. This week at Chicago Ruby, Brian and Chris of Hashrocket talked about how the VIM IDE influences the experience of writing in Ruby.

Going from Sublime to VIM is a switch that some of my Rubyist colleagues have chosen not to make because, they explain, the additional bells and whistles of VIM cause more confusion than efficiency. I admit, I’ve had the same impression: the first time I saw VIM, I was watching a presenter demonstrate some Ruby code. I struggled to articulate my questions to the presenter because VIM’s line numbers followed the cursor rather than staying put. That made a bad first impression. I looked forward to coming to Chicago Ruby tonight for a second impression that might make me rethink my position. Unfortunately, that did not happen.

That’s not to say that VIM isn’t awesome and worth a look. Perhaps it is. But, from my perspective, VIM’s opportunities to convert Sublime users lie in places other than those emphasized here. So I humbly offer the following set of reactions to the VIM presentation, from a Sublime user. Here’s what I got from it, and here’s what I wish I got from it.

Continue reading “Chicago Ruby: VIM for Ruby”

Pairing with the Pros: A Day at Pivotal Labs

“Yes, mom. I go there and I code with them. Yes, all day. That’s how it works.”

My mother didn’t completely understand my enthusiasm to spend a day in harness at Pivotal Labs, but she seemed willing to accept my reasoning: namely, that pair programming for that much time with more senior developers to myself would allow me to learn a whole lot of stuff. And it did, in everything from Java to TDD to software design. Here are a few of the choicest lessons I got to learn as a pretend-pivot-for-the-day.

Continue reading “Pairing with the Pros: A Day at Pivotal Labs”

Pairing with Coraline, Entry 2: Ternary Operators and a Healthy Dose of Scope


So I got ahead of myself on this one, and described ternary operators in the context of an improvement to some front-end work in the last post. That said, I’ll mention it again here, as I learned the ternary operator syntax from Coraline Ada Ehmke in our last pairing session together. This syntax provides a terse alternative to the if statement. Here’s how it looks:

Screen Shot 2014-09-30 at 3.45.11 PM

Continue reading “Pairing with Coraline, Entry 2: Ternary Operators and a Healthy Dose of Scope”

Blog at

Up ↑