From 597a57fb415868a49344f30e8a64070ae881c886 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 11 Mar 2026 19:20:01 +0200 Subject: Update content for html --- about/resources.html | 202 ++--- about/showcase.html | 1401 +++++++++++++++++++---------------- about/showcase/debroid/image-1.png | 174 ++--- about/showcase/ior/image-2.png | Bin 0 -> 84146 bytes about/showcase/loadbars/image-1.gif | Bin 0 -> 93467 bytes 5 files changed, 934 insertions(+), 843 deletions(-) create mode 100644 about/showcase/ior/image-2.png create mode 100644 about/showcase/loadbars/image-1.gif diff --git a/about/resources.html b/about/resources.html index 6e6a088a..b354b1f0 100644 --- a/about/resources.html +++ b/about/resources.html @@ -51,112 +51,112 @@ In random order:


Technical references



I didn't read them from the beginning to the end, but I am using them to look up things. The books are in random order:


Self-development and soft-skills books



In random order:


Here are notes of mine for some of the books

@@ -165,22 +165,22 @@ Some of these were in-person with exams; others were online learning lectures only. In random order:


Technical guides



@@ -198,31 +198,31 @@ In random order:


Podcasts I liked



I liked them but am not listening to them anymore. The podcasts have either "finished" (no more episodes) or I stopped listening to them due to time constraints or a shift in my interests.


@@ -231,27 +231,27 @@ This is a mix of tech and non-tech newsletters I am subscribed to. In random order:


Magazines I like(d)



This is a mix of tech I like(d). I may not be a current subscriber, but now and then, I buy an issue. In random order:


YouTube channels


diff --git a/about/showcase.html b/about/showcase.html index ac803651..98dfde3c 100644 --- a/about/showcase.html +++ b/about/showcase.html @@ -13,7 +13,7 @@

Project Showcase



-Generated on: 2026-03-02
+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.

@@ -23,185 +23,235 @@
  • Project Showcase
  • Overall Statistics
  • Projects
  • -
  • ⇢ ⇢ 1. ior [#1(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 2. hexai [#2(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 3. dotfiles [#3(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 4. epimetheus [#4(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 5. conf [#5(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 6. foo.zone [#6(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 7. foostore [#7(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • foostore
  • -
  • ⇢ ⇢ 8. scifi [#8(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 9. log4jbench [#9(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 10. rcm [#10(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 11. gogios [#11(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 12. yoga [#12(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 13. perc [#13(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 14. totalrecall [#14(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 15. gitsyncer [#15(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 16. tasksamurai [#16(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 17. foostats [#17(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 18. gos [#18(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 19. timr [#19(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 20. dtail [#20(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 21. ds-sim [#21(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 22. gemtexter [#22(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 23. wireguardmeshgenerator [#23(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 24. goprecords [#24(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 25. quicklogger [#25(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 26. terraform [#26(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 27. sillybench [#27(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 28. gorum [#28(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 29. guprecords [#29(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 30. geheim [#30(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 31. docker-radicale-server [#31(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 32. algorithms [#32(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 33. randomjournalpage [#33(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 34. photoalbum [#34(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 35. ioriot [#35(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 36. ipv6test [#36(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 37. fype [#37(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 38. sway-autorotate [#38(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 39. mon [#39(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 40. staticfarm-apache-handlers [#40(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 41. pingdomfetch [#41(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 42. xerl [#42(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 43. ychat [#43(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 44. fapi [#44(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 45. perl-c-fibonacci [#45(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 46. netcalendar [#46(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 47. loadbars [#47(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 48. gotop [#48(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 49. rubyfy [#49(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 50. pwgrep [#50(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 51. perldaemon [#51(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 52. jsmstrade [#52(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 53. japi [#53(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 54. perl-poetry [#54(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 55. muttdelay [#55(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 56. netdiff [#56(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 57. debroid [#57(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 58. hsbot [#58(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 59. cpuinfo [#59(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 60. template [#60(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 61. awksite [#61(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 62. dyndns [#62(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • -
  • ⇢ ⇢ 63. vs-sim [#63(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 1. ior [#1(now) →#1(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 2. timesamurai [#2(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 3. dotfiles [#3(now) →#3(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • dotfiles
  • +
  • ⇢ ⇢ 4. loadbars [#4(now) ↑#47(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • loadbars - A small and humble tool to observe server loads
  • +
  • ⇢ ⇢ 5. epimetheus [#5(now) ↓#4(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 6. conf [#6(now) ↓#5(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 7. foostore [#7(now) →#7(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 8. scifi [#8(now) →#8(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Sci-Fi Books Showcase
  • +
  • ⇢ ⇢ 9. log4jbench [#9(now) →#9(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Log4j2 Benchmark Tool
  • +
  • ⇢ ⇢ 10. rcm [#10(now) →#10(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • RCM - Ruby Configuration Management
  • +
  • ⇢ ⇢ 11. yoga [#11(now) ↑#12(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Yoga
  • +
  • ⇢ ⇢ 12. totalrecall [#12(now) ↑#14(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • totalrecall - Bulgarian Anki Flashcard Generator
  • +
  • ⇢ ⇢ 13. gogios [#13(now) ↓#11(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Gogios
  • +
  • ⇢ ⇢ 14. hexai [#14(now) ↓#2(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Hexai
  • +
  • ⇢ ⇢ 15. perc [#15(now) ↓#13(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • perc
  • +
  • ⇢ ⇢ 16. tasksamurai [#16(now) →#16(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Task Samurai
  • +
  • ⇢ ⇢ 17. gitsyncer [#17(now) ↓#15(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • GitSyncer
  • +
  • ⇢ ⇢ 18. foostats [#18(now) ↓#17(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • foostats
  • +
  • ⇢ ⇢ 19. gos [#19(now) ↓#18(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Gos (Go Social Media)
  • +
  • ⇢ ⇢ 20. timr [#20(now) ↓#19(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • timr
  • +
  • ⇢ ⇢ 21. dtail [#21(now) ↓#20(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 22. ds-sim [#22(now) ↓#21(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • DS-Sim
  • +
  • ⇢ ⇢ 23. gemtexter [#23(now) ↓#22(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 24. wireguardmeshgenerator [#24(now) ↓#23(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • WireGuard Mesh Generator
  • +
  • ⇢ ⇢ 25. goprecords [#25(now) ↓#24(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • goprecords - Global uptime records
  • +
  • ⇢ ⇢ 26. quicklogger [#26(now) ↓#25(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Quick logger
  • +
  • ⇢ ⇢ 27. terraform [#27(now) ↓#26(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Terraform
  • +
  • ⇢ ⇢ 28. sillybench [#28(now) ↓#27(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Silly Benchmark
  • +
  • ⇢ ⇢ 29. gorum [#29(now) ↓#28(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Gorum
  • +
  • ⇢ ⇢ 30. geheim [#30(now) →#30(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • geheim.rb
  • +
  • ⇢ ⇢ 31. docker-radicale-server [#31(now) →#31(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Radicale Docker image
  • +
  • ⇢ ⇢ 32. algorithms [#32(now) →#32(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 33. randomjournalpage [#33(now) →#33(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Read a random journal
  • +
  • ⇢ ⇢ 34. photoalbum [#34(now) →#34(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • photoalbum
  • +
  • ⇢ ⇢ 35. ioriot [#35(now) →#35(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • I/O Riot
  • +
  • Overview
  • +
  • Benefits
  • +
  • Send in patches
  • +
  • How to install I/O Riot
  • +
  • How to use I/O Riot
  • +
  • Appendix
  • +
  • Supported file systems
  • +
  • Supported syscalls
  • +
  • Source code documentation
  • +
  • ⇢ ⇢ 36. ipv6test [#36(now) →#36(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • IPv6 Test Website
  • +
  • ⇢ ⇢ 37. fype [#37(now) →#37(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • Fype
  • +
  • ⇢ ⇢ 38. xerl [#38(now) ↑#42(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 39. sway-autorotate [#39(now) ↓#38(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • sway-autorotate
  • +
  • ⇢ ⇢ 40. staticfarm-apache-handlers [#40(now) →#40(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 41. mon [#41(now) ↓#39(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 42. guprecords [#42(now) ↓#29(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 43. pingdomfetch [#43(now) ↓#41(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 44. fapi [#44(now) →#44(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 45. perl-c-fibonacci [#45(now) →#45(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 46. netcalendar [#46(now) →#46(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 47. gotop [#47(now) ↑#48(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 48. rubyfy [#48(now) ↑#49(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 49. pwgrep [#49(now) ↑#50(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 50. awksite [#50(now) ↑#61(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 51. jsmstrade [#51(now) ↑#52(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 52. perldaemon [#52(now) ↓#51(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 53. japi [#53(now) →#53(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 54. debroid [#54(now) ↑#57(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 55. perl-poetry [#55(now) ↓#54(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 56. muttdelay [#56(now) ↓#55(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 57. netdiff [#57(now) ↓#56(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 58. hsbot [#58(now) →#58(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 59. dyndns [#59(now) ↑#62(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 60. cpuinfo [#60(now) ↓#59(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 61. template [#61(now) ↓#60(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 62. vs-sim [#62(now) ↑#63(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 63. ychat [#63(now) ↓#43(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]
  • +
  • ⇢ ⇢ 64. foo.zone [#64(now) ↓#6(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]

  • Overall Statistics




    Projects



    -

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


    +

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





    ior screenshot

    -I/O Riot NG is a Linux-only performance analysis tool that uses BPF (Berkeley Packet Filter) to trace synchronous I/O syscalls and measure their execution time. It captures stack traces during I/O operations and generates compressed output in a format compatible with Inferno FlameGraphs, allowing developers to visually identify performance bottlenecks caused by blocking I/O calls. This makes it particularly useful for diagnosing latency issues in applications where I/O operations are suspected of causing performance degradation.
    -
    -ior screenshot
    -
    -The tool is implemented in Go and C, leveraging libbpfgo for BPF interaction. It automatically generates BPF tracepoint handlers and Go type definitions from Linux kernel tracepoint data, attaches to syscall entry/exit points, and collects timing data with minimal overhead. The project is a modern successor to the original I/O Riot (which used SystemTap), offering better performance and easier deployment through BPF's built-in kernel support.
    +**🚧 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. hexai [#2(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]


    +

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





    -hexai screenshot
    -
    -Hexai is a Go-based AI integration tool designed primarily for the Helix editor that provides LSP (Language Server Protocol) powered AI features. It offers code auto-completion, AI-driven code actions, in-editor chat with LLMs, and a standalone CLI tool for direct LLM interaction. A standout feature is its ability to query multiple AI providers (OpenAI, OpenRouter, GitHub Copilot, Ollama) in parallel, allowing developers to compare responses side-by-side. It has enhanced capabilities for Go code understanding, such as generating unit tests from functions, while supporting other programming languages as well.
    -
    -The project is implemented as an LSP server written in Go, with a TUI component built using Bubble Tea for the tmux-based code action runner (hexai-tmux-action). This architecture allows it to integrate seamlessly into LSP-compatible editors, with special focus on Helix + tmux workflows. The custom prompt feature lets developers use their preferred editor to craft prompts, making it flexible for various development workflows.
    +**🚧 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
    +View on Codeberg
    +View on GitHub

    ---

    -

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


    +

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





    -This is a personal dotfiles management project that uses [Rex](https://www.rexify.org/) (a Perl-based infrastructure automation framework) to declaratively install and synchronize configuration files across local machines and remote servers. The Rexfile defines individual tasks for each config area — shell (bash, zsh, fish), editor (Helix), terminal (Ghostty, tmux), window manager (Sway/Waybar), SSH, scripts, Pipewire audio, AI prompt links, and more — plus OS-specific package installation tasks for Fedora, FreeBSD, and Termux. A top-level home task runs all home_* tasks at once for a full install.
    -
    -The architecture is straightforward: config files live in subdirectories mirroring their purpose, and helper functions (ensure_file, ensure_dir) copy or symlink them into the appropriate $HOME locations with correct permissions. It supports both a public repo (this one) and a private companion repo for sensitive configs like calendar data, keeping secrets separate while sharing the same deployment mechanism.
    +

    dotfiles



    View on Codeberg
    View on GitHub

    ---

    -

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


    +

    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

    -**Epimetheus** is a Go tool for pushing metrics to Prometheus that uniquely supports both realtime and historic data ingestion. Named after Prometheus's brother (meaning "afterthought"), it solves the common problem of getting metrics into Prometheus *after* they were collected—whether from hours, days, or weeks ago. It offers four operating modes: realtime (via Pushgateway), historic (single past datapoint via Remote Write API), backfill (range of historic data), and auto (intelligent routing based on timestamp age).
    -
    -The architecture routes current data (<5 min old) through Pushgateway where Prometheus scrapes it, while historic data goes directly to Prometheus via the Remote Write API to preserve original timestamps. It supports CSV and JSON input formats, generates realistic test metrics (counters, gauges, histograms), and includes a Grafana dashboard. The tool is built with a clean internal structure separating config, metrics generation, parsing, and ingestion concerns—making it useful for backfilling gaps, data migration, testing monitoring setups, and ad-hoc troubleshooting scenarios.
    +**🚧 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

    ---

    -

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


    +

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





    -This is a personal configuration management repository that centralizes infrastructure and application configurations across multiple environments. It serves as a single source of truth for system administration tasks, dotfiles, Docker deployments, and Kubernetes/Helm manifests, making it easier to maintain consistency across machines and deploy self-hosted services.
    -
    -The project is organized into distinct subdirectories: dotfiles/ contains shell configurations (bash, fish), editor settings (helix, nvim), and window manager configs (sway, waybar); f3s/ houses Kubernetes/Helm manifests for various self-hosted applications like Miniflux, FreshRSS, and Syncthing; babylon5/ includes Docker startup scripts for services like Nextcloud, Vaultwarden, and Audiobookshelf; and frontends/ and playground/ for additional configurations. The repository uses Rex (a Perl-based deployment tool) as its automation framework, with a top-level Rexfile that includes subdirectory Rexfiles for modular task execution.
    +conf
    +====

    View on Codeberg
    View on GitHub

    ---

    -

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


    -
    -
    -
    -foo.zone: source code repository.
    -
    -View on Codeberg
    -View on GitHub
    -
    ----
    -
    -

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


    +

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





    -

    foostore


    +**🚧 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) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]


    +

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





    -This is a static HTML showcase for a personal sci-fi book collection (54 books). It displays books in a responsive grid with cover images, lets users filter by author, format, or free-text search, and shows plot summaries in a modal on click. The entire site works offline with no external dependencies — all covers, metadata, and summaries are bundled locally.
    -
    -The architecture keeps content separate from presentation: book metadata lives in data/books.json, summaries are individual markdown files in summaries/, and covers are stored as local JPGs. A build step (node build.js) embeds the markdown summaries into the JSON file, producing a self-contained site that can be served as plain static files. The frontend (js/app.js) handles filtering and modal display client-side, while css/styles.css provides the grid layout and styling.
    +

    Sci-Fi Books Showcase



    View on Codeberg
    View on GitHub

    ---

    -

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


    +

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





    -This is a Java-based benchmarking tool for measuring Log4j2 logging throughput under different configurations. It allows developers to compare synchronous vs. asynchronous logging strategies by testing five built-in configurations: immediate-flush sync, buffered sync, and async loggers with varying LMAX Disruptor ring buffer sizes (1K/4K/10K). The tool supports configurable thread counts, duration or event-count based testing, custom message sizes, and CSV export for analysis.
    -
    -The implementation uses a fat JAR built with Maven, requiring Java 17+. It's designed for realistic benchmarking—including warmup periods and optional Linux filesystem cache dropping between tests. This helps developers make informed decisions about Log4j2 configuration tradeoffs between latency (immediate flush), throughput (buffered/async), and memory usage (ring buffer sizing) for their specific workloads.
    +

    Log4j2 Benchmark Tool



    View on Codeberg
    View on GitHub

    ---

    -

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


    +

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





    rcm screenshot

    -**rcm** is a lightweight Ruby-based configuration management system designed for personal infrastructure automation following the KISS (Keep It Simple, Stupid) principle. It provides a declarative DSL for managing system configuration tasks like file creation, templating, and conditional execution based on hostname or other criteria. The system is useful for automating repetitive configuration tasks across multiple machines, similar to tools like Puppet or Chef but with a minimalist approach tailored for personal use cases.
    -
    -The implementation centers around a DSL module that provides keywords like file, given, and notify for defining configuration resources. It supports features like ERB templating, conditional execution, resource dependencies (via requires), and directory management. Configuration data can be loaded from TOML files, and tasks are defined as Rake tasks that invoke the configuration DSL. The architecture uses a resource scheduling system that tracks declared objects, prevents duplicates, and evaluates them in order while respecting dependencies and conditions.
    +

    RCM - Ruby Configuration Management



    View on Codeberg
    View on GitHub

    ---

    -

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


    +

    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 is a minimalistic monitoring tool written in Go for small-scale infrastructure (e.g., personal servers and VMs). It executes standard Nagios/Icinga monitoring plugins via CRON jobs, tracks state changes in a JSON file, and sends email notifications through a local MTA only when check statuses change. Unlike full-featured monitoring solutions (Nagios, Icinga, Prometheus), Gogios deliberately avoids complexity—no databases, web UIs, clustering, or contact groups—making it ideal for simple, self-hosted environments with limited monitoring needs.
    -
    -The architecture is straightforward: JSON configuration defines checks (plugin paths, arguments, timeouts, dependencies, retries), a state directory persists check results between runs, and concurrent execution with configurable limits keeps things efficient. Key features include check dependencies (skip HTTP checks if ping fails), retry logic, stale alert detection, re-notification schedules, and support for remote checks via NRPE. A basic high-availability setup is achievable by running Gogios on two servers with staggered CRON intervals, though this results in duplicate notifications when both servers are operational—a deliberate trade-off for simplicity.
    +

    Gogios



    View on Codeberg
    View on GitHub

    ---

    -

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


    +

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





    -yoga screenshot
    -
    -Yoga is a Terminal User Interface (TUI) application written in Go that helps users browse and play local yoga video collections. It scans a designated directory for video files (MP4, MKV, MOV, AVI, WMV, M4V), extracts and caches duration metadata, and presents them in an interactive table. Users can quickly filter videos by name, duration range, or tags, sort by various criteria (name, length, age), and launch playback in VLC with a single keypress. The tool is particularly useful for managing personal yoga practice libraries where you want to quickly find videos matching specific time constraints or styles without opening a file browser.
    +hexai screenshot

    -The implementation follows clean Go architecture with domain logic organized under internal/ (including app for TUI flow, fsutil for filesystem operations, and meta for metadata caching). It uses a keyboard-driven interface with vim-like navigation and maintains a .video_duration_cache.json file per directory to avoid re-probing video durations on subsequent scans. The project emphasizes maintainability with ≥85% test coverage requirements, table-driven tests, and strict formatting via gofumpt, while keeping the entry point minimal in cmd/yoga/main.go.
    +

    Hexai



    -View on Codeberg
    -View on GitHub
    +View on Codeberg
    +View on GitHub

    ---

    -

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


    +

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





    -**perc** is a command-line percentage calculator written in Go that handles the three common percentage calculation scenarios: finding X% of Y (e.g., "20% of 150"), determining what percentage one number is of another (e.g., "30 is what % of 150"), and finding the whole when given a part and percentage (e.g., "30 is 20% of what"). It accepts natural language-style input and shows step-by-step calculation breakdowns alongside results.
    -
    -The tool is built as a simple Go CLI application with a standard project layout (cmd/perc for the binary, internal/ for implementation details) and uses Mage as its build system. It's installable via go install and designed for quick mental-math verification or scripting scenarios where percentage calculations are needed.
    +

    perc



    View on Codeberg
    View on GitHub

    ---

    -

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


    +

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




    -
    -totalrecall screenshot
    -
    -TotalRecall is a Go-based tool that generates comprehensive Anki flashcard materials for Bulgarian language learning. It creates high-quality audio pronunciations using OpenAI TTS (with 11 voice options), AI-generated contextual images via DALL-E, IPA phonetic transcriptions, and automatic Bulgarian-English translations. The tool supports both single-word and batch processing, making it efficient for building large vocabulary decks. It outputs Anki-compatible packages (APKG) with all media files bundled, ready for immediate import.
    -
    -totalrecall screenshot
    -
    -The project offers both a keyboard-driven GUI for interactive use and a CLI for automation, built with Go using the Cobra framework for command handling. It leverages OpenAI's APIs for both audio synthesis and image generation, creating memorable visual contexts with random art styles to enhance retention. The architecture follows clean Go package structure with separate internal packages for audio, image, config, and Anki format generation, making it maintainable and extensible for future enhancements.
    -
    -View on Codeberg
    -View on GitHub
    -
    ----
    -
    -

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


    -
    -

    -GitSyncer is a Go-based CLI tool that automatically synchronizes git repositories across multiple hosting platforms (GitHub, Codeberg, SSH servers). It maintains all branches in sync bidirectionally, never deleting branches but automatically creating and updating them as needed. The tool excels at providing repository redundancy and backup, with special support for one-way SSH backups to private servers (like home NAS devices) that may be offline intermittently. It includes AI-powered features for generating release notes and project showcase documentation, plus automated weekly batch synchronization for hands-off maintenance.
    +tasksamurai screenshot

    -The implementation uses a git remotes approach: it clones from one organization, adds others as remotes, then fetches, merges, and pushes changes across all configured locations. Built with a modern command-based structure (using Cobra), it offers fine-grained control through subcommands for syncing (individual repos, all repos, platform-specific, bidirectional), release management, testing, and repository management. Key architectural features include merge conflict detection, regex-based branch exclusion, automatic repository creation on both web platforms and SSH servers, configurable backup locations with opt-in syncing, and integration with multiple AI tools (hexai, claude, aichat) for intelligent release note generation.
    +

    Task Samurai



    -View on Codeberg
    -View on GitHub
    +View on Codeberg
    +View on GitHub

    ---

    -

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


    +

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





    -tasksamurai screenshot
    -
    -**Task Samurai** is a fast, keyboard-driven terminal UI for Taskwarrior built in Go using the Bubble Tea framework. It displays your Taskwarrior tasks in an interactive table where you can manage them entirely through hotkeys—adding, starting, completing, and annotating tasks without touching the mouse. It supports all Taskwarrior filters as command-line arguments, allowing you to start with focused views like tasksamurai +tag status:pending or tasksamurai project:work due:today.
    -
    -tasksamurai screenshot
    -
    -Under the hood, Task Samurai acts as a front-end wrapper that invokes the native task command to read and modify tasks, ensuring compatibility with your existing Taskwarrior setup. The UI automatically refreshes after each action to keep the table current. It was created as an experiment in agentic coding and as a faster alternative to Python-based tools like vit, leveraging Go's performance and the Bubble Tea framework's efficient terminal rendering. The project even includes a "disco mode" flag that cycles through themes for a more playful experience.
    +

    GitSyncer



    -View on Codeberg
    -View on GitHub
    +View on Codeberg
    +View on GitHub

    ---

    -

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


    +

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





    -**foostats** is a privacy-respecting web analytics tool designed for OpenBSD that processes both traditional HTTP/HTTPS server logs and Gemini protocol logs to generate anonymous site statistics. It immediately hashes all IP addresses using SHA3-512 before storage, ensuring no personal information is retained while still providing meaningful traffic insights. The tool supports distributed deployments with node-to-node replication, filters out suspicious requests based on configurable patterns, and generates comprehensive daily and monthly reports in both Gemtext and HTML formats. It's particularly useful for privacy-conscious site operators who need traffic analytics without compromising visitor anonymity.
    -
    -The implementation uses a modular Perl architecture with specialized components: **Logreader** parses logs from httpd and Gemini servers (vger/relayd), **Filter** blocks suspicious patterns, **Aggregator** compiles statistics, **Replicator** synchronizes data between partner nodes, and **Reporter** generates human-readable reports. Statistics are stored as compressed JSON files, supporting both IPv4 and IPv6, with built-in feed analytics for tracking Atom/RSS and Gemfeed subscribers. The tool is designed specifically for the foo.zone ecosystem but can be adapted for any OpenBSD-based hosting environment requiring privacy-first analytics.
    +

    foostats



    View on Codeberg
    View on GitHub

    ---

    -

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


    +

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





    gos screenshot

    -Gos is a command-line social media scheduling tool written in Go that serves as a self-hosted replacement for Buffer.com. It enables users to schedule and post messages to Mastodon and LinkedIn (plus a "Noop" pseudo-platform for tracking) through a simple file-based queueing system. Messages are created as text files in a designated directory (~/.gosdir), with optional tags embedded in filenames or content to control platform targeting, priority, and scheduling behavior. The tool addresses limitations of commercial services by offering unlimited posts, a scriptable CLI interface, and full user control without unwanted features like AI assistants.
    -
    -gos screenshot
    -
    -The implementation uses OAuth2 for LinkedIn authentication, stores configuration as JSON, and manages posts through a platform-specific database structure. Gos employs intelligent scheduling based on configurable weekly targets, lookback windows, pause periods between posts, and run intervals to prevent over-posting. It supports priority queuing, platform exclusion rules, dry-run testing, and can generate Gemini gemtext summaries of posted content. Built with Mage for automation, the tool integrates seamlessly into shell workflows and can be triggered on intervals to maintain a consistent posting cadence across platforms.
    +

    Gos (Go Social Media)



    View on Codeberg
    View on GitHub

    ---

    -

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


    +

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





    -timr is a minimalist command-line stopwatch timer written in Go that helps developers track time spent on tasks. It provides a persistent timer that saves state to disk, allowing you to start, stop, pause, and resume time tracking across terminal sessions. The tool supports multiple viewing modes including a standard status display (with formatted or raw output in seconds/minutes), a live full-screen view with keyboard controls, and specialized output for shell prompt integration.
    -
    -The architecture is straightforward: it's a Go-based CLI application that persists timer state to the filesystem, enabling continuous tracking even when the program isn't actively running. Key features include basic timer controls (start/stop/continue/reset), flexible status reporting formats for automation, and fish shell integration that displays a color-coded timer icon and elapsed time directly in your prompt—making it effortless to keep track of how long you've been working without context switching.
    +

    timr



    View on Codeberg
    View on GitHub

    ---

    -

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


    +

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





    dtail screenshot

    -DTail is a distributed DevOps tool written in Go that enables engineers to tail, cat, and grep log files across thousands of servers simultaneously. It supports compressed logs (gzip and zstd) and includes advanced features like distributed MapReduce aggregations for log analysis at scale. The tool uses SSH for secure, encrypted communication and respects standard UNIX filesystem permissions and ACLs.
    -
    -dtail screenshot
    -
    -The architecture follows a client-server model where DTail servers run on target machines and a single DTail client (typically from a developer's laptop) connects to them concurrently, scaling to thousands of servers per session. It can also operate in a serverless mode. This design makes it particularly useful for troubleshooting and monitoring distributed systems, where engineers need to correlate logs across multiple machines in real-time without manually SSH-ing into each server individually.
    +DTail
    +=====

    View on Codeberg
    View on GitHub

    ---

    -

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


    +

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





    ds-sim screenshot

    -DS-Sim is an open-source distributed systems simulator built in Java that provides an interactive environment for learning and experimenting with distributed systems concepts. It enables users to simulate various distributed protocols (like Two-Phase Commit, Berkeley Time synchronization, and PingPong), visualize event flows, and understand fundamental concepts like Lamport and Vector clocks through a graphical Swing-based interface. The simulator is particularly useful for students, educators, and developers who want to understand how distributed algorithms behave without the complexity of setting up actual distributed infrastructure.
    -
    -The implementation follows a modular Java architecture with clear separation between core components (process and message handling), the event system, protocol implementations, and the simulation engine. Built on Java 21 and Maven, it includes comprehensive unit testing (141 tests), extensive logging capabilities, and a protocol testing framework. The project structure allows developers to easily extend the simulator by creating new protocols and custom events, making it both a learning tool and a platform for experimenting with distributed systems algorithms.
    +

    DS-Sim



    View on Codeberg
    View on GitHub

    ---

    -

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


    +

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





    -Gemtexter is a static site generator and blog engine written in Bash that converts content from Gemini Gemtext format into multiple output formats (HTML, Markdown) simultaneously. It allows you to maintain a single source of truth in Gemtext and automatically generates XHTML Transitional 1.0, Markdown, and Atom feeds, enabling you to publish the same content across Gemini capsules, traditional websites, and platforms like GitHub/Codeberg Pages. The tool handles blog post management automatically—creating a new dated .gmi file triggers auto-indexing, feed generation, and cross-format conversion.
    -
    -The architecture leverages GNU utilities (sed, grep, date) and optional tools like GNU Source Highlight for syntax highlighting. It includes a templating system that executes embedded Bash code in .gmi.tpl files, supports themes for HTML output, and integrates with Git for version control and publishing workflows. Despite being implemented as a complex Bash script, it remains maintainable and serves as an experiment in how far shell scripting can scale for content management tasks.
    +The Gemtexter blog engine and static site generator
    +===================================================

    View on Codeberg
    View on GitHub

    ---

    -

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


    +

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





    -WireGuard Mesh Generator is a Ruby-based automation tool that creates and manages full-mesh VPN configurations for WireGuard across heterogeneous hosts (Linux, FreeBSD, OpenBSD). It eliminates manual configuration by automatically generating unique keypairs, preshared keys, and peer configurations for each host, handling OS-specific differences in config paths, privilege escalation commands, and service reload mechanisms.
    -
    -The tool reads host definitions from a YAML file specifying network interfaces (LAN/internet/WireGuard), SSH details, and OS types. It intelligently determines optimal peer connections—using LAN IPs when both hosts are local, public IPs when available, or marking peers as "behind NAT" when direct connection isn't possible—and applies persistent keepalive only for LAN-to-internet tunnels. The three-stage workflow (generate keys/configs → upload via SCP → install and reload via SSH) enables zero-touch deployment of a complete mesh network where every node can communicate securely with every other node.
    +

    WireGuard Mesh Generator



    View on Codeberg
    View on GitHub

    ---

    -

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


    +

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





    -**goprecords** is a Go CLI tool that generates global uptime reports by aggregating uptimed record files from multiple hosts. It ranks machines across metrics like total uptime, boot count, downtime, lifespan, and a combined score—organized by host, kernel version, kernel major version, or kernel name. Output is available in plaintext, Markdown, or Gemtext. It can either report directly from a stats directory or import records into SQLite for repeated querying.
    -
    -Under the hood, it parses uptimed's simple uptime:boottime:kernel record format, groups entries by the chosen category, and computes aggregates. The architecture is straightforward: a cmd/goprecords entry point handles CLI flags and subcommands (import, query, or direct reporting), while internal/goprecords contains the core logic for parsing, aggregation, database operations, and report formatting. It uses modernc.org/sqlite (a pure-Go SQLite driver) and Mage for build automation.
    +

    goprecords - Global uptime records



    View on Codeberg
    View on GitHub

    ---

    -

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


    +

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