I was inspired by the design philosophy of vim
to create this minimal and efficient keyboard-driven tool to help teachers provide grades and feedback for their google classroom assignments.
The backend stack is PostgreSQL, Django, and Django REST Framework. The application is deployed on a Kubernetes cluster that I created and maintain in my home. It's infrastructure is defined as code (IaC) using Terraform. It is also continuously deployed to production and staging environments using GitHub Actions. The backend utilizes the Google Drive and Google Classroom APIs to fetch user data. I also used Python's difflib to implement a feature where teachers can view only the differences between the template they provided to students, and the actual student submission.
On the frontend of this project, I used Tailwind CSS and htmx to facilitate rapid prototyping, and minimize code repetition. This choice also allowed me to dynamically inject UI browser extension from the backend, which has been pretty neat!
The Song Maker Gallery is a dynamic web application used by music teachers to present galleries of student compositions made in the Chrome Music Lab.
It currently has 708 active users, 729 galleries created, and over 34,000 student songs uploaded! It was built with Django, Django REST Framework, and PostgreSQL on the backend, and React on the frontend.
Visit the site and inspect the song thumbnails in your browser – they are all dynamically generated SVG on the frontend, with the backend serving representations of the song in the MIDI file format! The application uses roughly 20 times less storage and bandwith as a result of this optimization.
In June, July, and August of 2021, I committed myself to contributing to CPython full-time. CPython is the reference implementation and most commonly used implementation of the Python programming language, and it contains the Python interpreter, standard library, and official documentation.
Many of my contributions were towards documentation, the most significant of which was my rewrite of the new documentation for __main__.
Eventually, I became more familiar with the huge CPython codebase, and I am extremely proud to say that my code contributions were eventually merged into Python standard library modules, including rlcompleter
, tarfile
, and argparse
. I also wrote an interpreter patch in C
, which became part of the implementation of the structural pattern matching feature introduced in Python 3.10.
I have been teaching myself to develop software for over two years now. The projects in the previous section are my best and brightest, but there are a myriad of other smaller projects in my portfolio that I have created along my learning journey.
teacherhelper
Python library, which containes useful abstractions and a CLI to make teaching more scriptable. GitHub, PyPi, Docsrn
using only the Python Standard Library. GitHubTwo years ago, my journey towards software development began. Once I started learning to write code and I saw the potential of what I could create, my interest and commitment to learning more never stopped. Considering my background as a professional educator, the only thing about this experience that hasn't surprised me was my passion and dedication towards mastering this new craft.
After graduating with a B.M. in Music Education and Jazz Studies from William Paterson University of New Jersey in January 2020, I started working as a music teacher in K-12 schools. I have enjoyed that work a lot, but I've also spent time close to the problems in the American education system. As an amateur programmer, I've seen how my skills can have an impact on teachers and learners, and I hope that continuing to grow as a software engineer will empower me to solve some of the problems I have seen as an educator.
What I know for sure is that my interest in software development has truly swept me away, and it's become hard for me to spend my time doing anything else. I am ready to take my passion and curiosity to the next level.
I have spent a lot of time working on software projects big and small. I know how to navigate large codebases and make meaningful contributions to them. I also have followed best-practices for my new projects, and I've encountered software development methodologies in a hands-on way to help me manage my own larger projects.