Smartum - Software Developer


2023 - Present

serie - fast distributed time-series database


A distributed time-series database built entirely from scratch with very few dependencies. Both the internal engine and the distribution is self-written. The code also contains a lot of tests, stress testing utilities and space analyzation utilities.

distsql - strongly consistent distributed sql database


A distributed SQL database built using the Raft distributed consensus protocol built on top of SQLite3.

iso - strongly consistent distributed sql database


A distributed filesystem built in C. The iso executable itself takes care of distributing data to different NGINX volume servers. The distribution is based on hashing the file's path is hashed an the hashing strategy equally divides load to different nodes with a configurable replication factor.

levelsql - sql database built on top a key-value store


A proof of concept SQL database built on top of LevelDB. The project contains a SQL parser that is then converted to a internal AST. The AST is then parsed and parameters from the query are extracted. The rows of the database are encoded into a form in which they can be easily iterated using LevelDB. This approach was inspired by CockroachDBs row encoding.

rc - a lisp to native x64 executable compiler in rust


A small lisp-like programming language that is compiled straight to x64 executables. The code is first parsed into SExpressions which are then used to generate a intermediate representation (IR) of the code. Optimizations are performed on this IR which is then encoded into a ELF executable.

juoru - gossip protocol without any outside dependencies


A gossip protocol based eventually consistent in-memory key-value store written in Go. The code contains an embeddable interface to interact with nodes. The only dependency for the code is the Go standard library.

stupidhttp - a http server in go without net/http


A small http server written without net/http. This server mainly supports basic methods such as GET, POST, DELETE and PUT. The code contains HTTP request parsing which is then handled by easy-to-define http handlers for a given path.