Our summer is like a song, sometimes we don’t know the lyrics, but we still enjoy the song. 🎶😌 And then we sing the song till we are familiar with the lyrics. Just like that, we were struggling with some concepts but we enjoyed learning and using those concepts in the best way possible. Just like some songs introduce you to new styles and make you in love with them, our RGSoC journey was a starting point to many important things that made us more passionate about what we do. And even though our summer song is going to end soon, we will always enjoy its music.😇 So let’s see how interesting our summer song is so far..
Enjoy the song.. (Image : Her.ie)
How challenging it is?
So far, throughout the RGSoC journey, we’ve faced many challenges.
Finding a place to work – This was not a challenge at all. We asked from APIIT Sri Lanka, because we always knew, universities will never say “No” to the real need of students, and they did say YES.!! So finding the room was a success!
Finding coaches – This was also not a problem since we first contacted coach Kasun, and he helped us to find the other coaches. Thank you Coach Kasun.
Time management – Since one of us has to deal with the lectures and we participate in many tech events, together and as individuals apart from RGSOC, we had to find time to cover the working hours that we are going to miss. Actually we had a great option for that. Working during weekends from home. But that doesn’t mean we didn’t enjoy our weekend. Visiting your friend’s home during weekends, means, Fun!! It is very relaxing and we are enjoying it a lot. And look what we had to deal with.. 😹
Working from home be like.. (Image : Janakshi’s Tab)
Learning new technologies and contributing to Open Source Projects – Since we were new to most of the concepts used in this project, sometimes we were stuck having no clue what to do to solve some problems. So we had to learn them from scratch.
This was us when we were stuck, looking miserable..
The struggle was real.. (Image : Google images)
To overcome situations like above, we helped each other in our learning curve and got lots of help from our coaches, mentor and our supervisor. We worked on many hands-on tutorials together and helped each other to learn fast. So it was not that difficult to complete our learning curve and head back to the implementations.
This is our first Open Source project contribution and summer project. So we also had to learn the best practices of contributing to open source projects.
Learning was our biggest earning!
At first, we were completely new to Git, since it was our very first summer project and we weren’t familiar with most of the git concepts. So during the first two weeks, we learned a lot through tutorials and our coaching sessions. So here we are now, playing with Git in style.. 😎
The Git Bosses.. (Image : giphy.com)
We were selected for the project OpenDF , since both of us were familiar with Java EE and were ready to solve some of the issues with that knowledge. But our mentor had a different plan for us. So we were given the task to develop a file browser using ReactJS. Actually we think it was an opportunity. Because both of us had no clue about developing a react component. Not even a little! But now we can, at least a bit.😅 So our mentor opened a door for us to learn something new.., which we think was a blessing.
Since we were new to the world of ReactJs, we were struggling to figure out how React works, how to work with react boilerplates, how to test react components, what Redux-saga is and etc. So we learned about each of them while working. And we still do. Thanks to our study hours, our mentor and our coaches, now we can work with react components and understand how it works. From each tutorial, each code reviewing session, each coaching session and from each demo session we learned something new and we could improve our work.
Achievements so far..
So far we’ve learned many new things about Git, ReactJS, React boilerplates, Redux-saga, Testing react components, API documentations, Swagger and etc. And the best thing is, we’ve already been able to apply most of these concepts successfully.
We used Trello as a project management tool to manage our tasks while Git as a version control system. And we must mention our cool daily logs 😎. There are 58 daily logs already! 📝✅ They made our work more organized. And so far we’ve developed three react components called SearchView, TreeView and DetailView for our file browser and have got two of them merged already with the FileBrowser container! 😇🎉
So this is how our project work looks like, at the moment.
The motivation you get from RGSoC is remarkable. We used this summer as a great opportunity to network with the tech community in Sri Lanka. As the first step we participated in Business, Law and Technology Conference 2017 – APIIT. And there, Janakshi presented her final year project and was awarded too. Then we participated in few other competitions and achieved some victories too. And these competitions, helped us two, to become a better team. 😇
On our RGSoC day-off, after enjoying our little team time with ice cream sessions, we participated in Colombo Javascript Meetup at WSO2 Colombo and learned lots of new things about JSON Web Tokens, Securing NodeJS Rest APIs with JWT and about NodeJS Security. And it was our first Meetup!🎉
A well spent day-off. (Image : Meetup app and Kalpani’s phone)
Next comes the competitions and achievements during RGSoC,
Participated in SheCoderess v.1.0, which was a hackathon organized by University of Uwa Wellassa, Sri Lanka. And her team won the first place.
Participated in Hackx competition, which was organized by University of Kelaniya, Sri Lanka to seek innovative ideas. Her team got selected for the final round.
Both of us:
Both of us participated in the Hacktitude competition. This was organized by 99x Technologies. The best thing is, both of us got selected for the final round too. 😇
Helping hands
We got a lot of help from our coaches and our mentor to learn these new things very fast while getting the help from our supervisor to manage the project work. And they were always there when we got stuck with issues in our code or any other thing.
Our mentor, Milindu Kumarage, Thank you, for your boundless patience with our work and for helping us when we were stuck with development issues.
Our supervisor,Ramón Huidobro, Thank you, for being so flexible when we got problems with managing the time, for guiding us to do the right thing and for motivating us.
And, of course, a big thank you to everyone from the Rails Girls Summer of Code Team who made our summer of code experience, a perfect one! Because of you guys we had a great summer which was full of new experiences and awesome memories.
Our coaching sessions. (Image : Kalpani’s phone, Slack and Google hangouts)
After this summer
Thanks to RGSoC, this summer is so far the best summer in our lives. And it has opened doors for, new opportunities, new friends, new way of thinking and etc.
We believe, we can do more after this summer. After RGSoC, we would love to continue our contributions to OpenDF. And we also have a long-term goal to join RGSoC as coaches to help new teams, once we’ve gathered more experience. See how impressed are we from our first RGSoC experience? 😌 And we’ll be giving our support to the tech community more and more in the future, by joining meetups, conferences, competitions and engaging in many more open source projects.
And we must mention about the Conferences! Because we will be flying to Australia in 2018 to participate in RubyConf AU 2018 🛫🇦🇺 and will be participating in DEV DAY 2017 🇱🇰 conference as well. We are so excited! 😁🎉
When everything works fine.. (Image : giphy.com)
Last but not the least, we would like to say thanks to everyone for supporting us throughout this journey. And THANK YOU RGSoC for giving us this awesome opportunity. 😇 Thank you all for letting us have a song-like summer. We will always remember our song of RGSoC.. 😌🎶
We have been working on the Servo project. Working on this project has broadened our programming knowledge especially with Rust. We have interacted with Git a lot. At this point, we cannot say that we are masters with Rust, but we are much better than when we started learning it.
We just can’t believe that RGSoC is coming to an end, time flies.
Learning and Challenges
We were absolutely unfamiliar with Rust, and it has quite a bit of a learning curve. We struggled with Rust. You need a lot of patience when you are learning something new it really takes a lot of time. We faced a lot of problems while understanding the codebase, specification, building environment etc. But yeah, Kudos to our coaches Rahul, Ravi and our Mentor Josh who were always up for the help that was the only thing helped us in keep going. We both believe, we have learned lot of things during last two months and still learning.
Project Journey
Initially, setting up the project on our local machines was easy but we faced the problem when it took more than 1 hr 30 minutes to build. Then our mentor came to rescue us by introducing to a tool called Janitor.
Small Intro to Janitor: The janitor is a web app which uses cloud9. Instead of installing, downloading servo in your machine with lots of instruction you can simply go to janitor where complete development environment is provided for Mozilla firefox, servo etc. You can simply go there, choose servo and start editing in cloud9. Thank you, Jan Keromnes for creating this cool stuff.
Everyday we got introduced to some new concepts of Rust programming language. We are glad that we chose this project because we are really loving Rust.
One more challenge was understanding the specification. The language used in the specification was hard at first to understand but with help of our mentor and coaches, it was easy.
During the review of PR, we got to know that there are few bugs in the specification for which Josh opened the issue.
Matching the standard of code in the servo was tough for both of us at the beginning. But with the suggestion of our coaches and mentor we started writing our own code and then refactored it to match the codebase of servo.
So now we came up with this: We wrote more than 50 logs(more to come).
Number of comments on Github: 122(more to come). We discussed most of the things on IRC but still, we are getting lots of comments and suggestions from different developers. It’s really nice to see that other community members are taking an interest in our project and helping us. That’s why people says open source is filled with cool and awesome people.
Number of Files created + changed: 15.
We both were familiar with Git before starting the project but in last two months believe us, we messed up while rebasing and learned some new things about it. Big thanks to coach Rahul and Ravi(They both were our pillars of strength and support)- you people are awesome.
We Learnt the importance of implementing a peer to peer reviews. Also had lot of meetings with our Supervisor Vaishali. She is awesome and very supportive :)
What next?
We are looking forward to contributing more towards the project. Also, we want to thank, RGSOC organizers for facilitating everything and providing us tickets for JSFOO conference. We will look forward to giving back to the community.
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.
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!
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.
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
A part of our great team after our first retro meeting, Photo by Daniel Temme
The Plan:
Before our Rails Girls Summer of Code started, we made a great plan what we will do:
create Feedback field to Food Pickup ( Issue #235 )
make trusted users/group admins
create statistics for pickups that were done by users in kilograms
build a quiz framework
Optional: Android App, shared food & other things
Yay!
The Reality
We found out that we had no clue how difficult such an Issue can be! I mean like ABSOLUTLEY no clue. Coming from ‘Codecademy’, ‘Learn Python the Hard Way’ and some small pet projects we thought we would solve the first Issue within 1 week.
We needed 9 weeks until our first (notable) Pull request was accepted. So, how was that possible?
The First Issue
Our first task was to create Feedback field to Food Pickups. We spent a lot of our time learning about: Python, Django Framework, Django REST Framework, Swagger, how to troubleshoot our Git merge conflicts and how to solve our Docker complaints.
What We Have Learnt:
There are no shortcuts - we have to do Django tutorial and Django REST tutorial first
Working both on the same branch at the same time will not speed up our progress! We are going to have many merge conflicts instead and we have to solve them all. This takes many, many hours :)
We know what is server, browser, database, models, migrations, HTTP requests, querysets, filters and all these fancy words around we did not know how they are connected before.
And finally: This Issue is not as small as it looks like!
If you want to read more about this, go to the Foodsaving blog and read the Fairy Tale Version of that story.
Graphic by Ines D. Guett
What We Have Built (Status: 6. September 2017):
a new API endpoint Feedback with HTTP methods GET, POST
integration API tests for Feedback that ensure that the user gets the correct GET/POST output
validation for field about and set the field given_by as read-only
unit model tests for model Feedback
Our hardest part on the Issue was to fix this test:
python
def test_list_feedback_works_as_collector(self):
"""
Collector is allowed to see list of feedback.
"""
self.client.force_login(user=self.collector)
response = self.client.get(self.url)
self.assertEqual(response.status_code, status.HTTP_200_OK, response.data)
self.assertEqual(len(response.data), 2)
This test should return two instances of our test object and check that there are exactly 2 instances in the test database. There is also a difference between a test database and live database. We discussed this many times until we could fully understand :)
add filters to our Feedback + some other limitations
refacture
write a Foodsaving-backend beginner guide. We have already started here.
Hackathon & Community
We attended HackDays in ImmobillienScount 11.07.-13.07. and we got very motivated with Stefan: “We can make it!”
Foodsaving founders invited us to their Hackathon: 14.07.-16.07. We met here incredibly smart people - Tilmann Becker (@tiltec), Nick Sellen (@nicksellen) and Janina Abels (@djahnie) who put their time & energy into making the saving a food waste possible.
Enjoying saved food and coding together at the Hackathon, Photos by Nick Sellen
And we want to thank our great coaches and mentor! Most of them already appeared in our first blog post – but Derek Tingle (@tingled) is new and we are very grateful that he spent a lot of time explaining many related technical topics we needed a help with. You should see how he navigates through the shell – it’s amazing!!! :D
SoundCloud coaching company was incredibly supportive work environment! We would like to thank SoundCloud for providing us a space, working software & hardware, motivational environment and good music! We had very nice time at SoundCloud and SoundCloud people demonstrated their passion for technology that drives them to achieve amazing results. Very enriching experience for us!!!
SoundCloud is a really great place to work! Photos by Ines D. Guett
Future
Our Calls for Papers for Codemotion Berlin 2017 and PyCon Germany 2017 were successfully selected! Yay! And we are going to have this talk: “A Summer of Foodsharing – Learn How to Code in an Open Source Project” in October 2017. We are going to talk about RailsGirls community, how to get into Open Source and we will present our project Foodsaving.
@ines will fly to Ghana and Kenya in the autunm and have a look on the tech scene there. Afterwards, she would like to become a Product Manager and help to prioritize coding tasks.
Marie says:
“Developers will realize how useful it is to sketch ideas to see with Ines if their ideas are totally awesome or totally unrealistic!”
@marie will get an amazing job as Backend Engineer in some country she has never been to.
Ines says:
“If you need a talented, very committed Python Developer: Hire Marie! She is great!”
We just can’t believe that RGSoC is coming to an end. But every end, marks a new beginning. And we hope we will take our experiences forward by contributing to the wonderful communities that we were introduced to during our journey.
Challenges we faced
We were absolutely unfamiliar with ReactJS, and it has quite a bit of a learning curve. We struggled with React as well as the intricacies of JavaScript.
Managing RGSoC with college was a difficult task. Even though we took easy courses, the deadlines never seemed to end.
Learning
RGSoC was mostly about unlearning what we knew, and building a new foundation for all the knowledge that came our way.
We finally started understanding how JavaScript actually works. It is one thing to be able to put together code to make something work, and it is another thing altogether to actually know exactly why it works.
We were introduced to React. This was the most exciting bit of our summer. Working with something as popular and novel as React was an extraordinary experience.
We realized how designers and developers collaborate to build seamless user experiences. Working with the p5.js web editor made us aware of how much work goes into designing the user flow of an application even before the developers start coding. A lot of thinking and rethinking goes into user interactions and the response of the application. A shout out to the brilliant designers and developers of the web editor! Working with you, and learning from your work was truly amazing.
A tiny push in times of need can go a long way. Our mentor Cassie and our supervisor Pilar, have been our pillars of strength and support in this entire journey. It is thanks to their help, that we were able to pull through testing times.
Pair programming is tonnes of fun, and even more so when you do it with your best friend!
Tips and tricks about Git and Github.
Cassieeeeee!!!! <3 <3 <3
Cassie was our mentor, but she often donned the hat of a coach as well, personally reviewing our work and guiding us throughout. She helped us with problem solving approaches, React implementations and JavaScript issues. Every time we got stuck, she was there, like our Pole Star, directing us forward. Weekly meetings with her, were an absolute joy, giving us much needed energy and optimism to tackle the challenges of the week. Cassie sifted through the plethora of issues on the web editor repo and singled out beginner friendly ones so we could smoothly transition into React development. She also provided us with several resources and tutorials to polish our technical skills.
Pilaaaaar!!!! <3 <3 <3
Pilar was our watchful supervisor, always motivating us to surge ahead, in spite of all obstacles. She was constantly available to talk and always made time for us, whenever we needed. Her experience as a former RGSoCer was invaluable and her insights of working in the tech industry were enlightening. Being from Chile, she could sympathise with us when we mentioned the lack of awareness about workplace burnout in India. She told us that the work culture was similar in Chile. Pilar even got us extra help for React on the helpdesk, because our coaches were unable to devote adequate time.
What next?
Continue contributing to the web editor because it is a really cool project.
Cassie and Pilar were the two wonderful ladies who helped us sail our boat in RGSoC. We hope to extend their kindness to other young women foraying into tech by assuming roles of mentorship and guidance.
Learn, learn, learn.
We also look forward to sharing our insights and learning with other members of the tech community.