{"id":16183161,"url":"https://github.com/speckij/hochwasser","last_synced_at":"2025-03-19T02:30:49.478Z","repository":{"id":45136926,"uuid":"164344636","full_name":"SpeckiJ/Hochwasser","owner":"SpeckiJ","description":"Highly efficient client for Pixelflut (https://cccgoe.de/wiki/Pixelflut)","archived":false,"fork":false,"pushed_at":"2022-12-31T00:42:40.000Z","size":3111,"stargazers_count":14,"open_issues_count":5,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-28T14:08:18.453Z","etag":null,"topics":["36c3","gpn19","pixelflut","pixelflut-client"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SpeckiJ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-06T20:54:29.000Z","updated_at":"2024-12-29T00:02:21.000Z","dependencies_parsed_at":"2023-01-31T17:30:24.390Z","dependency_job_id":null,"html_url":"https://github.com/SpeckiJ/Hochwasser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpeckiJ%2FHochwasser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpeckiJ%2FHochwasser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpeckiJ%2FHochwasser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpeckiJ%2FHochwasser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SpeckiJ","download_url":"https://codeload.github.com/SpeckiJ/Hochwasser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243960434,"owners_count":20375101,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["36c3","gpn19","pixelflut","pixelflut-client"],"created_at":"2024-10-10T06:45:04.351Z","updated_at":"2025-03-19T02:30:48.814Z","avatar_url":"https://github.com/SpeckiJ.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\" \u003e🌊🌊🌊 Hochwasser 🌊🤽🌊\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\u003cimg src=\"benchmarks/hochwasser_shuffle_vs_ordered.gif\"/\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cimg src=\"benchmarks/nmzs.gif\"/\u003e\u003c/p\u003e\n\nHighly efficient distributed [Pixelflut] client.\n\n- Sends static images, text, generated patterns (animations upcoming)\n- REPL enables fast iterations\n- CnC server + client architecture (it's webscale!) (can also run in a single process)\n- Faster than [sturmflut] (in some benchmarks at least)\n- No dependencies (pixelflut apparently was considered a primary use case in the design of golang's stdlib 👍)\n\n[pixelflut]: https://cccgoe.de/wiki/Pixelflut\n[sturmflut]: https://github.com/TobleMiner/sturmflut\n\n### testimonials\n\u003e Pixelflut endlich *durchgespielt*.\n\u003e\n\u003e   - Steffen Cybert\n\n\u003e N-no more micro-ddosing: bring on ssome Hochwasser and exppperience colors never seen befffore!1!\n\u003e\n\u003e   - Morty\n\n\u003e Hochwasser brings back the D in *social DDoSing*! Man, I forgot which one..\n\u003e\n\u003e   - Doc Brown\n\n## build / install\n1. have a `go` installation \u003e= 1.12\n2. `go get github.com/SpeckiJ/Hochwasser`\n3. `go install github.com/SpeckiJ/Hochwasser`\n\n\u003e The help texts may be lacking, it's recommended to read `rpc/repl.go`.\n\n## hacking\nLook at the `github.com/SpeckiJ/Hochwasser/pixelflut` subpackage, it contains the performance sensitive core.\n\nThe code is getting somewhat ~~bloated~~enterprise-ready, so if you want to quickly render a fun thing,\nit may be easier to just build a separate executable on top of `pixelflut.Flut()`, than to extend Hochwasser.\n\n## benchmark\nThe following benchmark was run on a max-spec X280 against version [d4c574b].\n\nI could not figure out what the performance bottleneck is, but it doesn't seem\nto be CPU limited, as turbo-boost doesn't kick in.\n\nTo reproduce, run the following commands in separate shells:\n\n```sh\niperf -s -p 1234\ngo run main.go -image benchmark/test.png -connections 10\n```\n\n![screenshot: 55 Gbps of hochwasser](benchmarks/benchmark_x280.png)\n\n55 Gbps on average! 🌊🌊🌊\n\n[sturmflut] (`./sturmflut 127.0.0.1:1337 benchmark/test.png -t 10`, version `8ec6ee9`) managed to get 48 Gpbs throughput on this system.\n\n\u003e Hint: Benchmarking throughput against the [pixelnuke][pixelflut_gh] server is\n  pointless, as performance is then CPU-limited to ~1 Gbps by the server.\n  Using [iperf] removes the server limitation.\n  This also means that these metrics of several Gbps are far higher than\n  realworld scenarios.\n\n[d4c574b]: https://github.com/SpeckiJ/Hochwasser/commit/d4c574be103a7bad69349f29402694f51058184c\n[pixelflut_gh]: https://github.com/defnull/pixelflut\n[iperf]: https://iperf.fr/\n\n## future ideas\nsee [IDEAS](https://github.com/SpeckiJ/Hochwasser/blob/master/IDEAS.md).\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"benchmarks/hochwasser_vs_sturmflut.gif\"/\u003e\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspeckij%2Fhochwasser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspeckij%2Fhochwasser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspeckij%2Fhochwasser/lists"}