2019
My First Few Programming Projects
I started truly programming in 2019. I had already learned HTML, CSS, and Javascript, and wanted to start developing my own projects. I created a simple 2d game where the player moves a dot character from the left to the right side of the screen using the arrow keys. I called it 'Dot Game' and published it as a Google Chrome extension. You can play the game by pressing the 'Dot Game' button below the text (unfortunately the game can only be played using a keyboard).
Soon after, I developed another game, this time called 'Aliens' and again published it to the Google Chrome extension store. But, it can only be accessed through this website now. By clicking the buttons below, you can access 'Aliens' and view the code on GitHub. Though I gained more experience since the last game, I still had a lot to learn about programming and developing games.
Finally, using what I learned from the last two games, I made 'Space', an obstacle-avoiding space fighter game. Of my 2019 games, this one was the largest and most polished. But, I was still very inexperienced in game development and programming. As the game grew, it got tougher and tougher to add new features and new levels to the game. The way I structured the game made it hard to use and maintain. Though I had grand ambitions for the game, I was only able to make 18 levels (the last of which is impossible to beat).
I learned a lot about Javascript and general programming through these projects. Each game was an improvement on the last and required me to learn more. But looking back, I would have done a lot of things differently if I were designing these games today.
2020
Developing My Website
I knew HTML, CSS, and Javascript, all of which were languages used for websites and web apps, so I got the domain 'danielwebsite.com', made some simple web pages, and published my own website. I used and still use AWS (Amazon Web Services) for the entire website. Below, you can see what my website used to look like. I still use the same font (Commodore Pixalized) but have now made my website a lot more interesting and colorful.
You can look at the code for my previous website by clicking the button above. Now, in 2024, I recreated the website with a timeline of my coding progress from 2019 to 2024. You're viewing that project right now.
2021
Developing My Game Framework
While making more and more games on my own, I found that I was repeating the same code over and over again. Since my games were made from scratch, I thought, 'Why not make my own game framework with the structure and features I want?' So, I began working on a library of functions and methods I commonly use to create games.
I used this game framework as a way to try out new technologies and techniques. For example, I tried adding Typescript to the project, and now I almost always use it when developing large Javascript projects (Typescript is a programming language that adds static typing to Javascript). I also experimented with more advanced programming techniques, like higher-order functions, and reworked my framework countless times, changing structure and systems. It grew to become a thousand-line game framework/engine with countless features and systems. Eventually, I decided to give the framework the name 'Neutron'. Below, you can see the framework on GitHub.
2022
Example Games Using Framework
Below are some of the games I made using the framework. Most of them are unfinished. They were made more to test the abilities of the framework, like the physics engine or level loading. 'Flappy Bird' is a copy of the mobile 'Flappy Bird' game. I made it to see how easily I could use my framework to develop a simple game. 'Jump Game' and 'Platformer' both test out the physics engine and loading levels (I tried out loading levels with images, though I decided there were better ways to load levels). 'Explore' was a 2d tile-based test game I also made in my framework.
In 'Flappy Bird', you control the bird by pressing the spacebar. For 'Jump Game', you press and release the 'a' and 'd' keys. 'Platformer' requires the use of 'w', 'a', 's', and 'd' keys, along with the space bar. In 'Explore', you navigate using either the 'w', 'a', 's', and 'd' keys or the arrow keys.
2023
Self-Care App
For my IB Computer Science SL IA, I created 'Self-Care' an app created to help my mom with self-care activities, like meditation, taking vitamins, taking supplements, and doing hygienic tasks. My mom helped in designing the app so that it included the features she wanted and it was organized in a simple easy-to-use way. Depending on what the user inputs, the app makes a schedule for the user and reminds them to complete these self-care items. The app also has recommendations that the user can easily add to their schedule.
This was my first time creating an Android application. Before this, I mostly created stuff for the web. For the app, I used Android Studio which uses Java (Java and Javascript are very different languages despite the similarities in name). We learned Java in IB Computer Science SL, so it made sense to make my IB Computer Science project in it.
2024
Fees App & My Website
For my IB Computer Science HL IA, I wanted to create another app, this time for my dad. My dad had trouble tracking fees, spending hours in Excel trying to figure out all his expenses. To simplify his problem, I made an app to keep track of these fees. I called it 'Fees App'. It calculates expected expenses over time periods and expected net profit. It also helps you figure out what expenses to remove to have a positive net profit.
My previous experience developing my 'Self-Care' app helped a lot when developing 'Fees App'. These projects, plus the IB Computer Science class grew my proficiency in Java and my understanding of Object Oriented Design.
This website itself is another coding project. In a couple of weeks, I redesigned my website for the Skyline CTE Showcase to show my programming journey. I tried making it clean, colorful, and interactive (I'll let you judge if I've succeeded).
Though this timeline ends here, this is likely not the end of my programming Journey. I plan on majoring in computer science at college to continue coding and creating. In the future I'll have many more projects and apps to show, hopefully even cooler than the ones I've shown here.