0-tick blog

About me

I'm Tobiáš. My two main interests are Game programming, and learning about hardware architecture the code runs on. (SIMD, CUDA,... )
I also care about: the Demoscene, Modding, Privacy and Cybersecurity, CTFs, Bug-bounty, Networking infrastructure and technologies, Mathematics. I also contribute to open source in private - meaning - no github link here, I don't like the tracker pressure.

Some of my work

Most of my personal projects to date have been made as learning experiences, here is a short rundown of the better ones, if they interest you, check out more details in the projects section.
I've built programs for displaying several file formats: .png, .bmp, .wav, currently working on .h264, a video codec for container formats like .mp4,
all using very little external libraries, mostly relying on direct control of the Windows Win32 API.
A basic forward pass renderer as well as an improved deferred multi pass renderer using OpenGL
upon which I tried to make a full, silly 3D tetromino game using cut up furniture geometry for it's pieces, though this didn't go very far due to my lack of experience in game development at the time. Hoping to revisit it someday. a ray tracer, fractal geometry demo built on a university supplied framework also using OpenGL and GLEW
a fluid simulation and shading demo on the same framework
I've also built specific timing, debugging and visualisation tools for these projects.

Journey

I started learning programming 11 years ago, my first "language" was MIT's block coding language for kids called Scratch, I made little experiments and later tiny games for myself, but in my hyperactive nature I had little patience for the tedious way the blocks had to be dragged around so didn't make much progress for a while, around a year later I tried learning C++ on my own but the language barrier was too high for me to fully cross yet. As I went to highschool my interest renewed and I learned python and later C#. The first interesting project to mention was a .png file viewer in Python, that I wrote without libraries because I mistakenly considered them too bloated and slow, (when in reality it is the language itself that is slow), except one to launch the window. The file parsing, processing and the work to output the image pixel by pixel were done by hand over a few weeks during the summer and It was the first time I read and implemented a published standard, I didn't do everything, it was painfully slow (over 7 seconds to display a 1k image, though curiously windows Photos often takes longer to launch these days, even it then loads the rest of the images in a folder quickly), but it worked. This is also the time I started taking performance extremely seriously, no user cares about how something is written, they do care if something is clunky or slow, and the straight forward code tends to be better in basically every metric in the end if you're diligent. I learned that for loops of Python were over a thousand times slower than C's, and as I learned more and more I recognized most of what we were being taught about, among other things, Object oriented programming, was not the path I wanted to take in my career. I've been very cautious from that point on to take in any new information about how to program. But through that process, I've slowly built up enough confidence to take on real projects.

About this website

The label 0-tick comes from the concept of gameplay 'tics', introduced in Quake III Arena by id Software, for the purpose of netcode syncing. Another game, decades later, Minecraft does the same and runs on 20 'ticks' every second, but uses interpolating between the states of the game for a smoother experience decoupled from discrete gameplay states. Curiously, one of the game's system called Redstone, Minecraft's version of electronic circuits, contains many kinds of tile for this purpose, the wires works instantaneously, and not just for the wires, (In the Java version) tiles capable of pushing or pulling blocks, sticky pistons, can be both powered and unpowered within the same game tick. This causes a directly neighbouring tile to be pushed instantaneously instead of taking 1-3 game ticks to do so (depending on the length of the pulse) and then taking 3 more to retract.
As players explored this and related phenomena, they became colloquially known as 0-tick mechanics. This effect can be chained and ordered to create interoperating push/pull interactions within otherwise impossible space and timeframes. Knowledge of these tricks is mandatory to have your creations run at roughly double the speed than what could be achieved otherwise, and achieve some otherwise impossible feats, Yet It's not really any more difficult to learn than it is to learn the regular advanced redstone. In many respects I view software the same way.
The first time I saw this in action was a video called block teleportation, because the machine was built to, within 0.00 in game seconds, push a block thousands of tiles away. Block teleportation I was in awe.
So the simple answer for the name is that I intend to make and write about awe-inspiring technology, that works well, where the complexity is warranted, rather than wasted.