2023 was good!

2023 was the final year of Sixth Form for me, a year which some would consider to be extremely important, due to A Levels and all. It had a relatively slow start for me, up until around about March, which was when the A Levels really kicked in and it got serious.

I did Biology, Chemistry, and Computer Science, because in my deluded state (when I decided my options over 3 years ago), medicine was a consideration (just ignore the lack of Maths). As I took Computer Science, I had to produce a project.

A Level Computer Science Project

This was kind of my major project for 2023, and also the only project that has ever been assessed in any capacity. It is affectionately and creatively named “A Level Computer Science Project”.

Reflection/Advice

This project was an absolute nightmare for me and it taught me to not just scale small, but also to REALLY consider the scale of what you want to implement (something small is not always simple, or you might be worse at it than you think).

I wouldn’t normally be so careful, but I was not careful here. I placed a handicap on myself here by doing an ambitious project for something actually important. I love ambitious projects, but for a project where you won’t get marked on being ambitious, I’d advise just to do something simple.

Keep your personal projects ambitious, for school though, do something you’re already good at. You want life to be simple and to achieve all the criteria as easily as possible. My advice might be different for if your only focus is your project, but for A Levels, you will have 2 or 3 other A Levels to handle (and maybe an EPQ), along with the theory of Computer Science.

I say all this because I wish I didn’t have to dedicate so much time to my project because I would have liked to have focused on other things as this time was very crucial.

The Project Proper

The project exists due to my frustrations with Anki, and also computerised notetaking methods. The project was a web app with a neatly made flashcard side, and an absolutely disastrous notetaking side.

One of the major features was that it should be easy to make flashcards from a note you’re creating, this does work fine, but you just wouldn’t use the notetaking part. Making a What-You-See-Is-What-You-Get (WYSIWGY) editor is a really daunting task that not even Microsoft Word has perfected yet.

I made this project with TypeScript, which was my first time truly using the language. I specifically set out NOT to use React, because at the time, I’d grown frustrated with its performance and overheads. I also just didn’t think React was a good fit for it, I still don’t. The project is purely Webpack and TypeScript. I loved using TypeScript, especially now that I’ve done a lot more strictly-typed programming, using JavaScript can be confusing.

The project got 63/70 (just on an A*), but that’s mainly down to the documentation, which was equally as much of a nightmare to produce as actually coding it.

You can view the repo for it here. The README expresses my thoughts on the project very much similarly.

Regimen Revision

This project was kind of a bonus one, and also arguably not really a proper project.

Our chosen method of revision (amongst my friends at school) was just to do a ton of past paper questions, and specifically learn how to answer questions based off of the mark scheme.

We needed a way to search for questions across literally every question paper of a specific course. Exam boards will provide you with all past papers (except the year prior due to them being used as mocks), but the issue is that this will be a lot of PDFs, which you’d have to traverse through one by one.

I wrote a series of scripts to allow me to combine ALL exam papers (and mark schemes) into 2 HUGE PDFs (one for papers, one for mark schemes). This allowed you to easily Control + F to search for a term, and get all appearances of it across the assessed papers.

It also annotated all the pages of each PDF to allow you to easily find the mark scheme (and thus the answer) of a paper.

I used these tools to create “mega PDFs” for each of the courses I was taking, and then I uploaded everything necessary for it to work onto a website I named “Regimen Revision”. I also threw all of my Biology practicals on there so that people in my class could sneakily cite my work if it was needed.

These tools saved a lot of time, and the process (along with the website) only took about 4 days (after school) to properly get working. Only I know how to use them, and the process has to be done in a very specific way; I want to make the tools public so that anyone will be able to do this, as the PDFs I produced apparently helped a lot of people in my year.

The tools are just a set of Node.js scripts, which also use Shell commands at certain points.

Goodbye A Levels (life)

23 June was the day of my final exam, Chemistry Paper 3. After this, there was a huge wait until results day.

This time went extremely quickly, but it feels like ages ago now. We managed to save up and go on two holidays, to Brighton (about a week after my final exam), and to Santander in Spain (months later). Two dramatically different places, but it was my first time going to Spain.

Brighton was cool, I’d been a couple of times. We went to Eastbourne last year, which I preferred as it was much more calm. And if you wanted to go to Brighton from Eastbourne, there were very regular buses.

Santander was really nice, it wasn’t touristy, which definitely made me realise I need to work on my Spanish. We went at a time where the weather was “bad”, but it was still much better than the weather here at the time.

Hello Real Life (life)

Real life (gap year) didn’t feel like it started until everyone went to uni, and I was left behind. I can’t remember much of what I did until then, but I think I had a play about with Unity and Godot at some point, which I do want to come back to.

My first project as a free man (and latest project) was Citrahold.

Citrahold

When I was in Year 7, I got Pokemon Sun. I never finished it, but I always really liked the setting.

Around October, I got really interested in the (3)DS Homebrew scene due to a video I saw on YouTube. My sister had cracked my 3DS a few years ago, so it had a bunch of Homebrew stuff on it.

I decided to give Pokemon Sun another go, and immediately realised I couldn’t fully enjoy a game on such a small display (even with a New 3DS XL). I dumped the game and got it running on Citra (the 3DS emulator), where it ran amazingly, and at 1080p.

This created a new issue though, what if I still want to play on the 3DS? I’m often away from home, so even though the 3DS is a compromise, I might still want to play on there when I’m not home. That’s the whole point of a handheld console.

Using Checkpoint, you can create a save, then pop the SD card out of the 3DS, then copy it onto Citra’s directory. Or you can use FTPD to move the save via FTP. These are solutions, but add many steps along the way to the point where you’d be surprised that there was no easier way to do this.

Still relying on Checkpoint, I made a set of tools where you could move saves back and forth within a matter of seconds. This project killed multiple birds with one stone as I’d already really wanted to learn C++. The only way to code for the 3DS is with C/C++, so I was forced to learn it if I wanted to make my Homebrew software.

Sticking to the C++ theme, I made a desktop client with Qt. I broke the whole C++ theme when it came to the backend, I needed something extremely simple to prototype with, and so I just stuck with Express.js and Node.js.

The front end uses no frameworks, it’s just purely JavaScript and HTML. This was just to make things simple, but I want to learn Svelte, so I’m considering doing a remake at some point.

It took a few weeks, but I got everything working, and I’d learnt a lot about C++ along the way, mainly how to actually program in it. I’m not really big into Homebrew, so I’m quite surprised I ended up making this, but it was something fairly simple that I had an idea on how to do (minus the C++ stuff initially).

I’m now waiting for the 3DS Homebrew app to be added to Universal Updater (basically a Homebrew app store). I’ve not done any promotion for it yet, yet somehow it’s gained a few obviously human users. If it doesn’t get added to Universal Updater soon, I think I’ll just promote it regardless. My friend/loyal volunteer pen-tester tells me to promote it on GBATemp.

Here are the repos for each aspect of the project.

2024 (life)

2024 will hopefully be a hell of a year for me. I want to expand my C++ knowledge, get back into React (begrudgingly, it’s out of necessity), and even make a couple games for fun (despite mainly being a software developer, it’s always been something I’ve been interested in). Generally, I just want to learn a lot of stuff, and make a lot of things.

I’m learning circuitry as I got an Arduino for Christmas (Uno R4 Wifi), and as I have about a million Raspberry Pi’s. I need a way to switch devices (along with headphones) between different computers, and decent KVM switches are absolutely overpriced, so I’m hoping I can make my own… Let’s just pray I don’t destroy valuable electronics along the way.

Thank you for reading!
Contact for any purposes: jamie@regimen.social