User:Abdallah Elshamy: Difference between revisions

From Octave
Jump to navigation Jump to search
Line 14: Line 14:
== E: Coding experience ==
== E: Coding experience ==
* I have a good knowledge of C++ and used it in many projects.
* 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 been using Octave/MATLAB for about three 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 Qt and made two University projects using it.
* I have a good knowledge of Python and a fair knowledge of Java.
* 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 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
* Last GSoC, I Worked on a project​ that enriched GNU Octave with built-in support​ for JSON. I developed functions to encode/decode JSON using​ C++​ and unit tests using ​Octave. My project​ was integrated into the main repository of GNU Octave[https://summerofcode.withgoogle.com/archive/2020/projects/5567022663991296/].
** Implementing the GUI using Qt.
* Other contributions can be found here[https://github.com/gnu-octave/octave/commits?author=Abdallah-Elshamy].
** Helping in implementing the assembler
** integrating the system.
* I successfully added the new functions "startsWith" and "endsWith" to Octave[https://savannah.gnu.org/bugs/?57041].
* I submitted a patch to add the new function "clipboard" to Octave[https://savannah.gnu.org/bugs/?57699].


== F: Feeling fine ==
== F: Feeling fine ==

Revision as of 08:58, 4 April 2021

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 senior undergraduate student studying computer and systems engineering at the faculty of engineering - Ain Shams University.
    • Languages I speak: Arabic (native) and English (advanced).
    • 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 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 participated in GSoC 2020 with GNU Octave.
  • 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

  • Username on Savannah, Username on Octave Discourse, and Nickname 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 three 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.
  • Last GSoC, I Worked on a project​ that enriched GNU Octave with built-in support​ for JSON. I developed functions to encode/decode JSON using​ C++​ and unit tests using ​Octave. My project​ was integrated into the main repository of GNU Octave[1].
  • Other contributions can be found here[2].

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

  • I heard about Octave approximately two years ago in my college 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

  • Criticism is greatly important and highly appreciated by me as it allows me to learn from other's experiences. To make the best of it I prefer it to:
    • Be as specific as possible.
    • Be supported with examples.
    • Use clear language and avoid ambiguity.
    • Be given in points so I can track my improvement in a better way.
  • I prefer to discuss changes and to have a good vision about them before starting to code. Surely, all the details may not be clear and need further search but having a good general view about the system helps a lot and directs your search and your efforts to fruitful paths.
  • Prototypes definitely helps you understand what you are trying to do so coding and modifying them (with the risk to throw them away) may be useful to have a better understanding and a better implementation of the requirements.

Y: Your task

  • I chose JSON encode/decode project.
  • My project will focus on creating MATLAB compatible jsonencode and jsondecode functions. This involves proper documentation of the work and unit tests to ensure the correctness of the implementation
  • This is my elaborated proposal [3]
  • A detailed timeline is provided on the elaborated proposal. My milestones will be:
    • Deliver the test suite.
    • Deliver jsondecode.
    • Deliver jsonencode.