The Odin Project
The Odin Project is a free, open source curriculum for anyone who wants to learn web development. It was founded by Erik Trautman. I got involved in the spring of 2014 and made several contributions over the next year. All work on this project was completed using test driven development and coordinated using Github and Pivotal Tracker.
I started with something small – just adding a green check mark that would appear next to a course title when a student completed all of the lessons for the course. No big deal, but it felt pretty good to click that “Finish” button on my first open source contribution and have it be accepted. It was also a nice way to warm up and start feeling my way around an unfamiliar code base.
The project was already using Devise for user authentication, but it wasn’t using the email confirmation module. I set this up and customized it so that current users wouldn’t be forced to confirm their email right away, and new users would receive the email confirmation token and instructions in the custom Odin Project welcome email. (Devise defaults to sending a separate email with the confirmation token.)
A few months later, we got a bug report that links to “Resend confirmation instructions” from some pages were giving 404 errors. Based on the information we got about what preceded the error, I had a good hypothesis about what went wrong. I built tests to reproduce the bug, fixed it, and confirmed that it was eliminated through the automated tests and a manual check.
My third feature was adding social sharing buttons to the lesson pages for users to share on Twitter, Facebook, Google+, and Pinterest. This was a great chance to look at the API’s for each platform and learn how to compose HTTP requests that took advantage of the RESTful API’s.
My final project was a substantial feature that would enable the automated sending of mass emails using the SendGrid SMTP API while allowing users to manage their email subscriptions and staying in compliance with the CAN-SPAM act. I really came to appreciate the power of SQL queries and JazzHands for seeing the results of my queries as I worked on this.
Technologies Used:
- Ruby on Rails
- Postgres
- RSpec (testing)
- JazzHands (debugging sql queries)
- HTML/CSS
- Bootstrap framework
- Various API’s
- Github
- Pivotal Tracker
- Google Hangouts (collaboration)
Links: