From Octave
Jump to navigation Jump to search

Public application template[edit]

A: An introduction[edit]

  • Please describe yourself in three sentences, one of them regarding your current studies.
    I am studying at the University of Illinois at Urbana-Champaign, in the process of obtaining a major in computer engineering and minors in physics and statistics (expected graduation: May 2022). I attended the Illinois Mathematics and Science Academy for high school, taking most computer science and physics courses offered. In my free time, I like to draw, cook, work out, and read.
    • Which languages do you speak?
      I speak English and Bulgarian natively and German at an advanced level.
    • What's your overall background?
      Although I have not yet had the chance to take highly specialized courses at my university, I have recently found a passion for data science and machine learning while participating in a few hackathons this year. I plan to pursue them in the coming years as part of my computer engineering degree.
  • Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
    I worked on an open-source project for the first time at Hack Illinois this year. I was very taken with the idea of being able to do something truly useful, however small, as the majority of programming I had done for classes and extracurriculars in the past felt quite trivial. Google Summer of Code seems like an excellent opportunity to pursue an open-source project with greater depth and guidance. In the past, I have worked under mentors doing research. I believe that the structure and mentorship that I will experience in GSoC will be incredibly constructive to my learning process, as well as fantastic at expediting my pace in completing work.
    • Please also describe your previous experience with the GSoC, if any.
      This is my first time applying to GSoC due to the minimum age.
  • Why are you choosing Octave?
    I began using Octave when I took the Coursera Machine Learning course offered by Andrew Ng from Stanford. I really enjoy the speed at which I can work in this highly intuitive language, and I would love to help make it better for others to use!

C: Contact[edit]

  • Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
    I have not used IRC with Octave.
  • Which time zone do you live in? Will that change over GSoC duration?
    I will live in the Central Daylight Timezone (UTC-5) over the duration of GSoC.
  • Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers?
    I prefer to work mainly from 12.00 to 24.00, but I can work outside this range on occasion as needed.

E: Coding experience[edit]

This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic ;-)

  • Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
    I have experience with C/C++ from computer science and engineering courses in university. I have experience with Octave from the Coursera Machine Learning Course and experience with Matlab from my electronics courses in university.
  • Please describe your experience with other programming languages.
    I have experience with C, C++, Java, LC-3, MATLAB, Python, HTML, CSS, Bootstrap, Javascript, JQuery, PHP, and SQL from various courses in high school and university.
  • Please describe your experience with being in a development team.
    I am currently interning at Synchrony Financial, on a team of three students and one mentor. My only experience with open-source so far has been at the 2020 Hack Illinois hackathon working on the gRPC project.
  • Please describe the biggest project you have written code for and what you learned by doing so. Also, describe your role in that project over time.
    During high school, I was on my FRC robotics team's programming team. I learned a lot about Java and controlling physical parts using code. Initially, I had no experience with programming beyond JavaScript, but eventually, I was able to code and debug for any part of the robot.
  • Please state the commits and patches you already contributed to Octave.
    I have not contributed any commits or patches to Octave because I am not sure where to start.

F: Feeling fine[edit]

  • Please describe (in short) your experience with the following tools:
    • IRC and mailing lists
      I have no experience with IRC. I have set up mailing lists using PHP in a web technologies course.
    • Mercurial or other source code management systems
      I have no experience with Mercurial. I have extensive experience with Git.
    • Mediawiki or other wiki software
      I have no experience with Mediawiki. I have used other wiki software in a few courses to create and share content with classmates and instructors. I expect to be able to pick up wiki formatting quickly because I have a lot of experience with markup languages in creating websites and using LaTeX.
    • make, gcc, gdb or other development tools
      I have used make, gcc, and gdb somewhat extensively in class. I have experience in creating and modifying makefiles.
  • What will make you actively stay in our community after this GSoC is over?
    To me, the most offputting part of open-source projects is the seemingly high entry barrier. As long as I understand what needs to be done and where I can find the resources to do it (which I should know following GSoC), I plan on staying active in the Octave community.

O: Only out of interest[edit]

  • Did you ever hear about Octave before?
    • If so, when and where? How far have you been involved already?
      I have used Octave in completing the Coursera Machine Learning course.
  • What was the first question concerning Octave you could not find an answer to rather quickly?
    I have not had any major issues with Octave due to the extensive documentation offered by the Coursera structure.

P: Prerequisites[edit]

  • Please state the operating system you work with.
    I work with Windows 10 and Linux CentOS 7.7.
  • Please estimate an average time per day you will be able to access
    • an internet connection
      24 hours
    • a computer
      24 hours
    • a computer with your progressing work on
      24 hours
  • Please describe the degree to which you can install new software on computers you have access to.
    I can install any new software on my Windows computer. I cannot install new software on my Linux computer, but it does have most industry-standard programs (e.g. Matlab) and packages (e.g. matplotlib).

S: Self-assessment[edit]

  • Please describe how useful criticism looks from your point of view as committing student.
    I am into self-improvement in all areas, which leads me to seek out criticism and be pretty blunt. If I am taking the wrong steps, I won't be offended if I am told so because it benefits no one to keep this information private. If I am not following an expectation, I would like to be told so because I would not purposely be doing the wrong thing. Any and all criticism is useful.
  • How autonomous are you when developing:
    I prefer to code a proof of concept with the potential to modify it because the main way that I learn is hands-on. I am okay with taking the risk of having work thrown away if it doesn't work with the project because I will still have learned something from the process of creating the program.

Y: Your task[edit]

  • Did you select a task from our list of proposals and ideas?
    • If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information.
      Yes, I selected the JSON encoding/decoding project. I have used JSON files in data analysis and visualization projects in the past, and I think that Octave needs to have JSON integration to succeed as a widespread computational language. #Proposal for reference.
  • Please provide a rough estimated timeline for your work on the task.
May 4 - June 1 Community Bonding
June 1 Start Coding
Task 1 Determine which implementation
June 29 - July 3 Evaluations 1
Task 2 Improve implementation
July 27 - 31 Evaluations 2
Task 3 Testing
August 6-8 Unavailable (UIUC finals)
August 24 End Coding
August 24 - 31 Final Project and Evaluations 3
September 8 Final Results


Bug #53100[edit]

  • Introduction
    Following Matlab's introduction of jsondecode(string) and jsonencode(string) in early February, a feature request was made to create similar functions in Octave. The proposed functions would allow users to easily work with JSON formatted strings in Octave, inputting and outputting JSON files, respectively.
  • Imperfections
    • Due to an abundance of cpp parser libraries, different ones with different implementations have been selected and implemented separately by various contributors.
    • "jsonstuff .. doesn't cover more general or flexible JSON handling, or persisting of arbitrary Matlab data structures to JSON"
      • no intention of further extension so as to match base Matlab
      • As of February 2020, "it's about feature-complete, but it's not Fast (because some stuff is still in the M-code layer, that should be down at the C++ oct-file layer)".
    • jsonlab is looking to be more robust than jsonstuff, implemented as a specialized package that works with both Octave and Matlab rather than a part of base Octave.
      • also works with UBJSON/MessagePack (different filetypes for different use cases)
    • rapidjson is not aiming to create an equivalence to Matlab's jsonencode/jsondecode, instead creating new data types and functions to aid in working with JSON files.
    • I was not able to find much information about JSONio's deficiencies.


All of these packages were written by individuals who see their work's strengths because they have naturally created a product that works well for their needs. To implement a feature into Octave core, however, it must work well in a considerably more extensive range of applications. A third party should analyze in-depth which implementation makes the most sense to bring into Octave core and work with the contributor to do so. Some contributors expressed in the Bug #53100 forum that they find themselves lacking the time to finalize their implementations, as is the nature of open-source work. Thus, dedicating my summer, I could help finally bring fluid JSON interoperability to Octave.