.-. .
(_) )-. .-. .; ...;...
.: \ .-. `-' .-. ;;-.. .-. . ,';. .-. .'
.::. ).;.-' ;' ; ;; ; `: ;`;;;.;; ;;.;.-' .;
.-:. `:-' `:::'_.;:._.`;;;;'.;` ` `.' '; ;; `:::'.;
(_/ `:._. -.;' ; `.
+---------------------------------------------------------------------+
Hey? i'm Reichy. This is my web-room
Here I will post my creativity, projects, resources and knowledge that interest me.
Topics
// HOME <<
Development of my little Katara programming language. At one point I thought, what if I make my own programming language for my personal tasks and scripts, and take my work from Katara as a basis. Katara is a small toy experiment, when, inspired by UXN, I decided to try to do something similar, but at a higher level
I am building a language from a minimal working version up to more complex things. Because of this, at the current stage the code might look very unoptimized and poorly written, since first and foremost I am doing this for fun and improving the language as my mood allows. This is my personal project, not intended to solve any serious problems, but rather my aspiration to try my hand at creating my own programming language and later develop it into a personal tool (or maybe not, who knows?).
[x] Simple skeleton for the translator, core built-in words from Katara, and REPL
[x] Alternative ways to interact with the language via a TUI editor
[x] Words for basic file system interaction
[x] Redesign the language architecture:
POP, PUSH, CALL. All word logic has been moved to a separate folder and split into thematic modules: math.py, control.py, strings.py...[x] Add logic for saving and loading user-defined words
[x] Expanding the vocabulary :)
[x] Polish compilation and execution of programs from a file
[x] Optimization:
JZ and JNZ opcodeswhen, unless, and do from built-in Python words to token stream control at the compilation level, to eliminate recursive block calls from the VM[x] Write the first small and complete program in a file: Palindrome
[ ] Optimization: Bytecode as a set of bytes instead of Python types
[ ] Add word modes
[ ] Drawing primitives on the screen: canvas, square, point, line...
[ ] Frame loop
[ ] Keyboard, mouse events
// HOME <<
Today I decided to organize the website files and structure. The first thing I needed to do was solve the problem of duplicating the menu, site header, and decorative elements across all site page files. I really didn't want to resort to any frameworks.
When I decided to create this site, I decided that I would do it with the minimal possible technology stack. No libraries, no frameworks. Ideally, not even using scripts. This is a kind of protest against the fact that the frontend industry is mired in dependencies and libraries. Literally, almost every website now weighs an unreasonable amount because of the abundance of build layers and libraries.
Given this, I needed something like a templating engine. My eyes fell on PostHTML. But then, I thought that its functionality might be excessive for me. So I decided to write my own templating engine with the minimal functionality I need. And then, if necessary, expand it.
This way I will strictly control the code, keeping only what I really need.
So the functionality of my templating engine is as simple as possible: I simply introduce a new HTML construct like:
<include src="/path/to/index.html"/>
And my script simply goes through the file passed to it and replaces all such constructs
with the contents of the file whose path is specified in src.
I also decided to structure the project a bit, since now I have the functionality to import in HTML files. For now, it looks like this:
And next to the site itself, the rest of the files are located, for example a small script
for communication with neocities in manager/. In fact, so far it just uploads files from site/dist/.
There's also a justfile here. I love this thing—I use them in almost all my projects elsewhere in the system.
That's all for now. Probably in the future, the structure will become more complex. I may write another post about this later.
// HOME <<
Created by Adelie
// HOME <<
// HOME <<