Rails Girls Summer of Code is over. It was very intensive, with ups and downs time, but thanks to our whole team it was also very successful. For the all summer we were working on GitLab Community Edition which provides Git repository management, code reviews, issue tracking, activity feeds and wikis. We would like to share our experience gained during RGSoC project, what have we learnt, what have we done. This is a short summary of our summer.
What have we learnt
Contribute to Open Source Project.
Working with Git, which looks quite different in project with 1000 contributors than a project which has only one contributor.
About remote work - organizing time, scheduling tasks, self discipline.
How to write clean code in Ruby, code refactoring, new methods, new approach.
Rspec - tests, tests and more tests, which gave you more confidence and are very important because allow you to achieve better understanding of what you do.
What have we done
During these three months we have opened 21 merge request, 17 was merged and opened one Issue. We were doing frontend and backend Issues. From creating tabs, editing views, updating gems to more complicated tasks like editing functionality of merge request or writing an API. Full list of our Merge Requests that we have written and in other ways we have contributed to during GitLab project you can find below:
Our merge requests opened, closed, merged during three months. (Source: gitlab.com)
We couldn’t have make it without a lot of amazing people, it was inspiring to see how they work and we hopefully someday we can help to others, same as they did. Many thanks goes to:
Coaches: Grzegorz, Piotr, Tomasz and Tomasz for all your patience, support and knowledge when we stuck in code.
Mentor: Yorick, who let us to work in different kinds of issues, who was coaching us and helping on daily basis.
GitLab team: Remy, Douwee, Annabel, Phil, Faith, Kamil, Zj and others for your advices, code reviews, spelling checks and many more.
With our coaches from GitLab. (Source: KaUlah)
Also we would like to thanks to our supervisor Lucas, who always remembered about organizing things and RGSoC Organizers and Sponsors for selecting us and making this summer possible.
Codemotion
On 15th - 16th September we attend the Codemotion Warsaw 2016 Conference. This was a special event for us, not only because of talks but also we meet our remote coaches from GitLab and talk with RubyCats Team and people from Rebased. For a warm-up we’ve listen to keynote hosted by James Weaver “Navigating all the knowledge”, where we saw how to use programming to find connections between people, things, etc. Conference programme included wide range of interests like TDD techniques, Internet of Things, Machine learning, Agile manifesto, JS, Regex, Continous Integration, Communication and so on. Thanks to RGSoC we spent ispiring time.
Source: KaUlah
What are our plans
Ula: I’ve left my job before starting the Summer of Code, so now I’am looking for a new one, or an internship. I hope after RGSoC it will be easier to change my career path.
Kasia: I’ve got an job offer as a Junior Ruby on Rails Developer what is great especially that two years ago I didn’t even known what is Ruby. I know that without RGSoC and contributing to GitLab CE it wouldn’t be possible.
Trees are changing colours of their leaves, kids have started school again and coffee chains are once again selling pumpkin flavoured coffee. That’s a clear sign that the summer is now officially over, and so is our Rails Girls Summer of Code experience.
What have we done
We feel like we have made a significant progress during our Rails Girls Summer of Code.
Here’s the list of features we have written and other ways we have contributed to the KeystoneJS project:
Wrote max characters option for the Text field
Came up with min characters option for the Text field
Implemented smooth scrolling after updating an item in Admin
Wrote complexity option for the Password field
Added max characters option for the Password field
Reviewed and edited existing documentation, moving it back to the main repo
Added missing documentation for numberArray, dateArray and geoPoint fields
Documented the features we had written
Wrote twitter field type
Wrote a user guide for creating a blog with KeystoneJS
Designed and coded the list visualization for the Admin
(Images by Team XYZ)
What have we learned
We have become much more comfortable working with git. We both had some limited experience with it already, but contributing to an open source project is a whole different use case, so we gained some priceless insights and learned many useful commands (and practiced using them every day).
We are also a lot more confident about JavaScript; there were lots of lines of code that we have explored, analyzed, copy-pasted and, of course, also written from scratch.
Beside plain JavaScript and Node.js, we have also learned about ReactJS, Redux and Mongoose, by means of coaching sessions, reading documentation, working through online tutorials and self study.
Last but not least, we have exercised our patience, perseverance and determination when we were overcoming difficult and frustrating moments.
(Images by Team XYZ)
What are our plans
Daria will now go back to her freelancing activities, but she will try to work on more challenging projects with the aim to transition into JavaScript frontend development.
Veronika had left her customer service job just before starting the Summer of Code, so now she is on a lookout for a new job, or possibly an internship opportunity. Hopefully she will find something soon and will continue on her path to becoming a better programmer.
(Images by Team XYZ)
Thank you
We would like to use this opportunity to extend our warmest thanks to all the people who supported us.
Our coaches: Jano and Josef, you are the best coaches we could have! We are immensely grateful for all your help.
Our mentors: Max and Jed, it has been a real pleasure working with you! It is inspiring to see how deep your knowledge and expertise is, and we hope one day we can get at least half way where you are.
Our supervisor: Sofia, thanks for all your support, for sharing your own RGSoC experience with us, and for being always there when we needed you.
RGSoC Organizers: Thank you for selecting us to be part of the programme and giving us this incredible opportunity!
RGSoC Sponsors: Thank you for making it possible for us to ditch everything else for three months and dive full-time into learning!
Our friends and community: Thank you for bearing with us and supporting us while we were engaged in our RGSoC project. Women in Tech Prague, we value your support and feedback, and we can’t wait to get back to our organizer duties and reconnect with all of you!
The Rails Girls Summer of Code is one of the best things that happened to me. After finishing my course at the university I got an opportunity to take part in the program representing the Melbourne team.
I was very happy and excited by the fact that I will be contributing to an Open source project for 3 months under the guidance of all the coaches and Katrina Owen as a mentor. And yes, it was kicked off on 1st of July!
I worked on the project exercism and contributed to both x-api and its web client and following summarizes the skills that I have gained over the past three months.
Ruby: Prior to this, I had worked on other object oriented programming language like Java. The biggest challenge for me was picking up Ruby and writing clean and elegant ruby code. Thanks to all coaches I got improved by the end of the program.
GIT: I learnt many useful techniques about GIT like squashing the commits, cherry pick the commits, rebasing and more. It was useful to know how important to write meaningful commit messages, titles and descriptions for PR especially when working on open source projects.
Test driven development: I learnt Minitest testing framework when working on different issues. Writing tests first helped me understand what I really want from the code. It ensures changes and new code don’t break the expectations of existing code. I had a good fun writing code to pass tests and then refactor the code and see if it still passes my test.
Working with people geek company like Culture Amp I learnt many things. Attending their culture x design was very useful. Few take away points:
Stay positive at the work, including with the people that are working with us.
Treating coworkers with respect and do our best to see issues from
their point of view.
Being open to feedback can give us an awareness of blind spots, help us to learn, and become better at what we do.
It was a great pleasure working with these amazing minds.
Ramya (Image: Team Vegemite)
Overall it was a great program once again! Setting the personal goals and working towards them was the only key I followed. At the end, I am employed as a full-time software engineer. I would like to thank Rails Girls Summer of Code for giving me this opportunity and each and everyone who have helped and supported me during this journey.
Ramya (Image: Team Vegemite)
Whats next?
I am happy to help other women who want to take part in the program next year. Well, I liked contributing to open source projects where you get the opportunity to work with so many amazing people. So I will be keep trying and learning new things and keep having fun.
On 15-16 September we had a chance to participate in an awesome event – Codemotion Warsaw 2016 Conference. Many interesting talks and people! But let’s start from the beginning.
We started with keynote by James Weaver about “Navigating all the knowledge”. It was fascinating to see how we can look for what particular records, e.g. people, genes etc., have in common. One of exercise case was what Michał Pazdan and Robert Lewandowski have in common ;)
James Weaver (Image: RubyCats Team)
Next we went to “Understanding legacy untested code via Exporatory TDD technique” by Oleksii Fedorov (Pivotal Labs). We were told what a mutation is, how to test the code step by step, what to do when we face big refactories.
Oleksii Fedorov (Image: RubyCats Team)
Alina Gnerre (Class-it) presented “Use of gamification techniques in app UX for smart cities projects” showing some success stories and examples like iCity and NotiCity. We also learned about gamification and smart cities concepts.
Alina Gnerre (Image: RubyCats Team)
Iryna Nezhynska (Visual Designer) in her talk “Beyond product features: how to get noticed by early adopters” taught us about emotional and psychological aspects of customer positioning and tying the customer with the product.
Iryna Nezhynska (Image: RubyCats Team)
Florin Patan (YouView TV Ltd.) convinced us, why we should consider “Getting started with Go”. He mentioned many pros of Go, editors, users, libraries and resources.
Florin Patan (Image: RubyCats Team)
“Agile used to be really cool” by Wojtek Erbetowski (Growbots) was a set of important notices about working with other people and some time for breathing deeply while meditating.
Wojtek Erbetowski (Image: RubyCats Team)
“The first fifteen lives of a software engineer” were described with humor by Nikos Zinas (Workday). The speaker took us on a journey through different stages in dev’s life. He told us what went good, what went wrong, what’s the best environment to grow.
Nikos Zinas (Image: RubyCats Team)
The first Codemotion Warsaw 2016 day ended with a nice afterparty, where you could talk to interesting people in a comfortable atmosphere.
Having a very positive experience from the first day we came for the second. And we weren’t disappointed :)
“Reverse engineering the clean code” by Jakub Marchwicki (108 creations) was a really thought-provoking speech about i.a. implementation patterns, UX mistakes, design incl. API design etc. and memory model.
Jakub Marchwicki (Image: RubyCats Team)
Then we went through “Google Dataflow: The new open model for batch and stream processing” thanks to Robert Kubis (Google UK Ltd.), who talked about different dataflow options and changes in time.
Robert Kubis (Image: RubyCats Team)
“Nobody likes working with you” by Luis G. Valle (Novoda) was a funny, but also very thought-provoking and important talk about rules of good communication and cooperation.
Luis G. Valle (Image: RubyCats Team)
In “Breaking Bad with GitLab CI” Ivan Nemytchenko (Developer Advocate – GitLab) told that one of bad habits is not automatizing the routine tasks. Bad habits may be caused by fear of CI system, of installing, configuring, learning and using new tool.
Ivan Nemytchenko (Image: RubyCats Team)
“Regex fundamentals” was explained by Juliette Reinders Folmer (Advies en zo) in a very engaging and positive way. We learned about regex usage, users, result types, engines, terminology, syntax and testing.
Juliette Reinders Folmer (Image: RubyCats Team)
Codemotion Warsaw 2016 was not only extremely interesting, but also so well organized that we were surprized to hear it was the first Codemo in Warsaw ever. We both were lucky to catch Codemotion Warsaw t-shirts at the ending ceremony. Yes, CATCH because they were thrown in the air! :D We were also happy to have another chance to meet with KaUlah Team again. And we couldn’t wait for EuRuKo and meeting Team Joda there :) And we’re looking forward to another Codemotion conference!
EuRuKo 2016
On the 23-24th of September we were happy to attend EuRuKo 2016 conference in Sofia, Bulgaria. It was our first time in this city and of course at EuRuKo. And we were to give our first lighting talk in front of such a big audience.
What we noticed just after /or even before ;)/ our plane landed, Sofia is a beautiful place, with an original atmosphere and surrounded by mountains.
We had luck to be hosted by Adam Niedzielski, a programmer from Poland now living in Berlin, supporting Rails Girls Summer of Code and active in our helpdesk channel.
We came to Sofia on the 22nd of September in the early afternoon. EuRuKo organizers came up with the idea of having pre-event gathering this day at CowOrKing Space by Puzl. It’s a very nice, quite a new place for co-working in Sofia. We had the opportunity to chat with some nice people before the official start of the conference.
EuRuKo took place in a cool venue – National Palace of Culture /NDK/ with a beautiful panoramic view of the city.
NDK (Image: RubyCats Team)View from NDK (Image: RubyCats Team)
It started with a Keynote by Yukihiro Matsumoto, who told about Ruby development plans and what we can expect from Ruby 3. And when ;) And about reducing our brain consumption. ;)
Matz (Image: RubyCats Team)
Then Xavier Noria in his “Little Snippets” talked about making good quality code and good quality social relations e.g. how to discuss different approaches to solving the problem and that the greatest quality the programmer can have is empathy /for maintainers of our code/.
Xavier Noria (Image: RubyCats Team)
“Rules, Laws and Gentle Guidelines” were presented by Andrew Radev. It was i.a. about the law of Demeter, not making commits at 3 a.m. and that for some devs for some reasons it’s easier to ask for forgiveness than for permission.
Andrew Radev (Image: RubyCats Team)
Amazing blue hat wearer, rubykaraoke & Rails Girls supporter Terence Lee showed us how to work with Kafka logs, events and streams in ”Simplifying Logs, Events, and Streams: Kafka + Rails”.
And then subject of “GraphQL On Rails” was covered in detail by Marc-Andre Giroux.
Marc-Andre Giroux (Image: RubyCats Team)
Gorgeous Grace Chang talked about how Yammer went from having a single person as an on-call engineer, to a team that satisfies customer needs in “Herding Cats to a Firefight: The evolution of an engineering on-call team”.
The last speech of the first day was about “How Sprockets Work” by Rafael Mendonça França.
Rafael Mendonça França (Image: RubyCats Team)
So we came to the Lightning Talks. Ours was the third, just after Team Joda’s. We talked about how it is to be a total newbie in the world of programming by the example of our own histories – from our coding beginnings to Rails Girls Summer of Code. You can see our slides here. We had some positive feedback after our LT, for which we are very grateful.
LT list (Image: RubyCats Team)RubyCats' LT (Image thanks to Team Joda)
The evening was for social events. First we had a supper with Team Joda, our coach Basia and some other friends. After that we went to EuRuKo official afterparty in the Mixtape5 club. We took part in voting for EuRuKo 2017 hosting city. We voted for Budapest and it won, having just a few votes more than Rome! And then there was a lot of dancing and trying to chat with people /it wasn’t easy to hear each other ;)/. We want to thank all of you, who approached us with some kind words about our lightning talk!
Budapest won! (Image: RubyCats Team)
The second day of EuRuKo started with another programming language creator’s speech – with “Idioms For Building Distributed Fault-Tolerant Applications With Elixir” by José Valim. The speaker provided a lot of information about Elixir and technological challenges like a need to use all cores when doing anything with computers.
José Valim (Image: RubyCats Team)
Advanced developers got instructions on “How To Begin To Develop Ruby Core” by Hiroshi Shibata /incl. merging, testing, reporting bugs/ .
Hiroshi Shibata (Image: RubyCats Team)
Carina C. Zona gave an amazing speech about “Consequence Of An Insightful Algorithm”. She showed how important it is to use a proper algorithm, as there’s a risk of harming people imposed on it. We listened to it with bated breath.
Carina C. Zona (Image: RubyCats Team)
Anton Davydov in his “Viewing Ruby Blossom” presented us the charming Hanami framework.
Ivan Nemytchenko explained “What Have I /has he ;)/ Learned From Organizing Remote Internship For Ruby Developers”. He presented us the requirements for interns, their needs and what they can get from internship. The speaker talked also about common mistakes made by interns and problems that can occur in a team. Then about what went wrong and what went right during his “experiment” and what are the conclusions. Another interesting parts was a graph of usefulness showing the real progress in time, advantages of contributing to open source and how to reconcile the needs of different team members, including seniors and juniors. And lots of cool drawing as usual :)
Ivan Nemytchenko (Image: RubyCats Team)
André Arko showed us advantages of having paid project team instead of only volunteers. He also told us what is planned about development of Bundler and Gemstash, as well as about the Ruby Together community.
André Arko (Image: RubyCats Team)
Nick Sutterer made us aware of thinking restrictions caused by MVC obssession and what API changes are needed.
Nick Sutterer (Image: RubyCats Team)
And guess what – there was another afterparty in the evening ;)
What we strongly liked about EuRuKo and especially miss now was the people side of the event. We met and talked to many nice people. We fulfilled our dream of meeting Matz in person. Unfortunately we didn’t catch José Valim, but maybe it will be possible even in Poland :) We also have new cat-friends in Sofia, met during lunches near NDK.
RubyCats with Matz (Image: RubyCats Team)RubyCats and one of new cat-friends (Image: RubyCats Team)
We’re very sad that wonderful EuRuKo is over and look forward to EuRuKo 2017 in Budapest!
Summer is over! Sadly this means our summer of code is also coming to an end.
What have we accomplished so far?
First of all, we learned a lot about everything! If we were to categorize the technical things we learned, it would be:
computers (the heap and stack, garbage collection, unicode)
internet and things (DNS, IP, HTTP, web browser engine, JS engine)
Rust (memory-safe language that’s also easy to use!)
As a bonus, we learned about what makes a good project good, how to motivate people to learn, and how to motivate ourselves to continue learning.
In terms of project related accomplishments, we have implemented the Headers, Request, and Response APIs. We have also added support for the Fetch method, and hopefully we are almost done with implementing Body mixin methods! Throughout this journey, we also discovered ambiguous wording and bugs in the Fetch spec. These improvements have come in the form of submitting 17 pull requests to Servo and opening 5 issues at WHATWG. How exciting! A lot of the groundwork was already done (thank you Servo contributors!), which made our project so much more tangible and productive.
Fetch in action!
Below is a simple example of fetch usage in locally built Servo.
Watch Servo making fetch happen! (gif: Team JaM)
Going to conferences
RustConf
We attended the first ever RustConf. We were so lucky that it happened to be in our city, Portland, OR. We had a great time meeting other people who like Rust and learned a lot from the informative talks! Many thanks to RustConf organizers for granting us a day full of fun and learning.
Strange Loop
We also went to Strange Loop in St. Louis, MO!
Having fun at the City Museum in St. Louis! X) Also featured: Ore from Team B'More Stunners and our coach Nick! (photo: Team JaM)
Strange Loop was a large conference; this year, there were over 1000 attendants and 5 talks going on at once. We learned about many concepts that we were unfamiliar with, such as lambda calculus, turing machines, scheduling algorithms, and computational origami. We came back with a long list of things we want to learn deeper, which made us happy. We are grateful to Strange Loop and Rails Girls Summer of Code for the opportunity to learn new things!
Our mentor, Josh Matthews (aka jdm). Thank you, jdm, for your boundless patience while we learned the ropes, and for your easily digestable explanations of how Servo works! We asked a LOT of questions. jdm also gave a great talk about Optimizing Open Source Projects for Contribution! By the way, we’re half-convinced jdm has both a crystal ball and a time machine at his disposal.
Our supervisor, Scott Kobewka. We always finished our weekly video calls feeling better about how much we’ve accomplished, even when we sometimes felt like we were moving at a snail’s pace! Only one more call left ;( ….
Our coach Nick. Nick was our go-to person for Rust questions and had our back whenever we (the front-line) were battling with the borrow-checker. As a Mozilla employee, he also knows a lot about Servo design, which was super helpful. Thanks, Nick!
Our coach Stefan. We went to Stefan for all things git and web-related. Even when we sort of knew how to implement fetch, we were confused about why we were implementing fetch. Stefan helped clear that up for us!
Tons of people from the Servo and Rust communities! Everyone on IRC and github was so responsive and helpful, we feel so warm and fuzzy all over. :) Thanks to Manish for taking time to help us with tricky Servo questions, even with the wacky time-zone situation. Thanks also to annevk for helping us understand the Fetch Spec, seanmonstar for help with hyper, KiChjang for his feedback and Rust tips, and many, many more people…!
And, of course, a giant thank you to everyone at Rails Girls Summer of Code who made this summer possible! <3 <3
So, what’s next?
We hope to have implemented a large chunk of the Body mixin by end of this week. After that, well, we both liked contributing to Servo so much that we plan on continuing to contribute. We’re really proud of what we’ve accomplished in the last three months. Now that we know what we’re capable of, nothing can stop us from trying and learning new things!