Web have been increasingly dominating our industry for the last 20 years. In fact, the web dominates every day life and in some country if it fails the consequences are severe. But anyway, I am not writing this article for that matter: instead I am going to share my resources on how to build NOWeb(not only web) applications. I think that ,in some point of their journey, developers should try to build applications like Database, Compilers... to understand challenges involved outside of web apps.
These are the series that I want to share with you, starting with Databases and going to other software:
Kingdb - a key value store series: This is is one of the best series I read because it covers the topic in all of it aspects. The series start with giving a general idea on key value store concept, sets guidelines for the development of the project and presents the design and architecture of two successful DBs: LevelDB and Kyoto kabinet. Moreover, it talks about the design of the exposed API and more importantly speaks in details about the main data structure used in the implementation Hashtables and how to handle SSDs.
Yet another SQLite clone: This a series of 13 parts where the author guides us to build a sqlite clone, step by step. You will learn SQLite architecture and build it's different components from scratch. Also, the series shows how to implement database abstractions like the Cursor abstraction and the core data structure B-tree.
Writing your own debugger: The author of this series did a great job explaining and implementing many features that a debugger must have such as breakpoints. It's a 10 parts series using modern C++.
MQTT Broker - implementing one from scratch: If you ever wondered how mqtt works this is for you. In this series, you get to learn about MQTT, implement the protocol and many different modules needed for the broker. I find this very interesting, especially part 2 where we get to implement an event loop using
Language VM - How to build your own: This a 33 parts series where the author shows the design and implementation of a Language VM.
Enkel - a JVM Language: If you want to build a JVM language, this 20-parts series covers that for you. You will see how to add loops, condition, scopes... and more.
MOM - a message oriented middleware: This is an ongoing series I am writing where I talk about how I built a MOM using Seastar.
Before I finish, I want to share an important resource discussing the concept of Clean Architecture introduced by Uncle bob: this is a a video from Bill Sourour of Dev mastery where he implements a comment microservice using nodejs following the Clean Architecture. I hope you find these links useful for your future projects.
If you find this resource helpful, you can follow me on twitter for more.