n-channel

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

commit dbeda96e92915990c3c47f3032de3ca6d350901d
parent f64fb1e126936d9d59edf6c86048eb9f526ead70
Author: Samdal <samdal@protonmail.com>
Date:   Tue, 25 Feb 2025 18:25:53 +0100

try to improve vocab in old projects

Diffstat:
M_posts/2025-02-23-my-old-projects.md | 101++++++++++++++++++++++++++++++++++++++-----------------------------------------
1 file changed, 49 insertions(+), 52 deletions(-)

diff --git a/_posts/2025-02-23-my-old-projects.md b/_posts/2025-02-23-my-old-projects.md @@ -11,25 +11,24 @@ tags: [writing, programming, electronics, C] I primarily developed as a programmer through personal projects, reading good code I've found, and watching YouTube. -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. +I've learned a lot from the [Gunslinger graphics framework](https://github.com/MrFrenik/gunslinger) and later the [RAD Debugger project](https://github.com/EpicGamesExt/raddebugger). -As for videos, at first, I 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 on, 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. +At first I watched YouTubers like [The Cherno](https://www.youtube.com/@TheCherno), [Bisqwit](https://www.youtube.com/@Bisqwit) and [javidx9](https://www.youtube.com/@javidx9). +Later I watched the people you can see in [this post]({% post_url 2025-02-21-Software-Rants %}), but I don't spend much time on YouTube anymore. +I have also watched a lot of different electronics channels. # The projects (in order) -It's hard to mention my completed projects concisely, but I have some of them listed here. +It's difficult to mention my completed projects concisely, but I tried listing most of them here. ## Unreal Engine -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. +My programming journey started during the first summer break of secondary school. I learned C++ and Unreal Engine with a [Udemy course](https://www.udemy.com/course/unrealcourse). -Initially, it was overwhelming. I couldn't solve anything by myself. -On the bright side, I got a large stream of information. It set me up for further learning. +It was overwhelming. I couldn't solve anything by myself. +On the bright side, I received a large stream of information, which set me up for further learning. -I started getting bored after working through a good chunk of the course. -I decided to attempt creating a game on my own. Instead of C++, I used Blueprint, but I still got stuck at rudimentary logic and math. +I got bored after working through a good chunk of the course, and I attempted to create a game with what I learned. Instead of C++, I used Blueprint, but I still got stuck at rudimentary logic and math. <a name="weeb-bot"> <a/> ## Weeb Bot @@ -37,9 +36,9 @@ I decided to attempt creating a game on my own. Instead of C++, I used Blueprint As cringe as it may be, "[Weeb boot](https://github.com/Samdal/WeebBot)" was my first successful independent project. It was a discord bot written in Golang. I made the bot in 2018-2019 during secondary school (I was around 14-15 years old). -I still didn't know much programming. I could only read examples and write if statements. +I didn't know much programming. I could only read examples and write if statements. -The bot mostly provided storage retrieval, automated responses, string transformations, and web scraping.\ +The bot provided storage retrieval, automated responses, string transformations, and web scraping.\ I later added the [Anilist GraphQL API](https://anilist.co/graphiql). ![weeb bot screenshot](/assets/images/old_projects/weebbot.jpeg) @@ -47,18 +46,18 @@ I later added the [Anilist GraphQL API](https://anilist.co/graphiql). ## Drones -To date, I've been involved in making two drones. +I've been involved in making two drones. -My dad mostly made the first one. He made the structure using wood and a plastic box to house the electronics. +My dad made the first one. He made the structure using wood and a plastic box to house the electronics. The drone had a commercial flight controller and motors. Sadly, it never flew that great when we tested it. -The second time, my dad decided to buy a ready-made kit for a drone frame. I assembled and soldered it together. However, I never got far enough to fly and test it properly. -Partially because the configuration tool for the new flight controller was hard to work with, and I was unsure if I had some broken connections. +The second time, we decided to buy a ready-made kit for a drone frame. I assembled and soldered it together. However, I never got far enough to fly and test it properly. +This was partly because the configuration tool for the new flight controller was hard to use, and I was unsure if I had broken connections. I didn't assemble it in a repairable manner, so it was hard to debug. ## Snow plower -The snow plower is a project I made during roughly the same time as [Weeb Bot](#weeb-bot), maybe slightly later. +I made the snow plower roughly at the same time as [Weeb Bot](#weeb-bot), maybe slightly later. It utilized a Raspberry PI running [ROS](https://www.ros.org/), and the navigation and mapping information came from a lidar. ![lidar](/assets/images/old_projects/lidar.png) @@ -69,7 +68,7 @@ It would then navigate and plow the snow autonomously, like a robot vacuum. The snow plower's hull reused an old defective snow blower (it had tracks, so it looked cool). The plan was to fit it with electro motors to substitute the removed gasoline engine. -The project never got further than rudimentary mappings with the lidar and half-working simulations. +The project never got further than half-working simulations and rudimentary mappings with the lidar. It would be cool to complete it now that I'm more experienced. <a name="traffic-light"></a> @@ -78,47 +77,47 @@ It would be cool to complete it now that I'm more experienced. I made a traffic light simulation with an Arduino. It marked the first time I properly tried to use OOP. 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. -The traffic light was a school assignment, but it never counted towards my grade since there was such a low completion rate. +The traffic light was a school assignment, but it never counted towards my grade due to the low completion rate. ![Traffic light](/assets/images/old_projects/traffic_light.jpeg) {: style="text-align: center;"} ## Anders Tale (Godot) -Anders Tale is the proper "game" I've been working on. I started working on it in early 2021, right after I did the [Traffic Light](#traffic-light). +I began working on Anders tale once I finished the [Traffic Light](#traffic-light) -I've mostly been programming the game independently, but it's a "group" project. -The original vision for the game wasn't mine. It was a friend who came up with it. The concept has been a joke in my friend group for many years. +I've primarily programmed the game, but it's a "group" project. +The original vision wasn't mine. A friend came up with it. The concept has been a joke in my friend group for many years. -Programming on the game has been an on-and-off effort for 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). +Programming has been an on-and-off effort. The main source code is not public, but there is a [joke website](https://stelaug.github.io/) you can view (not made by me). ![Anders Tale cover art](https://stelaug.github.io/bilder/ALL_THEY_FEAR_IS_ANDERS_s.png) {: style="text-align: center;"} -As a Co-Op roguelike, the campaign was supposed to be the highlight, but the PvP mode ended up seeing the most development. +As a Co-Op roguelike, the campaign was supposed to be the highlight. Despite this, the PvP mode saw the most development. The free-for-all was 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 using GDScript and began development in Godot 3. -One of the biggest stop-points was that lighting wasn't performant, so the game looked pretty bad. +The game was made in Godot 3 with GDScript. +The biggest stop-point was the poor lighting performance, so the game looked plain. -I 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 at that time was that I had become so used to working without game engines that it almost felt in the way. +I picked the project up again during the end of summer break in 2024 from a clean slate in Godot 4. It was surprising how far I've matured as a programmer. +I had become so used to working without game engines that it nearly felt in the way. -I should try to have a go at it again. +I want to continue on it someday. <a name="rnm"></a> ## Rick & Morty Portal Gun I made a [Rick & Morty portal gun](https://github.com/Samdal/r-and-m-portal-gun) with a friend from primary school. He led the physical design while I did the electronics. -The project had a small time frame from late May to early June 2021. The portal gun was a parting gift my friend gave someone. +The project had a constricted time frame from late May to early June 2021. The portal gun was a parting gift my friend gave someone. It housed an Arduino, an mp3 player, a rotary encoder, a couple of AA batteries, 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. +Depressing the rotary encoder fired the gun, turning on the front lights and playing a sound effect. ![r&m picute back](/assets/images/old_projects/rnm1.jpeg) ![r&m picute front](/assets/images/old_projects/rnm3.jpeg) @@ -127,7 +126,7 @@ Depressing the rotary encoder fired the gun, enabling the front lights and playi ## Minesweeper -[Minesweeper](https://github.com/Samdal/minesweeper) was my first C project, and it marked the beginning of a new era for me. I completed it at the end of April 2021 and used Raylib to do the graphics. +[Minesweeper](https://github.com/Samdal/minesweeper) was my first C project. It marked the birth of a new era for me. I finalized it at the end of April 2021 and used Raylib to do the graphics. ![Minesweeper screenshot](/assets/images/old_projects/minesweeper.jpeg) {: style="text-align: center;"} @@ -138,9 +137,8 @@ Depressing the rotary encoder fired the gun, enabling the front lights and playi [gs_snake](https://github.com/Samdal/gs_snake) was a snake clone I made with [Gunsligner](https://github.com/MrFrenik/gunslinger). I have since programmed a lot with Gunslinger. I am active in its discord server. - Discovering Gunslinger was a critical part of my development as an early programmer. -It made me discover new ways to program. I learned a lot from reading John's code. I learned about Jonathan Blow, Casey Muratory, Handmade Hero, and Ryan Fleury. +It made me discover new ways to program. I uncovered a lot from reading John's code, and I 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;"} @@ -150,8 +148,8 @@ It made me discover new ways to program. I learned a lot from reading John's cod [HS](https://github.com/Samdal/hs) is an OpenGL wrapper. It simplifies resource creation and usage. -While following along [Learn OpenGL](https://learnopengl.com/), I always wanted to try making a library. -The project is incomplete, and I never made anything proper with it. +I wanted to try making a library while following along [Learn OpenGL](https://learnopengl.com/). +The project remains incomplete, and I never made anything proper with it. ![HS Screenshot](/assets/images/old_projects/hs.jpeg) {: style="text-align: center;"} @@ -159,20 +157,20 @@ The project is incomplete, and I never made anything proper with it. ## Anders Tale (C version) -I figured I could use [HS](#HS) to make something, and re-making Anders Tale seemed fun. I thought it would be a nice way to have some focus. +I figured I could use [HS](#HS) to make something, and re-making Anders Tale seemed fun. It would be a pleasant way to have some focus. -The only notable part about the game was its tile-map system and an AABB collision. It also supported "allowed-areas". Instead of mapping each wall as large collision shapes, they forced the player to stay inside a room. +The notable part about the game was its simplistic tile-map system and an AABB collision. It supported "allowed-areas". Instead of mapping each wall as large collision shapes, they pushed the player inside a room. I never got far with this version of Anders Tale. ## Anders Tale Room editor -[Anders Tale Room editor](https://github.com/Samdal/anders_tale_room_editor) was the tile-map editor for the C version of Anders Tale. +[Anders Tale Room editor](https://github.com/Samdal/anders_tale_room_editor) was the tile-map editor for the C variant of Anders Tale. It was another project made with [HS](#HS), and it used [Nuklear](https://github.com/Immediate-Mode-UI/Nuklear) for the Gui. This project was my first real introduction to serialization and de-serialization, and I made a custom file format for the tile maps. -I also added font rendering through STB TrueType, which taught me a lot. +I 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;"} @@ -181,13 +179,13 @@ I also added font rendering through STB TrueType, which taught me a lot. The [Ghostbusters Costume](https://github.com/Samdal/ProtonPack) is another undertaking with my friend from primary school. The proton pack is the main project we've had together. -We are both avid Ghostbusters fans. Our first plan came to life during fourth grade. +We are both avid Ghostbusters fans and the earliest dreams of our very own costume came during fourth grade. We made many revisions over the years. Naturally, all the early attempts were awful, as we were very young. -As with the [Rick & Morty Portal Gun](#rnm), my friend did most of the physical design, and I did the electronics. +As with the [Rick & Morty Portal Gun](#rnm), my friend did most of the prop design, and I did the electronics. -The final project used an Arduino mega connected to an mp3 player, neopixels, LEDs of different colors, an audio amplifier, a lithium drill battery, both a 12V and 5V supply, a vibrator motor in the gun, a bunch of buttons and switches and a rotary encoder. +The final variant used an Arduino mega connected to an mp3 player, neopixels, LEDs of different colors, an audio amplifier, a lithium drill battery, both a 12V and 5V supply, a vibrator motor in the gun, a bunch of buttons and switches and a rotary encoder. The realistic exterior, lights, sounds, and effects made it even more awesome and movie-accurate than I ever imagined. ![Ghostbusters Pack](/assets/images/old_projects/gb.jpeg) @@ -199,7 +197,7 @@ The realistic exterior, lights, sounds, and effects made it even more awesome an [SE](https://github.com/Samdal/se), the *Simple Editor* -SE was a decently sized project I mainly worked on during December 2021 and early 2022. +SE was a decently sized project I predominantly worked on during December 2021 and early 2022. My editor was (and still is) Doom Emacs. Emacs is extremely slow, and I envisioned an editor with features I used without the bloat. @@ -209,7 +207,7 @@ SE continued in a simple and Suckless fashion. You configured it by changing `co The syntax highlighting and auto-indents employed a custom state-machine-like rule system. -I started implementing a fairly complete Vim support. It was a big undertaking, but I got quite far. The main missing features were only macros and markers. +I implemented a reasonably complete Vim support. It was a big undertaking, but I got quite far. 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) @@ -219,10 +217,9 @@ I started implementing a fairly complete Vim support. It was a big undertaking, ## ArduinoNative [ArduinoNative](https://github.com/Samdal/ArduinoNative) was a header-only C++ project implementing the same top-level features as the Arduino library. - It used the console to expose a virtual board interface and monitoring functionality. -ArduinoNative is probably the most usable of my projects. I don't think the code is that great, but the interface is clean. +ArduinoNative is probably the most usable of my projects. The code isn't that great, but the interface is clean. Compared to other ways of simulating an Arduino, using ArduinoNative is very simple. Serial and AnalogRead Example @@ -279,19 +276,19 @@ nisse __ |____)_) ``` -During an evening in November of 2022, I got inspired to make a simpler version of JSON. It's essentially an S expression parser with some helper macros. +An evening in November of 2022 inspired me to make a simpler version of JSON. It's essentially an S expression parser with some helper macros. Like my previous parsing projects, it's made raw without a tokenizer. It doesn't support escaped characters, which is probably the primary feature it lacks. I have considered creating a new version with slice-based strings, an arena allocator, and a tokenizer. -It would be a good exercise in writing a proper parser. +It would be a good exercise. ## gs_ddt [Gunsligner Drop-Down Terminal](https://github.com/Samdal/gs_ddt) was a simple debug terminal I decided to write when I started college. It allowed you to invoke custom commands inside your game. It's been a helpful tool, 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. +I made an [example program](https://github.com/Samdal/gs_ddt_ex) for it. ![gs_ddt screenshot](/assets/images/old_projects/gs_ddt.jpeg) {: style="text-align: center;"} @@ -300,7 +297,7 @@ I also made an [example program](https://github.com/Samdal/gs_ddt_ex) for it. [gs_avdecode](https://github.com/Samdal/gs_avdecode) was a media decoder for playing videos in Gunslinger using the avcodec API from ffmpeg. -I created an [example program](https://github.com/Samdal/gs_avdecode_ex) for this utility as well. +I also created an [example program](https://github.com/Samdal/gs_avdecode_ex) for this utility. 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). @@ -309,7 +306,7 @@ 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) was a generic data structure I made for Gunslinger. -It operates similarly to `std::deque`. It's a dynamic array that contains pointers to *chunks* or *buckets*. The array grows by adding a new bucket, which gives a good compromise between size and insert/delete/iterate times while retaining pointer stability. +It operates similarly to `std::deque`. It's a dynamic array that contains pointers to *chunks* or *buckets*. The array grows by appending a fixed-size bucket, which gives a good compromise between size and insert/delete/iterate times while retaining pointer stability. The implementation additionally came with an optional packed free-list.