whirlog
dslabs


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.
whirlog
-
The “Build Your Own Database” book is finished
There are many kinds of databases, I've used similar designs to [0] (Lisp warning, ymmv) successfully in several projects.
[0] https://github.com/codr7/whirlog
-
Build Your Own Fast, Persistent, Toy KV Store
I've built several versions of a log based db with composite keys over the years, the most complete version so far in Common Lisp:
https://github.com/codr7/whirlog
- Show HN: Minimal versioned log structured relational DB in Common Lisp
- A minimal single proc, mt capable, versioned, log structured relational Lisp DB
- Show HN: A minimalistic versioned, log-based relational database in Common Lisp
-
Tree.h in OpenBSD: dependency-free intrusive binary tree (2002)
I have a fairly comprehensible left leaning rb tree implementation that I've been porting along my travels.
I keep it around for situations where a binary searched array isn't doable or good enough, but I still want ordered set functionality that isn't in the stdlib.
https://github.com/codr7/whirlog/blob/main/rb.lisp
https://github.com/codr7/libcodr7/blob/master/source/codr7/t...
- Show HN: A simple, log-based relational database in Common Lisp
dslabs
-
Smurf: Beyond the Test Pyramid
You'd define invariants that must be met. This has been done before.
https://en.wikipedia.org/wiki/Search-based_software_engineer...
e.g. testing implementations of Paxos: https://github.com/emichael/dslabs
-
The leadership myth in replicated databases (2023)
I recently took a Distributed Systems course, and I also thought it was very interesting and unexpected how in the most basic form of Paxos, there is no concept of node roles or hierarchy like leader/follower, master/replica, etc. The base case is that all nodes have the same replicated log, and are "writers" capable of initiating changes to the log.
This youtube video was particularly helpful in learning about consensus algorithms, specifically Paxos/MultiPaxos:
https://www.youtube.com/watch?v=JEpsBg0AO6o
John Ousterhout (author of Raft) walks through Paxos/MultiPaxos as outlined by Leslie Lamport, and then talks about a series of optimizations to improve performance. One key optimization is transitioning from performing consensus on a single log-slot proposal, to the entire log-slot altogether, which mitigates failed consensus rounds, and is where concepts like leader nodes emerge. If your familiar with Raft and Paxos, while listening to these optimization applied to MultiPaxos, you can kind of notice it to begin to resemble Raft.
The course I took was through Georgia Tech, but was largely based around a framework developed at the University of Washington called dslabs:
https://github.com/emichael/dslabs
It was super informative for my learning about the foundations of distributed systems, namely consensus algorithms. I'd highly recommend it for anyone interested in learning more. Although fair warning, the programming assignments were quite difficult and time consuming.
-
Show HN: Advent of Distributed Systems
I took a Distributed Systems course at Georgia Tech this spring, which used a learning framework from the University of Washington: https://github.com/emichael/dslabs
You make a key-value store using multiple techniques, from a basic single-node KV store, to a primary/replica, to PAXOS, to sharded PAXOS (which is essentially what AWS DynamoDB is)
There are tests to validate your implementation. I learned a ton from this, although I gave up at the last milestone because my grade was satisfactory in the class :)
-
Preparing for distributed systems in fall 2023
If you open the syllabus from OMSCS site, it says that the 5 programming assignments will be based on https://github.com/emichael/dslabs
-
anyone want to share their coding assignments?
If you want to learn about distributed systems, this project is very cool imo. https://ellismichael.com/dslabs/ Don’t put your solution in a public repository.
-
DSLabs solutions
Per the original author's repo:
-
Build Your Own Fast, Persistent, Toy KV Store
This might interest you as well: https://github.com/emichael/dslabs
That distributed systems lab is what Georgia Tech's Distributed System lab[0] is based on, at least when I took the course back in 2021
[0] - https://omscs.gatech.edu/cs-7210-distributed-computing
-
CS 7210 - Labs available
Haven't taken the course, so not sure on specifics, but the projects are generally based on dslabs, as highlighted in the syllabus for the course.
-
Gain experience in Distributed Systems
If the former, I don't want to discourage you, but good luck. In my MS we had to build an extremely simplified PAXOS implementation and it took everyone 200+ hrs and I think 1 or 2 out of 50 students ended with a fully correct implementation. Actually, that project is publicly available, here: https://github.com/emichael/dslabs
-
I want to work on distributed systems: Rust or C++?
fwiw this is used in many graduate programs around the country to teach distributed systems concepts: https://github.com/emichael/dslabs and can be done completely independently.
What are some alternatives?
illumos-gate - An open-source Unix operating system
advanced-java - 😮 Core Interview Questions & Answers For Experienced Java(Backend) Developers | 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识
quickiebase - a pure-Python NoSQL database
py4j - Py4J enables Python programs to dynamically access arbitrary Java objects
barreldb - A disk based KV store (based on Bitcask implementation)
frr - The FRRouting Protocol Suite
conductor - Conductor is a microservices orchestration engine.
MicroCalc - Welcome to MicroCalc. A Turbo Pascal demonstation program -> running under Windows command line.
libcodr7 - fundamental tools in the spirit of C
hackpad - The in-browser IDE for Go

