A: An introduction

  • My name is Abdallah Khaled Elshamy, a student from Egypt. I am a hard-working person who is passionate about his work. I am a third year undergraduate student studying computer and systems engineering at faculty of engineering - Ain Shams University.
    • Languages I speak: Arabic (native) and English (upper-intermediate).
    • I have a good background in mathematics (ODEs, linear algebra, numerical analysis and calculus), electronic and electric circuits and computer science.
  • Google summer of code is an excellent opportunity for a student like me to work with other developers on a sophisticated software that has a lot of users. I hope to become a better and more experienced developer and to hone my soft skills by collaborating with the developers/maintainers of Octave.
    • I don't have any previous experience with the GSoC.
  • I used octave a lot as an open-source alternative to Matlab. It was extremely helpful for me as a student.Thus, I want to help in enhancing and adding to this important project.

C: Contact

  • User name on Savannah and Nick name on IRC: Abdallah_Elshamy
  • I live in cairo (UTC+2). my location won't change over GSoC duration.
  • I usually split my working hours to regain my focus so I code from 06.00 to 10.00 and from 12.00 to 17.00

E: Coding experience

  • I have a good knowledge of C++ and used it in many projects.
  • I have been using octave/MATLAB for about two years. I am familiar with some packages like: Control and Signals. I wrote many m-scripts and used Simulink.
  • I have a good knowledge of Qt and made two University projects using it.
  • I have a good knowledge of Python and a fair knowledge of Java.
  • I am comfortable with working with team and worked with many teams in university projects.
  • I Worked with a team to make a Verilog model for MIPS processor, an assembler for MIPS, a GUI where user can write assembly code and run it and an automated test for the Verilog model. my role over time was
    • Implementing the GUI using Qt.
    • Helping in implementing the assembler
    • integrating the system.
  • I am trying to add the new functions "startsWith" and "endsWith" to octave[1]. I have already submitted a patch and got feedback from the maintainers and waiting for their evaluation after the modifications.

F: Feeling fine

  • I am familiar with IRC and used it to get advice.
  • I am familiar with mailing list and subscribed to it.
  • I used Mercurial to submit a patch and have a good experience with other version control systems like git.
  • I built octave using make tool and was able (with the help of the maintainers) to add functions to the build system.
  • What will make me actively stay in the community that I want to help in developing octave as it helped me in my study. besides, I believe that I will learn a lot from this.

O: Only out of interest

  • Did you ever hear about Octave before?
  • I heard about octave approximately two years ago in my colleges as an open source alternative for MATLAB since we have projects that used MATLAB and we needed a software with similar capabilities.
  • The first question concerning Octave I could not find an answer to rather quickly was how to add to the build system. With some searching and help from IRC channel and maintainers I was able to solve it.

P: Prerequisites

  • I use Ubuntu 18.04.3 LTS.
  • I own this machine and have full (sudo) access to it. I can install any new software on it.
  • I will be able to access internet connection, a computer with my progressing work on any time on the day.

S: Self-assessment

  • Please describe how useful criticism looks from your point of view as committing student.
  • How autonomous are you when developing:
    • Do you like to discuss changes intensively and not start coding until you know what you want to do?
    • 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?