Sharing your knowledge

Posted on by Sabine van der Eijk

Team potatoCode at 🔮 the future of the web 🔮 MirrorConf

Asked by 🔮MirrorConf and Rails Girls Summer of Code to attend and speak on the conference in Braga, Portugal. We were excited and full of ideas: our talk would be about beginning devs and what hurdles they can encounter. To begin with, the organisation team did an excellent job in taking care of their speakers and because of this there was a very welcoming atmosphere. We felt very welcome! Our talk was due on the first day of the conference, among other great topics.

Credits to Mirror Conf potatoCode 🙋‍♀🙋‍♀ Alina & Sabine at 0:44 seconds

To kickoff our talk, and out of curiosity, I asked the audience how many of them had just started programming about a year ago, some 30 hands were raised. Then I asked them who wasn’t programming at all and another 50/60 hands were raised. So I concluded: “Awesome, I then assume all others are mid-level / senior developers, this talk will be for you!”. Total attendees must have been around 250/300.

Alina & Sabine talk, hurdles of a beginning dev

Credits to Experta Global (@ExpertaGlobal on twitter October 18)

Everyone can be a good mentor

In this Summer of Code project we were lucky to have good coaches and a supportive mentor and supervisor, we voiced that everyone can be a good mentor for a beginning developer. It’s not only mentoring in a traditional way that’s important. Among other things, if you don’t like to teach it’s still good mentoring to write extensive documentation. Or to answer questions on reddit and stack overflow. There are so many ways in which you can contribute meaningfully to the growth of your junior, and for that matter of your team members. Another example is to write comments on Pull Requests you get.

Noblesse oblige

What the conference talks all boiled down to, one way or the other, is that developers have one job. That job isn’t programming, it’s an ethical responsibility. It takes awareness to contribute in a thoughtful and meaningful way that doesn’t exploit, harm, disrespect, shame, or exclude any user of the product you work on. Whenever you’ve got a hunch that what you’re developing could be harmful or doesn’t respect a user’s privacy it’s a warning to stand up and question your colleagues and stakeholders. Take a stance and explain your doubts, help to make the web a safer place.

“Amplify the best of technology and the best of humanity” Amber Case

Amplify the best of technology and the best of humanity

Credits to Hi Interactive (@hiinteractive on twitter October 19)

The French saying “Noblesse oblige” can help you remind you of your responsibility as a programmer. Nobility obliges could just well be Developers oblige. Developers are more than ‘just’ code writers, a developer ideally should be fully aware of her/his social responsibilities. By the way it’s not obligatory, it’s a requirement that every developer should fulfill for a more inclusive web. To quote Vivianne Castillo: “You can have comfort OR you can have courage. But you can’t have them both at the same time. Choose.”. In the spirit of the talks at this conference and of Developers oblige, choose for courage to speak up!

“Choose courage over comfort!” Vivianne Castillo

Choose courage over comfort! Vivianne Castillo

Credits to Expertera (@ExperteraGlobal on twitter October 18)

“Saying NO is a design skill. Asking WHY is a design skill. Rolling your eyes is not a design skill.” Mike Monteiro

Saying NO is a design skill. Asking WHY is a design skill. Rolling your eyes is not a design skill. Mike Monteiro

Credits to Simona Ritrovato (@strillart on twitter October 19)

Obrigada 🔮MirrorConf! 🙋‍♀🙋‍♀

I think we can’t thank the 🔮MirrorConf organisation enough. The team and the help we got from Laura, Zemith, José, Joáo, among others of Subvisual was outstanding! Also we would like to explicitly thank Ana Sofia for arranging that we could attend the conference, awesome job! Obrigada! 🙋‍♀🙋‍♀

Subvisual Team oganizing MirrorConf

credits to XING Portugal (@XING_pt on twitter October 18)
Credits to Mirror Conf find potatoCode Sabine at 0:11 seconds

Team potatoCode 🙋‍♀🙋‍♀

Sabine van der Eijk & Alina Leuca

🔮MirrorConf speakers Alina & Sabine

credits to Subvisual, organisation 🔮MirrorConf

Full Stack Fest in Barcelona

Posted on by Amalia Cardenas

One of the highlights of this summer was attending the Full Stack Fest in Barcelona. The Full Stack Fest is a language agnostic conference that focuses on the future of the web. The conference was outstanding, I learned a lot, met some great people and overall the conference had a positive impact in my personal development.

Klaus Fleerkötter , Anemari Fiser , and Amalia Cardenas at the Full Stack Feast

Klaus Fleerkötter , Anemari Fiser , and Amalia Cardenas at the Full Stack Feast. (Photo taken by Amalia Cardenas)


All talks were great sources of learning and inspiration, but there was one that was particularly inspiring for me. In this blog post, I want to share what I learned from this talk.

Avoiding Digital Bias by Adam L. Smith

The talk on avoiding digital bias given by Adam L. Smith was one of my favorite talks during the conference.

From Adam’s talk I learned that machine learning is a field of computer science that gives computer systems the ability to learn rather than be explicitly programmed. Developers working on machine learning algorithms analyze data, extract features from the data that they want, and train models to behave in a certain way.

The use of Artificial Intelligence and machine learning is impacting a broad range of fields. For example, machine learning is already helping predict severe weather patterns, detect privacy breaches in healthcare, and it is affecting the way repairs are performed on critical infrastructure.

While the impact that machine learning algorithms can have on science and society is promising, Smith argued that careful thinking and planning are required to avoid inappropriate bias. As he pointed out, “Machine learning can’t be fair or just unless it is given fair and just data.”

For counting, sorting, grouping and extracting certain types of patterns, machine learning is a useful tool. However, moral values and the ability to transfer high level knowledge from one domain to another is something that current algorithms are not equipped to handle well – although research is being conducted to correct this.

One of Smith’s main points was that, some bias is natural, but when personal data such as gender, age, race, socio-economic background, political preference, etc., are processed by machine learning algorithms, there is a significant and unique risk for unfair bias.

Smith argued that great care is needed to eliminate unwanted bias. During his presentation, selection bias, confirmation bias, training bias, and inappropriate bias were discussed and eye-opening real world examples of how these types of biases appeared in various projects was presented.

Adam L. Smith explains four types of bias

Adam L. Smith explains four types of bias. (Photo taken by Amalia Cardenas)


Real world examples of bias

An example presented by Smith highlighted findings from researchers at Carnegie Mellon University. Automated testing and analysis of the Google advertising system revealed that male job seekers were shown more ads for higher paying executive jobs. One reason for this was that women clicked less on higher paying job ads, thus the model had trained itself not to display these types of advertisements to women candidates. This type of bias is problematic, because encouraging male candidates to apply for higher paying jobs further increases a bias that already happens offline.

Smith also presented an example of bias in facial recognition algorithms used by the New Zealand Department of Internal Affairs to authenticate valid passport photos. A man of Asian descent had his passport photo rejected because the facial recognition software erroneously identified his eyes as closed, even though they were clearly open. This example highlights how issues can arise when models include biased data. Currently most of the facial recognition models are trained with facial data heavily skewed from the US and Europe.

An example of bias in passport photos

An example of bias in passport photos. (Photo taken by Amalia Cardenas)


Possible solutions

Smith highlighted ways to address these biases and provided possible pitfalls that can arise. One proposed solution for addressing bias was to increase the amount of data used to train models. Quadrupling the amount of data has shown to double the effectiveness of an algorithm. However, Smith cautioned against the risk of training models with data publicly available on the Internet as it can reinforce existing biases. This is especially dangerous as it can take years before a bias that is packaged into an algorithm is detected or corrected.

Example of existing biases

Biases can emerge when datasets accurately reflect unfair aspects of society. This image showcases how using publicly available data from the internet can reinforce these existing biases. (Photo taken by Amalia Cardenas)


Regulation was another solution that was mentioned during the presentation. In Europe at least, good legislation that protects people from discrimination due to their identity and other protective characteristics is already in place. In addition, GDPR does offer algorithmic accountability and protection, and requires the creation of algorithms in a transparent and verifiable manner in order to mitigate against algorithmic decisions that negatively impact someone’s life, freedom, legal status or vital livelihood.

A testing model to avoid digital discrimination

The talk closed by providing a testing model to avoid digital discrimination. An important first step that needs to be taken when designing an algorithmic system is to identify the stakeholders of the system.

It is also important to consider the risk and impact of all algorithms we build. Smith argued that most of the algorithms we build are low risk and low impact. However, we still need to be vigilant. The misuse of algorithms for example in the case of political advertising, can have dire consequences for how democracies function.

To make algorithms more robust and mitigate against potential bias, Smith also proposed the need for diversity in teams who can provide a wider perspective than a homogenous group. Finally, once an algorithm goes live, it’s important to constantly re-evaluate and adapt it to changing social norms, new data, and unanticipated experiences.

Slide showcasing ways to avoid digital discrimination

Slide showcasing ways to avoid digital discrimination. (Photo taken by Amalia Cardenas)


Closing Thoughts

I want to thank the organizers of the Full Stack Feast in Barcelona for the opportunity to attend this wonderful conference. I also want to thank the Rails Girls Summer of Code organizers for encouraging us to attend a conference as part of our summer training. Finally, I want to thank Klaus Fleerkötter , Anemari Fiser, and Mónica Calderaro for including me in the Thoughtworks community at the conference. This made the experience less daunting, and incredibly enriching.

Keep in contact with Amalia

LinkedIn

GitHub

Twitter

Blog

OSS EU blog post

Posted on by Paavini

We, Paavini and Nupur as the team “101 days of summer” got the chance to attend Open Source Summit in Edinburgh from 22 October to 24 October. Here is a short summary of our experience-

Day 0 - 21/10/18

We arrived at the conference two days before the events began to be used to the time lag between Edinburgh and India and also explore the beautiful city of Edinburgh. So by this day, we had already explored a lot. We were super excited for the conference.
On the day before the conference, we collected the batches from Sheraton hotel. Then we went to attend the Better Together Diversity Social Reception at the same place sponsored by Google. We made new friends from Germany and United States (Rupa from Codechix and People from Yocto). We also met another undergrad student from India who was also from Delhi. We chatted about their work in open source and told them about RGSoC. Upon hearing about this, they were happy to know that we were part of such an awesome community.

Badges

Source: Paavini’s camera

Day 1 - 21/10/18

The day started at 8:00 am with first time attendee breakfast held in the Convention center, Edinburgh. We were in the beginning shy and were not talking to people but then we met Dr.Erik, a very friendly person whom we later found was a part of the OSSEU team. We were surprised. His main message for us to enjoy the conference the most as first time attendees was to plan out the sessions and talks that we wanted to attend, meet new people, talk to them and learn from their experiences.

Erik

Source: Paavini’s camera

The next thing was the Keynote by Jim Zemlin, Director Linux Foundation

Jim

Source: Paavini’s camera

He gave an overview of all the projects that were going on in Linux foundation ranging from cloud computing, blockchain to automotive. He discussed about how the several tracks at OSS EU were going to be. He also mentioned about the diversity empowerment summit which we were very happy to hear about. He discussed about Linux has grown shows how open source has grown over the years Then there was a line of speakers for the keynote. Shuli Goodman, Executive director, LF energy discussed about how she and her team want to reduce 94% of carbon dioxide within the next 10 years. She mentioned that she is looking for 10K developers to help her run this initiative.

Then the next thing that we did was attending Laura’s session on Inclusion and Diversity.

Laura

Source: Paavini’s camera

She talked about the problems that people face while working for open source. Big companies are supporting open source but many people don’t get paid, so they work on weekends. So only people who can afford can contribute. She discussed about the problems that arise in having biases in workplaces that is what happens when homogenous group of people make a product. She gave the example of 2015 flickr auto tagging incident where black men were being tagged as ape, and the video of the soap dispenser that got viral because when a black hand was put below it, it didn’t dispense but when a white napkin was put, it did. She also talked about the amazon’s recruiting tool which was biased and discarded the resumes if it had the word “women” in it. So she explained why there is a need to be aware of such unexpected consequences. Finally, she discussed about how the open source projects can be made more accessible. Some points were proper documentation, making the project easy to understand, making the project welcoming, making the guidelines to report bugs, adding tags to the issues which can help the beginners find the issues which might be suitable for them. Her concluding statement was “Open source is about people !!!” to which we all absolutely agreed.

We then interacted with lots of Sponsors who had set up booths and collected some swags. It was very interesting to explore so many open source organisations all under one roof and know about their projects and the awesome work that they are doing.

Hall

Source: Paavini’s camera

It was almost lunch time by the time we ended up visiting the booths, so we went to attend the Women in Open Source lunch by Adobe at Sheraton Grand. There we met so many other awesome women, some of who were already in their full time jobs and were a way more experienced in open source than us.

Sheraton-lunch

Source: Paavini’s camera

Next, we attended a session on Machine Translation by - Suneel Marthi. He explained how he and his team at Amazon tried building a German to English language translator and discussed the intricacies of the problem.

Talk

Source: Paavini’s camera

The talk broadly discussed about Statistical(SMT) and Neural(NMT) methods to solve this problem. Statistical methods included making alignment functions on the basis of word positions, phrase based conversions etc. In context to Neural methods, attention based mechanism and byte-pair encoding was discussed. It was interesting to note that the latter was a paper by the University of Edinburgh who had won several competitions using this. There was also a brief talk on Sockeye, Flink and Amazon Sagemaker which were the platforms tried and tested by Suneel.

Next in line was the session on Scalable Machine Learning with Kubeflow by Barbara Fusinska.

Talk

Source: Paavini’s camera

The major aspects covered in this talk were the questions, what is machine learning, deep learning and artificial intelligence? It felt like a discovery to know that Kubeflow was actually the amalgamation of Kubernetes + Tensorflow! We discussed how data scientist’s viewed any problem. The architecture for any problem had three major components: algorithm choosing, model building and model choosing plus serving. Different technology stacks which can be used for these three parts was further taken into consideration. It was a light talk made interactive with QA session and fun quotes such as the one shown above! P.S. The quote on the shirt of the scientist above said “I invented the satellite but all I got was this lousy t-shirt” :)

The day ended with the All-Attendee Reception held at the National Museum of Scotland. It was a beautiful place with people dressed in traditional clothes and bagpiper music filling the air. We also got a glimpse of the statue of Dolly, the first cloned sheep.The live performance by the energetic performers further cheered up everyone. We met people from working on linux kernel and media streaming and went back happily to our warm and cozy hotels.

Day 2 - 22/10/18

This day started with the keynote sessions on varied topics -

Talk

Source: Paavini’s camera

The first talk was The Future of AI is Data by Eric Berlow, who is the Co-founder of Vibrant Data. It focussed on highlighting how data obtained from various sources such as nature, science etc. could be used to simulate the behavior of people. For eg. he considered prisoners who had a painting in their cells. He noted that their nature would depend a lot on the emotions which were depicted in this painting. Two metrics, mood and arousal was considered -

Talk

Source: National geographic

The left image is an example of predators displaying low mood and high arousal, whereas the right image shows high mood and high arousal. Thus, pictures falling under the category of the right image would be good in simulating a positive mood and should hence be used.

The next keynote session was by related to Building an Open Source Culture at Microsoft by Stephen Walli. A lot of things have been changing with Microsoft acquiring github and participating in Open Source. The changes within Microsoft include the changes in industry, which is the cloud; changes in customers, which are several new organisations which work together in partnership as well as the culture, leaders and demographics over the world.

The third keynote for the day, Exceeding Diversity and Inclusion Goals to Fuel Open Source by Johanna Koester, highlighted what diversity actually meant. It didn’t just imply inclusion of all genders and races, but also the diversity of ideas. Successful stories of people from under-represented groups and their contributions were also highlighted.

The last keynote was on Understanding Patterns of Mass Violence with Data and Statistics by Patrick Ball, who is a Human Rights leader. He undertook two differing examples to highlight the correctness of methodologies selected as well as the biases in data which should be taken into account. These included data obtained from mortality in Chadian prisons from 1980s and homicides committed by police in the US 2005-2011. It was sad to know about the suffering of people as well as the biases in data which could have further prevented suitable help being given to them.

After this was a break, and we went to the sponsor showcase to interact with more people whom we couldn’t meet yesterday. Red hats from red hat were really cute and we couldn’t stop ourselves from clicking selfies :P

Talk

Source: Paavini’s camera

Next began more rounds of sessions and we made sure to visit a good mix of all varieties - Revitalising Open Source Contributions and Participation across Mozilla by Daniel and Riccardo. They talked about the Open innovation project in which they had analysed data from various open source communities. Bitergia Analysis Dashboard represented visualisation from this data. Various models called Archetypes were suggested for different types of projects such as the audience vs governance model, general vs specific model. An example to clear out this difference was the fact that the android and wiki project differed completely.

Talk

Source: Paavini’s camera

Making Community Decisions without Consensus by George Dunlop. The major problem as highlighted was to take decisions in non-consensus. The example of Xenproject was clearly presented. They became aware of a vulnerability called XSA-7 intel sysret, they informed all the members who were on the predisclosure list. However, one of the companies in this list missed this message. They came to know about it pretty late and hence they caused public release date to be delayed. This was abused as the company misusing the privilege of being on the predisclosure list. The main problem was thus, to decide who should be in this list. To answer this questions, we needed to find the best solution and do it in such a way, that everyone’s voice should be felt like heard. If we could achieve this, we can solve any problem without consensus.

Talk

Source: Paavini’s camera

Panel discussion: Outreachy Linux Kernel internship report - Moderated by Julia Lawall. It began with an introduction about Linux Kernel and Outreachy. It was more of a 5 minute talk by three outreachy interns who talked about what they did in their internship with Linux Kernel. The discussion ended with the topic about how the Outreachy program can be expanded more and how the involvement of women in open source can be increased.

Day 3 - 23/10/18

I thoroughly enjoyed the keynotes held on the third day which related to astronomy and physics, loving open source, game design and banking.

Talk

Source: Nupur’s camera

The first keynote was called Astronomy with Gravitational Waves by Alexander Nitz We deep dived into the universe understanding what are neutron stars and black holes. We heard a recording made when a black hole was created in space!!! We also tried to understand the concept behind binary mergers and various experiments which are currently active over the world. It was amazing to know so much about science in open source.

The second keynote was about How to Stop Worrying and Love Open Source by Julian Friedman. This talk was told in the form of a story, with the hero being cloud foundry and the villain as kubernetes. There was a fun joke where a person said that he had been using the “same broom since over 20 years”, just that he had changed the stick 25 and the brushes 17 times :P He introduced Eirini which is a container orchestration of cloud foundry as relating to this, using the same brush with different sticks. His talk ended with a list of awesome 5 learnings!

The third keynote was called Open Source Game Design by Brenda Romero. It was for the first time I heard of this concept. Usually game designers were silent to their developments and won’t share the details. Brenda told us about her journey about how she started into this field, how one of her projects which was on a sensitive issue became popular. How she managed about this issue, since a sensitive situation couldn’t be publicized and how she once revealed her complete set of game ideas to another developer even “before it was built”, which is the concept of open source game design!

The final keynote on Open Source Banking by Ed Cable expressed how we could tackle Poverty. He had been involved with the Mifos initiative which is open sourcing the bank infrastructure, and helping fight poverty by including greater sections of people to get financial help.

Talk

Source: Nupur’s camera

Next there was a mentorship panel discussion on Exploration of Insights and Issues Related to Mentoring Programs. The speakers involved were Hong Phuc Dang, Josh Simmons, Julia Lawall, Daniel Izquierdo and Jeffrey Osier-Mixon with Jeffrey as the moderator. The topics of discussion were value of mentoring, different types, metrics and mentoring & diversity. The values which a mentor gained included improving communication skills and learning to represent the same things in a better way. Open source was described as a very intimidating field to a newcomer.It has various learning layers and becomes difficult to understand how to start, etiquettes involved, etc. Types of mentoring program were long term, short term, cohort/peer mentoring, corporate, and formal vs informal. The session ended with an analysis on cases where people who had been mentored, got involved with the community for a longer time. Hence, good mentoring plays an important role in motivating students and building communities.

After this, we met our super supportive mentor Josh and Manish for lunch. Josh had guided and motivated us throughout the whole span of our contributions and could be credited for the successful completion of the RGSoC project. (Thank you so much mentor :P) We had a great time meeting both of them face to face at last!

Talk

Source: Nupur’s camera

Post lunch, we attended one more session and the closing game which was lively, and fun-filled! The session was titled Improving the human Vector with Emoji by Vincent Batts. The basic idea of the talk was that currently fingerprinting is done by humans which is prone to errors. This is because usually we do not match the long string of chars but just look at the first and last two hexadecimal characters. Other example where such checking is involved include containers digests, shaID, etc. Each emoji basically combines 2 hexadecimals, thus instead of looking at the first and last chars, we would now be looking at more chars. This was a simple idea to be taken but the learnings were bigger - Don’t take yourself too seriously; laugh at poor choices, otherwise things get too rigid Open source these days involving business and vp decisions is not so good. People under commit and over deliver because of time constraints. Thus, don’t be hasty Take a deep breath; toy with something unrelated and not critical Look for accepted norms with weak assumptions; Like for our case, did looking at first and last two emojis make any difference? Challenge accepted norms!

Conclusion:

Talk

Source: Brenda’s Slide

It was truly inspiring to see various fields being associated so closely with Open source. It is time all of us come together and help out each other for a better tomorrow. Cause, there is more we can do !!

The Open Source Summit was a good learning experience. We met amazing people, made lasting networks, got motivated to work more for the open source community and the linux kernel, had amazing food (although slightly limited because of vegetarian dietary restrictions), visited beautiful castles in the heartwarming city with a lovely weather and made memories :) We are extremely thankful to the RGSoC community, Mozilla and Linux Foundation who made it possible for us! ❤️ Hoping to visit again next year!

92 days of Summer of Code

Posted on by Gyujin and Sujin

Time flies ✈️ We could not be happier with the decision we made to apply for RGSoC and cannot believe it is time to say goodbye already. This summer has been literally amazing.

Learned so many things First of all, we could experience how other great developers work — how they discuss the issues and co-work through Github and slack, how they maintain the product people from all over the world use, how hard it is and how well they manage them. The maintainers were super busy working on Babel 7 which was released about a month ago.

Reading tons of open source codes also helped us a lot. This part actually took the most of our time and was the hardest part. Add to the Babel document site with Repl which we worked on and Babel Core, we had to go through Docusaurus since Babel document site is built on it, ASTExplorer, Redux Devtools, CodeSandbox and other several JSON tree view libraries. Taking time to understand various projects helped us a lot with JS project structures, how these wonderful open source products are implemented and learned how others approach problems. We got able to grasp others’ code quicker, speed up our code reading skills. :)

Of course, we got to know better how Babel works inside. We studied about AST(Abstract Syntax Tree) and Babel core. It was also our first time to use CSS-in-JS and flow, static type checking system for JavaScript.

But the most important thing we learned was OPEN SOURCE SPIRIT! This summer was a great opportunity for Sunshine team to learn about not only actual technical skills, but also open source spirit — improving by cooperation, not competition. Friends in Babel community and RGSoC were so nice and generous, they helped us a lot with the code and also constantly found good aspects in our works. We learned how to stay positive and thoroughly evaluate others’ work with warmth — the most valuable asset to keep working as a developer. It really helped us to be confident. Now we have no fear to dive into the open source world!

After RGSoC * Keep workin’ on We know that it would not be easy but we still hope we can keep contributing to Babel Project. Of course, we want to improve our first merged PR, Time Travel UI and also AST output panel we worked lately. Other than that, someday we want to implement Redux or other state management system! :) * Sujin will continue to pursue her Master’s Degree study in Music and Engineering. * Gyujin is going to keep working as a frontend engineer.

Thanks to

Dear RGSoC team! We cannot say thank you enough to our super kind and lovely supervisor, Ana Sofia Pinho! She was always kind and helping, our team relied on her so much. We cannot imagine our RGSoC without her and so sad to say goodbye. 😢 We’d also like to thank Saptak who helped us to keep on track when Ana was on vacation, Vaishali and Ramon who interviewed us and gave us this great chance. Our team also had a fantastic opportunity to meet Ramon in person when he visited Seoul for holidays! We hope we could meet other RGSoC members too!

Awesome mentors from the Babel! Henry Zoo , Bryan Ng and Logan Smyth gave us so many ideas for Repl and always answered kind and fast even though they were super busy to manage release next version of Babel (which was released on 27 August! tada! 🎉 — Babel 7 Released · Babel). We also send a word of gratitude to Ives van Hoorne, he helped us understand how react-sandpack will be integrated to Babel Repl.

Our local coaches! We thank Hyeonsu Lee, so much for visiting us often and helped us understand other open source projects. Joeun Park, even though she could not help us in the last month due to her busy work, as a female developer, her presence was such a big support for us. Dohyung Ahn helped us a lot to figure out what to do for the project, answered really quick on slack when we had questions. Byungjun Yoon is the only coach who volunteered, he gave us big smile and joyful vibe. Seongjun Kim, a warm hearted Ruby professional, always tried to monitor us if we are on track even though he was not a JS developer. He was our emotional prop!

Thanks to all of you for awesome 3 months!! We will never forget this summer. ☀️

An enriching journey, Summers’ 2018 - Team 101 Days of Summer

Posted on by Nupur Baghel

Everything is a dream, we can’t stop smiling!!!

Happy times!

In our happy workspace (Photo credits: Nupur's Laptop)

(In our happy workspace (our hostel room :P) with tons of memories from this Summer with Servo and RGSoC ❤️ We wish we had taken a picture with Rakhi and Josh from one of our remote calls :P We’ll take one soon… ;)

The summer is about to come to an end and we are already sad about it :( We didn’t even realise how fast all the time escaped while we were busy scratching our heads over hidden surprises in Rust :P It has been the best summer so far <3 Thanks to Ana, Vaishali and every member of the Rails Girls Summer Of Code organising team who made it possible for us. We couldn’t ever thank enough our wonderful team with our super-excited and super-helpful mentor Josh, extremely lively and cheerful supervisor Rakhi, and the definitely the both of us….

Something about Servo and our work -

  • Created by Mozilla Research using the new systems programming language Rust, Servo is an experimental project which is supporting Firefox’s new browser engine Quantum. It has been known to be safe, fast and concurrent which give it its superfast speed 🚀.
  • Our main task this summer was to add support for Responsive Images in Servo. This feature would allow us to specify different image sources in our html such that only the perfect one which suits our device would get loaded. It would save time as well as bandwidth because you would not want a heavy image meant for a desktop to get loaded on your phone!! Moreover if your device width changes for eg if you rotate your tablet to horizontal from vertical view, then a new and wider sized image will get loaded. If you want to know more about responsive images, they have been explained very well in MDN docs.

A brief summary of things we learnt 📝

### DOM and DOM API’s Writing DOM Doge API was a lot of fun. This was the first starter task that we were supposed to complete. Here is the link to the task. This gave us an insight into what document object model of a web browser is and how a DOM API can be implemented in Servo.

Dereferencing in Rust

When we pass the objects as a pointer, there might be a need to dereference the object to be able to use it. In the very beginning, we were actually stuck on a very basic error. a = Root<Something>

We had to extract Something and use it. All we had to do is dereference, but how? It is very simple. b = *a

And use b directly. * Can be used to dereference as many times as you want.

Match

A very good alternative to if else conditions in Rust. An example is - how to use match example

Photo credits: Paavini's Laptop

Borrowing

Borrow errors and ownership is something that make Rust safer but the errors related to them can be irritating at times. One way to avoid those is to try and use a let binding to increase the scope of the variable if its being enclosed by `{}`

Unwrap_or ()

Unbinding Option<> wrapper can be easy to use by a simple .unwrap(). But if in case you want to provide some default value to the variable (when the option’s value is None), you can provide that using unwrap_or().

Mutability and DomRefCell binding in Rust -

Since by default every variable is immutable in Rust, once declared inside a structure its value cannot be changed. But DomRefCell does the magic and addes the capability to mutably borrow and alter its value at a later point of time.

Intermittent tests in Servo

Our second PR could not be merged for may days because of these. These tests are something that one is not supposed to worry about :P. These are the tests that might pass on one’s local machine but when being built and tested by bors-servo, lead to some failure or vice-a-versa. This basically happens because of some timing issues in the tests. If bors-servo is complaining about these tests then all you have to do is create a issue with tag-intermittent, and magic, it won’t block your PR anymore.

Closures in Rust

We cannot use self inside closures because passing self is unsafe. One has to use this instead.

Backtrace

This gives you the power to get the whole backtrace of every call of a particular function. We had to use to all the time to know why some of tests that we had were failing. This is how you use it - println!("modifying edit_point: {:?}", Backtrace::new());


Couldn’t understand anything of what was said above? Here is a very good source to get started with these basic things in Rust - http://intorust.com/ Every time we faced issues in any of the above, our mentor Josh was there to help us! Not just him, everyone on IRC channel of Servo used to help us in solving these little things. We completely loved the Servo community <3 So feel free to ask anyone anytime you feel like contributing or get stuck somewhere!

Let us get to know about some statistics now :P

  • In total we got 20 PR’s merged by the end of RGSoC. Approximately 10 each for the both of us. Hooray!!
  • We worked on more than 5 algorithms, to name a few….
  • updating the source set
  • reacting to environmental changes
  • selecting the correct image source
  • updating image data
  • reintroduction of parse a sizes attribute
  • correcting behaviour of currentSrc
  • Our code resulted in passing of more than 700 new tests 😮 Seems unbelievable? Go and search for the word fail at - click me!
  • And finally, we wrote more than 1000 lines of code!

You can view pull requests made by both of us as well :D - Nupur’s Contributions - Paavini’s Contributions
That’s all for now!! (We guess its a good progress indeed! )

think-gif

Gif taken from http://www.reactiongifs.com/thinking-yes/

The most interesting things which happened to us ⚡⚡

Landing our pull requests (PRs) :

We enjoyed completing our code and putting up new PRs every week and even wrote code for several small-to-large algorithms. But the fun part is, we jumped with joy each time any PR got merged, even if it was not a lengthy algo but just a new test we had written. The happiness and excitement made sure we were pumped up for the next task in line!

Seeing the responsive images work

Implementing responsive nature of images in Servo was one of the main tasks of our internship. A part of this was being implemented since last few years but with our code, we have finally completed this feature. Hurray!!
Er, a few small parts remain, but with we are making sure that’s done too :) Resizing the screen in Servo now leads to changing sizes of the images (Well that’s being responsive :P)

Hundreds of passing tests

Adding new code resulted in new tests to start succeeding. But after successfully implementing the reacting to environment changes algorithm (a hard nut to crack), we were able to see hundreds of passing tests. We had to deal with a bunch of failing tests too. But finally being able to resolve all those was purely satisfying. It was such a happy moment :) We could feel the impact we were able to make in such a large codebase.

Learning new things from Rakhi

We had a video call with our supervisor every Monday. We discussed about the program including what were the things which were troubling us and were we being slow on making contributions (to mention she was also with Servo last summer so she had a complete idea) But apart from this we also chatted about some stories of our life which make such impact and leave long lasting impressions. Rakhi’s expressive, lively and frank nature made us open up to her completely. We cherish our interactions and we will definitely make sure we keep in touch <3 You are awesome!

Its not the end!

Although the summer is about to end, all our enriching memories will last for life!! The happiness in our hearts is truly overwhelming. We enjoyed contributing a lot and would continue with the good work every now and then. Since we have learnt so much from everyone we would love to guide more people who want to start with open source :) Feel free to reach out to both of us!

Twitter

Nupur Paavini

Github

Nupur Paavini

Medium

Nupur Paavini

Join the Servo community on IRC

#servo on irc.mozilla.org

Thank you once again to everyone who helped us reached this stage!! Thank you RGSOC ❤️ Will miss this family a lot…..

previous 1 of 68