maelstrom
kaocha
maelstrom | kaocha | |
---|---|---|
14 | 4 | |
2,792 | 778 | |
2.0% | 0.1% | |
5.1 | 7.4 | |
24 days ago | about 1 month ago | |
Clojure | Clojure | |
Eclipse Public License 1.0 | Eclipse Public License 1.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
maelstrom
- Maelstrom: A workbench for learning distributed systems
-
The Raft Consensus Algorithm
Maelstrom [1], a workbench for learning distributed systems from the creator of Jepsen, includes a simple (model-checked) implementation of Raft and an excellent tutorial on implementing it.
Raft is a simple algorithm, but as others have noted, the original paper includes many correctness details often brushed over in toy implementations. Furthermore, the fallibility of real-world hardware (handling memory/disk corruption and grey failures), the requirements of real-world systems with tight latency SLAs, and a need for things like flexible quorum/dynamic cluster membership make implementing it for production a long and daunting task. The commit history of etcd and hashicorp/raft, likely the two most battle-tested open source implementations of raft that still surface correctness bugs on the regular tell you all you need to know.
The tigerbeetle team talks in detail about the real-world aspects of distributed systems on imperfect hardware/non-abstracted system models, and why they chose viewstamp replication, which predates Paxos but looks more like Raft.
[1]: https://github.com/jepsen-io/maelstrom/
[2]: https://github.com/tigerbeetle/tigerbeetle/blob/main/docs/DE...
-
zio-maelstrom
I've tried to run the echo example and I'me getting some problems. I assume it works as the same example in the maelstrom's getting started ready (https://github.com/jepsen-io/maelstrom/blob/main/doc/01-getting-ready/index.md).
- Ask HN: Projects to do to get better at distributed systems
- Resources about distributed systems in go
- FLiPN-FLaNK Stack for March 6, 2023
-
Gossip Glomers: Fly.io Distributed Systems Challenges
Love it. Thanks for putting this together! The actual challenges here [0].
Though I'm curious: are these different from the chapters in the Maelstrom documentation [1]? There seems to be a bit of overlap anyway.
[0] https://fly.io/dist-sys/
[1] https://github.com/jepsen-io/maelstrom#documentation
kaocha
- A History of Clojure (2020) [pdf]
-
Clojure is a product design tool
Full-featured test runner: https://github.com/lambdaisland/kaocha
If you install neil (https://github.com/babashka/neil), you can do `neil add test` which will automatically set up cognitect-labs/test-runner in your project. Then you can run tests with `neil test` (just an alias, you don't have to use it).
> I used Kit to bootstrap this project and the way it set up tests doesn't even work, but this was what most people recommended to me for starting a Clojure project
I don't really like the approach that Kit takes and prefer something more opinionated like Biff. I'd love to hear your feedback if you do end up trying out Biff.
-
Application project template
run tests using kaocha.
-
How can I test my clojure code without re-jacking in every time?
But you can use other test runners, such as https://github.com/lambdaisland/kaocha
What are some alternatives?
nosqlbench - The open source, pluggable, nosql benchmarking suite.
test-runner - A test runner for clojure.test
titanoboa - Titanoboa makes complex workflows easy. It is a low-code workflow orchestration platform for JVM - distributed, highly scalable and fault tolerant.
test-refresh - Refreshes and reruns clojure.tests in your project.
bond - spying for tests
deps-new - A new, simpler alternative to clj-new
openai-python - The official Python library for the OpenAI API
pomegranate - A sane Clojure API for Maven Artifact Resolver + dynamic runtime modification of the classpath
unilm - Large-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities
apptemplate - Application project template for Clojure
talent-plan - open source training courses about distributed database and distributed systems
ghostwheel - Hassle-free inline clojure.spec with semi-automatic generative testing and side effect detection