Home | Markdown | Gemini

Project Showcase



Generated on: 2026-03-11

This page showcases my side projects, providing an overview of what each project does, its technical implementation, and key metrics. Each project summary includes information about the programming languages used, development activity, and licensing. The projects are ranked by score, which combines project size and recent activity.

Table of Contents




Overall Statistics




Projects



1. ior [#1(now) →#1(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





ior screenshot

**🚧 PRE-ALPHA SOFTWARE:** This project is in a pre-alpha state and is intended for my own personal use only. Use at your own risk.

View on Codeberg
View on GitHub

---

2. timesamurai [#2(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





**🚧 PRE-ALPHA SOFTWARE:** This project is in a pre-alpha state and is intended for my own personal use only. Use at your own risk.

View on Codeberg
View on GitHub

---

3. dotfiles [#3(now) →#3(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





dotfiles



View on Codeberg
View on GitHub

---

4. loadbars [#4(now) ↑#47(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





loadbars screenshot

loadbars - A small and humble tool to observe server loads



View on Codeberg
View on GitHub

---

5. epimetheus [#5(now) ↓#4(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





epimetheus screenshot

**🚧 PRE-ALPHA SOFTWARE:** This project is in a pre-alpha state and is intended for my own personal use only. Use at your own risk.

View on Codeberg
View on GitHub

---

6. conf [#6(now) ↓#5(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





conf
====

View on Codeberg
View on GitHub

---

7. foostore [#7(now) →#7(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





**🚧 PRE-ALPHA SOFTWARE:** This project is in active early development, unstable, and intended for personal use. Expect bugs, breaking changes, missing safeguards, and possible data loss. Backward compatibility and upgrade paths are not guaranteed. Use at your own risk.

View on Codeberg
View on GitHub

---

8. scifi [#8(now) →#8(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





Sci-Fi Books Showcase



View on Codeberg
View on GitHub

---

9. log4jbench [#9(now) →#9(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





Log4j2 Benchmark Tool



View on Codeberg
View on GitHub

---

10. rcm [#10(now) →#10(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





rcm screenshot

RCM - Ruby Configuration Management



View on Codeberg
View on GitHub

---

11. yoga [#11(now) ↑#12(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





yoga screenshot

Yoga



View on Codeberg
View on GitHub

---

12. totalrecall [#12(now) ↑#14(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





totalrecall screenshot

totalrecall - Bulgarian Anki Flashcard Generator



View on Codeberg
View on GitHub

---

13. gogios [#13(now) ↓#11(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





gogios screenshot

Gogios



View on Codeberg
View on GitHub

---

14. hexai [#14(now) ↓#2(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





hexai screenshot

Hexai



View on Codeberg
View on GitHub

---

15. perc [#15(now) ↓#13(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





perc



View on Codeberg
View on GitHub

---

16. tasksamurai [#16(now) →#16(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





tasksamurai screenshot

Task Samurai



View on Codeberg
View on GitHub

---

17. gitsyncer [#17(now) ↓#15(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





GitSyncer



View on Codeberg
View on GitHub

---

18. foostats [#18(now) ↓#17(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





foostats



View on Codeberg
View on GitHub

---

19. gos [#19(now) ↓#18(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





gos screenshot

Gos (Go Social Media)



View on Codeberg
View on GitHub

---

20. timr [#20(now) ↓#19(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





timr



View on Codeberg
View on GitHub

---

21. dtail [#21(now) ↓#20(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





dtail screenshot

DTail
=====

View on Codeberg
View on GitHub

---

22. ds-sim [#22(now) ↓#21(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





ds-sim screenshot

DS-Sim



View on Codeberg
View on GitHub

---

23. gemtexter [#23(now) ↓#22(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





The Gemtexter blog engine and static site generator
===================================================

View on Codeberg
View on GitHub

---

24. wireguardmeshgenerator [#24(now) ↓#23(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





WireGuard Mesh Generator



View on Codeberg
View on GitHub

---

25. goprecords [#25(now) ↓#24(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





goprecords - Global uptime records



View on Codeberg
View on GitHub

---

26. quicklogger [#26(now) ↓#25(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





quicklogger screenshot

Quick logger



View on Codeberg
View on GitHub

---

27. terraform [#27(now) ↓#26(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





Terraform



View on Codeberg
View on GitHub

---

28. sillybench [#28(now) ↓#27(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





Silly Benchmark



View on Codeberg
View on GitHub

---

29. gorum [#29(now) ↓#28(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





Gorum



View on Codeberg
View on GitHub

---

30. geheim [#30(now) →#30(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





geheim.rb



View on Codeberg
View on GitHub

---

31. docker-radicale-server [#31(now) →#31(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





Radicale Docker image



View on Codeberg
View on GitHub

---

32. algorithms [#32(now) →#32(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

Algorithms
==========

View on Codeberg
View on GitHub

---

33. randomjournalpage [#33(now) →#33(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

Read a random journal



View on Codeberg
View on GitHub

---

34. photoalbum [#34(now) →#34(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

photoalbum



View on Codeberg
View on GitHub

---

35. ioriot [#35(now) →#35(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

ioriot screenshot

I/O Riot



Overview



<img src=doc/ioriot_small.png align=right />

...is an I/O benchmarking tool for Linux based operating systems which captures I/O operations on a (possibly production) server in order to replay the exact same I/O operations on a load test machine.

I/O Riot is operated in 5 steps:

1. Capture: Record all I/O operations over a given period of time to a capture log.
2. Initialize: Copy the log to a load test machine and initialize the load test environment.
3. Replay: Drop all OS caches and replay all I/O operations.
4. Analyze: Look at the OS and hardware stats (throughput, I/O ops, load average) from the run phase and draw conclusions. The aim is to identify possible I/O bottlenecks.
5. Repeat: Repeat steps 2-4 multiple times but adjust OS and hardware settings in order to improve I/O performance.

Examples of OS and hardware settings and adjustments:


The file system fragmentation (depending on the file system type and utilisation) might affect I/O performance as well. Therefore, replaying the I/O will not give the exact same result as on a production system. But it provides a pretty good way to determine I/O bottlenecks. As a rule of thumb file system fragmentation will not be an issue, unless the file system begins to fill up. Modern file systems (such as Ext4) will slowly start to suffer from fragmentation and slow down then.

Benefits



In contrast to traditional I/O benchmarking tools, I/O Riot reproduces real production I/O, and does not rely on a pre-defined set of I/O operations.

Also, I/O Riot only requires a server machine for capturing and another server machine for replaying. A traditional load test environment would usually be a distributed system which can consist of many components and machines. Such a distributed system can become quite complex which makes it difficult to isolate possible I/O bottlenecks. For example in order to trigger I/O events a client application would usually have to call a remote server application. The remote server application itself would query a database and the database would trigger the actual I/O operations in Linux. Furthermore, it is not easy to switch forth and back between hardware and OS settings. For example without a backup and restore procedure a database would most likely be corrupt after reformatting the data partitions with a different file system type.

The benefits of I/O Riot are:


Send in patches



Patches of any kind (bug fixes, new features...) are welcome! I/O Riot is new software and not everything might be perfect yet. Also, I/O Riot is used for a very specific use case at Mimecast. It may need tuning or extension for your use case. It will grow and mature over time.

This is also potentially a great tool just for analysing (not replaying) the I/O, therefore it would be a great opportunity to add more features related to that (e.g. more stats, filters, etc.).

Future work will also include file hole support and I/O support for memory mapped files.

How to install I/O Riot



I/O Riot depends on SystemTap and a compatible version of the Linux Kernel. To get started have a read through the [installation guide](doc/markdown/installation.md).

How to use I/O Riot



Check out the [I/O Riot usage guide](doc/markdown/usage.md) for a full usage workflow demonstration.

Appendix



Supported file systems



Currently I/O Riot supports replaying I/O on `ext2, ext3, ext4 and xfs`. However, it should be straightforward add additional file systems.

Supported syscalls



Currently, these file I/O related syscalls are supported (as of CentOS 7):

open
openat
lseek
llseek
fcntl
creat
write
writev
unlink
unlinkat
rename
renameat
renameat2
read
readv
readahead - Initial support only
readdir
readlink
readlinkat
fdatasync
fsync
sync_file_range - Initial support only
sync
syncfs
close
getdents
mkdir
rmdir
mkdirat
stat
statfs - Initial support only
statfs64 - Initial support only
fstatfs - Initial support only
fstatfs64 - Initial support only
lstat
fstat
fstatat
chmod
fchmodat
fchmod
chown
chown16
lchown
lchown16
fchown
fchown16
fchownat
mmap2 - Initial support only
mremap - Initial support only
munmap - Initial support only
msync - Initial support only
exit_group - To detect process termination (closing all open file handles)

Source code documentation



The documentation of the source code can be generated via the Doxygen Framework. To install doxygen run `sudo yum install doxygen and to generate the documentation run make doxygen in the top level source directory. Once done, the resulting documentation can be found in the doc/html subfolder of the project. It is worthwhile to start from ioriot/src/main.c` and read your way through. Functions are generally documented in the header files. Exceptions are static functions which don't have any separate declarations.

More
====


Credits
=======



View on Codeberg
View on GitHub

---

36. ipv6test [#36(now) →#36(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





IPv6 Test Website



View on Codeberg
View on GitHub

---

37. fype [#37(now) →#37(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





Fype



View on Codeberg
View on GitHub

---

38. xerl [#38(now) ↑#42(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

xerl Host Templates
===================

View on Codeberg
View on GitHub

---

39. sway-autorotate [#39(now) ↓#38(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





sway-autorotate



View on Codeberg
View on GitHub

---

40. staticfarm-apache-handlers [#40(now) →#40(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





DEPRECATED
This project is no longer maintained. No further updates, bug fixes, or
feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

41. mon [#41(now) ↓#39(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





DEPRECATED
This project is no longer maintained. No further updates, bug fixes, or
feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

42. guprecords [#42(now) ↓#29(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

guprecords: source code repository.

View on Codeberg
View on GitHub

---

43. pingdomfetch [#43(now) ↓#41(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





DEPRECATED
This project is no longer maintained. No further updates, bug fixes, or
feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

44. fapi [#44(now) →#44(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





DEPRECATED
This project is no longer maintained. No further updates, bug fixes, or
feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

45. perl-c-fibonacci [#45(now) →#45(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

perl-c-fibonacci: source code repository.

View on Codeberg
View on GitHub

---

46. netcalendar [#46(now) →#46(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





netcalendar screenshot

**⚠️ DEPRECATED:** This project is no longer maintained. No further updates, bug fixes, or feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

47. gotop [#47(now) ↑#48(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





**⚠️ DEPRECATED:** This project is no longer maintained. No further updates, bug fixes, or feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

48. rubyfy [#48(now) ↑#49(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





**⚠️ DEPRECATED:** This project is no longer maintained. No further updates, bug fixes, or feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

49. pwgrep [#49(now) ↑#50(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





**⚠️ DEPRECATED:** This project is no longer maintained. No further updates, bug fixes, or feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

50. awksite [#50(now) ↑#61(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





**⚠️ DEPRECATED:** This project is no longer maintained. No further updates, bug fixes, or feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

51. jsmstrade [#51(now) ↑#52(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





jsmstrade screenshot

**⚠️ DEPRECATED:** This project is no longer maintained. No further updates, bug fixes, or feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

52. perldaemon [#52(now) ↓#51(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

TOC:
01. HELLO WORLD
02. QUICK START GUIDE
03. CONFIGURATION
04. HIGH RESOLUTION SCHEDULING TIME
05. WRITING YOUR OWN MODULES

View on Codeberg
View on GitHub

---

53. japi [#53(now) →#53(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





DEPRECATED
This project is no longer maintained. No further updates, bug fixes, or
feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

54. debroid [#54(now) ↑#57(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





debroid screenshot

**⚠️ DEPRECATED:** This project is no longer maintained. No further updates, bug fixes, or feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

55. perl-poetry [#55(now) ↓#54(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

perl-poetry
===========

View on Codeberg
View on GitHub

---

56. muttdelay [#56(now) ↓#55(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





DEPRECATED
This project is no longer maintained. No further updates, bug fixes, or
feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

57. netdiff [#57(now) ↓#56(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





DEPRECATED
This project is no longer maintained. No further updates, bug fixes, or
feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

58. hsbot [#58(now) →#58(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





DEPRECATED:

View on Codeberg
View on GitHub

---

59. dyndns [#59(now) ↑#62(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





DEPRECATED
This project is no longer maintained. No further updates, bug fixes, or
feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

60. cpuinfo [#60(now) ↓#59(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

NAME
cpuinfo - A small and humble tool to print out CPU data

View on Codeberg
View on GitHub

---

61. template [#61(now) ↓#60(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]





DEPRECATED
This project is no longer maintained. No further updates, bug fixes, or
feature additions will be made. Use at your own risk.

View on Codeberg
View on GitHub

---

62. vs-sim [#62(now) ↑#63(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

vs-sim
======

View on Codeberg
View on GitHub

---

63. ychat [#63(now) ↓#43(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

ychat: source code repository.

View on Codeberg
View on GitHub

---

64. foo.zone [#64(now) ↓#6(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]




⚠️ **Notice**: This project appears to be finished, obsolete, or no longer maintained. Last meaningful activity was over 2 years ago. Use at your own risk.

The foo.zone internet site
===========================

View on Codeberg
View on GitHub