A: An introduction
My name is Hassan Radi. I am senior student at the Computer Engineering department, faculty of Engineering, Cairo University, Egypt. I am an Arabic speaker and I am also fluent in English. I know a little bit of Spanish.
I want to participate in Google Summer of Code as it’s a good opportunity to take part in an open source project that actually affects millions of people around the globe. I want my efforts to make a difference and also to use the summer vacation in doing something that I actually love doing. I hope to gain more practical experience and learn about new technologies/techniques. It’s also a good opportunity to meet some new people and exchange experiences.
I applied for Google Summer of Code 2011 and 2012, but sadly I wasn’t qualified enough for the task that I applied for. I took it as a challenge and learnt new technologies, exposed myself to new techniques with the hope that when I apply in the next year, I’d be qualified enough to be accepted. And here I am applying for GSoC 2013.
I came across Octave when I enrolled in an online Machine Learning course offered by Stanford University. The course was taught by professor: Andrew Ng. Octave was the program that we used to solve our homework. I became interested in it as I knew it was the Open Source version of Matlab. The only thing that was bothering me, is that it has no GUI like Matlab did and that’s why actually I am applying this year.
IRC nickname: Hassan1990
I currently live in Egypt. My time zone is: UTC+2 and I am not planning to travel anywhere during the GSoC period. I usually code around 10:00 AM to 08:00 PM. I am more productive in the early hours of morning, that’s why I usually try to accomplish most of the work that requires a great amount of focusing in the morning.
E: Coding experience
• C++: Very experienced in using it. I used Visual C++ in creating a game with Directx as a project in college. I also use it to solve online programming contests like Google Code Jam. I participated in Google Code Jam this year and solved the problems with C++, I qualified to the next round by the way.
• Octave: Used it before and familiar with most of the basic functions.
• Matlab: I used it in college and I am familiar with most of the basic commands, familiar with creating functions, classes and GUIs with Matlab and also with using some of the available toolboxes like: Computer Vision Toolbox, Bioinformatics Toolbox, Statistics Toolbox and Image Processing Toolbox.
• OpenGL: I never used OpenGL before, but I used DirectX instead in implementing a game as a project in college.
• Qt: Never used it before, but heard about how it’s easy to build cross platform GUIs with it.
• Java: My favorite programming language. I have been using it for 4+ years so far and I can pretty much do anything with it.
• C#: Currently using it in my graduation project to implement the required demo applications.
• Python: Currently using it at college in NLP (Natural Language Processing) course.
• JSP: used it in a project at college when we were asked to implement a search engine. We used Java SE and MYSQL to build the project. JSP was the language we used to display the search results that we calculated using java crawlers and indexers.
I am a certified ISTQB tester (Foundation Level) and currently planning to take the Advanced level. I have about 2 years of experience working as a software tester (currently working within a distributed development team as an outsourced Software Tester at IDP Solutions Company based in Australia). Most of my software testing experience included designing, writing, executing and logging results of test cases. My work included manual testing desktop applications and websites and also I am able to write unit tests, integration tests using NUnit, JUnit and also Selenium.
The biggest project that I written code for; would be my ongoing graduation project. It’s a full body haptic suit that translates any sensation from the virtual environment (in the computer) to an actual feeling in the real world. I am the team leader of the project and responsible for implementing most of the demo applications that we should do (implemented using C#) and also helping in other hardware code that is implemented using Arduino and C++. Being a part in such project taught me a lot. For example; I learned how to lead a team in implementing a project, how to motivate them when they are down and how to urge them when we are behind schedule.
F: Feeling fine
• IRC and mailing lists: very experienced as I use them usually.
• Mercurial or other source code management systems: Very experienced, but I usually use Subversion.
• Mediawiki or other wiki software: Familiar with using them.
• I used GCC compiler before when I participated in some online programming contests. Regarding make and gdb, I didn’t use them before.
I’d definitely like to stay in the Octave community after the GSoC ends. What will encourage me to do so, is the amount of experience I can gain by being a part of that community and if it turned out to be as much fun experience as I expect it to be.
O: Only out of interest
I heard about Octave when I was taking a Machine Learning online course at Stanford University. I used it to solve class homework, I used most of the basic functions related to machine learning.
What was the first question concerning Octave you could not find an answer to rather quickly?
Why Octave doesn’t have a GUI like Matlab does? Why Octave lacks some functions that are implemented in Matlab?
My main operating system is Windows 7 Professional and I also has Ubuntu installed as a virtual machine on my laptop. I have full time access to them.
I have a 24x7 access to the Internet and I can install new software on my computer at any time.
I always welcome constructive criticism as it helps reach the highest standards by exchanging ideas and points of view with members that understand the task in hand more than I do.
As long as I know what is exactly needed to be done, I can work autonomously without the help from anyone. I will keep searching for ways to get the task done and I will get it done eventually.
Do you like to discuss changes intensively and not start coding until you know what you want to do?
No. I don’t discuss changes extensively. I always discuss changes till I get a rough idea about what is expected to be done then I start coding right away and show the results to my supervisor and ask for feedback. If they need editing, I’d be happy to do it. If they were totally refused, I’d be sad, but I will start all over again until I get it done.
Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?
Yes I do as explained in the answer of the above question.
Y: Your task
I chose the task of building a better GUI for the profiler. My best part to focus on is the phase of brainstorming for ideas on how it should like and choosing from them by asking people for their opinion about which is easier to use.
• [24 May – 17 June] getting to know my mentor and other people in the community. Also my final term exams will be in that period.
• [18 June - 29 July] will begin designing the GUI and implementing it. I will also be working in parallel on my graduation project which will be delivered on the 6th of July.
• [August – End of the GSoC] continue implementing the rest of the GUI and also the Report generator.
1- Brainstorming for ideas on how the GUI might look like. Discussing my ideas with my mentor and with other people in the Octave community.
2- Deciding on a certain UI for the profiler and beginning to implement it using Qt or java Swing.
3- Designing the Report generator, which information to include and how to display them. And beginning to implement it either using HTML reports or by building it from scratch using Qt and integrating it with the profiler.