diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-11 19:39:28 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-11 19:39:28 +0200 |
| commit | ba77f8c84717bf0cc3bc333c70b90d08e1f021ac (patch) | |
| tree | b2a528f84db3f03c16a9800fbea9abd0d5e78397 /about/showcase.html | |
| parent | 597a57fb415868a49344f30e8a64070ae881c886 (diff) | |
Update content for html
Diffstat (limited to 'about/showcase.html')
| -rw-r--r-- | about/showcase.html | 557 |
1 files changed, 181 insertions, 376 deletions
diff --git a/about/showcase.html b/about/showcase.html index 98dfde3c..4cde968f 100644 --- a/about/showcase.html +++ b/about/showcase.html @@ -23,109 +23,70 @@ <li><a href='#project-showcase'>Project Showcase</a></li> <li>⇢ <a href='#overall-statistics'>Overall Statistics</a></li> <li>⇢ <a href='#projects'>Projects</a></li> -<li>⇢ ⇢ <a href='#1-ior-1now-11w-na2w-na3w-na4w'>1. ior [#1(now) →#1(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#2-timesamurai-2now-na1w-na2w-na3w-na4w'>2. timesamurai [#2(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#3-dotfiles-3now-31w-na2w-na3w-na4w'>3. dotfiles [#3(now) →#3(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#dotfiles'>dotfiles</a></li> -<li>⇢ ⇢ <a href='#4-loadbars-4now-471w-na2w-na3w-na4w'>4. loadbars [#4(now) ↑#47(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#loadbars---a-small-and-humble-tool-to-observe-server-loads'>loadbars - A small and humble tool to observe server loads</a></li> -<li>⇢ ⇢ <a href='#5-epimetheus-5now-41w-na2w-na3w-na4w'>5. epimetheus [#5(now) ↓#4(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#6-conf-6now-51w-na2w-na3w-na4w'>6. conf [#6(now) ↓#5(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#7-foostore-7now-71w-na2w-na3w-na4w'>7. foostore [#7(now) →#7(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#8-scifi-8now-81w-na2w-na3w-na4w'>8. scifi [#8(now) →#8(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#sci-fi-books-showcase'>Sci-Fi Books Showcase</a></li> -<li>⇢ ⇢ <a href='#9-log4jbench-9now-91w-na2w-na3w-na4w'>9. log4jbench [#9(now) →#9(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#log4j2-benchmark-tool'>Log4j2 Benchmark Tool</a></li> -<li>⇢ ⇢ <a href='#10-rcm-10now-101w-na2w-na3w-na4w'>10. rcm [#10(now) →#10(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#rcm---ruby-configuration-management'>RCM - Ruby Configuration Management</a></li> -<li>⇢ ⇢ <a href='#11-yoga-11now-121w-na2w-na3w-na4w'>11. yoga [#11(now) ↑#12(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#yoga'>Yoga</a></li> -<li>⇢ ⇢ <a href='#12-totalrecall-12now-141w-na2w-na3w-na4w'>12. totalrecall [#12(now) ↑#14(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#totalrecall---bulgarian-anki-flashcard-generator'>totalrecall - Bulgarian Anki Flashcard Generator</a></li> -<li>⇢ ⇢ <a href='#13-gogios-13now-111w-na2w-na3w-na4w'>13. gogios [#13(now) ↓#11(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#gogios'>Gogios</a></li> -<li>⇢ ⇢ <a href='#14-hexai-14now-21w-na2w-na3w-na4w'>14. hexai [#14(now) ↓#2(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#hexai'>Hexai</a></li> -<li>⇢ ⇢ <a href='#15-perc-15now-131w-na2w-na3w-na4w'>15. perc [#15(now) ↓#13(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#perc'>perc</a></li> -<li>⇢ ⇢ <a href='#16-tasksamurai-16now-161w-na2w-na3w-na4w'>16. tasksamurai [#16(now) →#16(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#task-samurai'>Task Samurai</a></li> -<li>⇢ ⇢ <a href='#17-gitsyncer-17now-151w-na2w-na3w-na4w'>17. gitsyncer [#17(now) ↓#15(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#gitsyncer'>GitSyncer</a></li> -<li>⇢ ⇢ <a href='#18-foostats-18now-171w-na2w-na3w-na4w'>18. foostats [#18(now) ↓#17(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#foostats'>foostats</a></li> -<li>⇢ ⇢ <a href='#19-gos-19now-181w-na2w-na3w-na4w'>19. gos [#19(now) ↓#18(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#gos-go-social-media'>Gos (Go Social Media)</a></li> -<li>⇢ ⇢ <a href='#20-timr-20now-191w-na2w-na3w-na4w'>20. timr [#20(now) ↓#19(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#timr'>timr</a></li> -<li>⇢ ⇢ <a href='#21-dtail-21now-201w-na2w-na3w-na4w'>21. dtail [#21(now) ↓#20(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#22-ds-sim-22now-211w-na2w-na3w-na4w'>22. ds-sim [#22(now) ↓#21(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#ds-sim'>DS-Sim</a></li> -<li>⇢ ⇢ <a href='#23-gemtexter-23now-221w-na2w-na3w-na4w'>23. gemtexter [#23(now) ↓#22(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#24-wireguardmeshgenerator-24now-231w-na2w-na3w-na4w'>24. wireguardmeshgenerator [#24(now) ↓#23(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#wireguard-mesh-generator'>WireGuard Mesh Generator</a></li> -<li>⇢ ⇢ <a href='#25-goprecords-25now-241w-na2w-na3w-na4w'>25. goprecords [#25(now) ↓#24(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#goprecords---global-uptime-records'>goprecords - Global uptime records</a></li> -<li>⇢ ⇢ <a href='#26-quicklogger-26now-251w-na2w-na3w-na4w'>26. quicklogger [#26(now) ↓#25(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#quick-logger'>Quick logger</a></li> -<li>⇢ ⇢ <a href='#27-terraform-27now-261w-na2w-na3w-na4w'>27. terraform [#27(now) ↓#26(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#terraform'>Terraform</a></li> -<li>⇢ ⇢ <a href='#28-sillybench-28now-271w-na2w-na3w-na4w'>28. sillybench [#28(now) ↓#27(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#silly-benchmark'>Silly Benchmark</a></li> -<li>⇢ ⇢ <a href='#29-gorum-29now-281w-na2w-na3w-na4w'>29. gorum [#29(now) ↓#28(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#gorum'>Gorum</a></li> -<li>⇢ ⇢ <a href='#30-geheim-30now-301w-na2w-na3w-na4w'>30. geheim [#30(now) →#30(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#geheimrb'>geheim.rb</a></li> -<li>⇢ ⇢ <a href='#31-docker-radicale-server-31now-311w-na2w-na3w-na4w'>31. docker-radicale-server [#31(now) →#31(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#radicale-docker-image'>Radicale Docker image</a></li> -<li>⇢ ⇢ <a href='#32-algorithms-32now-321w-na2w-na3w-na4w'>32. algorithms [#32(now) →#32(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#33-randomjournalpage-33now-331w-na2w-na3w-na4w'>33. randomjournalpage [#33(now) →#33(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#read-a-random-journal'>Read a random journal</a></li> -<li>⇢ ⇢ <a href='#34-photoalbum-34now-341w-na2w-na3w-na4w'>34. photoalbum [#34(now) →#34(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#photoalbum'>photoalbum</a></li> -<li>⇢ ⇢ <a href='#35-ioriot-35now-351w-na2w-na3w-na4w'>35. ioriot [#35(now) →#35(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#io-riot'>I/O Riot
</a></li> -<li>⇢ <a href='#overview'>Overview
</a></li> -<li>⇢ <a href='#benefits'>Benefits
</a></li> -<li><a href='#send-in-patches'>Send in patches
</a></li> -<li><a href='#how-to-install-io-riot'>How to install I/O Riot
</a></li> -<li><a href='#how-to-use-io-riot'>How to use I/O Riot
</a></li> -<li><a href='#appendix'>Appendix
</a></li> -<li>⇢ <a href='#supported-file-systems'>Supported file systems
</a></li> -<li>⇢ <a href='#supported-syscalls'>Supported syscalls
</a></li> -<li>⇢ <a href='#source-code-documentation'>Source code documentation
</a></li> -<li>⇢ ⇢ <a href='#36-ipv6test-36now-361w-na2w-na3w-na4w'>36. ipv6test [#36(now) →#36(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#ipv6-test-website'>IPv6 Test Website</a></li> -<li>⇢ ⇢ <a href='#37-fype-37now-371w-na2w-na3w-na4w'>37. fype [#37(now) →#37(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#fype'>Fype</a></li> -<li>⇢ ⇢ <a href='#38-xerl-38now-421w-na2w-na3w-na4w'>38. xerl [#38(now) ↑#42(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#39-sway-autorotate-39now-381w-na2w-na3w-na4w'>39. sway-autorotate [#39(now) ↓#38(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li><a href='#sway-autorotate'>sway-autorotate</a></li> -<li>⇢ ⇢ <a href='#40-staticfarm-apache-handlers-40now-401w-na2w-na3w-na4w'>40. staticfarm-apache-handlers [#40(now) →#40(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#41-mon-41now-391w-na2w-na3w-na4w'>41. mon [#41(now) ↓#39(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#42-guprecords-42now-291w-na2w-na3w-na4w'>42. guprecords [#42(now) ↓#29(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#43-pingdomfetch-43now-411w-na2w-na3w-na4w'>43. pingdomfetch [#43(now) ↓#41(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#44-fapi-44now-441w-na2w-na3w-na4w'>44. fapi [#44(now) →#44(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#45-perl-c-fibonacci-45now-451w-na2w-na3w-na4w'>45. perl-c-fibonacci [#45(now) →#45(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#46-netcalendar-46now-461w-na2w-na3w-na4w'>46. netcalendar [#46(now) →#46(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#47-gotop-47now-481w-na2w-na3w-na4w'>47. gotop [#47(now) ↑#48(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#48-rubyfy-48now-491w-na2w-na3w-na4w'>48. rubyfy [#48(now) ↑#49(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#49-pwgrep-49now-501w-na2w-na3w-na4w'>49. pwgrep [#49(now) ↑#50(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#50-awksite-50now-611w-na2w-na3w-na4w'>50. awksite [#50(now) ↑#61(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#51-jsmstrade-51now-521w-na2w-na3w-na4w'>51. jsmstrade [#51(now) ↑#52(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#52-perldaemon-52now-511w-na2w-na3w-na4w'>52. perldaemon [#52(now) ↓#51(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#53-japi-53now-531w-na2w-na3w-na4w'>53. japi [#53(now) →#53(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#54-debroid-54now-571w-na2w-na3w-na4w'>54. debroid [#54(now) ↑#57(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#55-perl-poetry-55now-541w-na2w-na3w-na4w'>55. perl-poetry [#55(now) ↓#54(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#56-muttdelay-56now-551w-na2w-na3w-na4w'>56. muttdelay [#56(now) ↓#55(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#57-netdiff-57now-561w-na2w-na3w-na4w'>57. netdiff [#57(now) ↓#56(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#58-hsbot-58now-581w-na2w-na3w-na4w'>58. hsbot [#58(now) →#58(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#59-dyndns-59now-621w-na2w-na3w-na4w'>59. dyndns [#59(now) ↑#62(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#60-cpuinfo-60now-591w-na2w-na3w-na4w'>60. cpuinfo [#60(now) ↓#59(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#61-template-61now-601w-na2w-na3w-na4w'>61. template [#61(now) ↓#60(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#62-vs-sim-62now-631w-na2w-na3w-na4w'>62. vs-sim [#62(now) ↑#63(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#63-ychat-63now-431w-na2w-na3w-na4w'>63. ychat [#63(now) ↓#43(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> -<li>⇢ ⇢ <a href='#64-foozone-64now-61w-na2w-na3w-na4w'>64. foo.zone [#64(now) ↓#6(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</a></li> +<li>⇢ ⇢ <a href='#1-ior-1now-11w'>1. ior [#1(now) →#1(1w)]</a></li> +<li>⇢ ⇢ <a href='#2-timesamurai-2now'>2. timesamurai [#2(now)]</a></li> +<li>⇢ ⇢ <a href='#3-dotfiles-3now-31w'>3. dotfiles [#3(now) →#3(1w)]</a></li> +<li>⇢ ⇢ <a href='#4-loadbars-4now-471w'>4. loadbars [#4(now) ↑#47(1w)]</a></li> +<li>⇢ ⇢ <a href='#5-epimetheus-5now-41w'>5. epimetheus [#5(now) ↓#4(1w)]</a></li> +<li>⇢ ⇢ <a href='#6-conf-6now-51w'>6. conf [#6(now) ↓#5(1w)]</a></li> +<li>⇢ ⇢ <a href='#7-foostore-7now-71w'>7. foostore [#7(now) →#7(1w)]</a></li> +<li>⇢ ⇢ <a href='#8-scifi-8now-81w'>8. scifi [#8(now) →#8(1w)]</a></li> +<li>⇢ ⇢ <a href='#9-log4jbench-9now-91w'>9. log4jbench [#9(now) →#9(1w)]</a></li> +<li>⇢ ⇢ <a href='#10-rcm-10now-101w'>10. rcm [#10(now) →#10(1w)]</a></li> +<li>⇢ ⇢ <a href='#11-yoga-11now-121w'>11. yoga [#11(now) ↑#12(1w)]</a></li> +<li>⇢ ⇢ <a href='#12-totalrecall-12now-141w'>12. totalrecall [#12(now) ↑#14(1w)]</a></li> +<li>⇢ ⇢ <a href='#13-gogios-13now-111w'>13. gogios [#13(now) ↓#11(1w)]</a></li> +<li>⇢ ⇢ <a href='#14-hexai-14now-21w'>14. hexai [#14(now) ↓#2(1w)]</a></li> +<li>⇢ ⇢ <a href='#15-perc-15now-131w'>15. perc [#15(now) ↓#13(1w)]</a></li> +<li>⇢ ⇢ <a href='#16-tasksamurai-16now-161w'>16. tasksamurai [#16(now) →#16(1w)]</a></li> +<li>⇢ ⇢ <a href='#17-gitsyncer-17now-151w'>17. gitsyncer [#17(now) ↓#15(1w)]</a></li> +<li>⇢ ⇢ <a href='#18-foostats-18now-171w'>18. foostats [#18(now) ↓#17(1w)]</a></li> +<li>⇢ ⇢ <a href='#19-gos-19now-181w'>19. gos [#19(now) ↓#18(1w)]</a></li> +<li>⇢ ⇢ <a href='#20-timr-20now-191w'>20. timr [#20(now) ↓#19(1w)]</a></li> +<li>⇢ ⇢ <a href='#21-dtail-21now-201w'>21. dtail [#21(now) ↓#20(1w)]</a></li> +<li>⇢ ⇢ <a href='#22-ds-sim-22now-211w'>22. ds-sim [#22(now) ↓#21(1w)]</a></li> +<li>⇢ ⇢ <a href='#23-gemtexter-23now-221w'>23. gemtexter [#23(now) ↓#22(1w)]</a></li> +<li>⇢ ⇢ <a href='#24-wireguardmeshgenerator-24now-231w'>24. wireguardmeshgenerator [#24(now) ↓#23(1w)]</a></li> +<li>⇢ ⇢ <a href='#25-goprecords-25now-241w'>25. goprecords [#25(now) ↓#24(1w)]</a></li> +<li>⇢ ⇢ <a href='#26-quicklogger-26now-251w'>26. quicklogger [#26(now) ↓#25(1w)]</a></li> +<li>⇢ ⇢ <a href='#27-terraform-27now-261w'>27. terraform [#27(now) ↓#26(1w)]</a></li> +<li>⇢ ⇢ <a href='#28-sillybench-28now-271w'>28. sillybench [#28(now) ↓#27(1w)]</a></li> +<li>⇢ ⇢ <a href='#29-gorum-29now-281w'>29. gorum [#29(now) ↓#28(1w)]</a></li> +<li>⇢ ⇢ <a href='#30-geheim-30now-301w'>30. geheim [#30(now) →#30(1w)]</a></li> +<li>⇢ ⇢ <a href='#31-docker-radicale-server-31now-311w'>31. docker-radicale-server [#31(now) →#31(1w)]</a></li> +<li>⇢ ⇢ <a href='#32-algorithms-32now-321w'>32. algorithms [#32(now) →#32(1w)]</a></li> +<li>⇢ ⇢ <a href='#33-randomjournalpage-33now-331w'>33. randomjournalpage [#33(now) →#33(1w)]</a></li> +<li>⇢ ⇢ <a href='#34-photoalbum-34now-341w'>34. photoalbum [#34(now) →#34(1w)]</a></li> +<li>⇢ ⇢ <a href='#35-ioriot-35now-351w'>35. ioriot [#35(now) →#35(1w)]</a></li> +<li>⇢ ⇢ <a href='#36-ipv6test-36now-361w'>36. ipv6test [#36(now) →#36(1w)]</a></li> +<li>⇢ ⇢ <a href='#37-fype-37now-371w'>37. fype [#37(now) →#37(1w)]</a></li> +<li>⇢ ⇢ <a href='#38-xerl-38now-421w'>38. xerl [#38(now) ↑#42(1w)]</a></li> +<li>⇢ ⇢ <a href='#39-sway-autorotate-39now-381w'>39. sway-autorotate [#39(now) ↓#38(1w)]</a></li> +<li>⇢ ⇢ <a href='#40-staticfarm-apache-handlers-40now-401w'>40. staticfarm-apache-handlers [#40(now) →#40(1w)]</a></li> +<li>⇢ ⇢ <a href='#41-mon-41now-391w'>41. mon [#41(now) ↓#39(1w)]</a></li> +<li>⇢ ⇢ <a href='#42-guprecords-42now-291w'>42. guprecords [#42(now) ↓#29(1w)]</a></li> +<li>⇢ ⇢ <a href='#43-pingdomfetch-43now-411w'>43. pingdomfetch [#43(now) ↓#41(1w)]</a></li> +<li>⇢ ⇢ <a href='#44-fapi-44now-441w'>44. fapi [#44(now) →#44(1w)]</a></li> +<li>⇢ ⇢ <a href='#45-perl-c-fibonacci-45now-451w'>45. perl-c-fibonacci [#45(now) →#45(1w)]</a></li> +<li>⇢ ⇢ <a href='#46-netcalendar-46now-461w'>46. netcalendar [#46(now) →#46(1w)]</a></li> +<li>⇢ ⇢ <a href='#47-gotop-47now-481w'>47. gotop [#47(now) ↑#48(1w)]</a></li> +<li>⇢ ⇢ <a href='#48-rubyfy-48now-491w'>48. rubyfy [#48(now) ↑#49(1w)]</a></li> +<li>⇢ ⇢ <a href='#49-pwgrep-49now-501w'>49. pwgrep [#49(now) ↑#50(1w)]</a></li> +<li>⇢ ⇢ <a href='#50-awksite-50now-611w'>50. awksite [#50(now) ↑#61(1w)]</a></li> +<li>⇢ ⇢ <a href='#51-jsmstrade-51now-521w'>51. jsmstrade [#51(now) ↑#52(1w)]</a></li> +<li>⇢ ⇢ <a href='#52-perldaemon-52now-511w'>52. perldaemon [#52(now) ↓#51(1w)]</a></li> +<li>⇢ ⇢ <a href='#53-japi-53now-531w'>53. japi [#53(now) →#53(1w)]</a></li> +<li>⇢ ⇢ <a href='#54-debroid-54now-571w'>54. debroid [#54(now) ↑#57(1w)]</a></li> +<li>⇢ ⇢ <a href='#55-perl-poetry-55now-541w'>55. perl-poetry [#55(now) ↓#54(1w)]</a></li> +<li>⇢ ⇢ <a href='#56-muttdelay-56now-551w'>56. muttdelay [#56(now) ↓#55(1w)]</a></li> +<li>⇢ ⇢ <a href='#57-netdiff-57now-561w'>57. netdiff [#57(now) ↓#56(1w)]</a></li> +<li>⇢ ⇢ <a href='#58-hsbot-58now-581w'>58. hsbot [#58(now) →#58(1w)]</a></li> +<li>⇢ ⇢ <a href='#59-dyndns-59now-621w'>59. dyndns [#59(now) ↑#62(1w)]</a></li> +<li>⇢ ⇢ <a href='#60-cpuinfo-60now-591w'>60. cpuinfo [#60(now) ↓#59(1w)]</a></li> +<li>⇢ ⇢ <a href='#61-template-61now-601w'>61. template [#61(now) ↓#60(1w)]</a></li> +<li>⇢ ⇢ <a href='#62-vs-sim-62now-631w'>62. vs-sim [#62(now) ↑#63(1w)]</a></li> +<li>⇢ ⇢ <a href='#63-ychat-63now-431w'>63. ychat [#63(now) ↓#43(1w)]</a></li> +<li>⇢ ⇢ <a href='#64-foozone-64now-61w'>64. foo.zone [#64(now) ↓#6(1w)]</a></li> </ul><br /> <h2 style='display: inline' id='overall-statistics'>Overall Statistics</h2><br /> <br /> @@ -140,7 +101,7 @@ </ul><br /> <h2 style='display: inline' id='projects'>Projects</h2><br /> <br /> -<h3 style='display: inline' id='1-ior-1now-11w-na2w-na3w-na4w'>1. ior [#1(now) →#1(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='1-ior-1now-11w'>1. ior [#1(now) →#1(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (88.9%), C (10.6%), JSON (0.3%), C/C++ (0.2%)</li> @@ -149,7 +110,7 @@ <li>📈 Lines of Code: 55808</li> <li>📄 Lines of Documentation: 3394</li> <li>📅 Development Period: 2024-01-18 to 2026-03-11</li> -<li>🏆 Score: 1814.2 (combines code size and activity)</li> +<li>🏆 Score: 1796.4 (combines code size and activity)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -163,7 +124,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='2-timesamurai-2now-na1w-na2w-na3w-na4w'>2. timesamurai [#2(now) ·n/a(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='2-timesamurai-2now'>2. timesamurai [#2(now)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (99.2%), Shell (0.6%), YAML (0.1%)</li> @@ -172,7 +133,7 @@ <li>📈 Lines of Code: 9493</li> <li>📄 Lines of Documentation: 112</li> <li>📅 Development Period: 2025-06-25 to 2026-03-07</li> -<li>🏆 Score: 470.7 (combines code size and activity)</li> +<li>🏆 Score: 469.3 (combines code size and activity)</li> <li>⚖️ License: MIT</li> <li>🏷️ Latest Release: v0.7.0 (2026-03-05)</li> </ul><br /> @@ -184,7 +145,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='3-dotfiles-3now-31w-na2w-na3w-na4w'>3. dotfiles [#3(now) →#3(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='3-dotfiles-3now-31w'>3. dotfiles [#3(now) →#3(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Shell (66.6%), CSS (10.9%), Config (10.1%), TOML (10.0%), JSON (1.1%), Ruby (1.0%), INI (0.2%)</li> @@ -193,19 +154,19 @@ <li>📈 Lines of Code: 2990</li> <li>📄 Lines of Documentation: 5386</li> <li>📅 Development Period: 2023-07-30 to 2026-03-10</li> -<li>🏆 Score: 389.4 (combines code size and activity)</li> +<li>🏆 Score: 388.2 (combines code size and activity)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> <br /> -<h1 style='display: inline' id='dotfiles'>dotfiles</h1><br /> +<span>These are all my dotfiles. I can install them locally on my laptop and/or workstation as well as remotely on any server.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/dotfiles'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/dotfiles'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='4-loadbars-4now-471w-na2w-na3w-na4w'>4. loadbars [#4(now) ↑#47(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='4-loadbars-4now-471w'>4. loadbars [#4(now) ↑#47(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (92.8%), Shell (7.2%)</li> @@ -214,21 +175,21 @@ <li>📈 Lines of Code: 6595</li> <li>📄 Lines of Documentation: 328</li> <li>📅 Development Period: 2010-11-05 to 2026-03-02</li> -<li>🏆 Score: 157.8 (combines code size and activity)</li> +<li>🏆 Score: 157.7 (combines code size and activity)</li> <li>⚖️ License: Custom License</li> <li>🏷️ Latest Release: v0.11.1 (2026-02-17)</li> </ul><br /> <br /> <a href='showcase/loadbars/image-1.gif'><img alt='loadbars screenshot' title='loadbars screenshot' src='showcase/loadbars/image-1.gif' /></a><br /> <br /> -<h1 style='display: inline' id='loadbars---a-small-and-humble-tool-to-observe-server-loads'>loadbars - A small and humble tool to observe server loads</h1><br /> +<span>Loadbars is a tool that can be used to observe CPU loads of several remote servers at once in real time. It connects with SSH (using SSH public/private key auth) to several servers at once and vizualizes all server CPUs and memory statistics right next each other (either summarized or each core separately). Loadbars is not a tool for collecting CPU loads and drawing graphs for later analysis. However, since such tools require a significant amount of time before producing results, Loadbars lets you observe the current state immediately. Loadbars does not remember or record any load information. It just shows the current CPU usages like top or vmstat does.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/loadbars'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/loadbars'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='5-epimetheus-5now-41w-na2w-na3w-na4w'>5. epimetheus [#5(now) ↓#4(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='5-epimetheus-5now-41w'>5. epimetheus [#5(now) ↓#4(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (85.2%), Shell (14.8%)</li> @@ -237,7 +198,7 @@ <li>📈 Lines of Code: 5199</li> <li>📄 Lines of Documentation: 1736</li> <li>📅 Development Period: 2026-02-07 to 2026-03-07</li> -<li>🏆 Score: 155.6 (combines code size and activity)</li> +<li>🏆 Score: 155.4 (combines code size and activity)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> @@ -251,7 +212,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='6-conf-6now-51w-na2w-na3w-na4w'>6. conf [#6(now) ↓#5(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='6-conf-6now-51w'>6. conf [#6(now) ↓#5(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: YAML (80.7%), Perl (9.9%), Shell (6.0%), Python (2.3%), Docker (0.7%), Config (0.2%), HTML (0.1%)</li> @@ -260,20 +221,19 @@ <li>📈 Lines of Code: 19132</li> <li>📄 Lines of Documentation: 6572</li> <li>📅 Development Period: 2021-12-28 to 2026-02-15</li> -<li>🏆 Score: 128.0 (combines code size and activity)</li> +<li>🏆 Score: 127.9 (combines code size and activity)</li> <li>⚖️ License: No license found</li> <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> <br /> -<span>conf</span><br /> -<span>====</span><br /> +<span>This is my personal config repository. Including...</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/conf'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/conf'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='7-foostore-7now-71w-na2w-na3w-na4w'>7. foostore [#7(now) →#7(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='7-foostore-7now-71w'>7. foostore [#7(now) →#7(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (98.4%), Shell (1.6%)</li> @@ -282,7 +242,7 @@ <li>📈 Lines of Code: 7020</li> <li>📄 Lines of Documentation: 250</li> <li>📅 Development Period: 2018-05-26 to 2026-03-07</li> -<li>🏆 Score: 119.7 (combines code size and activity)</li> +<li>🏆 Score: 119.6 (combines code size and activity)</li> <li>⚖️ License: No license found</li> <li>🏷️ Latest Release: v0.5.3 (2026-03-02)</li> </ul><br /> @@ -294,7 +254,7 @@ <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='8-scifi-8now-81w-na2w-na3w-na4w'>8. scifi [#8(now) →#8(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='8-scifi-8now-81w'>8. scifi [#8(now) →#8(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: JSON (35.9%), CSS (30.6%), JavaScript (29.6%), HTML (3.8%)</li> @@ -308,14 +268,14 @@ <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> <br /> -<h1 style='display: inline' id='sci-fi-books-showcase'>Sci-Fi Books Showcase</h1><br /> +<span>A static HTML page showcasing a science fiction book collection. Works fully offline with all assets stored locally.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/scifi'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/scifi'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='9-log4jbench-9now-91w-na2w-na3w-na4w'>9. log4jbench [#9(now) →#9(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='9-log4jbench-9now-91w'>9. log4jbench [#9(now) →#9(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Java (78.9%), XML (21.1%)</li> @@ -329,14 +289,14 @@ <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> <br /> -<h1 style='display: inline' id='log4j2-benchmark-tool'>Log4j2 Benchmark Tool</h1><br /> +<span>A minimal Java tool to benchmark Log4j2 logging throughput with configurable concurrent threads and various logging configurations.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/log4jbench'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/log4jbench'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='10-rcm-10now-101w-na2w-na3w-na4w'>10. rcm [#10(now) →#10(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='10-rcm-10now-101w'>10. rcm [#10(now) →#10(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Ruby (99.6%), TOML (0.4%)</li> @@ -352,14 +312,14 @@ <br /> <a href='showcase/rcm/image-1.png'><img alt='rcm screenshot' title='rcm screenshot' src='showcase/rcm/image-1.png' /></a><br /> <br /> -<h1 style='display: inline' id='rcm---ruby-configuration-management'>RCM - Ruby Configuration Management</h1><br /> +<span>A KISS (Keep It Simple, Stupid) configuration management system written in Ruby, designed for personal use.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/rcm'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/rcm'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='11-yoga-11now-121w-na2w-na3w-na4w'>11. yoga [#11(now) ↑#12(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='11-yoga-11now-121w'>11. yoga [#11(now) ↑#12(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (69.1%), HTML (30.9%)</li> @@ -375,14 +335,14 @@ <br /> <a href='showcase/yoga/image-1.png'><img alt='yoga screenshot' title='yoga screenshot' src='showcase/yoga/image-1.png' /></a><br /> <br /> -<h1 style='display: inline' id='yoga'>Yoga</h1><br /> +<span class='quote'>**⚠️ DEPRECATED:** This project is no longer maintained. No further updates, bug fixes, or feature additions will be made. Use at your own risk.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/yoga'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/yoga'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='12-totalrecall-12now-141w-na2w-na3w-na4w'>12. totalrecall [#12(now) ↑#14(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='12-totalrecall-12now-141w'>12. totalrecall [#12(now) ↑#14(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (99.0%), Shell (0.5%), YAML (0.4%)</li> @@ -398,14 +358,14 @@ <br /> <a href='showcase/totalrecall/image-1.png'><img alt='totalrecall screenshot' title='totalrecall screenshot' src='showcase/totalrecall/image-1.png' /></a><br /> <br /> -<h1 style='display: inline' id='totalrecall---bulgarian-anki-flashcard-generator'>totalrecall - Bulgarian Anki Flashcard Generator</h1><br /> +<span><span class='inlinecode'>totalrecall</span> is a versatile tool for generating Anki flashcard materials from Bulgarian words. It offers both a command-line interface (CLI) and a graphical user interface (GUI) for creating audio pronunciation files and AI-generated images.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/totalrecall'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/totalrecall'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='13-gogios-13now-111w-na2w-na3w-na4w'>13. gogios [#13(now) ↓#11(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='13-gogios-13now-111w'>13. gogios [#13(now) ↓#11(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (98.9%), JSON (0.6%), YAML (0.5%)</li> @@ -421,14 +381,14 @@ <br /> <a href='showcase/gogios/image-1.png'><img alt='gogios screenshot' title='gogios screenshot' src='showcase/gogios/image-1.png' /></a><br /> <br /> -<h1 style='display: inline' id='gogios'>Gogios</h1><br /> +<span>Gogios is a lightweight and minimalistic monitoring tool not designed for large-scale monitoring. It is ideal for monitoring self-hosted servers on a tiny scale, such as only a handful of servers or virtual machines (e.g. my personal infrastructure). If you have limited resources to monitor and require a simple yet effective solution, Gogios is an excellent choice. However, for larger environments with more complex monitoring requirements, it might be necessary to consider other monitoring solutions better suited for managing and scaling with increased monitoring demands.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/gogios'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/gogios'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='14-hexai-14now-21w-na2w-na3w-na4w'>14. hexai [#14(now) ↓#2(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='14-hexai-14now-21w'>14. hexai [#14(now) ↓#2(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (66.1%), HTML (33.9%)</li> @@ -444,14 +404,14 @@ <br /> <a href='showcase/hexai/image-1.png'><img alt='hexai screenshot' title='hexai screenshot' src='showcase/hexai/image-1.png' /></a><br /> <br /> -<h1 style='display: inline' id='hexai'>Hexai</h1><br /> +<span>Hexai, the AI addition for your Helix Editor (https://helix-editor.com) .. Other editors should work but weren't tested.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/hexai'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/hexai'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='15-perc-15now-131w-na2w-na3w-na4w'>15. perc [#15(now) ↓#13(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='15-perc-15now-131w'>15. perc [#15(now) ↓#13(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (100.0%)</li> @@ -465,14 +425,14 @@ <li>🏷️ Latest Release: v0.1.0 (2025-11-25)</li> </ul><br /> <br /> -<h1 style='display: inline' id='perc'>perc</h1><br /> +<span>A simple vibe-coded command-line percentage calculator written in Go.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/perc'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/perc'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='16-tasksamurai-16now-161w-na2w-na3w-na4w'>16. tasksamurai [#16(now) →#16(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='16-tasksamurai-16now-161w'>16. tasksamurai [#16(now) →#16(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (99.8%), YAML (0.2%)</li> @@ -488,14 +448,14 @@ <br /> <a href='showcase/tasksamurai/image-1.png'><img alt='tasksamurai screenshot' title='tasksamurai screenshot' src='showcase/tasksamurai/image-1.png' /></a><br /> <br /> -<h1 style='display: inline' id='task-samurai'>Task Samurai</h1><br /> +<span>Task Samurai invokes the <span class='inlinecode'>task</span> command to read and modify tasks. The tasks are displayed in a Bubble Tea table where each row represents a task. Hotkeys trigger Taskwarrior commands such as starting, completing or annotating tasks. The UI refreshes automatically after each action so the table is always up to date.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/tasksamurai'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/tasksamurai'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='17-gitsyncer-17now-151w-na2w-na3w-na4w'>17. gitsyncer [#17(now) ↓#15(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='17-gitsyncer-17now-151w'>17. gitsyncer [#17(now) ↓#15(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (92.9%), Shell (6.8%), JSON (0.4%)</li> @@ -509,14 +469,14 @@ <li>🏷️ Latest Release: v0.14.0 (2026-03-11)</li> </ul><br /> <br /> -<h1 style='display: inline' id='gitsyncer'>GitSyncer</h1><br /> +<span>GitSyncer is a tool for synchronizing git repositories between multiple organizations (e.g., GitHub and Codeberg). It automatically keeps all branches in sync across different git hosting platforms.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/gitsyncer'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/gitsyncer'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='18-foostats-18now-171w-na2w-na3w-na4w'>18. foostats [#18(now) ↓#17(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='18-foostats-18now-171w'>18. foostats [#18(now) ↓#17(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Perl (100.0%)</li> @@ -530,17 +490,17 @@ <li>🏷️ Latest Release: v0.2.0 (2025-10-21)</li> </ul><br /> <br /> -<h1 style='display: inline' id='foostats'>foostats</h1><br /> +<span>A privacy-respecting web analytics tool for OpenBSD that processes HTTP/HTTPS and Gemini protocol logs to generate anonymous site statistics. Designed for the foo.zone ecosystem and similar sites, it provides comprehensive traffic analysis while preserving visitor privacy through SHA3-512 IP hashing.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/foostats'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/foostats'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='19-gos-19now-181w-na2w-na3w-na4w'>19. gos [#19(now) ↓#18(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='19-gos-19now-181w'>19. gos [#19(now) ↓#18(1w)]</h3><br /> <br /> <ul> -<li>💻 Languages: Go (99.5%), JSON (0.2%), Shell (0.2%)</li> +<li>💻 Languages: Go (99.5%), Shell (0.2%), JSON (0.2%)</li> <li>📚 Documentation: Markdown (100.0%)</li> <li>📊 Commits: 402</li> <li>📈 Lines of Code: 4143</li> @@ -553,14 +513,14 @@ <br /> <a href='showcase/gos/image-1.png'><img alt='gos screenshot' title='gos screenshot' src='showcase/gos/image-1.png' /></a><br /> <br /> -<h1 style='display: inline' id='gos-go-social-media'>Gos (Go Social Media)</h1><br /> +<span>Gos is a Go-based replacement for Buffer.com, providing the ability to schedule and manage social media posts from the command line. It can be run, for example, every time you open a new shell or only once every N hours when you open a new shell.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/gos'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/gos'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='20-timr-20now-191w-na2w-na3w-na4w'>20. timr [#20(now) ↓#19(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='20-timr-20now-191w'>20. timr [#20(now) ↓#19(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (96.0%), Shell (4.0%)</li> @@ -574,14 +534,14 @@ <li>🏷️ Latest Release: v0.3.0 (2026-01-02)</li> </ul><br /> <br /> -<h1 style='display: inline' id='timr'>timr</h1><br /> +<span>A simple command-line tool to track time spent on tasks. It has been primarily coded using Google Gemini CLI and Claude Code CLI.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/timr'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/timr'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='21-dtail-21now-201w-na2w-na3w-na4w'>21. dtail [#21(now) ↓#20(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='21-dtail-21now-201w'>21. dtail [#21(now) ↓#20(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (93.9%), JSON (2.8%), C (2.0%), Make (0.5%), C/C++ (0.3%), Config (0.2%), Shell (0.2%), Docker (0.1%)</li> @@ -597,15 +557,14 @@ <br /> <a href='showcase/dtail/image-1.png'><img alt='dtail screenshot' title='dtail screenshot' src='showcase/dtail/image-1.png' /></a><br /> <br /> -<span>DTail</span><br /> -<span>=====</span><br /> +<span>DTail (a distributed tail program) is a DevOps tool for engineers programmed in Google Go for following (tailing), catting and grepping (including gzip and zstd decompression support) log files on many machines concurrently. An advanced feature of DTail is to execute distributed MapReduce aggregations across many devices.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/dtail'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/dtail'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='22-ds-sim-22now-211w-na2w-na3w-na4w'>22. ds-sim [#22(now) ↓#21(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='22-ds-sim-22now-211w'>22. ds-sim [#22(now) ↓#21(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Java (98.9%), Shell (0.6%), CSS (0.5%)</li> @@ -621,14 +580,14 @@ <br /> <a href='showcase/ds-sim/image-1.png'><img alt='ds-sim screenshot' title='ds-sim screenshot' src='showcase/ds-sim/image-1.png' /></a><br /> <br /> -<h1 style='display: inline' id='ds-sim'>DS-Sim</h1><br /> +<span>DS-Sim is a open-source simulator for distributed systems, written in Java. It provides a powerful environment for simulating and learning about distributed systems concepts.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/ds-sim'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/ds-sim'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='23-gemtexter-23now-221w-na2w-na3w-na4w'>23. gemtexter [#23(now) ↓#22(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='23-gemtexter-23now-221w'>23. gemtexter [#23(now) ↓#22(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Shell (70.8%), CSS (26.2%), Config (1.8%), HTML (1.2%)</li> @@ -642,15 +601,14 @@ <li>🏷️ Latest Release: 3.0.0 (2024-10-01)</li> </ul><br /> <br /> -<span>The Gemtexter blog engine and static site generator</span><br /> -<span>===================================================</span><br /> +<span>This is the source code of my personal internet site and blog engine. All content is written in Gemini Gemtext format, but the script <span class='inlinecode'>gemtexter</span> generates multiple other static output formats (with zero JavaScript) from it. You can reach the site(s)...</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/gemtexter'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/gemtexter'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='24-wireguardmeshgenerator-24now-231w-na2w-na3w-na4w'>24. wireguardmeshgenerator [#24(now) ↓#23(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='24-wireguardmeshgenerator-24now-231w'>24. wireguardmeshgenerator [#24(now) ↓#23(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Ruby (65.4%), YAML (34.6%)</li> @@ -664,14 +622,14 @@ <li>🏷️ Latest Release: v1.0.0 (2025-05-11)</li> </ul><br /> <br /> -<h1 style='display: inline' id='wireguard-mesh-generator'>WireGuard Mesh Generator</h1><br /> +<span>Have a look at the <span class='inlinecode'>wireguardmeshgenerator.yaml</span></span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/wireguardmeshgenerator'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/wireguardmeshgenerator'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='25-goprecords-25now-241w-na2w-na3w-na4w'>25. goprecords [#25(now) ↓#24(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='25-goprecords-25now-241w'>25. goprecords [#25(now) ↓#24(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (100.0%)</li> @@ -685,14 +643,14 @@ <li>🏷️ Latest Release: v0.2.1 (2026-02-20)</li> </ul><br /> <br /> -<h1 style='display: inline' id='goprecords---global-uptime-records'>goprecords - Global uptime records</h1><br /> +<span><span class='inlinecode'>goprecords</span> is a Go command-line program that generates uptime reports for hosts based on the input record files from <span class='inlinecode'>uptimed</span>. It supports importing records into SQLite and querying for reports, or reporting directly from a stats directory.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/goprecords'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/goprecords'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='26-quicklogger-26now-251w-na2w-na3w-na4w'>26. quicklogger [#26(now) ↓#25(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='26-quicklogger-26now-251w'>26. quicklogger [#26(now) ↓#25(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (96.4%), XML (1.8%), Shell (1.1%), TOML (0.7%)</li> @@ -708,14 +666,14 @@ <br /> <a href='showcase/quicklogger/image-1.png'><img alt='quicklogger screenshot' title='quicklogger screenshot' src='showcase/quicklogger/image-1.png' /></a><br /> <br /> -<h1 style='display: inline' id='quick-logger'>Quick logger</h1><br /> +<span>This is a tiny GUI app written in Go using the Fyne framework to quickly log a message to a file. Read on my blog more about this: https://foo.zone/gemfeed/2024-03-03-a-fine-fyne-android-app-for-quickly-logging-ideas-programmed-in-golang.html</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/quicklogger'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/quicklogger'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='27-terraform-27now-261w-na2w-na3w-na4w'>27. terraform [#27(now) ↓#26(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='27-terraform-27now-261w'>27. terraform [#27(now) ↓#26(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: HCL (96.6%), Make (1.9%), YAML (1.5%)</li> @@ -729,14 +687,14 @@ <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> <br /> -<h1 style='display: inline' id='terraform'>Terraform</h1><br /> +<span>Go to AWS Secrets manager manually and create it!</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/terraform'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/terraform'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='28-sillybench-28now-271w-na2w-na3w-na4w'>28. sillybench [#28(now) ↓#27(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='28-sillybench-28now-271w'>28. sillybench [#28(now) ↓#27(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (90.9%), Shell (9.1%)</li> @@ -750,14 +708,14 @@ <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> <br /> -<h1 style='display: inline' id='silly-benchmark'>Silly Benchmark</h1><br /> +<span>To compare how fast this runs on FreeBSD vs a Linux Bhyve VM</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/sillybench'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/sillybench'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='29-gorum-29now-281w-na2w-na3w-na4w'>29. gorum [#29(now) ↓#28(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='29-gorum-29now-281w'>29. gorum [#29(now) ↓#28(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (91.3%), JSON (6.4%), YAML (2.3%)</li> @@ -771,14 +729,14 @@ <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> <br /> -<h1 style='display: inline' id='gorum'>Gorum</h1><br /> +<span>Gogios is a minimalistic quorum manager.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/gorum'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/gorum'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='30-geheim-30now-301w-na2w-na3w-na4w'>30. geheim [#30(now) →#30(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='30-geheim-30now-301w'>30. geheim [#30(now) →#30(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Ruby (86.7%), Shell (13.3%)</li> @@ -792,14 +750,14 @@ <li>🏷️ Latest Release: v0.3.1 (2025-11-01)</li> </ul><br /> <br /> -<h1 style='display: inline' id='geheimrb'>geheim.rb</h1><br /> +<span class='quote'>**⚠️ DEPRECATED:** This project is no longer maintained. I have switched to another solution and will not be doing any further work on this project.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/geheim'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/geheim'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='31-docker-radicale-server-31now-311w-na2w-na3w-na4w'>31. docker-radicale-server [#31(now) →#31(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='31-docker-radicale-server-31now-311w'>31. docker-radicale-server [#31(now) →#31(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Make (57.5%), Docker (42.5%)</li> @@ -813,14 +771,14 @@ <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> <br /> -<h1 style='display: inline' id='radicale-docker-image'>Radicale Docker image</h1><br /> +<span>For the Radicale server https://radicale.org</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/docker-radicale-server'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/docker-radicale-server'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='32-algorithms-32now-321w-na2w-na3w-na4w'>32. algorithms [#32(now) →#32(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='32-algorithms-32now-321w'>32. algorithms [#32(now) →#32(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (99.2%), Make (0.8%)</li> @@ -835,15 +793,14 @@ </ul><br /> <span>⚠️ **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.</span><br /> <br /> -<span>Algorithms</span><br /> -<span>==========</span><br /> +<span>This includes exercises from the Algorithms lecture. Well, this is just a refresher exercise.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/algorithms'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/algorithms'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='33-randomjournalpage-33now-331w-na2w-na3w-na4w'>33. randomjournalpage [#33(now) →#33(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='33-randomjournalpage-33now-331w'>33. randomjournalpage [#33(now) →#33(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Shell (94.1%), Make (5.9%)</li> @@ -858,14 +815,14 @@ </ul><br /> <span>⚠️ **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.</span><br /> <br /> -<h1 style='display: inline' id='read-a-random-journal'>Read a random journal</h1><br /> +<span>This is a quick and dirty script which I use personally to grab a random PDF file (a scanned version of one of my bullet journals) and to extract a random set of pages from it in order to reflect/read what was happening in the past. This also includes various notes of books I have read and random ideas I wrote down and my want to reconsider.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/randomjournalpage'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/randomjournalpage'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='34-photoalbum-34now-341w-na2w-na3w-na4w'>34. photoalbum [#34(now) →#34(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='34-photoalbum-34now-341w'>34. photoalbum [#34(now) →#34(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Shell (80.1%), Make (12.3%), Config (7.6%)</li> @@ -880,14 +837,15 @@ </ul><br /> <span>⚠️ **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.</span><br /> <br /> -<h1 style='display: inline' id='photoalbum'>photoalbum</h1><br /> +<span>photoalbum is a minimal Bash script for Unix like operating systems (such as Linux) to generate static web photo albums.</span><br /> +<span>The resulting static photo album is pure HTML+CSS (without any JavaScript!).</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/photoalbum'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/photoalbum'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='35-ioriot-35now-351w-na2w-na3w-na4w'>35. ioriot [#35(now) →#35(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='35-ioriot-35now-351w'>35. ioriot [#35(now) →#35(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: C (55.5%), C/C++ (24.0%), Config (19.6%), Make (1.0%)</li> @@ -904,159 +862,14 @@ <br /> <a href='showcase/ioriot/image-1.png'><img alt='ioriot screenshot' title='ioriot screenshot' src='showcase/ioriot/image-1.png' /></a><br /> <br /> -<h1 style='display: inline' id='io-riot'>I/O Riot
</h1><br /> -<span>
</span><br /> -<h2 style='display: inline' id='overview'>Overview
</h2><br /> -<span>
</span><br /> -<span><img src=doc/ioriot_small.png align=right />
</span><br /> -<span>
</span><br /> -<span>...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.
</span><br /> -<span>
</span><br /> -<span>I/O Riot is operated in 5 steps:
</span><br /> -<span>
</span><br /> -<span>1. Capture: Record all I/O operations over a given period of time to a capture log.
</span><br /> -<span>2. Initialize: Copy the log to a load test machine and initialize the load test environment.
</span><br /> -<span>3. Replay: Drop all OS caches and replay all I/O operations.
</span><br /> -<span>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.
</span><br /> -<span>5. Repeat: Repeat steps 2-4 multiple times but adjust OS and hardware settings in order to improve I/O performance.
</span><br /> -<span>
</span><br /> -<span>Examples of OS and hardware settings and adjustments:
</span><br /> -<span>
</span><br /> -<ul> -<li>Change of system parameters (file system mount options, file system caching, file system type, file system creation flags).
</li> -<li>Replay the I/O at different speed(s).
</li> -<li>Replay the I/O with modified pattern(s) (e.g. remove reads from the replay journal).
</li> -<li>Replay the I/O on different types of hardware.
</li> -</ul><br /> -<span>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.
</span><br /> -<span>
</span><br /> -<h2 style='display: inline' id='benefits'>Benefits
</h2><br /> -<span>
</span><br /> -<span>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.
</span><br /> -<span>
</span><br /> -<span>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.
</span><br /> -<span>
</span><br /> -<span>The benefits of I/O Riot are:
</span><br /> -<span>
</span><br /> -<ul> -<li>It is easy to determine whether a new hardware type is suitable for an already existing application.
</li> -<li>It is easy to change OS and hardware for performance tests and optimizations.
</li> -<li>Findings can be applied to production machines in order to optimize OS configuration and to save hardware costs.
</li> -<li>Benchmarks are based on production I/O patterns and not on artificial I/O patterns.
</li> -<li>Log files can be modified to see whether a change in the application behavior would improve I/O performance (without actually touching the application code)
</li> -<li>Log files could be generated synthetically in order to find out how a new application would perform (even if there isn't any code for the new application yet)
</li> -<li>It identifies possible flaws in the applications (e.g. Java programs which produce I/O operations on the server machines). Findings can be reported to the corresponding developers so that changes can be introduced to improve the applications I/O performance.
</li> -<li>It captures I/O in Linux Kernel space (very efficient, no system slowdowns even under heavy I/O load)
</li> -<li>It replays I/O via a tool developed in C with as little overhead as possible.
</li> -</ul><br /> -<h1 style='display: inline' id='send-in-patches'>Send in patches
</h1><br /> -<span>
</span><br /> -<span>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.
</span><br /> -<span>
</span><br /> -<span>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.).
</span><br /> -<span>
</span><br /> -<span>Future work will also include file hole support and I/O support for memory mapped files.
</span><br /> -<span>
</span><br /> -<h1 style='display: inline' id='how-to-install-io-riot'>How to install I/O Riot
</h1><br /> -<span>
</span><br /> -<span>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).
</span><br /> -<span>
</span><br /> -<h1 style='display: inline' id='how-to-use-io-riot'>How to use I/O Riot
</h1><br /> -<span>
</span><br /> -<span>Check out the [I/O Riot usage guide](doc/markdown/usage.md) for a full usage workflow demonstration.
</span><br /> -<span>
</span><br /> -<h1 style='display: inline' id='appendix'>Appendix
</h1><br /> -<span>
</span><br /> -<h2 style='display: inline' id='supported-file-systems'>Supported file systems
</h2><br /> -<span>
</span><br /> -<span>Currently I/O Riot supports replaying I/O on `<span class='inlinecode'>ext2</span><span class='inlinecode'>, </span><span class='inlinecode'>ext3</span><span class='inlinecode'>, </span><span class='inlinecode'>ext4</span><span class='inlinecode'> and </span><span class='inlinecode'>xfs</span>`. However, it should be straightforward add additional file systems.
</span><br /> -<span>
</span><br /> -<h2 style='display: inline' id='supported-syscalls'>Supported syscalls
</h2><br /> -<span>
</span><br /> -<span>Currently, these file I/O related syscalls are supported (as of CentOS 7):
</span><br /> -<span>
</span><br /> -<pre> -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)
-</pre> -<span>
</span><br /> -<h2 style='display: inline' id='source-code-documentation'>Source code documentation
</h2><br /> -<span>
</span><br /> -<span>The documentation of the source code can be generated via the Doxygen Framework. To install doxygen run `<span class='inlinecode'>sudo yum install doxygen</span><span class='inlinecode'> and to generate the documentation run </span><span class='inlinecode'>make doxygen</span><span class='inlinecode'> in the top level source directory. Once done, the resulting documentation can be found in the </span><span class='inlinecode'>doc/html</span><span class='inlinecode'> subfolder of the project. It is worthwhile to start from </span><span class='inlinecode'>ioriot/src/main.c</span>` and read your way through. Functions are generally documented in the header files. Exceptions are static functions which don't have any separate declarations.
</span><br /> -<span>
</span><br /> -<span>More
</span><br /> -<span>====
</span><br /> -<span>
</span><br /> -<ul> -<li>[How to contribute](CONTRIBUTING.md)
</li> -<li>[Code of conduct](CODE_OF_CONDUCT.md)
</li> -<li>[License](LICENSE)
</li> -</ul><br /> -<span>Credits
</span><br /> -<span>=======
</span><br /> -<span>
</span><br /> -<ul> -<li>I/O Riot was created by **Paul Buetow** *<pbuetow@mimecast.com>*
</li> -</ul><br /> -<ul> -<li>Thank you to **Vlad-Marian Marian** for creating the I/O Riot logo.</li> -</ul><br /> +<span>...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.</span><br /> +<br /> <a class='textlink' href='https://codeberg.org/snonux/ioriot'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/ioriot'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='36-ipv6test-36now-361w-na2w-na3w-na4w'>36. ipv6test [#36(now) →#36(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='36-ipv6test-36now-361w'>36. ipv6test [#36(now) →#36(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Perl (65.8%), Docker (34.2%)</li> @@ -1070,14 +883,14 @@ exit_group - To detect process termination (closing all open file handles) <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> <br /> -<h1 style='display: inline' id='ipv6-test-website'>IPv6 Test Website</h1><br /> +<span>This is a quick and dirty Perl-based IPv6 test website.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/ipv6test'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/ipv6test'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='37-fype-37now-371w-na2w-na3w-na4w'>37. fype [#37(now) →#37(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='37-fype-37now-371w'>37. fype [#37(now) →#37(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: C (77.3%), C/C++ (13.1%), HTML (7.5%), Make (2.1%)</li> @@ -1091,14 +904,14 @@ exit_group - To detect process termination (closing all open file handles) <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> <br /> -<h1 style='display: inline' id='fype'>Fype</h1><br /> +<span>**F**or **Y**our **P**rogram **E**xecution — a lightweight scripting language.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/fype'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/fype'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='38-xerl-38now-421w-na2w-na3w-na4w'>38. xerl [#38(now) ↑#42(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='38-xerl-38now-421w'>38. xerl [#38(now) ↑#42(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: CSS (54.6%), XML (39.1%), Perl (4.0%), Make (2.2%)</li> @@ -1113,15 +926,14 @@ exit_group - To detect process termination (closing all open file handles) </ul><br /> <span>⚠️ **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.</span><br /> <br /> -<span>xerl Host Templates</span><br /> -<span>===================</span><br /> +<span>Those are the host templates to be used with Xerl itself.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/xerl'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/xerl'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='39-sway-autorotate-39now-381w-na2w-na3w-na4w'>39. sway-autorotate [#39(now) ↓#38(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='39-sway-autorotate-39now-381w'>39. sway-autorotate [#39(now) ↓#38(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Shell (100.0%)</li> @@ -1135,14 +947,14 @@ exit_group - To detect process termination (closing all open file handles) <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> <br /> -<h1 style='display: inline' id='sway-autorotate'>sway-autorotate</h1><br /> +<span>This is a fork of https://github.com/tedk0n/autorotate_sway_script</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/sway-autorotate'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/sway-autorotate'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='40-staticfarm-apache-handlers-40now-401w-na2w-na3w-na4w'>40. staticfarm-apache-handlers [#40(now) →#40(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='40-staticfarm-apache-handlers-40now-401w'>40. staticfarm-apache-handlers [#40(now) →#40(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Perl (96.4%), Make (3.6%)</li> @@ -1165,7 +977,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='41-mon-41now-391w-na2w-na3w-na4w'>41. mon [#41(now) ↓#39(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='41-mon-41now-391w'>41. mon [#41(now) ↓#39(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Perl (96.5%), Shell (1.8%), Make (1.2%), Config (0.4%)</li> @@ -1188,7 +1000,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='42-guprecords-42now-291w-na2w-na3w-na4w'>42. guprecords [#42(now) ↓#29(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='42-guprecords-42now-291w'>42. guprecords [#42(now) ↓#29(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Raku (100.0%)</li> @@ -1208,7 +1020,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='43-pingdomfetch-43now-411w-na2w-na3w-na4w'>43. pingdomfetch [#43(now) ↓#41(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='43-pingdomfetch-43now-411w'>43. pingdomfetch [#43(now) ↓#41(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Perl (97.3%), Make (2.7%)</li> @@ -1231,7 +1043,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='44-fapi-44now-441w-na2w-na3w-na4w'>44. fapi [#44(now) →#44(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='44-fapi-44now-441w'>44. fapi [#44(now) →#44(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Python (96.6%), Make (3.1%), Config (0.3%)</li> @@ -1254,7 +1066,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='45-perl-c-fibonacci-45now-451w-na2w-na3w-na4w'>45. perl-c-fibonacci [#45(now) →#45(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='45-perl-c-fibonacci-45now-451w'>45. perl-c-fibonacci [#45(now) →#45(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: C (80.4%), Make (19.6%)</li> @@ -1276,7 +1088,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='46-netcalendar-46now-461w-na2w-na3w-na4w'>46. netcalendar [#46(now) →#46(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='46-netcalendar-46now-461w'>46. netcalendar [#46(now) →#46(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Java (83.0%), HTML (12.9%), XML (3.0%), CSS (0.8%), Make (0.2%)</li> @@ -1299,7 +1111,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='47-gotop-47now-481w-na2w-na3w-na4w'>47. gotop [#47(now) ↑#48(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='47-gotop-47now-481w'>47. gotop [#47(now) ↑#48(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Go (98.0%), Make (2.0%)</li> @@ -1320,7 +1132,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='48-rubyfy-48now-491w-na2w-na3w-na4w'>48. rubyfy [#48(now) ↑#49(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='48-rubyfy-48now-491w'>48. rubyfy [#48(now) ↑#49(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Ruby (98.5%), JSON (1.5%)</li> @@ -1341,7 +1153,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='49-pwgrep-49now-501w-na2w-na3w-na4w'>49. pwgrep [#49(now) ↑#50(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='49-pwgrep-49now-501w'>49. pwgrep [#49(now) ↑#50(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Shell (85.0%), Make (15.0%)</li> @@ -1362,7 +1174,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='50-awksite-50now-611w-na2w-na3w-na4w'>50. awksite [#50(now) ↑#61(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='50-awksite-50now-611w'>50. awksite [#50(now) ↑#61(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: AWK (72.1%), HTML (16.4%), Config (11.5%)</li> @@ -1383,7 +1195,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='51-jsmstrade-51now-521w-na2w-na3w-na4w'>51. jsmstrade [#51(now) ↑#52(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='51-jsmstrade-51now-521w'>51. jsmstrade [#51(now) ↑#52(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Java (76.0%), Shell (15.4%), XML (8.6%)</li> @@ -1406,7 +1218,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='52-perldaemon-52now-511w-na2w-na3w-na4w'>52. perldaemon [#52(now) ↓#51(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='52-perldaemon-52now-511w'>52. perldaemon [#52(now) ↓#51(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Perl (74.2%), Shell (22.2%), Config (3.6%)</li> @@ -1419,19 +1231,15 @@ exit_group - To detect process termination (closing all open file handles) </ul><br /> <span>⚠️ **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.</span><br /> <br /> -<span>TOC:</span><br /> -<span>01. HELLO WORLD</span><br /> -<span>02. QUICK START GUIDE</span><br /> -<span>03. CONFIGURATION</span><br /> -<span>04. HIGH RESOLUTION SCHEDULING TIME</span><br /> -<span>05. WRITING YOUR OWN MODULES</span><br /> +<span>PerlDaemon is a minimal daemon for Linux and other UNIX a like operating system</span><br /> +<span>programmed in Perl. It can be extended to fit any task...</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/perldaemon'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/perldaemon'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='53-japi-53now-531w-na2w-na3w-na4w'>53. japi [#53(now) →#53(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='53-japi-53now-531w'>53. japi [#53(now) →#53(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Perl (78.3%), Make (21.7%)</li> @@ -1454,7 +1262,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='54-debroid-54now-571w-na2w-na3w-na4w'>54. debroid [#54(now) ↑#57(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='54-debroid-54now-571w'>54. debroid [#54(now) ↑#57(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Shell (92.0%), Make (8.0%)</li> @@ -1477,7 +1285,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='55-perl-poetry-55now-541w-na2w-na3w-na4w'>55. perl-poetry [#55(now) ↓#54(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='55-perl-poetry-55now-541w'>55. perl-poetry [#55(now) ↓#54(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Perl (100.0%)</li> @@ -1492,15 +1300,14 @@ exit_group - To detect process termination (closing all open file handles) </ul><br /> <span>⚠️ **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.</span><br /> <br /> -<span>perl-poetry</span><br /> -<span>===========</span><br /> +<span>Here you find some Poetry written in Perl.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/perl-poetry'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/perl-poetry'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='56-muttdelay-56now-551w-na2w-na3w-na4w'>56. muttdelay [#56(now) ↓#55(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='56-muttdelay-56now-551w'>56. muttdelay [#56(now) ↓#55(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Make (47.1%), Shell (46.3%), Vim Script (5.9%), Config (0.7%)</li> @@ -1523,7 +1330,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='57-netdiff-57now-561w-na2w-na3w-na4w'>57. netdiff [#57(now) ↓#56(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='57-netdiff-57now-561w'>57. netdiff [#57(now) ↓#56(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Shell (52.2%), Make (46.3%), Config (1.5%)</li> @@ -1546,7 +1353,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='58-hsbot-58now-581w-na2w-na3w-na4w'>58. hsbot [#58(now) →#58(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='58-hsbot-58now-581w'>58. hsbot [#58(now) →#58(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Haskell (98.5%), Make (1.5%)</li> @@ -1558,14 +1365,15 @@ exit_group - To detect process termination (closing all open file handles) <li>🧪 Status: Experimental (no releases yet)</li> </ul><br /> <br /> -<span>DEPRECATED:</span><br /> +<span>This project is no longer maintained. No further updates, bug fixes, or</span><br /> +<span>feature additions will be made. Use at your own risk.</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/hsbot'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/hsbot'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='59-dyndns-59now-621w-na2w-na3w-na4w'>59. dyndns [#59(now) ↑#62(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='59-dyndns-59now-621w'>59. dyndns [#59(now) ↑#62(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Shell (100.0%)</li> @@ -1588,7 +1396,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='60-cpuinfo-60now-591w-na2w-na3w-na4w'>60. cpuinfo [#60(now) ↓#59(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='60-cpuinfo-60now-591w'>60. cpuinfo [#60(now) ↓#59(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Shell (53.2%), Make (46.8%)</li> @@ -1603,15 +1411,14 @@ exit_group - To detect process termination (closing all open file handles) </ul><br /> <span>⚠️ **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.</span><br /> <br /> -<span>NAME</span><br /> -<span> cpuinfo - A small and humble tool to print out CPU data</span><br /> +<span>cpuinfo - A small and humble tool to print out CPU data</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/cpuinfo'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/cpuinfo'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='61-template-61now-601w-na2w-na3w-na4w'>61. template [#61(now) ↓#60(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='61-template-61now-601w'>61. template [#61(now) ↓#60(1w)]</h3><br /> <br /> <ul> <li>💻 Languages: Make (89.2%), Shell (10.8%)</li> @@ -1634,7 +1441,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='62-vs-sim-62now-631w-na2w-na3w-na4w'>62. vs-sim [#62(now) ↑#63(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='62-vs-sim-62now-631w'>62. vs-sim [#62(now) ↑#63(1w)]</h3><br /> <br /> <ul> <li>📚 Documentation: Markdown (100.0%)</li> @@ -1648,15 +1455,14 @@ exit_group - To detect process termination (closing all open file handles) </ul><br /> <span>⚠️ **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.</span><br /> <br /> -<span>vs-sim</span><br /> -<span>======</span><br /> +<span>VS-Sim is an open source simulator programmed in Java for distributed systems. VS-Sim stands for "Verteilte Systeme Simulator" which is the german translation for "Distributed Sytstems Simulator".</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/vs-sim'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/vs-sim'>View on GitHub</a><br /> <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='63-ychat-63now-431w-na2w-na3w-na4w'>63. ychat [#63(now) ↓#43(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='63-ychat-63now-431w'>63. ychat [#63(now) ↓#43(1w)]</h3><br /> <br /> <ul> <li>📚 Documentation: Text (100.0%)</li> @@ -1677,7 +1483,7 @@ exit_group - To detect process termination (closing all open file handles) <br /> <span>---</span><br /> <br /> -<h3 style='display: inline' id='64-foozone-64now-61w-na2w-na3w-na4w'>64. foo.zone [#64(now) ↓#6(1w) ·n/a(2w) ·n/a(3w) ·n/a(4w)]</h3><br /> +<h3 style='display: inline' id='64-foozone-64now-61w'>64. foo.zone [#64(now) ↓#6(1w)]</h3><br /> <br /> <ul> <li>📚 Documentation: Markdown (100.0%)</li> @@ -1691,8 +1497,7 @@ exit_group - To detect process termination (closing all open file handles) </ul><br /> <span>⚠️ **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.</span><br /> <br /> -<span>The foo.zone internet site</span><br /> -<span>===========================</span><br /> +<span>Each format is in it's own branch in this repository. E.g.:</span><br /> <br /> <a class='textlink' href='https://codeberg.org/snonux/foo.zone'>View on Codeberg</a><br /> <a class='textlink' href='https://github.com/snonux/foo.zone'>View on GitHub</a><br /> |
