Origin's Blog

Hello World

Hello and welcome to my blog! This is the first post on here, so I’m taking this opportunity to introduce myself. The introductory to this site can be found in the Homepage if you are curious.

First and foremost, here is a quick summary of the person behind the scenes:

  • I’m in my early 20s
  • I’m a male and identify myself as such
  • Hobbyist and student with major in computer science
  • Interested in physics related topics, especially the idea of describing attributes from the real world, virtually on a computer
  • My main operating system is Debian 12 with KDE Plasma 5.27.5
  • Using mouse-less software to write software. After using classical IDEs for many years, I’ve switched to NeoVim, then to Emacs doom flavoured, now I’m using vanilla Emacs and I still use Doom Emacs (with JIT) as configuring it myself is very time consuming, which made me unproductive

Even though very young in age, I’m eager to learn many of the principles in programming. Now a little (not quite a history, but a short) story of how I got here:

With the age of around 13, I was really interested in programming, mostly due to a video-game called “Minecraft”. I’m pretty sure that everyone heard of it these days, so I’m skipping details here. Following that I’ve bought a book, which is called “Introduction to Java 8”, which I still have. Back in these days, I obviously had no idea what I was doing, what the f*ck are classes and objects? Why do I had to use public static in front of every function I wrote? What does public static void main(String[] args) mean? What is the difference between a function and a method? Questions over questions that remaind during that time. I mostly grabbed the idea of literal if and switch statements, combined with how variables worked. But that’s it. The tests in the book were too hard for me to solve, because they required hard logical thinking at that time for me, which I was not accustomed in yet.

But never would I stop learning for what I had so much passion about at the time. I kept on learning and trying new things out, until I have learned about Databases, or more specifically, SQL. It was actually the second language I have ever come across. Very interesting indeed but not much of value, since I couldn’t build any fancy application with it, instead I could precisely specify how I wanted data to be represented whenever I fetched it. From there not long for now it was time… Time that I always believed many programmers have spent with to learn…

HTML! I was blown away by how easily I could write something that nearly instantly produced a result, that I could view in my web browser. In combination with CSS I wrote many beautiful web pages that a kid could write at that age. Some time later obviously I wanted more… and oh boy more I got, I have found an interesting program called XAMPP, which is the entire PHP web-stack in one application for windows users. With that I started scripting sites in PHP, with content that could change based on the URL a user visited! It was so fun at that time, especially after I found out how sessions worked and how to not use them correctly.

It feels like these times are long gone for me, even though it were about 10 years ago. I know of people who didn’t do math in over 50 years and were confronted by it! These things aside, in between I have regularly either coded or learned something new each and every day. By now I have experience in the typically known languages, such as JavaScript, Python, C, C++, C#, Godot Script, Bash Script, Lua, Rust and Go and some functional ones such as Haskell and Elm. As of time of writing this post, I am actively using and enjoying Rust for my projects, because of how it can make certain tasks (i.e. Serialization, Argument Parsing etc.) extremely easy, with just one line of code, while keeping its strong and powerful type system and ensuring memory safety at all times (Writing safe Rust of course). I’m also enjoying writing back-end applications in Go mainly of its simplicity, speed and because everything just works. The simple syntax combined with error handling with values and the garbage collector makes for a pretty nice developer experience.

By now I know that programming with the hardware that we are using is really important. Knowing how the CPU cache works can lead to impressive performance boosts in your program. I know that data-oriented design, by which the data is linearly stored in memory results in more cache hits, thus by many means faster than hash tables, for most use cases. Before Rust I knew the concept of ownership, in a sense of who is responsible for a piece of memory. But in my laziness, I always went for smart pointers in C++. Many developers seem to be oblivious of the fact, that with nice and easy dynamic / interpreted languages we have traded run-time performance with developer experience. I not saying that this is necessarly a bad thing, but project like JsOS show me that people really want to use these in areas they were not meant to (btw. I know that this project was written for studying purposes, but you get the point). I know all the problems that arise when trying to use system threads for parallel processing and how to counter them. I know the difference between parallelism and concurrency :-)

All things to say, I hope you could get some introduction to myself and that you are as eager as me to keep learning and expanding our vision. Have fun reading.