This project is a (working!) microcomputer, designed around a U880 microprocessor, a clone of the West’s Zilog Z80, using parts that were available in the Soviet Union during the Cold War. (although I did have to ‘cheat’ a bit with modern versions of some components when I could not find a Soviet version for sale, when the Soviet parts I received were defective, or, in the case of the display, when using an period-accurate part would have made the computer much more difficult to transport and use.)
My history class had been assigned a research project, with the format being relatively open, and I had chosen my topic to be technology behind the Iron Curtain. As I was starting my research, I realized that several of the components that I was reading about could actually be purchased on eBay, at prices that were far lower than what I was expecting! The only logical next step was to design a computer around these parts, in the spirit of Soviet computer hobbyists from the time.
The fact that it works! This computer was definitely one of the more ambitious hardware projects I’ve designed. At the start of the project, while I had some experience with writing software for the Z80, I had never (successfully) designed a computer around any sort of microprocessor, let alone the Z80, and was concerned that I would make some trivial error in the (nine page!) schematic or the layout of the circuit board, resulting in a non-functioning computer. However, I made sure to be careful and methodical in my designing, breaking the system into components that could be prototyped and verified independently on a breadboard. This meant that the final design had very few issues, with the errors I made in the circuit board layout being fairly easy to work around, and I was able to actually get the entire system running properly and submit it as part of my project.
NoteToScreen is a website that lets you quickly, easily, and securely save handwritten notes online. Once they’re online, you can access them from anywhere, share them with others, search for text, and collaborate in real time!
I had realized that, in my classes, taking notes by computer was not a very effective strategy for me, but writing notes out inevitably meant that I would lose or somehow manage to destroy them. I wanted some way of getting the best of both worlds, and so NoteToScreen was born.
One of the challenges with NoteToScreen was the live collaboration feature, which required learning about WebSockets and how to integrate them with my programming language of choice, Go.
MyHomeworkSpace is an online homework planner I developed with some friends from high school. You can save your homework and other events in the planner, and it becomes accessible anywhere you go. It also connects with my school’s scheduling system, automatically pulling your class schedule data and displaying it side-by-side with events that you add.
I wanted to see if it was possible to take the paper planner the school offered and digitize it, like I digitized my notes with NoteToScreen. There had already been an Online Planbook created by another student, but I wasn’t happy with the features it offered, so I decided to make my own.
Since its start, MyHomeworkSpace has grown to serving over 300 members of the my high school’s community, and has expanded to support automatic import of MIT students’ schedules—though anyone can use the website, even without any school affiliation.
DaltonTab is a replacement for your new tab page, developed by a bunch of Dalton students, that lets you easily view your homework, schedules, classes, and more! It automatically retrieves your data from MyHomeworkSpace and other Dalton sites, and even brings you a different background every day!
While it was initially a project intended specifically for the hackathon, it is a useful product and we’ve been able to maintain and expand it since then, releasing several updates containing significant feature improvements, something which I don’t think is the case for many hackathon projects.
Zum Puzzler Pocket is a game I wrote. It was developed entirely in assembly language, and runs on a Nintendo Gameboy Color. (In fact, I produced a cartridge of it, which actually worked on a real Gameboy!)
I’ve created almost a tradition of sorts in my family, creating a new game as a gift for my sister’s birthday every year. Zum Puzzler Pocket was one of these games, the next installment in this series.
Not only did I write the entire game in assembly language, but I wrote my own assembler, gbasm, specifically for developing Gameboy games. I’m very proud of the fact that I was able to take a system that I had basically zero prior experience with (knowing very little about the system’s processor, its assembly language, or its graphics hardware), create a fully-functional game (complete with my own tooling!), and produce a working, physical cartridge. The project was also a learning experience for me, helping me understand concepts and develop skills that could be used in future projects, like my Soviet computer replica.
FCAPlus is the name I gave to a series of patches (along with a Python script to apply them) that take the Android app for FirstClass, the email system my school uses, and resolve various issues I’ve encountered.
The Android app for FirstClass isn’t the greatest, with a dated, glitchy interface that was last updated in 2013, and an average rating of 2 stars. (at least, until it ended up being taken off the Play Store entirely) While I can’t change what my school uses for email, I could try and fix some of these issues, which is why I created FCAPlus.
Even though the code itself is not super complex, it’s something that I’ve found to be incredibly useful and well worth the effort, even when it comes to minor changes like moving the send button on the “new email” screen. In addition, it was my first time with this sort of reverse-engineering and patching of an Android app, and I had to learn Smali in order for my patches to do anything really useful.
tasky is a minimalistic service that let you keep a series of to-do lists. All of your data is stored in MyHomeworkSpace, meaning that the apps themselves are entirely client-side and just need you to grant access to your MyHomeworkSpace accounts.
There were two main reasons I wanted to create tasky: first, I needed a to-do list app, and second, it served as a test of the MyHomeworkSpace API. By building a relatively functional app, as simple as it may be, it made sure that there was nothing missing in the API and verified that it is possible to build something useful on top of MyHomeworkSpace.
The apps themselves can rely entirely on MyHomeworkSpace for authentication and storage, meaning that they do not have nor need a backend, and can synchronize data between devices very easily. In addition, there were little to no changes necessary on the MyHomeworkSpace side of things, again proving that the API is pretty complete in terms of building apps to interact with MyHomeworkSpace.
CoursesPlus was a Chrome extension that took the Courses website, which my school used for teachers to post homework and assignments, and extended it. The extension provided extensive customization options for almost every page on the site, and also added several useful features, such as the ability to hide events.
I wasn’t very happy with the look and feel of the Courses website, so I made some tweaks to the CSS, and realized that I could package these tweaks up as an extension, allowing me to easily distribute them to other students.
While it has become useless with the death of the Courses website, CoursesPlus had a long lifetime, with built-in analytics showing that, during its life, the extension’s code was cumulatively run over half a million times.