I'm a preceptor at Harvard University. I do software development, devops, system administration and a little bit of teaching for CS50 (Harvard's introduction to computer science and programming) and a few other courses.
I graduated from Helwan University, in Cairo, Egypt, with a bachelor's degree in accounting in 2017, but I have always had a passion for computers. I started studying computer science and programming using online resources in 2014, made my first contribution to an open source project in July 2015, and officially joined the CS50 team at Harvard in June 2017.
Here are a few of the projects that I worked (or have been working) on. See my GitHub for more!
I help design, develop, and maintain the CS50 IDE, a customized version of AWS Cloud9, a cloud-based IDE, to make it more accessible to students with little or no prior computer science or programming experience by means of developing and maintaining a set of plugins that simplify the look and feel of the IDE as well as installing and configuring the software that is needed for the course. Recently I have also been developing and maintaining infrastructure backend for the IDE that runs on Kubernetes, a very popular open source container orchestrator. I also develop and maintain an offline version of the CS50 IDE that uses Docker, a popular containerization technology.
The user experience of Cloud9's graphical remote debugger wasn't pedagogically ideal for us. We encourage students to use the terminal to compile and execute their programs, as opposed to using a graphical user interface, to give them a sense of what the process looks like. We wanted students to be able to start the debugger from the terminal too, but unfortunately this isn't easily possible on Cloud9. I contributed to Debug50, a Cloud9 plugin and gdb interface that makes it possible to start the debugger from the terminal on Cloud9 and provides some useful feedback for students. Recently I also added support for debugging Python scripts by integrating ikp3db.
An Electron app built on top of technologies such as Bull, FFmpeg, ReactJS, and different AWS and Google APIs that automates and facilitates some of CS50's production team workflows such as video transcoding to different formats and resolutions, generating audio and video assets, quality assurance, and publishing content to CS50's content delivery network in a parallel fashion and using a friendly user interface.