posts/*

update:
my computer science teacher advised that this was too ambitious a project, and i won't particularly argue with just spending less time on the project overall and getting more time to work on my own things. unfortunately this project probably won't happen unless a stroke of inspiration hits me when i have 500mg of caffeine in my veins at 2 am on a rainy summer night. sorry to any ib students banking on this becoming a thing, even though i probably would not have released it publically anyways because that sounds like a great way for my entire IA to be voided for plagiarism. instead of this, i will now be writing a new tool for running the elementary and middle schoolers' pinewood derby races, which is still a fun project i guess. plus people will probably actually use it, to be honest i never expected my classmates would touch my tool. anyways, this gets added to the list of projects i didn't finish :(


as a high school student, i am enrolled in IB comp sci. part of the class and the exam is to gain some proficiency with the IB's own rotten amalgamation of python, visual basic and bash scripting they call pseudocode. i am proficient enough as a programmer and pretty good at working out how to get the computer to go about solving a certain problem. part of that extends from my knowledge of how a computer actually works and how a language reads and interpretes what we are giving to it. i also pick up new language syntactical rules pretty easily. this has caused them great distress upon discovering they have to know java and pseudocode for their exams. i thought that for my IA, which requires me to write a program to solve some kind of problem for a client, i could write a pseudocode interpreter and have one of my classmates stand in as the client. there is like one existing project but it is literally just a series of find/replaces that 'transpiles' the pseudocode to javascript and i have found so many bugs in that site that i cannot in any good faith recommend it to anyone to use to check their code. after working on this project for a little bit i am starting to realize this idea may have been born of mythological hubris.

i initially decided to use c++ for this project because i'd rather die than be found voluntarily using java. after about an hour i had little bjarne stroustrup and sun microsystems angels on my left and right shoulders in a ferocious battle over the future of the project as i realized i had left all of my c++ knowledge like a year behind. i still decided to stick with c++ as i have zero excuse for not being semi-proficient at this point. plus, it looks cooler than java. plus plus, i do not want to have to use an ide to maintain any hope or prayer of keeping my project remotely organized. i also never really got java working in my vim configuration.

to be completely honest i didn't bother to learn the pseudocode dialect until actually starting to write an interpreter (which i had no idea how to do). when i looked for the documentation, i found 2 documents. i understand that the whole point of pseudocode is that it isn't actually run, just used to plot logic flows, and such... but the IB actually grades you on your pseudocode syntax, which defeats the entire purpose, in my opinion. that's why i decided to write an interpreter - the syntax is actually strict. there are defined collection types in this language, which have their own very specific list of methods. all variables are declared in ALL CAPS. the loop syntax is god-awful on so many levels. there are like 4 example programs in the documentation and like all of them use different "loop" statement syntaxes. i already know that will be annoying to code.

at my current point in this project i've written like 200 lines of code, a shit ton of comments that just outline what has to happen, and i've tested about 50 of the lines. nothing substantial at all done yet. i am still building my c++ vocabulary back up and plotting how to not make the next month in comp sci class a living hell to comprehend. as terry davis (RIP) once said, a genius admires simplicity while only an idiot admires complexity. i have no illusions that my code will be shit to start but hopefully once i get something working and get the pressure off me to get a product that works i can clean the code way up before submitting it. speaking of the code, i have most of my stuff out there on github or wherever but this will be strictly closed because i am not going to play games with the IB in terms of finding parts (in this case the entire damn project) on the internet. apparently it can invalidate your entire diploma and theres no reason to risk it. honestly, the internet is better off without that code on it anyways.