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:
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
complexity option for the Password field
max characters option for the Password field
- Reviewed and edited existing documentation, moving it back to the main repo
- Added missing documentation for
- Documented the features we had written
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).
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
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)
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!
(Images by Team XYZ)
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)
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.
Codemotion Warsaw 2016 Conference
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!
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
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.
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!
Many many thanks to…
- 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!
It has been a summer full of some happy coincidences and one we have just discovered is that apart from having a Star Wars related name like the Coding Padawans, we, Team Joda are writing our blog exactly two years after they published it 😉 and are getting ready to end our coding journey as Rails Girls Summer of Code students.
Amazing Role Models (Image: Team joda, Technique: Collage)
This has been a very cool journey indeed, through which we got to meet many inspiring women and learn about their coding journeys as well. We shared our stories and motivated each other: We had lunch several times at SoundCloud with team LoadtoCode and we also met team Kindr3d, when they came to Berlin for a couple of conferences. Then, we even got to meet the RubyCats during EuRuKo 2016. Furthermore, Ellen (one of our coaches), Duana and Tam (our mentors) and Nynne (a RGSoC alumna, who worked last year on the same project) have been incredible role models that continuously embolden us throughout our coding paths.
Our Project and Lessons Learned
As we mentioned in our first post, our project is SoundDrop. By working on this project closely together and having a great team of supporters, we acquired and improved both our technical, as well as our communication skills: We learned to ask more precise questions, to research better for solutions, to try things out from different perspectives and to talk about our problems and boundaries to be able to get along throughout the summer. Working on a project so closely can be very challenging: It is like having a travel companion with which you do everything together and with whom you have to talk often, to make sure you are not stepping on each others’ toes. So even if our communication is not always perfect, we put a lot of effort and achieved the goals we had for the summer:
- We learned about APIs and could design and implement one for our project
- We revamped the landing page with an embedded map in which you can see the drops that have been added
- We added tags, so users can categorize their drops
- Johanna made it possible for users to search drops according to tags
- Dayana created a “My Drops” Page where users can see their drops on a map and a count of them.
Of course this is work in progress and there is still much work to be done, but we’re satisfied with the results and looking forward to code more. Throughout this process we learned a lot about programming languages, servers and memory allocation among other topics and also began using awesome debugging tools such as Pry and Chrome’s developer tools. We also had to understand, and sometimes even refactor legacy code.
Conference: EuRuKo 2016
EuRuKo 2016 (Image: Team joda, Technique: Collage)
On September 23rd and 24th, we were able to attend our first international Ruby conference, EuRuKo, which was taking place this year in Sofia, Bulgaria (Thanks again to EuRuKo for providing free tickets!). Not only was EuRuKo our first big international conference, it was also the first one where we gave a lightning talk. We became quite nervous, when we realized in front of what a large audience we would speak and what famous and well known developers were attending. But the EuRuKo staff supported us very well and we quite enjoyed standing on stage, sharing our Rails Girls Summer of Code experience wrapped up in 5 minutes. We received a lot of positive feedback and people liked that we announced to be looking for jobs after Summer of Code ;)
Attending EuRuKo meant experiencing diversity in many different ways: The talks were both technical and non-technical. One talk that deeply impressed us was “Consequences of an Insightful Algorithm” by Carina C. Zona. She warned about negative impacts that errors in algorithms can have on people’s’ lives, e.g. when an automated tagging system categorizes a picture of a concentration camp as “playground” or when Facebook reminds you of a day you always wanted to forget. We were also impressed by José Valim talking about how and why he created Elixir and to hear about the accomplishments of the awesome Ruby Together community that maintains some of the most important Ruby Gems (in their free time! Thanks!). During the breaks and the after party on Friday we got to meet a lot of Ruby enthusiasts from many different countries and backgrounds, e.g. our fellow RGSoC Team from Warsaw: The Ruby Cats, some Rails Girls Sofia organizers with whom we could exchange experiences from putting together beginner workshops and - last but not least - we met Matz, the creator of the Ruby programming language!
In a nutshell, we had an amazing experience with many interesting people in a pulsating city and we are looking forward to EuRuKo 2017 in Budapest!
What Comes Next
Now the last week of RGSoC has started and of course we are sad that these three months of intensive learning are soon to be over. But we are also looking forward to new challenges: continue contributing to SoundDrop (updating it to Rails 5 \o/), working on our own projects and applying for developer jobs. Or, as Yoda would put it:
“If you end your training now — if you choose the quick and easy path as Vader did — you will become an agent of evil.”