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 Emacsand 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.