whoami
Hi there! My name is Petar.
I'm just a guy who likes to express himself by writing code. Most of the stuff I write is in the domain of graphics programming and game development. I'm currently developing my low level graphics programming and math skills. I have been doing it for a while but I still got a LONG way to go. So I like to document my journey on this website, share insights, progress, stuff I build as well as express some opinions and stances that I've formed. Hopefully to time-test them and see will any of it still hold in the future when I look back.
Seemingly random rants from my brain
Most of the time, you can hear people giving you positive advice. "Oh this is great, do this, you should do that, you have to try this out" etc.
But I like to give NEGATIVE advice. I don't think we are lacking positive things. There is enough great things in life. But there is EVEN MORE negative things noone likes, which I just wish we had LESS. So I'd rather clean up the mess we have so a few great things can shine through, rather than ignoring it and looking for new shiny things to put in this pile of trash. So here we go:
- I use GNU/Linux (Arch btw) exclusively. Although I try to stay away from typical GNU/Linux fanboy, I just REALLY dislike Windows.
- I write all of my code using Vim, with barely any plugins and I spawn terminal windows with Tmux. Using mouse, IDEs with million buttons and searching for things visually instead of having them in my head is just not my thing.
- Most of the code I write is in C/C++ (unfortunatelly). I'd really love to get into other languages, like Zig, Jai or Odin, but I don't have enough memory to allocate at this moment.
- I'm not a big fan of AI. In my experience, it produces very mediocre overly complex and weird logic, or it just straight up lies to me very confidently. It also slows down and outsources my thinking, which puts me in a werid mindless state where I just prompt and copy/paste without much patience or willingness to understand. My goals are simply beyond that. Producing and shipping whatever AI gave me and moving on as soon as possible is not what I'm about. I like to look at things, think and reason about them, and focus on them for a long time consistently. Even if I get stuck on something, I'm fine with just working through it for multiple days/weeks. Building my brain muscles, knowledge and skill is on top of my priority list, while shipping something mediocre, impossible to understand and maintain is not even in sight.
- I don't like game engines. Again, they are overly complex, filled with bunch of general purpose stuff I don't plan on using, they abstract away so many things from you, and they force you into their own solutions. Which is not SO bad, but as a result, it produces relatively similar looking games at the end. Worst of all, it makes it accessible to anyone... ANYONE, do you really think that is a good thing? The whole industry is overwhelmed with so called "game developers" who can barely write C# code snippets in Unity, and we just have this infinite sea of beginner slop games on Itch and Steam. I really wonder what are we going to do as humans, once older generations die out and we are left with people who never seen or touched game engine code. Will that knowledge die and get forgotten? So even though game development SHOULD BE accessible to anyone who wants to do it, it should have a higher entry barrier. You simply need to sit down, learn programming fundamentals, learn bunch of math, learn some physics, learn how things work under the hood, and only THEN try and build something.
But anyways, back to the original topic, I just like to talk to the graphics API directly and avoid abstractions as much as possible. Most of my current knowledge is in OpenGL, but I plan on getting to the current millenium and learning Vulkan eventually.
It's really hard for me to find people with similar mindset, so I fallback to using Godot on team projects. At least it's pretty lightweight, free and open source and doesn't get in your way too much.
- Surprisingly (not really), another thing which I hate are VISUAL SHADER GRAPHS. That thing should be forbidden from existence. It's so overly complex, confusing and gets HUGE super fast. As much as I've seen, only poor newbies who don't know any better are attracted to them. I've never seen an experienced graphics programmer using shader graphs.
Per some example I remember, literal 36 "nodes" or whatever you wanna call them, all interconnected with some spaghetti arrows going one over another, LITERALLY translate to 8 lines of GLSL. And it was in some beginner tutorial video, you can imagine how it scales for more complicated things.
I just don't get it, why do we keep doing nonsense things like these? Is learning a dozen new words really all that scary?
My personal take is: If you're scared of writing code and you don't know any math, you shouldn't even be thinking about shaders. Leave them to someone else who knows what they're doing.
- I hate mobile phones. Their only purpose is to scroll TikToks on the go. Bad things outweigh the benefits. Why do you think you're on the on-call schedule? Why would anyone be able to reach me at any moment in time and why would I be required to drop everything I'm doing currently and answer? Why do so many banking systems require a mobile device for "security 2FA" reasons, even though that's beyond any logic? Why do I need to have a device which is connected to the internet 24/7 in my pocket? And I'm not even sure if it's necessary to mention social media and it's bad influence on your attention span, mental health and screen time.
On top of that, it's a product for consuming, rather than producing. Just look at it, you barely have any buttons on it. HUGE screen blasting you with advertisment and short form content that you scroll indefinitely. You are very limited with the amount of things you can do on it. I used to carry a dumbphone for a long time. But it's battery got swollen and I couldn't find a replacement. So I bought some old Motorola Android device which supports LineageOS. I use it for THREE THINGS:
1. I talk to my family ~once a week.
2. I use it as a guitar tuner.
3. I use it to access my bank account. I'd love NOT TO have it for this purpose, but after several long ranting emails to the bank, they still refused to allow me access through web app.
There are alternatives to all of these, I could always find a tuner for my guitar, visit family or communicate over the internet. I just fall into those little conveniences while I already have to use it for my bank, but I'd LOVE TO not use it, and I think it's 200% possible to live happily without one.
People like to give arguments such as: "Oh but it has a great camera", or "but I listen to music".
Well, what kind of photos did you take? We appreciate photography less because it's always available in your pocket, and you mostly just take 10 gazzilion pictures of your dog, mirror selfies or food, right?
If you don't know what aperture, shutter speed and ISO are, you shouldn't be handling a camera, and you got nothing to express with photography.
Same goes for music, if you're streaming some latest pop hits on Spotify to your Bluetooth headset, you shouldn't be listening to music. You should experience a high-fidelity sound. Get a device that can afford you that experience.