Saturday, July 22, 2017

Week 3 - Submitting Pull Requests

Hello again!

It's almost two months now since GSoC coding phase has begun, and I can say that so far I've learned a lot, even things like good practices when writing code and conventions, they may seem like small things but they sure do make a difference.

My two pull requests that I've mentioned in my last blog were reviewed and merged last week, and it felt great to have an impact. I am still looking forward to having more pull requests and to learn a lot in the upcoming days.

Sunday, July 9, 2017

Third blog: Getting into the action

So far in my project what I have been doing is analyzing the already written code and study the algorithm behavior under big testing data.
After I was done with the first class to be analyzed the most of the results were acceptable, except two main class methods that produced shocking results. I shared the results with the community and came up with a fast solution that can improve the results.

It is very exciting to actually start writing code and implementing my thoughts into the Stingray library and have an impact. After I was done with the implementation the results improved better than what I expected, this graph shows the results.



The blue solid curve shows the old implementation, the yellow dashed shows the new implementation. What used to take around 700 s, now is done under 20 seconds.

I've made my first full\ready for merge pull request and I am hoping that it gets merged into the Stingray main repo, still looking to have more impact on Stingray and I am sure that there is still a lot of knowledge to be learned through my project.

Monday, June 26, 2017

Week 2 blog

I've studied algorithms and data structures in my previous year in college, and I usually practice on the topic by solving problems on online websites. In all my previous projects the data sizes that I usually work with aren't large enough to consider the various behaviors under different algorithms. So far in my GSoC I got the chance to experiment and see my self the difference in the behavior according to different algorithms and it is such a great experience to implement what I've studied and to obtain results accordingly. This is a sample of the results I've obtained. If I plotted the time taken to execute a certain logic using an algorithm having the time complexity of O(N):

Tuesday, June 13, 2017

Hello, My name is Omar Hammad and this is my first Blog with Python Software Foundation.
My GSoC project is with Stingray. Stingray is a python library that helps astronaumers research and create timing analysis to study black holes and track their activity. (How cool is that?)
My project is about optimizing the python code.
Optimization can come in any form time\memory efficiency or even code neatness and structure.
So far my project is going great and am already learning a lot, for example: when I used to write programs (outside of GSoC) I generally did not pay much attention on how my program would react under a large number of inputs. Then when I was performing some tests in my GSoC project, my Cpu would absolutely freeze. I thought it was a matter of a high time complexity algorithm being used in the code that makes my Cpu freeze, But what I've learned new is that when I use large data set in a program if the space being occupied by the program is more than what the RAM has availble, the Ram would start swapping the disk memory which is extremely slow (compared to the RAM).
So I guess I had to learn the hard way to pay attention on how much memory my program uses and I must always keep that in mind to create scalable\efficient programs. I'm really looking forward to learn more and more throughout the summer and have an impact in Stingray.