GSoC Battle 2016

GSoC Battle 2016

Hello reader,
The third attempt and yeah made it, this time. 😀
No more regrets in life ! soon a GSoCer !

I started contributing to Fedora infrastructure projects after I returned from PyCon India 2014 prior which was contributing to gnome-shell, one can say that after this event, meeting people and the environment as a whole motivated and inspired a lot, and since then I never backed down !
yeah, the trick was to not lose hope and keep working harder, guess that worked 🙂
After the Outreachy debacle, (which the lowest phase I guess) am blessed to have such motivating people around me who kept pushing me.
Huge thanks to Kushal da, Sayan, Subho, and Elita of course for helping me through it.

The cliche result night, for two seconds my mind said, “That’s alright, maybe not this time either. Am anyway not losing hope, will move on !” But, then there was my name. “phew!!”, “yay ! I finally made it”. Am so happy, I will be working on Fedora-hubs this summer.
I should thank my mentor RalphBean for helping me with my naive doubts, and for guiding me fix bugs all this time. Huge thanks to Pierre, MizmoJustin, Sayan, for reviewing my proposal and getting it done on time 😛
Am glad I will be working with them this summer, hacking on Hubs !

A little throwback: am really glad I finished the #dgplug summer training successfully that moulded me be what I am !

For those interested, can take a look at the proposal on fedora-wiki.
See ya all !

Happy Coding 🙂

 

 

Advertisements

Modelling Models !

Modelling Models !

Hey there reader !
Its been quite some time since I updated about brainstormings going on for the new widgets for the hubs pages.
So, I was working on an issue for the Subscriber/Subscribe widget, where I had to list the number of subscribers that were subscribed to this user(his/her hub page), and also the number of users he/she was subscribed to, basically the subscription stats.
pretty simple, eh? That’s what I thought too 😛
Well PR #111 fixes it !

I learned a lot while trying to figure out ways to solve this issue, jotting them down :

  • how easily one can access the attributes if we know the relation between two objects/tables.
  • using dir() function to see beyond an alphanumeric object !
  • write test-cases.

Structure of HUBS :
User : A user table with attributes like openid, fullname, and created_on.
Hub:   This is the individual user’s hub page(in simple terms-profile page) with attributes                like name, created_on, widgets, etc
So, we wanted to implement a many-to-many relationship between users and hubs, ‘coz many users can subscribe themselves to many hubs.
So, I spent quite some time with the flask-sqlalchemy tutorial to learn the pythonic implementation of the many-to-many relationship. 😛 my bad !!
Its really amazing to read code written by awesome developers. Ralph‘s code already had the ‘Association’ table to connect the users and hubs.

>>> for assoc in widget.hub.associations:
........sub_list = [u.name for u in assoc.user.subscriptions]
>>> subscribers = [u.username for u in widget.hub.subscribers]

‘widget.hub.associations’ returned a list of associated user objects.
This is where dir() function came to my rescue 😛
So I tried to print the attributes of the user objects that were being returned by simply printing the output of the same.

>>> print dir(widget.hub.associations)

Thus, displaying a list of the attributes of the object.Screenshot from 2016-03-15 02-38-05
Hub names were extracted, which helped extract the subscriptions of the respective hub_user’s page.
Rest, was a simple edit in the jinja template, that made the Subscribe/Unsubscribe button do its magic 😉

But, that was not the end !
I had tests failing ! 😦
I didn’t have any experience with writing tests.

Why were tests failing ?
‘coz the default values of the subscribers was still assigned ‘0’, when I had changed it into a list. Changing its default value to ‘[]’ and voila !
It works !

I came across an awesome quote when bugs overpower you 😛

Your Goals don’t care if its the weekend !

 

Fedora Hubs !

Fedora Hubs !

What have I been hacking on recently ?
Well, for the past um, a month and a half, was hacking on Fedora-Hubs !!

So, it was after I returned from PyCon India 2015 that I thought of applying for Outreachy Internship this winter, and that is when I came across this – Fedora-outreachy-wiki link.
Next, I mailed Ralph, who was listed as the mentor for the project, pinged him on IRC eventually 😉 and got an immediate response to go ahead with the ReadMe and get it up on my system.

What is Fedora-Hubs ?
It will be an ‘intranet’ page for the Fedora Project. A single place to get information on all the different projects on Fedora, as a contributor. It’s a social network for Fedora contributors. One place to go to keep up with everything across the project in ways that aren’t currently possible.

Possible tasks to hack on :

I started hacking on hubs beginning with a very small bug that Ralph had assigned, bug#46 that needed work in the “Community Rules” widget. I worked on the jinja2 template : PR#48, to link the users’ usernames to their hub-pages.
Next, I was assigned bug#49, where the ‘updates ready for stable’ widget needed work, where I needed to extract the name, version and release of the packages that were ready for the release from the bodhi url. Well, PR#51 fixes it ! pythonic ! 🙂
Screenshot from 2015-12-08 19-23-41
Bug#53 was a tricky one because it had an untamed list to deal with 😉 hehe
Learnt about Base Conglomerator, that was some cool thing ! The list_to_series() function would naturally process the list consisting of hubs that the user is subscribed to and returns a string – Subscribed to : <A>, <B>, and 5 others. The task to link them to their respective hub pages before being processed into a string, kinda needed a bit of tweaking to do ! Nevertheless, PR#54 fixes it. 🙂

Incase, you have plans to hack on it, the latest Source-Code is not on Github but on pagure.
HACKING : Like I said, the README is pretty clear.
Happy Hacking 🙂
There is a Prototype ready too.
The designs are really amazing, found these links on the fedora-outreachy wiki page itself :
mockup, design and for more 😉

The Outreachy results were supposed to be announced on the 17th of November 7pm UTC, a very cliche result night 😉
12.30am IST, these nights can get really intense,
Felt really awesome to see “You were accepted for the program” !
Fedora-Outreachy

But, yet again … !! :/
Catch up the rest of the story in my next Blog-Post !! 🙂

 

What did I do this Summer – Part 2(Summer-Internship)

What did I do this Summer – Part 2(Summer-Internship)

Its been about a month since I finished my summer-internship, glad am finally blogging it 🙂

Hey there ! This blog post is the second blog post on my summer ! After FUDCon, I left for Bangalore where I interned in a startup- Eventifier which was recently acquired by BookMyShow. I was excited to work with awesome people and wanted to get the best out of it.

I was not really very sure of things when I reached ! But then… 😛 Someone said “Things will always move on !” -@harisibrahimkv

So, I met Haris, Praseetha, Sharat, Unni, Saud, Nazim, Nawaz, and Jazeel in the order as listed. 😛 They are really a fun bunch of people to hang out with, who do skateboarding (oh yes, they do :P)  and discuss on topics, debate and laugh over the same 🙂

Ah! they are cool coders too ! On my first day, Saud who is the co-founder told me that I will be working on the Analytics of the product, and would hack on the Backend part that used Django. I went through the code-base which was clean, and beautifully written. Sharat helped me get it all set on my system, and I was good to go ! 🙂

So, what did I work on ??

Task 1: I worked on getting Social-Insights of a brand/company based on their respective twitter info.

upload

I used Python-Requests to extract info with the Twitter API, and the Twitter-Counter API. Thanks to my mentor @harisibrahimkv who has helped me throughout to explain stuff with patience.(He would be like, “You really can’t see the bug !” and then he goes ahead and explains). It used to be really fun coding with him, haven’t seen someone as humble as him. Later, I also got to work on another task under the mentorship of Nazim, CTO of Eventifier.

So reader, hi again ! Try and imagine a situation, where you host a site and a celebrity or well known personality tweets about the same. Wouldn’t you want to showcase it? Wouldn’t you want to extract more info of that interested customer who also happens to be a celeb ? Now imagine how many followers would also be interested in the product !! And why wouldn’t they! 😉 Now these are just a few features that team Eventifier hacks on. This was my first task to get the tweets of the celebrities who tweet about certain products.

So, here I am,  writing this blog to explain how Python-Requests made life easier for me.

Requests is an Apache2 Licensed HTTP library, written in Python. Python’s standard urllib2 module provides most of the HTTP capabilities one needs, but the API is thoroughly broken. Previously, one would, put off doing HTTP requests in Python because the API was such a pain. One would end up running wget at the command line and copy paste html into files and load the files in python because open() was an easier API. But, then !! 🙂

Requests to the rescue !!

  • Requests have a way better API design.
  • To get information all one needs to do is use .get() as a method.
  • Auth is an optional parameter in Requests, and
  • status is a field not a method.

It is written to make HTTP requests way easier. Such an improvement ! 🙂

Screenshot from 2015-10-09 02:51:12
urllib.py
Screenshot from 2015-10-09 02:51:54
urllib.py

Fig : This is sad and shouldn’t be this way !

Requests is the perfect example how beautiful an API can be with the right level of abstraction.

Python HTTP: When in doubt, or when not in doubt, use Requests. Beautiful, simple, Pythonic.

For example, to get a webpage :

>>> r = requests.get('http://www.python-requests.org/en/latest/')

This is how one can simply make a get request; then again what about other HTTP request types: PUT, DELETE. Well, they are all just similar.
>>> r = requests.put("http://httpbin.org/put")
>>> r = requests.delete("http://httpbin.org/delete")

Now, how did requests be my saviour !? Like I mentioned previously, for my task I would have to hit the Twitter-Counter API at regular intervals to extract twitter info of the customers, thus all I had to do was to ask the requests API to hit the tweet-url and extract the required information of the user, and showcase it for the product.

During this, I learned to use tools like tmux, and other python hacks that helped me get only the required data within a tolerable time limit.

2nd task : In my next task, I got to work with Nazim who wanted me to get the twitter-followers information of a user and display it in the form of graphs with respect to time. Here again, I had to use the requests API to hit the tweet-url using the Twitter-Counter API to extract the followers info.

From the graph, one can conclude the growth in the followers count, information of the followers, their interests and more.

During this, I learned about the importance of a cache DB for a Django product, for immediate retrieval of data to display.

Before my internship got over I also hacked on a Django app for the Djangothon that was conducted by Hackerearth, where I participated with Praseetha and Sharat. That will be in my next post, so stay tuned !! 🙂 Goodbye reader !

For detailed info on Python-Requests, one can refer the documentation :

What did I do this Summer – part 1(FUDCon India)

What did I do this Summer – part 1(FUDCon India)

Hello Reader ! Already in the second half of the year, thought of getting my new-year resolutions executed by the end of the year ! So, here I am writing my Blog-Post on how I spent my summer !!

After my semester exams that ended somewhere in the first week of June, I was excited to attend this awesome conference FUDCon, which was being conducted in India after 4 years(yeah ! that long 😉 ). So, it took place from 26th to 28th june, 2015 at MIT College of Engineering, Pune.

FUDCon

Quick Intro : FUDCon (Fedora Users and Developers Conference) is basically for people who are interested in Fedora. It was an amazing experience, I got to know about various tools and was quite motivated to see the speakers speak about their experience on various cool upstream projects.

Well, I reached MIT on the very first day i.e on the 26th itself. (yeah, was pretty tiring !)

DAY one: So, the first day started with the key note by Dennis Gilmore on “Delivering Fedora for everything and everyone”. After which we( along with Charul and Subhendu) headed to attend the talk on DNF- fedora’s new package manager. The DNF was forked from Yum in early 2012. The goal of the DNF is to develop something that looks like Yum from the command line but provides better experience for people interested in writing plugins and extensions for the DNF.

fudcon6

Then we attended  talk on Vagrant for Effective DevOps Culture by Vaidik Kapoor where he spoke on how vagrant can be proved to be an effective tool for developers. I liked this talk, he explained really well.

fudcon5

    After lunch we attended a talk on “Whats new in Drupal 8?” by Jared Smith, where he spoke about the new features that are going to be added to Drupal 8. The day ended with a keynote from Harish Pillay on “What’s going on in a FOSS project”

fudcon3

Day two started with a keynote by Jiri Eishchmann on “Present and Future of Fedora Workstation”. He spoke about better graphics support, better battery life in F23 also more reliable weekly updates. He also told that MP3 patent expires this September, so Linux distributions like Fedora can start playing MP3s by default. (yay ! finally!! 😛 )

fudcon2Following this, I attended the talk on Haskell by Jens Petersen, where I realised the dawn of new langugaes. Then, I was there listening to Rejy on “Be secure with SELinux”. He was an awesome speaker who interacted with the audience pretty well, delivering the need of SELinux Gyan 🙂

After that, it was Sayan’s talk on “Fedmsg : the message bus for Fedora Infrastructure”, where he spoke on how it works and which projects are currently using it and how can one contribute to it.

fudcon1Day two ended by Tenzin Chokden with his keynote talk on how GhostNet affected the Tibetian Community and how Linux helped them stop GhostNet from spreading.

Day three, we attended a workshop on “Docker Basics” by Aditya Patawari and Lalatendu Mohanty, they explained it really well. They have uploded the workshop content on github! Next “Flask 101: Getting started with Fedora Infra” workshop was taken by Sayan and Ratnadeep. Finally closing ceremony by Rupali !

There was a photo session in the end too 🙂

I am glad I could attend such a great event, met quite a number of fedora contributors and learnt so many new things, also was highly motivated. Last but not the least, it was an experience worth cherishing ! 🙂

11665418_1085463018150364_2650096988084765590_n

.

Who am I ?!

Who am I ?!

Finally, a warm hello to the world of blogging !! Ya, i would accept, was lazy enough to not start blogging earlier ! Anyways, am here now, thought of finally executing the first thing on my new-year resolutions list.


Will begin with a short introduction :

Myself, Devyani 🙂 I love the internet, reading books and contributing to open source software. Girl-geek, in her pre-final year, pursuing B-Tech in CSE(Computer Science and engineering) in Durgapur, spending most of her time coding in Python and C, and contributing to upstream open-source projects.

Uploads her code on Github, listens to music on spotify, tweets on Twitter,
and chats on google+.

When ain’t coding, you can find me playing guitar, or eating lots of food !!

This blog mainly will constitute my endeavours and my journey into open-source and about the projects i’d be working on. 🙂

So, stay tuned for more crazy & interesting blog-posts !! Happy hacking 😉