The end of my summer vacation is nearing, and the end of our summer internship is coming twice as fast. We’re already on our 7th and last week here at ÆLOGICA and I’m sure we have learned so much in just one and a half months.
Almost everything was new to me.
Learning Ruby on Rails
I started learning by reading and following tutorials available online. I was able to make a blog by following Michael Hartl’s tutorial. I also followed a Rails Girls tutorial. I also experienced deploying these apps via Heroku! Another first for me!
The following week, I worked on ÆLOGICA’s Brand Identity Style Guide together with Ricky. I am already familiar with Photoshop before the internship program but I still learned a lot while working on the style guide. I figured that there were steps I used to do before that can be done in an easier manner.
Gitlab and Open Source
We studied how the contributors’ graph is getting all the data that it needs. We found out that we can retrieve the logs containing the commit author’s information (e.g. email, name, and the number of commits, etc.). Then we fed the data we retrieved to the calendar interface. To do this, we built a hash containing a timestamp of the user’s commits, converted into UNIX format, and the number of commits grouped by date. Denise also found a gem that contains the cal-heatmap files.
Cleaning Up and Refactoring
Once we finished this feature, we opened our pull request to Gitlab. The maintainers said they liked this feature but we still have to clean up our code to be consistent with the project’s coding conventions. We proceeded to refactor our code by moving some pieces to a helper. To test, we built a controller spec. We updated our pull request (with modifications) and waited for feedback. They asked us to refactor more and make it mergeable.
While refactoring, Denise thought of adding more features to our calendar. We worked on adding Ajax to our calendar: when a day in the calendar is clicked, it will show the user’s commit activity in each of the repositories the user has contributed to in that day. We had to get the logs again and group the commits per project, and then per date. So now, we also have a hash whose value is also a hash.
Refactoring is “breaking down the code without breaking the code”. I watched Katrina Owen’s talk during the RubyConf 2012 about Therapeutic Refactoring to know more about the process. We moved the code from the helper to the lib folder. Our contribution looked very different from what it initially looked like, but it is definitely cleaner now.
We’re still waiting for their decision whether they’ll merge our pull request or not, but we do hope that they do.
What’s challenging about this project is that everything was, like I said, new to me. So everything new I know by now, I learned from working on this project because of this internship. I experienced pair programming here at ÆLOGICA, and I liked it. Before, I wasn’t much of a fan of pair programming, because I feel shy whenever someone’s watching me type the code I have in mind. They might make fun of me inside their heads, but I figured that pair programming makes two people work together on a shared problem and helps both programmers learn from each other.
The ÆLOGICIANS shared their knowledge to us willingly and we really learned a lot from them.
Thank you for having me, ÆLOGICA!