Hello there!
My name is Henrik, and I love penguins. I also love programming, especially any programming related to bleeding-edge technology and/or high-performance software such as games and graphics.
I like understanding things at a fundamental level. I've found that taking the time to study and understand how a certain tool works at a fundamental level always gives you a much better understanding of how to best take advantage of that tool at a higher level as well.
In software architecture, the relationships between the different components in a system, how and why they fit together, is something I find extremely interesting. When you look at that and understand it, you'll often discover new ways to make things better, faster, or simpler for the higher-level user. That's why I love exploring new languages and new designs, new ways of doing things.
Lately, I've been especially excited about the concepts behind rendering, and I've been exploring this concepts by writing a 3D software renderer from scratch. I'm hoping to expand it with a physics system etc and make somewhat of a Quake clone eventually, but one thing at a time. Learning every aspect of a building an engine is going to take time.
Programming languages
C, C++
C#
Rust
Zig
Powershell
Bash
Lua
Python
(A (lil' (bit (of (Lisp)))))
When it comes to programming langauges, I believe that almost every language out there is going to teach you some some interesting concepts that you can gather from and use in your own development, so no matter which one it is, it's never going to be a waste of time learning a new one.
Most of the time for a project, when given the choice, I tend to gravitate towards a lower-level language over a higher-level one because I appreciate the control and transparency it provides.
Being able to follow the memory allocations and the execution flow from A to B to C is really nice.
Leisure
In my spare time, I really enjoy programming (lol). Also working out is really fun, and I enjoy hanging out in the forest when it rains. I am currently quite heavily into Pico-8 (the strong hardware limitations are really fun and cool), the OG Pokémon games and of course my software renderer.
When your work and passion are the same thing it is easy to overwork yourself, but I've found that exploring a wide variety of concepts and separating them into work-studies and leisure-studies helps with that, and in the end, both sides will benefit each other. Haskell and Rust are both languages that have taught me to look at code in a way I could have never have done if I had stuck to C++ and C# only, and something as simple as switching to Linux has given me a much better understanding of how for example binaries and executable work in relation to linking and compilation. It's fun to understand!
Contact
Copyright © 2024 Henrik Nilsson