Modifying Expectations

 

When I was writing my Outreachy Proposal I had a timeline of all the activities that were going to happen. You can say I thought I had all figured out which issue will be tackled after which. It is quite a shock that my first task on the list was done during my first week!  Here is the initial plan I had for the project. But I did not follow it to the latter for example I realized I had to refactor the existing code for statistics logic before I could write the downloading raw stats, and after that realized I had to have the logic on the range page rather than the my initial plan of having it on the stats page. Also you realize other “mini-projects” related to the project emerge or follow-up issues and bugs come up from your previous issues as you go on with the project.

 

Week 1

 

I started with the independent issues. Then I went on to issues that were related. Example there was a week I was working on graphs and I sort to improve the graphs on the site which required I research on best graph libraries out there, up my javascript game and look for a contributor who I can consult when I am stuck on js-related issues and choose a good graph fit and implement it to the site. If any follow up issues come up I like to sort them out as soon as possible before I go to a different feature so that it will not be hard to revisit it and also make sure things are not looking ugly or breaking in production.

Some goals took longer than expected. Like the task on downloading raw stats from the website, I had allocated it a week but it took longer. First I had to study what kind/type of data we need to analyse website activities and then make sure I give the analysers helpful data from the website.  I also had conservations with the people involved in data analysis and manipulation and get which data would be helpful to them. After that figure out the best way to provide this downloads while still thinking about good display for the same. But I loved this goal. This  was one of the most interactive milestone, I got  perspectives from different people with different roles in the community. I changed my code implementation and display point about 10 times  before the I got the now implemented code. Here I modified my expectations based on what is really helpful to people who interact with that part of the application.

So my plan for the rest of the internship is just tackle related issues back to back so that I can deliver a milestone kinda feature and its easy to have follow-up issues integrated with the rest of the project.

 

 

 

Think about your Audience.

So this week Outreachy asked us to write about the project we are working with. Generally an introduction you can give someone who has never had about the project before and how you would explain it to him/her. Possibly an Outreachy applicant who is thinking about applying to PublicLab. So here is me trying to explain PublicLab .

plAs the name suggests I see it as a Public Laboratory. A laboratory in the sense of   you perform research on a issue mostly environmental, social or political using simple DIY tools and come up with conclusions that would help you solve the solution and then open source your research so that you can get help in getting conclusive results or others can build up on your research and try to implement them in their community. Makes sense? Okay simply, Public Lab(https://publiclab.org/) is an open community that anyone can join. It is online and people network through this interactive wiki where people can pose questions, post their research and reach out to others. Research questions are focused on addressing local issues, and are driven by on-the-ground community work. This community is made up of organizers, technologists, scientists and activists.

Excerpt from the website, PublicLab aims to open research from the exclusive hands of scientific experts. By doing so, communities facing environmental justice issues are able to own the science and advocate for the changes they want to see. By promoting a hands-on, do-it-yourself ethos, they support each other’s exploration, which leads to technical development and real applications in communities.

The project focuses on communities, all these researches are basically meant to make communities better by solving issues that affects it.

People who use the project are ones that need to research on ways to solve an issue, push for a change in their community and are looking for facts or people who are willing to help others on their researches. An example of such a research is this one made by ajawitz its about creating a DIY drone.

drone

You can read all about it here https://publiclab.org/notes/code4maine/08-05-2014/aerial-mapping-drone-for-under-60. The DIY drone he says, can be used by farmers to track the health of their crops, environmentalists to collect water temperature data etc..

What excites me most about this project is the way people put work into researching and finding info so as to fight for their social and environmental justice. The amount of information in the wiki platform research and inventions that people do is amazing and open sourcing this research is an awesome idea. The community is super friendly and consists of all these people with awesome ideas. Also most of the science kits and how they work excites me. You can find here https://store.publiclab.org/. These are kits you can use to carry out your research.

New terms I have learned over the past month. Spectrometer, it one of the most used tags in the website and have a lot of research notes https://publiclab.org/tag/spectrometer..well, code-wise lets say new things that I was not used to doing regularly e.g writing css, I mostly have been doing with the “back-end” and I found myself writing some css and Javascripts and its been interesting discovering all these like Bootstrap classes I never knew they existed. I have also been  able to help one or two people get started on the project and I have learnt how to guide a newbie on the project make a first pull request. I have also learnt to have to think about how a non-technical person will use the project and make and explain things that would not be so obvious(e.g what does this button do) to a non-developer person…like the topic suggests I have been tailored now to think about the end user.

What I found confusing about the project will come from a developer perspective. It’s the node structure of the project. In lay man’s language is the types of posts/data that can be on the interactive platform e.g(research notes, maps, wikis and questions). Understanding how all that works because they are in the same model and how you differentiate the different types of data and how they come up and became an individual module took sometime to wrap my head around it.

 

Outreachy Week 3

strug

A week ago Outreachy requested we share our struggles and the mentors to also share about their struggles. In PublicLab weekly check-in I was able to jot down a couple of points on things that I was blocked on it was quite easy because most people there know about the project and they could get me quite easy. PublicLab community and mentors shared their struggles too which was pretty cool. But when it came to writing a blog I found it quite hard and that is the reason why this blog is coming out a week later.

So yeah writing this blog was a struggle but I will just try to explain a couple of things I have been blocked on so far and how I moved forward.

 

Here is some of my struggles/blocks and how I solved them.

  • I struggled with was date-picker positioning..sounds pretty simple but it was a pain to get it to appear where I wanted, asked for help from the community though the suggestions I got did not solve it I had to make some comprises.
  • Another major struggle was a code climate issue caused specifically by brakeman. Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications https://brakemanscanner.org/ This was a vulnerability caused because the method I had defined, its execution could be controlled by the user, it looked critical to ignore. I tried to tweak it a couple of times but no success  and much much later solved it by making the method a private method.
  • I was working on refactoring some two methods that got code climate complaining. The methods looked similar but have varying parts. It seemed impossible to join the two methods and still maintain their varying parts. So my mentor resolved the issue by allowing the duplication.
  • I also struggled on writing effective tests. I extracted some methods from a very very fat model and moved them to a module. I found it hard writing effective tests. You know the kind of tests that do not just assert_not_nil and give random values of what is expected. The tests that would be effective in future and safeguard the module methods. I researched but could not find what I was looking for…I later on asked the PublicLab Community and one of my mentors pointed me in the right direction.

Do not be scared to ask for help.Being blocked is something that happens a lot and happens even to senior and ninja developers and I have learned to accept it and not stress out too much when it happens. The struggles can make you feel quite frustrated or have imposter syndrome kick in. The mentors and the community at large are willing to help so much you just need to reach out.

When I get blocked, I do some research online on what I am working on, documentation helps a lot too. Second I try out different approach, If I am not making any progress in two hours I reach out to my community and my mentors for help. Also sometimes it helps to take a few minutes from the screen take a walk or refill that cup of coffee then come back and look at the code a fresh. You may be just tired.

Another community I am part of does not call them “struggles” it calls the blockage state “learning experiences” Because whenever you are blocked on something its a chance to learn the thing you are blocked on in depth and it will be easier to manvuer it next time.
So I have been having a lot of learning experiences hope you embrace yours too

 

 

Outreachy with PublicLab Week one

CTD10112018213019

This first week I started with attending an open hour on Monday, which was awesome I got to meet members of the community and we discussed about Usability Feedback for PublicLab . Discuss is a bad term to use because I mostly listened in rather than gave ideas. But it was great to hear and see how people use the site and what could be made better and interesting features coming up like the map for the content in the site.

I created a milestone(Extend Community Statistics system) thanks to one of my mentors Bansal Sidharth for the suggestion. I like the milestone plan, I just have to keep adding my issues there and it makes me visualize the project more and I can track my progress because the percentage of completion increases with every closed issue.

Initially my plan for week one was to implement the download of statistics by csv and json . I started working on it on Tuesday and was making awesome progress and I even got to get the data to display on a page as json and download notes and wikis as a csv and json. But then…
I realized in the end a lot is gonna change in the stats controller and me writing this code now will mean I will have to rewrite everything after I am done with the stats index page. Plus I also realized that the stats controller required some refactoring.
Time was running out and I had to accomplish something for week 1 so I resulted to refactoring stats page and also implement another issue which was on the questions page. This gets to give statistics on the questions asked versus the questions answered and can filter by a period say week, monthly and yearly. I do not expect a lot to change on this page during the project and this is an independent feature so implementing this seemed like a visible idea. But all was not in vain for the the raw data stats implementation. I preserved the code I had written to download the content on stats page as json and csv so that when the page is done i will just have to find the right place to insert my code and admins and moderators will be able to download the stats in json and csv format.

Plans for next week

  •  I plan to be reviewing at least two PRs each day so I can help others get started on the project.
  • Finish refactoring the stats controller.
  • Implement consolidation existing “range pages” like with the main stats page
  • Get started on caching of data weekly issue .

 

Thoughts/ Things I am brainstorming on

  • I came across this gem daru which does analysis manipulation and visualization of data in Ruby.  I will investigating it further to see if it suits the project or not.
  • Caching of data weekly.How to best cahe data in the website for faster loading.

How to get most from Outreachy Application Process

I am participating in the Outreachy Internship program from Dec 2018 – March 2019. Here is my experience on the application process.

So I first heard of Outreachy from a friend who had previously participated in the program. The reason why I decided to apply to  the program is because  I am an open source enthusiast and  from all the experience that would come with it would be really awesome for my career. First of all I signed up in the website and read all the information on the website about the internship months before it even started. And there is a subscription where you can can be informed when the internship opens. There are also blogs about how to apply to the program from past interns and I read them which gave me a bit of information. Let me back up a little, Outreachy provides a 3 month internships to work in Free and Open Source Software. It happens twice each year and invites people underrepresented in tech. So when the internship started I got an email telling me it was open.

There is a bunch of questions that you have to answer before you are allowed to see the projects and start applying for the internship. So as soon as I got the email I went and answered the questions and I had to wait a few days as my proposal was reviewed and decided if I was eligible for the program. After I got the go ahead I started to look through the projects  to find the ones I could apply to. I selected like three projects that I had interest on. I started looking in the code base and entered their communication channels to find more information about the projects. Other projects were still being added to the website and about two weeks in I saw that Public Lab plots2 project was added in the list of projects.

I had an experience with Public Lab community before researched a lot and have totally resonated with what they do. Public Lab is a community and non-profit democratizing science to address environmental issues that affect people. It is a platform where you can post your research open source it for others to use and also find information you need to solve your  environmental and social issues. There is so much more on Public lab. For more information find it http://publiclab.org/. I love what Public Lab does and after I saw it listed I knew that is exactly what I would like to work on so I just focused on it. You are required to pick 1-2 projects and apply to it.

To be eligible for selection to a project, you have to make contributions to the project. So I browsed through the issues and started working on some. The community was supportive throughout the process. The pull requests got reviewed fast and the community is willing to help in case of any questions.

If you are worried to apply to the project my advice is just go for it. I was quite scared of applying too. The worst that can happen is you will contribute to the open source project during the application process and learn a lot in the process…According to me that is a benefit rather than a lose because no matter what happen those contributions will always be there and no one can ever take them from you no matter the outcome of the application. So go ahead and do it. Furthermore there is no other community as supportive to new contributors as open source projects.

Important points to keep in mind during the application process.

  • Do not be scared to ask for help, mentors are there and always willing to help.
  • Pick a project or two and start contributing to them early enough.
  • Take time to research  on your project and work on your proposal.
  • Do not forget to record your contributions on the Outreachy website.