relaxdiego

This is my portfolio of open-source projects. Some of these are side projects while some I wrote because of work (and later open-sourced with permission from my employer). With all of them, I enjoyed building and learning new things along the way.

Aviator

This is my most recent open-source project. It is a Ruby library that allows Ruby-based applications to talk to the OpenStack REST API. It is a convergence of a few itches that I needed to scratch. Most important of those is my need to use an OpenStack SDK that was easy to understand and did not obscure the underlying OpenStack REST API too much. Second, because the OpenStack API is still very dynamic, I wanted an SDK that helped me know if there are any gotchas to the API or its docs. The result is a beautiful DSL that also happens to be self-documenting and can even point you to potential OpenStack API or documentation bugs.

ManaMana

I have always been fascinated with how Cucumber does its magic behind the scenes. In addition, I’ve always wanted to get my hands dirty with compilers. When I came across this freaking awesome book, I decided that it was time I tackled both curiosities at once. The result is ManaMana: A Markdown-like external DSL for expressing executable requirements.

Like all my other open-source projects, this one also went through several prototypes. Four, to be exact. Each prototype, building on the lessons learned from the previous while avoiding the baggage of maintaining shitty legacy code.

In case you're wondering: I chose the name “ManaMana” because this classic was what my kids were watching while I was thinking of a new name for this project. Also, “Mana? Mana?” and “Mana! Mana!” in my native tongue translate to “Is it done? Is it done?” and “It’s done! It’s done!”

Redmine Backlogs

Back in late 2008, my employer decided to shift from Trac to Redmine. We had also just started adopting scrum and found it challenging given Redmine’s default features and, after some research, didn’t find any plugins that suited our needs. That was when I decided to build a plugin that provided basic drag-and-drop capabilities. Fast forward about half a year and 3 prototypes later, Redmine Backlogs was open sourced.

This was initially a one-man development effort until a guy named Emiliano Heyns contacted me for some help with the plugin. Because of our common needs and his past experience with building a similar app in Python, our correspondence quickly developed into close teamwork where he put a lot of good effort and contribution on the Rails side and I got to focus on the JavaScript side.

One of the decisions that I’m glad I made was the decision to drop the training wheels of Prototype.js and just embrace JavaScript’s prototypal object model. This snippet shows the core piece of code that I used to implement the rest of Redmine Backlogs.

The downside of this move was that I had to build my own JavaScript framework from scratch. I would have preferred to use Backbone.js or Ember.js except that they were not yet around when I wrote the code. One of the upsides, however, is that I got to know JavaScript more intimately and also was able to gain a fine-grained control over the code. You can still see much of what I wrote on GitHub.

Redmine Backlogs is still in active development and currently being used by consulting companies, open-source projects, and at least one Fortune 500 company.