Of all the languages to write this in, why did i choose C#?
This may not look like much, but the C# interpreter for 3DS is very beta, so a lot of this was (no joke) figuring out how to summon the keyboard.
Of all the languages to write this in, why did i choose C#?
This may not look like much, but the C# interpreter for 3DS is very beta, so a lot of this was (no joke) figuring out how to summon the keyboard.
I hate types.
Behold this code, I implore you. Behold its splendor, such as “dict[type, list[type]]” and its multiple exceptions containing several question marks.
Made a few final touchups to the readme, built a CLI to run asm without having to edit python files.
Punch up my readme in prep for shipping.
I built a TUI version of the webapp! It’s not as pretty as I’d like, but its good enough.
Most of this time was fighting a losing battle against CSS. But in my darkest hour (~2:00 AM, last night), a knight in shining armor came to rescue me, Claude.
The actual code part was pretty easy, mostly just hooking up methods to buttons and making my assembler work in micropython. All I have left now is writing a tutorial, so people can better figure out how this works.
So, I’m working on a parallel implementation of an esoteric-ish assembly language called subleq. The defining feature of which is that it only has a single instruction, Subtract and jump if Less than or EQual to zero (hence the name). At first, I thought this was going to be a simple project. Maybe 4 hours writing the implementation and 2 hours writing a frontend. Boy, was I wrong.
At first it was all going to plan, I had most of it done. I just needed to write a few demo programs for multiprocessing and then I plonk it into web assembly and give it a UI. Then the worms started talking to me. They said, “you know how painful writing subleq by hand is, you should make some helper functions, like you had when you first learned about subleq.” So I made a few functions, addition, subtraction, jumping, and inverting values. But then I heard the worms voice, echoing from the distance, “Multiplication and division would be easy, and it would mean you could find primes.”
The worms lied to me, as they often do. It was in fact not easy. Multiplication was less painful. Its just repeated addition. BUT, i have to deal with negatives. So, the simpler of the two became spaghetti. And that was the east one! Next it was time for division. Division (and it’s twin, modulo) legitimately could have been most of this time. I’m not exactly sure how my division routine works, because it was written at midnight. But what I can tell you is that it involves magic numbers, loops, and subtracting zero from zero. Also it broke my compiler, flinging the function pointer directly into my variables, requiring multiple patch jobs to the division function and my compiler. But now! Finally! I have a working calculator!
Now to parallelize…
Got parallel working! Now i just need to hook it up to HTML canvas and maybe make some convenience functions.
Finally got the basics of this done! Assembler is fully working and I have my IO such that I could theoretically glue multiple heads/processors together. Emphasis on theoretically.