Hi, my name is Tomasz

… and welcome to my blog. If you find my work interesting check out my github profile as well. Feel free to reach out to me using email button below.
quick, low-dependency label printing in local network

Label printer web server

Recently I got a new gadget in my hands, which is a label printer. Very handy device to organize all sorts of stuff at home. But installing a dedicated computer application with custom chinese drivers, just to print a few lines was a bit too much for me. An alternative android app did not satisfy my needs either, it’s bloated with all sorts of options I will hardly ever use. Fortunately, someone already reverse engineered how those printers work and released CUPS plugins....

February 1, 2024
a crude implementation of 6502 processor

Cpu Emulator

While apparently having too much free time I decided to improve my assembly programming skills. And what would be a better way to prove myself that I can program in a certain language? Write a compiler, of course. Or an assembler in this case. But studying processor instructions one by one is boring, so I had to trick myself into it. I have decided to write my own emulator to fully grasp the idea - become fully aware of what a processor actually does while running....

August 7, 2023
python game engine

Game Engine

A simple game engine developed on top of Pygame. It supports: simple physics camera management players different types of enemies trapdoor triggers steering live object spawning text boxes buttons … and probably some more. Huge thanks to ciszko for contribution to the project! On top of the engine a simple game was built (main.py, l1.py, l2.py): Game’s name is DING, an onomatopeia for a bouncing object - like a bullet....

March 10, 2023


ScanBot is a fully 3D-printed robot equipped with caterpillar tracks capable of dynamically create map of its environment. ScanBot’s ecosystem leverages ROS (Noetic) to gather and process scan data, odometry and to receive steering commands. Low-level it uses a very simple interface which looks like this: <COMMAND>:[PARAMETER1],[PARAMETER2],[...]# Interface is asynchronous and returns data in the same format. Whole system is dockerized. It is also equipped with a Gazebo simulation: In both cases - simulation and physical robot - a gamepad is required to steer the robot....

March 9, 2023
diamond and some spheres

Ray Tracing

I wanted to share a small project that I have created a while ago. It is a simple backwards ray tracer written in C. The scene is defined entirely in C code as an array of structures representing spheres. 3D polygon models can also be loaded from *.obj files. It’s still work in progress and code is a bit messy, but already produces interesting results. Camera is controllable in real time with keyboard keys F/V/X/C/B/N for pitch/yaw/roll and Q/W for focal distance....

March 4, 2023
bluetooth smart tag

Smart Tag Reverse Engineering

Recently I have received a bluetooth smart tag device. The Apple AirTag kind of thing. It has a dedicated Android and IOs application. No GPS module, yet capable of giving pretty accurate location, and what's more important - playing a nice chiptune enabling you to find your keys/wallet/dog/whatever. You just click a button in your mobile app and it starts its high-fidelity, breathtaking symphony of beeps and boops produced by internal piezo speaker....

August 8, 2022
a little line follower robot

Line Follower

Code, board design and motor mounting bracket 3d design is available at this github repository. The heart of this project is Atmega328, the same microcontroller as used in Arduino Nano. It's programmed using Arduino core libraries. Underneath the robot has six light reflection sensors (optotransistors) that detect brightness of the surface underneath. The board is programmed using USBasp programmer. Serial interface is connected to USB-Serial converter for debugging purposes....

April 21, 2021
a maze


The program generates halls of the labyrinth by the use of Depth-First Search (DFS). Below I present a step-by-step explanation of how it works. First, the direction of movement is randomized. Then, the step is made and recorded on a stack. [1] [X] STACK: RIGHT [X] [1] [2] STACK: RIGHT UP This cycle repeats until there is no turn available - then values are taken one by one from the stack and each step is repeated in reverse, e....

April 21, 2021

About Me

I graduated with a BEng degree in ICT at Wrocław University of Science and Technology, following MSc at WWSIS Horyzont. My passion is electronics, programming and tinkering. I like to combine all of my skills to create something new or improve the already existing. At work I am a Software Lead Engineer with years of job related experience and over eight years of personal interest in mentioned areas. My coding skills involve mostly C, C++, Python, HTML/CSS/JS, SQL and shell scripting....

January 1, 2020