BeagleBoard/GSoC/2023 Proposal/MakecodePocketBeagle

From eLinux.org
< BeagleBoard‎ | GSoC
Revision as of 02:33, 2 April 2023 by Mrigankpawagi (talk | contribs) (Contingency)
Jump to: navigation, search


Makecode Arcade Target for PocketBeagle Gamepup

Student: Mrigank Pawagi
Mentors: Vaishnav/Andrew Henderson/any other mentor
Code: https://github.com/mrigankpawagi/repository
Wiki: http://elinux.org/BeagleBoard/GSoC/2023_Proposal/MakecodePocketBeagle
GSoC: GSoC entry

Status

This project is currently just a proposal.

Proposal

The pull request to my entry task can be accessed here. This demonstrates my ability to cross-compile and test my compilation with QEMU.

About Me

IRC: mrigank
Github: https://github.com/mrigankpawagi
School: Indian Institute of Science (IISc), Bengaluru
Country: India
Primary languages: English, Hindi
Typical work hours: 8AM-11PM IST (GMT+5:30)<be>

Why I want to participate in GSoC
My first encounter with open source was with Google Code-In, where I got the opportunity to work with organisations like JBoss, Publiclab and Drupal. Not only did I develop the skill to write better code by understanding conventions and learning to write good comments, but also improved my skills to communicate with other developers through documentation. Most importantly, I learned to use git! These skills helped me for years to come, and made me realize that open-source development helps not only projects and organizations, but also assists the growth of individuals as developers. Recently, while learning about flaky tests, I scanned through the International Dataset of Flaky Tests (IDoFT) and using GitHub Actions, confirmed flaky tests in multiple over-source repositories with NonDex. I was also able to fix the flaky test in one of these projects (30 Seconds of Java 8). Google Summer of Code will give me the opportunity to continue my endeavors in the open-source space and continue to sharpen these skills which will benefit me for the entirety of my academic and professional career. In particular, I am highly interested in educational technology and have worked on several experimental projects to create interactive learning interfaces. I also received a grant from MIT Solv[ED] to explore the need and impact of such tools, with a focus on drag-and-drop interfaces like Makecode. The opportunity to work on one such tool myself by increasing access to PocketBeagle is truly exciting to me.

About your project

Project name: Makecode Arcade Target for PocketBeagle Gamepup

Description

Microsoft Makecode Arcade is a free game development environment that makes it possible for people who are new to coding, especially young students, to program games for the web and for handheld devices using a block-based programming interface. It also has an in-browser board simulator for running the game as one develops it. My project aims to develop and deploy a Makecode Arcade target for PocketBeagle boards with the Gamepup cape. This will make it easy for beginners to harness the power of PocketBeagle by making learning to code an enjoyable experience. Since Makecode Arcade allows sharing projects, tutorials, courses, etc. with everybody on the platform, PocketBeagle users will also be able to utilize these resources to their advantage as they get comfortable coding with the board. I will also create some demonstrations and tutorials to help people get started with Gamepup on Arcade.

I will use TypeScript/JavaScript to create support for PocketBeagle Gamepup in Arcade, which is essentially based on PXT. I will be using BoneScript to send commands to the UF2 daemon running on the board to program it. I also plan to create specialized Arcade blocks for the board to perform advanced tasks related to multiplayer capabilities, game currency, etc.

Timeline

Date Plan
Mar 24 Applications open, I register with GSoC, work on proposal with mentors.
Apr 4 Proposal complete, submitted.
May 4 Proposal accepted or rejected.
May 28 Community bonding, reading up on documentation, building repositories and ensuring my environment is properly set up, reading up on topics I am unfamiliar with, setting up meeting timings with my mentor, getting feedback on the project's concept from the Beagle community.
May 29 Coding begins.
Jun 5 Creating support for GPIO. Adding specialised blocks for components like pushbuttons, switches, LEDs, and LED matrices.
Jun 12 Create specialised blocks for some sensors: force, light, distance.
Jun 19 Complete work from previous two weeks. Create documentation and some tutorials (videos or write-ups) for all features added so far.
Jun 26 End-semester examinations at University. Add support for motors, servo motors, and dials.
Jul 3 Continue work from previous week. Add support for real-time I/O.
Jul 10 Create more documentation and tutorials. Test, ask for feedback, and iterate.
Jul 14 Midterm evaluation submitted.
Jul 24 Integration with Gamepup cape buttons.
Jul 31 Brainstorm additional features (like multiplayer capabilities, etc.). Start working on these.
Aug 7 Continue working on additional features.
Aug 14 Complete work on additional features, and start creating documentation and tutorials.
Aug 21 Testing, feedback and iteration.
Aug 28 Final work product submission

I will be open to extending the deadline if the project goals demand so.

Experience and approach

Although my University has rigorous coursework, I am usually able to take out 30-40 hours per week for extra- and co-curricular activities. Due to club activities and other projects, I have become comfortable with this schedule and am confident that I can devote around 25 hours every week to this project.

Although I haven't used BeagleBoard before, I have had decent exposure to Raspberry Pi and Arduino. Besides several robotics projects, I worked with Raspberry Pi on a project aimed at creating personal servers which people can keep at their homes. These servers could store data and communication in a decentralized manner and could communicate with other servers in a one-to-one fashion. I have also been working with Professor Pradipta Biswas from the Center of Product Design and Manufacturing at IISc to create open-sourced, educational robotics projects using Arduino along with detailed guidelines. My experience with Linux goes beyond using Raspberry Pi – I have been using Ubuntu for personal use (particularly for software development) for quite a while, and have also used Linux Mint and Debian on VirtualBox for compiling programs in the absence of a cross-compiler.

Finally, I have also had an extensive experience with JavaScript (and TypeScript). Some of my projects for which JavaScript (or TypeScript) was an integral tool include an assistant to optimize daily schedules (using a novel evolutionary algorithm), a platform to digitize small businesses and improve the local shopping experience, interactive interfaces to teach about exoplanets and optics, a platform to create and join local clubs based on common interests, a crowd-sourced news-verification platform, and an algorithm to analyze exoplanetary data to find the most habitable planet.

Thus, I feel that I am equipped with the basic skills required to start working, along with the prerequisites to learn new things on the go as I develop this project.

Contingency

I will make all possible efforts to continue working on my project even if I get stuck in the absence of my mentor. I will use all resources available to me to ensure that the quality and pace of my project are not adversely affected.

For this, I have Beagle's Slack and IRC channels to ask for help in the community. I can also ask questions on GitHub Discussions in relevant repositories like pxt, pxt-arcade, and uf2-linux, among others. I also have a huge collection of documentation to refer to, from both PXT and BeagleBoard.

Benefit

If successfully completed, what will its impact be on the BeagleBoard.org community? Include quotes from BeagleBoard.org community members who can be found on http://beagleboard.org/discuss and http://bbb.io/gsocchat.