App Inventor Chart Components: Project Summary
Although some time has passed, I am highly excited to announce that this summer, I have been accepted into the Google Summer of Code 2019 program! This is truly an exciting moment and a huge milestone for me personally, and a very fun and productive summer awaits!
The Google Summer of Code is a program intended to gather students from all over the world to contribute to open source projects. Students apply to organizations by proposing projects. After being accepted, students spend their summer contributing to their organization by working on their proposed project.
The project that I will be working on this summer is implementing Chart Components in App Inventor, an open-source platform which is intended to make Android application development accessible and easy to accomplish via a web interface. App Inventor is used worldwide by casual enthusiasts, students in both schools and universities, teachers as well as advanced application developers. More information can be found on the App Inventor website.
The intention of this project is to give users the ability to create Charts in their applications, which will allow to visualize data from different kinds of sources, such as data added via code, data gathered in real-time or data imported via files.
I would like to share my story on my process overall, from the very beginning, to the very end of the application period.
Since I am a first-year student, this has actually been the first year I could participate in the program. I have encountered the possibility of putting my developer skills to the test roughly half a year before university by stumbling upon, if I remember correctly, a Quora post. Quite interesting that encountering a random post on a programming related discussion would spark a new goal and milestone for me.
Fast forward, some thoughts and research on the Google Summer of Code, I have decided that this is a great opportunity to put my skills to the test. At that point in time, I have not participated in any open source project, or even worked on a project on a scale as large as open source projects. In fact, the only projects that I have touched were mainly individual projects, or projects involving a few people at most.
I have only started giving serious thought about applying and learning about the program in detail roughly 1 month before the organizations were announced. At that point, I knew I was seriously dedicated to this task. My goals when applying were primarily to learn how development in open source works, what technologies are used, how real-world projects look like and exploring new possibilities in programming in general. I did not think much at that point of getting accepted, and saw this as an adventurous opportunity instead.
After the organizations were announced, the tough part was picking the organizations and projects that I wanted to be a part of.
So, what I did initially was write down the languages and technologies that I am confident in as a head start to my search. There were some that I could discard immediately. For example, C# projects are not popular at all in the Google Summer of Code, so that was not really an option. Then, there was JavaScript, which, even though I am capable in and have some experience in, I did not feel fully confident in to handle tougher projects compared to my other experience. So, my most crucial decision was to focus on my strongest points, and what I know best - Java and Android development.
After establishing my choices, I then spent roughly a week to decide on what projects I would like to contribute to. The reason it took me this much time is the vast choice of projects. There were simply so many interesting projects, and, of course, I simply could not pick all of them! So, what I did was pick out the interesting ones, and then kept shrinking the list overtime, filtering out options that either had stiff requirements that I could not meet (for example knowing certain frameworks that I had no experience with), and projects that were unfortunately slightly less interesting for me personally than others, which was quite a tough decision.
Initially, I had planned to take up on the maximum allowed limit of 3 projects, however, after being highly indulged in writing 2 proposals, I have decided I simply do not have the time and energy for a third project. This allowed me to concentrate my focus and efforts towards writing 2 good quality proposals.
The projects I have chosen to work on were Implementing a MongoDB database for Intermine, and the Visualization Component project for App Inventor.
The next obvious step was to delve into my chosen projects.
The Intermine project was more research and knowledge oriented. I spent most of my time simply understanding how the system works and analyzing both PostgreSQL and MongoDB aspects in great detail. What I did for my proposal was essentially dividing the task into small subtasks so that I would not get lost, and focus on one small fraction of the work at a time. This was very crucial, because each part of the project required great insight and thorough understanding, and previous parts were usually important for the upcoming subtasks.
As for the App Inventor project, the process was more technical. I spent most of the time learning how the system works internally, exploring the code base and tackling on issues. Initially, it was quite hard to get around a large codebase and how things work, but as time passed by, I began understanding the system, one step at a time. One of my major contributions was the Join with Separator block, which allows to join multiple strings together into one, each string being separated by a chosen separator string. While it may look like an easy task to implement all in all, doing it in a large system with many components was more trickier than I expected. After getting familiar with App Inventor, I began exploring the project I have chosen, and provided technical insights on how I would tackle the problem. I provided a structured plan, as well as more concise details of how the components could be implemented.
For the App Inventor project, I noticed that the form to be filled for the applications require URLs for answers. So then a thought popped into my head - why not build a website for my proposal? Not only was this a nice way to present my ideas, but this was also quite a nice way to apply my knowledge of web site building and gain further experience with HTML, CSS and JavaScript. For this proposal, what I did was add new ideas to the content on a daily basis. What was initially a rather barebones division of the website into sections gradually turned into an extensive description of the project, my experiences and details. For the curious readers, the proposal website can be accessed publicly.
Based on my experience, to every future GSoC applicant, and even to every developer working towards a project, I would recommend the following:
One of my inspirations to create this blog was to document my experiences and progress on my Google Summer of Code project this year. This blog for the time being will contain status updates on the project, including my personal thoughts, challenges and progress overall. So, for the next 3 months, expect to see content primarily focused on this project!
Stay tuned for more updates!
Google Summer of Code Logo
App Inventor Logo
Overview In the last post, I have thoroughly covered the implemented Pie Chart type for the App Inventor Chart components project that I have been working on...
Overview Last post, I have wrapped up the implemented methods for importing data to the Charts for the App Inventor Charts project that I have been working o...
Overview In the previous post on the App Inventor Chart Components project, I have covered data importing from Files, as well as from the Web. Previously, we...
Overview In the previous post on the App Inventor Chart Components project, we have looked at an extensive description of Chart Data Source concepts and real...
Overview It has been a while since the last post due to a highly busy period! A lot of blog posts were postponed, but now a series of posts will follow in th...
Overview Following up on the App Inventor Chart components project, this blog post will focus on a specific workflow aspect that allows to select the Chart t...
Overview With the workflow for the App Inventor Chart components established, the next step is to define the concepts and format of the Data that can be impo...
Problem While working with Charts in Android using the MPAndroidChart library, one inconsistency that I stumbled upon is the fact that all the Charts support...
Overview In the last post, I have previewed the workflow of the Charts components that I am working on for App Inventor. In this post, I will dive into some ...
Overview Following up on the Chart prototypes, this post will focus on previewing the current progress on the Charts components in App Inventor.
Overview In continuation to the previous previous blog post, this post will focus on a Line Chart Component prototype in App Inventor.
Overview During the initial steps of the project to develop Chart Components for App Inventor, the major focus was on the design of the components such that ...
As the community bonding period is nearing to an end and the coding period is about to begin, I would like give a status update on what happened in the last ...
Introduction I am Evaldas Latoškinas, currently a first year Computer Science & Engineering international student in the Netherlands at TU Delft. Origina...