Understanding Simplicity

Understanding Simplicity is a new, in-progress series of ebooks/guides with a strong focus on simplicity and clarity.

The first guide in the series has a few different, but interconnected goals - we are going to create an elegant, general-purpose build tool and use it to build an example website.

By going through this whole process, we are going to explore many important topics like combining imperative and functional programming (i.e. by isolating the imperative parts into the outer shell, and keeping our inner core pure), creating a flexible, storage-agnostic architecture, and writing clean and testable code in general.

We're going to explore this through an example of building a website (a fairly typical website built from the collections of pages, articles, or other types of documents), but to make things more interesting, we are going to add a few requirements:

We are going to build everything from the scratch, and try to keep the whole architecture as clean and flexible as possible.

As an implementation language, I'm going to use JavaScript - simply because that's what most people are familiar with, but all the concepts will be tech-independent and applicable to any programming language.

Note: while I'll try to keep things also relatively friendly towards new programmers, some experience with JavaScript and understanding of general programming concepts is required.

Comments, suggestions and questions and are welcome.