n-channel

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit a4f689e78cdd9a7fadda7d399cb78997c8bd7e6f
parent 4e86f87db8e5cd5414aa23ef87b9036df4ea47f6
Author: Samdal <samdal@protonmail.com>
Date:   Mon, 24 Feb 2025 03:36:35 +0100

fix old projects

Diffstat:
M_posts/2025-02-23-my-old-projects.md | 194++++++++++++++++++++++++++++++++++++++++---------------------------------------
1 file changed, 98 insertions(+), 96 deletions(-)

diff --git a/_posts/2025-02-23-my-old-projects.md b/_posts/2025-02-23-my-old-projects.md @@ -7,102 +7,113 @@ comments: true tags: [writing, programming, electronics, C] --- -I mostly developed as a programmer through personal projects, reading others code, and watching YouTube. +I mostly developed as a programmer through personal projects, reading good code I've found and watching YouTube. -When it comes to other people's code, [Gunslinger](https://github.com/MrFrenik/gunslinger) and later the [RAD Debugger](https://github.com/EpicGamesExt/raddebugger) have thought me the most. +When it comes to other people's code, the [Gunslinger graphics framework](https://github.com/MrFrenik/gunslinger) and later the [RAD Debugger project](https://github.com/EpicGamesExt/raddebugger) have taught me the most. -As for videos, at first I actually watched YouTubers like [The Cherno](https://www.youtube.com/@TheCherno), [Bisqwit](https://www.youtube.com/@Bisqwit) and [javidx9](https://www.youtube.com/@javidx9), -and later people you can see in [this post]({% post_url 2025-02-21-Software-Rants %}). +As for videos, at first I actually watched YouTubers like [The Cherno](https://www.youtube.com/@TheCherno), [Bisqwit](https://www.youtube.com/@Bisqwit) and [javidx9](https://www.youtube.com/@javidx9). +I have also watched a lot of different electronics channels, but I won't be mentioning them here. +Later i started watching the people you can see in [this post]({% post_url 2025-02-21-Software-Rants %}), but I don't spend much time watching programming YouTubers anymore. -It's harder to concisely say the projects I've done, so I have some of them listed here.\ -There are some projects which I didn't bother mentioning, or are proprietary. +It's harder to concisely say the projects I've done, so I have some of them listed here. ## Unreal Engine -I started my programming journey learning C++ for Unreal engine using [Udemy](https://www.udemy.com/course/unrealcourse) during the first summer break of secondary school. -Here I followed along as they thought the basics of C++, then jumped into developing some simple games. +I started my programming journey during the first summer break of secondary school. I used a [Udemy course](https://www.udemy.com/course/unrealcourse) to learn C++ for the Unreal engine. -I was really overwhelmed, and couldn't solve anything on my own. But I got a large stream of info, and it set me up for further learning. +Initially I was really overwhelmed. I couldn't solve anything on my own, but I got a large stream of info. It set me up for further learning. -After I had worked my way through a good chunk of the course, I started getting a bit bored, and wanted to try making a game on my own. -To make it I ended up using Blueprint, but I just got stuck at rudimentary logic and math. +I started getting bored after working through a good chunk of the course. +This made me attempt making a game on my own. Instead of C++ I used Blueprint, but I still got stuck at rudimentary logic and math. <a name="weeb-bot"> <a/> ## Weeb Bot -"[Weeb boot](https://github.com/Samdal/WeebBot)" was my first independent project, as cringe at it may be. It was a discord bot written in Golang. +As cringe as it may be, "[Weeb boot](https://github.com/Samdal/WeebBot)" was my first real independent project. It was a discord bot written in Golang. This project was made in 2018-2019 during secondary school (I was like 14-15 years old). -I didn't really know anything about programming practices, but I could read examples and make if statements. +I didn't really know anything about programming practices, but I could read examples and write if statements. -The bot mostly did some simple storage, automated responses, string transformations and web scraping.\ -I later added the [anilist GraphQL API](https://anilist.co/graphiql) to it. +The bot mostly provided storage retrieval, automated responses, string transformations and web scraping.\ +I later added the [Anilist GraphQL API](https://anilist.co/graphiql) to it. ![weeb bot screenshot](/assets/images/old_projects/weebbot.jpeg) {: style="text-align: center;"} ## Drones -I have been involved in making two drones so far. The first one was mostly made by my dad. He made the main structure using wood and plastic boxes. -It was then fitted it with a commercial flight-controller and motors. -It never flew that great though, which is why we decided to buy a ready-made kit for a drone frame, and a brand new flight-controller. Although I assembled it and solder it together, I never got far enough to fly it or test it properly. +I have been involved in making two drones so far. + +The first one was mostly made by my dad. He made the main structure using wood and a plastic box for the electronics housing. +It was then fitted it with a commercial flight-controller and motors. It never flew that great when we tested it, which is why we decided to buy a ready-made kit for a drone frame. + +This time I assembled and solder it together, I never got far enough to fly it or test it properly. +Partially because the configuration tool for the new flight-controller was really hard to work with, and I was unsure if I had some broken connections. +I didn't really make it in a repairable manner, so it was hard to check. ## Snow-plower The snow-plower was a project I made during roughly the same time as [Weeb Bot](#weeb-bot), maybe slightly later. -It was made with a raspberry PI running [ROS](https://www.ros.org/). The main navigation and mapping method was a lidar. It would then create a path to plow snow autonomously, a bit like a robot vacuum but for snow. +It was made with a raspberry PI running [ROS](https://www.ros.org/). The main navigation and mapping were done with a lidar. ![lidar](/assets/images/old_projects/lidar.png) {: style="text-align: center;"} -The snow-plower used an old defective snow blower (it had tracks, so it looked cool). +It was then going to use it's sensor information to autonomously plow the snow, a bit like a robot vacuum. + +The snow-plower's hull was an old defective snow blower (it had tracks, so it looked cool). The plan was to fit it with electro motors to replace the gasoline engine that I removed. -The project never got further than very rudimentary mappings with the lidar and half-working simulations, but it would've been cool to complete it. +The project never got further than very rudimentary mappings with the lidar and half-working simulations. +It would be cool to complete it sometime though now that I'm more experienced. <a name="traffic-light"></a> ## Traffic light -A traffic light simulation I made with an Arduino. This project was the first time I tried to properly use OOP, which I never ended up liking. -Read my [post about OOP]({ % post_url 2025-02-22-implications-of-OOP }), or my [my list of software rants worth watching]({% post_url 2025-02-21-Software-Rants %}) if you want to know more about my stance about it now. +I made a traffic light simulation with an Arduino. This project was the first time I properly tried to use OOP, which I never ended up liking. +Read my [post about OOP]({ % post_url 2025-02-22-implications-of-OOP }), or [my list of software rants worth watching]({% post_url 2025-02-21-Software-Rants %}) if you want to know more about my stance about it now. -This was actually a school project, although it never really ended up counting towards the grade since there was such a low completion rate. +This was actually a school project. It never really ended up counting towards my grade, since there was such a low completion rate. ![Traffic light](/assets/images/old_projects/traffic_light.jpeg) {: style="text-align: center;"} ## Anders Tale (Godot) -This is the proper "game" I've been working on. I originally started in early 2021. Right after I did the [Traffic Light](#traffic-light). I've been programming the game mostly alone, but it's a "group" project kind of. +This is the proper "game" I've been working on. Originally I started working on it in early 2021, right after I did the [Traffic Light](#traffic-light). -The original idea for the game isn't mine. It was one in my friend group's, and the game has been a running joke for a while. +I've been mostly programming on the game alone, but it's a "group" project. +The original idea for the game wasn't mine, it was a friend who came up with it. The concept of the game has been a running joke in my friend group for many years. -This game has been an on-an off effort from me, and main source code is not something I have public. There is a joke [website](https://stelaug.github.io/) for the game though (not made by me). +Programming on the game has been an on-and off effort from me. The main source code is not something I have public, but there is a [joke website](https://stelaug.github.io/) you can check out (not made by me). ![Anders tale cover art](https://stelaug.github.io/bilder/ALL_THEY_FEAR_IS_ANDERS_s.png) {: style="text-align: center;"} -The game was always made with Co-Op in mind. Although the campaign was supposed to be the main highlight of the game, the PvP mode ended up seeing the most development. The free-for-all game mode was actually pretty fun, and we genuinely played it. +The game was made with Co-Op in mind. The campaign was supposed to be the highlight of the game, but the PvP mode ended up seeing the most development. +The free-for-all was actually very fun, and we genuinely played it. ![Anders tale screenshot](/assets/images/old_projects/anders_web.jpeg) {: style="text-align: center;"} -The game was made in GDScript, and started development in Godot 3. One of the biggest stop-points was that I couldn't get lighting to be anywhere near performant, so the game looked pretty bad. +The game was made using GDScript and started development in Godot 3. +One of the biggest stop-points was that lighting wasn't anywhere near performant, so the game looked pretty bad. -I actually recently did some development on it during the end of summer break in 2024. I began from a clean slate in Godot 4, and it was surprising how much better I am at programming since I first had a go at the game. The stopper this time was that I have gotten so used to working without game engines, that it almost felt in the way. Some data-oriented approaches I want to do just require you to fight against the engine, which was a bit painful. I should try to have a go at it again sometime though. +I actually picked the project up again during the end of summer break in 2024. I started fresh from a clean slate in Godot 4, and it was surprising how far I've come as a programmer. +The stopper that time was that I have gotten so used to working without game engines that it almost felt in the way. Some data-oriented approaches makes you to fight against it, which was a bit painful. +I should try to have a go at it again though. <a name="rnm"></a> ## Rick & Morty Portal Gun -Together with a friend from primary school, we made a [Rick & Morty portal gun](https://github.com/Samdal/r-and-m-portal-gun). He led the physical design, while I did the electronics. +I made a [Rick & Morty portal gun](https://github.com/Samdal/r-and-m-portal-gun) together with a friend from primary school. He led the physical design, while I did the electronics. -The project was made in a pretty short time during late May - early June of 2021, it was meant as a parting gift my friend was supposed to give. -(I have not seen Rick & Morty myself) +The project was made in a pretty short time during late May - early June of 2021. The portal gun was meant as a parting gift my friend was going to give to someone. -It was made using an Arduino, an mp3 player, a rotary encoder, and a 3-wide 7-segment display.\ -It had a boot-up sequence, and allowed you to "select" different world co-ordinates, with a bias towards C137. -Clicking the rotary encoder fired the gun, enabling the front lights and playing a sound. +It was made using an Arduino, an mp3 player, a rotary encoder, and a three wide 7-segment display.\ +It had a boot-up sequence, and allowed you to "select" different world coordinates, with a bias towards C137. +Depressing the rotary encoder fired the gun, enabling the front lights and playing a sound effect. It was powered with AA batteries. ![r&m picute back](/assets/images/old_projects/rnm1.jpeg) @@ -112,7 +123,7 @@ It was powered with AA batteries. ## Minesweeper -[Minesweeper](https://github.com/Samdal/minesweeper) was my first C project, and it marked the beginning of a new era for me. I did it during the end of April in 2021, and it used Raylib to do the graphics. +[Minesweeper](https://github.com/Samdal/minesweeper) was my first C project, and it marked the beginning of a new era for me. It was made during the end of April in 2021, and used Raylib to do the graphics. ![Minesweeper screenshot](/assets/images/old_projects/minesweeper.jpeg) {: style="text-align: center;"} @@ -120,12 +131,12 @@ It was powered with AA batteries. <a name="gs_snake"></a> ## gs_snake -[gs_snake](https://github.com/Samdal/gs_snake) was a super simple snake game I made with [Gunsligner](https://github.com/MrFrenik/gunslinger). +[gs_snake](https://github.com/Samdal/gs_snake) was a snake clone I made with [Gunsligner](https://github.com/MrFrenik/gunslinger). -I have since then made programmed a lot with gunslinger, and I am active in it's discord server. -Discovering gunslinger has been the most developing part for me as an early developer. +I have since then programmed a lot with gunslinger, and I am active in it's discord server. -It lead me towards the path of discovering new ways to program. I learned a lot from reading John's code, and I found out about Jonathan Blow, Casey Muratory, Handmade Hero and Ryan Fleury. +Discovering gunslinger was a critical part for my development as an early programmer. +It made me discover new ways to program. I learned a lot from reading John's code. Through it's community, I also learned about Jonathan Blow, Casey Muratory, Handmade Hero and Ryan Fleury. ![gs_snake screenshot](https://github.com/Samdal/gs_snake/raw/main/screen.png) {: style="text-align: center;"} @@ -133,9 +144,10 @@ It lead me towards the path of discovering new ways to program. I learned a lot <a name="HS"></a> ## HS -[HS](https://github.com/Samdal/hs) is an OpenGL wrapper. It mostly just simplifies OpenGL resource creation and usage. +[HS](https://github.com/Samdal/hs) is an OpenGL wrapper. It mostly simplifies resource creation and usage. -I wouldn't recommend using it, it was simply something I wanted to make while I was following along [Learn OpenGL](https://learnopengl.com/) after I completed [gs_snake](#gs_snake). +It was a project I always wanted to make while I was following along [Learn OpenGL](https://learnopengl.com/) after I completed [gs_snake](#gs_snake). +The project is very incomplete, as I never made anything proper with it. ![HS Screenshot](/assets/images/old_projects/hs.jpeg) {: style="text-align: center;"} @@ -143,34 +155,34 @@ I wouldn't recommend using it, it was simply something I wanted to make while I ## Anders Tale (C version) -I figured I could use [HS](#HS) to make something. Since I already had the ideas for anders tale laid out, and it was a fairly simple 2D game. I thought that would be a nice way to have some focus. - -I don't remember that much from it, but I tried to apply some of the ideas I got from Jonathan Blow in the way I did my entities, by separating out hot/cold. +I figured I could use [HS](#HS) to make something, and re-making anders tale seemed like fun. I thought that would be a nice way to have some focus. -The game had a simple tile-map system, and a AABB collision system. It also supported "allowed-areas", i.e the player has to stay inside a room/corridor, instead of mapping each wall as large rectangles. +The only notable part about the game was it's tile-map system and a AABB collision. It also supported "allowed-areas", which forced the player to stay inside a room, instead of mapping each wall as large collision shapes. I never got that far with this version of anders tale though. ## Anders Tale Room editor -[Anders Tale Room editor](https://github.com/Samdal/anders_tale_room_editor) is a TileMap editor for the C version of Anders Tale which I wanted to try myself at making. +[Anders Tale Room editor](https://github.com/Samdal/anders_tale_room_editor) was the tile-map editor for the C version of Anders Tale. The project was made with [HS](#HS) and [Nuklear](https://github.com/Immediate-Mode-UI/Nuklear) for the Gui. +This project was my first real introduction to serialisation and de-serialisation, and I made a custom file-format for the tile-maps. +During the project I also added font rendering through STB TrueType, which taught me a lot. + ![Anders Tale Room editor Screenshot](https://github.com/Samdal/anders_tale_room_editor/raw/main/screenshot.png) {: style="text-align: center;"} ## Ghostbusters Costume -The [Ghostbusters Costume](https://github.com/Samdal/ProtonPack) is another project I made together with my friend from primary, or rather, this is the main project we've had together. - -We are both avid Ghostbusters fans, and decided during primary school that we were going to make a ghostbusters costume one day. We have made many revisions, probably like 4 in total I think? +The [Ghostbusters Costume](https://github.com/Samdal/ProtonPack) is another project I made together with my friend from primary. This is the main project we've had together. -Because of this the code and electronics has gone through many revisions as well. +We are both avid Ghostbusters fans. During primary school we decided that one day we were going to make a ghostbusters costume. +As with the [Rick & Morty Portal Gun](#rnm), my friend did most of the physical design, while I did the electronics. -All of them before the were awful attempts that would've never seen success. As with the [Rick & Morty Portal Gun](#rnm), my friend did most of the physical design and leading, while I did the electronics. +We made many revisions over the years, naturally all of the early ones were awful attempts as we were very young. -The project used an arduino mega, a mp3 player (same as in the portal gun), neopixels, normal leds, audio amplifier, a lithium drill battery, both a 12V and 5V supply, vibrator motor in the gun, a bunch of buttons and switches and a rotary encoder. Pretty much all lights, sounds and effects are made to be awesome and somewhat movie accurate. +The final project used an arduino mega connected to an mp3 player, neopixels, normal leds, audio amplifier, a lithium drill battery, both a 12V and 5V supply, vibrator motor in the gun, a bunch of buttons and switches and a rotary encoder. All the lights, sounds and effects were made to be awesome and movie accurate. ![Ghostbusters Pack](/assets/images/old_projects/gb.jpeg) ![Ghostbusters Pack lights](/assets/images/old_projects/gb_pinball.jpeg) @@ -181,16 +193,18 @@ The project used an arduino mega, a mp3 player (same as in the portal gun), neop [SE](https://github.com/Samdal/se), the *Simple Editor* -This one is actually a fairly decently sized project. I mostly made it in December 2021 and early 2022. My main editor is Doom Emacs, so it is essentially a feature copy from that. +This project was actually a fairly decently sized project. I mostly made it during December 2021 and early 2022. + +My main editor was (and still is) Doom Emacs. Emacs is extremely slow, and I envisioned an editor with the features that I used without the bloat. -I started off with the code base of [ST, the Suckless Terminal](https://st.suckless.org/). I ripped out the "terminal" part and was left with a simple monospace text renderer, which only pretty much only used X11 and Xft as it's dependencies. +I started off with the code base of [ST, the Suckless Terminal](https://st.suckless.org/). I ripped out the "terminal" part and was left with a minimal X11/Xft monospace text renderer. -It's made in a super simple and Suckless fashion. It's configured through changing the "source file", i.e a `config.h`/`config.c`. -SE has a callback interface which allows you to register extensions without inserting code into the main files. +SE continued in a simple and Suckless fashion. It was configured through changing the `config.c` file. +It had a callback interface which allowed you to register extensions without inserting code into the core files. -I didn't really know anything about parsing files or using regex for that matter, so the syntax highlighting and auto-indents are done with a custom state-machine-like rule system. +The syntax highlighting and auto-indents are done with a custom state-machine-like rule system. -The editor had *most* of your everyday vim key-binds. The main thing it had missing was macros and markers. +I started implementing a fairly complete vim support, which was a larger undertaking than I expected. The main missing features were only macros and markers. ![SE screenshot 1](https://github.com/Samdal/se/raw/master/image1.png) ![SE screenshot 2](https://github.com/Samdal/se/raw/master/image2.png) @@ -199,13 +213,12 @@ The editor had *most* of your everyday vim key-binds. The main thing it had miss ## ArduinoNative -[ArduinoNative](https://github.com/Samdal/ArduinoNative) is a header-only C++ project which implements the same top-level features as the Arduino library. +[ArduinoNative](https://github.com/Samdal/ArduinoNative) was a header-only C++ project which implemented the same top-level features as the Arduino library. -It also adds some debug helper functionality, and ways of interfacing with the "virtual board". +It used the console to expose a virtual board interface and monitoring functionality. -This project is probably the most usable, of the bunch. I don't really think the code is that great, but the interface is pretty clean. - -Compared to other ways of simulating an arduino, or otherwise working with one without having physical hardware connected, using ArduinoNative is extremely simple. +TArduinoNative is probably the most usable of my projects. I don't really think the code is that great, but the interface is pretty clean. +Compared to other ways of simulating an arduino, using ArduinoNative is very simple. Serial and AnalogRead Example ``` @@ -261,22 +274,20 @@ nisse __ |____)_) ``` -I kind of made this project during an evening in November of 2022, I did some cleanup and additions during the following week though. +I made this project during an evening in November of 2022, but I did some cleanup and additions during the following week. -It's basically just a S expression parser with some macro helpers. -It's made raw without a tokenzier, and with only libC. -If i were to make it again I would use a slice based string, arena allocator and made it with a tokenizer. +It's basically just an S expression parser with some helper macros. +Like my previous parsing projects, it's made raw without a tokenzier. +If i were to make it again I would use a slice based string, an arena allocator and made it with a tokenizer. It doesn't support escaped characters, which is probably the main feature it lacks. -This project would've been a great exercise in making a more proper parser though, so I might re-do it. - +This project would've been a good exercise in making a proper parser, so I might re-do it. ## gs_ddt -[Gunsligner Drop-Down Terminal](https://github.com/Samdal/gs_ddt). -It's a simple drop-down terminal I decided to write one day in late 2022 when I had just started college. -It's made for development use in Gunslinger. +[Gunsligner Drop-Down Terminal](https://github.com/Samdal/gs_ddt) was a simple debug terminal I decided to write when I started college. +It was made for invoking custom commands inside your game. It's actually been very useful, and I've had it in all my gunslinger projects since. I also made an [example program](https://github.com/Samdal/gs_ddt_ex) for it. @@ -285,22 +296,22 @@ I also made an [example program](https://github.com/Samdal/gs_ddt_ex) for it. ## gs_avdecode -[gs_avdecode](https://github.com/Samdal/gs_avdecode) is video decoder for embedding in gunslinger which uses the avcodec API from ffmpeg. +[gs_avdecode](https://github.com/Samdal/gs_avdecode) was video decoder for embedding in gunslinger, which uses the avcodec API from ffmpeg. -I also made an [example program](https://github.com/Samdal/gs_avdecode_ex) for this utility. +I made an [example program](https://github.com/Samdal/gs_avdecode_ex) for the utility too. -The latest version of the program isn't actually the one github, as I have decided to keep it private (it's a bit more embedded into work code now). The newer version is quite a bit better though. +The latest revision of the program isn't the one github, as I decided to keep it private (it's a bit more integrated into work code now). -I still think `gs_avdecode` is a meh reference if you wish to learn how to use the avcodec. There are some examples out there, and the documentation isn't that bad, but I never saw a simple and mostly complete example like `gs_avdecode`. +I still think `gs_avdecode` is an alright reference if you wish to learn avcodec. ## gs_bucket_array -[gs_bucket_array](https://github.com/Samdal/gs_bucket_array) is a generic data structure for gunslinger. +[gs_bucket_array](https://github.com/Samdal/gs_bucket_array) was a generic data structure for gunslinger. -It's similar to `std::deque`. It's basically a dynamic array which contains pointers to *chunks* or *buckets*. This gives it fast insert/delete, while also being pointer stable. +It operates similar to `std::deque`. Essentially it's a dynamic array which contains pointers to *chunks* or *buckets*. The array grows by adding a new bucket, which gives it fast insert/delete times while also being pointer stable. -The implementation also has an optional packed free-list. +The implementation additionally came with an optional packed free-list. -I don't use this project anymore though, I just use linked lists since they are simpler. +I don't use this project anymore though, as I would rather use a linked lists or static allocation. ``` gs_bucket_array(float) ba = gs_bucket_array_new(float, 100); // Bucket array with internal 'float' data, where each bucket is 100 floats @@ -316,17 +327,6 @@ uint32_t ba_size = gs_bucket_array_size(ba) // returns index gs_bucket_array_free(ba) // Free's the entire array, make sure your own elements are free'd first ``` -## meep -[meep](https://github.com/Samdal/meep) is just a dumb tool that sends a desktop notification if you type `meep`, `mehehe` or `gloop`. - -It uses `libnotify` for the notifications, and X11 for the keylogger. - -Yes, X11 lets programs just keylog everything.\ -Yes, I made this in like a couple hours because I figiured I hadn't done a personal project in a while. - -![meep screenshot](/assets/images/old_projects/meep.jpeg) -{: style="text-align: center;"} - ## awaC [AWA5.0](https://github.com/TempTempai/AWA5.0) is a stack-based [esoteric programming language](https://en.wikipedia.org/wiki/Esoteric_programming_language) where you manually write the bits with "wa" or " awa". @@ -334,11 +334,13 @@ Yes, I made this in like a couple hours because I figiured I hadn't done a perso ![awa screenshot](/assets/images/old_projects/awaC.jpeg) {: style="text-align: center;"} -The original implementation was done in JavaScript, and others have also made their own interpreters and compilers for it. I made mine in C and called it [awaC](https://github.com/Samdal/awaC?tab=readme-ov-file) +The original implementation was done in JavaScript. Others have also made their own interpreters and compilers for it. I made mine in C and called it [awaC](https://github.com/Samdal/awaC?tab=readme-ov-file) -Originally the plan was to use this project to make a graphical debugger for the language, but I never got to that part. +Originally the plan was to use this project to make a graphical debugger, but I never got to that part. +The only debug functionality the interpreter provides is printing the stack and program counter. -I did add pretty useful printing of the stack and program counter. Together with the `syscall` operation I added, I ended up making a web server in this language, and subsequently "hosting" a JavaScript interpreter of AWA5.0 in my AwaC web server. + After watching a Tsoding stream about making a web server in fasm, I knew I wanted to do that with AWA5.0. All I needed was to extend the byte-code with a `syscall` operation, and painstakingly write over a kilobyte of `awa awawaw awawaw awawa`. +The website I ended up hosting was a JavaScript interpreter of AWA5.0. ![awa web server screenshot](/assets/images/old_projects/awaC2.jpeg) {: style="text-align: center;"}