Welcome to my website!

Hey there, random internet dweller, welcome to my website! My name is Michal Procházka, and I'm a student currently living in the Czech Republic.

127 days, 11 hours, 15 minutes & 44 seconds without an accident!

I tend to focus primarily on computer-related projects either just for fun, or because I somehow have an actual need for the thing that I'm working on and there isn't any other viable solution available (that, or because I'm just cheap and doing things myself is, well, cheaper). Either way, I find the results of my development work rather cool. Don't be afraid to scroll down and explore!

Or click here to watch a random favourite short video of mine.

My ugly face

Me enjoying a bread roll with ham and pickles, realizing that it's pretty damn good

(Click here to view the entire album of my ugly face.)


My profile picture

If you find any of my online accounts, they will likely have this profile picture.

It's a Terraria character I made many years ago, and I've been playing with it a fair bit. Well, until I was dumb enough to migrate to a new computer, erase the old drive and forget to back up my Terraria saves (because Terraria for some reason does not sync to Steam Cloud by default, and the saves were in ~/.local, a directory which I deliberately wanted not to migrate over).

Luckily, I did not lose any of the worlds that I actually played on, as I primarily played on a LAN server. So the loss was not really that devastating (other than for all the gear that I had in my inventory).

I have since implemented a robust backup system, and created a new Terraria character (which looks basically identical to the old one which I use in my profile pictures, other than the fact that it's now wearing full armor and a cool wizard hat).


Please keep in mind that this site is still under construction and is subject to change! (Don't worry, I'm talking about just adding new content, I don't have any intentions to turn this site into the stereotypical soydevvy JS-riddled infinitely scrolling unusable garbage that is so common on the web nowadays.)

What I'm trying to say is that if you visit this site every couple of months, there may be new stuff to explore. That's it.

Alright, enough rambling. Enjoy your visit!

Under construction

Latest post from my blog

That's right, I created a blog where I (sometimes) post about my projects (or really about anything I want)! To give you a small taste of what my blog has to offer, here's a link to my latest post:

Moving domains – goodbye prochazka.ml

Topic: General | Published 2023-01-22 19:06:14 UTC

Hi! If you're reading this, it means that you must have found my new domain, and I must apologize for any incoveniences (in case you've tried to send me mail or visit my website in the past few weeks), as I have failed to do my homework properly. Let me explain. See, when I originally wanted to have a website, I wanted to do everything for free. That meant free hosting (courtesy of Endora, a local Czech web hosting company which has an ad-supported free tier) as well as a free domain with a custom 2nd level domain (i.e. not something like prochazka.4fun.cz), which meant g...


Latest projects

Here's some cool stuff I have worked (or even am currently working!) on. I mostly just write software, but sometimes, hardware gets into the mix as well. Remember that most software I write is licensed under the GNU GPL v3 Free Software license, meaning that it is free for anyone to use, modify and share.

ComponentLabels

Fork of ResistorLabels, written in Python

Example labels generated with ComponentLabels

This is one of those simpler projects, intended to fix a simple problem. The problem I had was that my electronic components stash was a complete mess, lacking any form of organization (some resistors were in boxes, some were in a single bag, most of the capacitors were all stuffed inside a single compartment in a small storage box... you get the idea).

I was looking for a solution, a simple, space-efficient and reasonably quick to use storage system for electronic components. I quickly ended up on a blog whose author had the exact same issue as I had, and they provided a solution: just put individual values into separate "press-to-close" bags with printed labels! The author even generously linked to a Python script which can generate arbitrary resistor values.

However, I needed more than resistors – this is where my fork comes in. At the time of writing, it supports resistors, capacitors, transistors (PNP/NPN BJT, N/P-channel MOSFET), all sorts of diodes (regular, Zener, Schottky, LEDs), screws, nuts, threaded inserts and springs. All of the components proudly present their main name/value in a large bold font, accompanied by some of its important paramteters and a nice little icon depicting the component's schematic symbol (and in the case of transistors, a pinout).

corrodedbar

Written in Rust

corrodedbar screenshot

A simple text-based statusbar for your X11 window manager. It can easily interface with services such as PulseAudio or NetworkManager, it is easily extensible and wildly configurable.

Yes, I'm one of those freaks who still use an old X11 tiling window manager (more specifically, dwm). And no, I am probably not switching to anything else anytime soon. After I had used dwm for several years now, everything else (especially full-blown desktop environments) feels clunky by comparison.

Essentially, I have reached the Linux nirvana, when you figure out that you do not need more than a simple window manager (and preferably a compositor) for using your graphical applications.

My current setup (Arch Linux + dwm + an old build of compton) and the way I have everything currently configured is, for lack of a better term, quite comfy for me.

...except for one thing. Before creating this project, I was using a simple shell script to update the status text in dwm. That was far from ideal: it ate up too much CPU time, often the clock would skip seconds, sometimes it would inexplicably crash etc. So at one point I finally decided to bite the bullet and write my status bar in something more sensible.

Also, I wanted to start learning Rust, and needed a good first project. 🦀

Apple I Emulator

Written in MATLAB

Apple I Emulator screenshot

I very much dislike MATLAB with its absolutely proprietary & commercial nature. That said, I am kind of proud of this one. At the end of the mandatory MATLAB university course, we were tasked to make something in MATLAB (and it had to be a GUI application). I was switching between a few ideas, before I ultimately settled on emulating the Apple I. After all, the Apple I hardware is incredibly primitive - you have a 6502 CPU, many kB of RAM, a terminal interface and ROM. How hard could that be?

Actually, not that much. Within a few days, I had a semi-working 6502 implemented in MATLAB that was able to boot the WozMon and manipulate the memory, even launch simple programs. (And after running some standard 6502 emulation tests and further improving the emulator, I was able to boot Integer BASIC).

There was just one problem: the emulator was insanely slow (as in slower than real hardware running at 1 MHz). I started benchmarking MATLAB, and figured out that calling a function which just writes to a global variable (you know, it is kind of important for an emulator to have a function which reads/writes from/to a given memory address) is just shy of being 1000x slower than if the code had been inserted inline.

So, that's what I did! I created a simple MATLAB preprocessor (in Bash) that inlines certain functions (with the output script being a single ~15k line file). Now, the emulator (on my Ryzen 5 3500U machine) executes on average ~500k instructions per second, which is quite on par with original hardware! And to wrap the whole thing up, I added some blinkenlights. Because why not.

Click here to expand the entire list of my projects.


Unfinished projects

To encourage myself to work on my old projects again and actually finish them, I decided to make the list of my unfinished projects public – below should be most of them. Consider this as a sort of "to-do list", just more shameful (and without the projects already listed above, which I still might be working on).


Other cool stuff that is hosted on this server

My own stuff (which has not been already mentioned)

Mirrors of other cool stuff


Mail GitHub Reddit (not that I use it that often, but here you go anyway) YouTube Discord Printables Steam