💎 D for diamonds are forever

Posted on by Jen

Categories: blog and student posts

D for Discourse

It’s incredible how fast the summer has gone! (literally as well in Berlin). Choosing a project wasn’t easy at first. After researching and consulting our coaches, Discourse seemed the right one to go. In the beginning it was an unknown for us and soon we would discover the immensity of it! A big and beautiful deep ocean of Rails and Ember code hanging around the internet in every discuss corner.

Discourse is great to start to contribute to open source. The community in http://meta.discourse.org is willing to help and answer any question you might have. It comes full of information to get to know the project and a Beginner’s tutorial to build something locally and get familiar with their particular way to add plugins to the main app.

Kaja has also written some posts in our blog about what it is to contribute here, and we will try to add up more info to make it a complete guide.

What we built

Our project was based on creating plugins to let the admins back up the information of the forum in some cloud provider.

We didn’t know how long it would take us to build one plugin. I thought we would have one or two at the end of the summer, but we ended up enabling 4 possibilities as well as a base class plugin from which all of them inherit (Google Drive, Nextcloud - Jan from Nextcloud left a message in our repo suggesting it, we were super happy to get it and built it right away! - Box, and a new version of the existent backups to Dropbox by falco). After this, our mentor eviltrout found another cool task to give us: downloading these files directly from Discourse and send an email to the user when it’s done, which we are on the way of building.

Team berlindiamonds

Github screenshot

We’ve learnt so many things this summer: inheritance, injecting code through class_eval and then through event listeners, git git git, a lot of interaction with APIs, the power of gems, how they’re built, code structure, the “super” keyword, memoization, triggering Jobs, executing stuff in the console, debugging with puts, byebug, Rails.logger.debug, some testing, drawing routes from the outside, Ember basics and the importance of proper documentation!

Team berlindiamonds

Absolventa - Kaja, Markus and Jen

We also participated in a RG beginners workshop in August, Kaja is part of the organization and proposed me to coach. It was a great feeling to see so many women (around 40) curious to code and many coaches happy to share their skills.

A huge “thank you” to:

The whole Rails Girls Summer of Code organization and supporters for giving life to this amazing project. This means the world to all newcomers and it fills the so important tutorial/junior gap mentioned by Daniel Kehoe.

Our in and offsite coaches for volunteering in this life-changing project. Robin, Markus and Carsten at Absolventa who’ve answered passionately so many questions the moment we’ve asked them, and took the time to guide us and use the whiteboard to explain the universe of Rails. To Rojo, the most active online coach who’ve challenged us with his answers to find the solution by ourselves, chapeau! To Robert, who’s been there in our team events and found some time to help out online too.

Team berlindiamonds

photo by Markus @ Absolventa

To Lucas, our super easy going supervisor who had a very positive attitude and pinged us when we were about to miss some organizational stuff, oops! To the Discourse community, Sam and specially eviltrout), our mentor, who’s very clever at the time of dropping hints about the way to go with the requested features and cheered us up when we got stuck on the way.

We have been assigned our first-choice conference GOTO and are looking forward to it :) !

What’s next

We will both start as junior in different companies and will continue our coding journey. Here’s an all-code-art-creation to not let the inspiration decay after the summer, cheers!

live coding laptop band Benoît and the Mandelbrots with Visuals by cappel:nord
comments powered by Disqus