From: Snapshot-Content-Location: https://www.karl.berlin/simplicity.html Subject: Exercises in Simplicity Date: Thu, 17 Apr 2025 13:32:13 +0200 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----MultipartBoundary--Bs7q3H6DxM2b72VMIzcnP7C3n71AubdJqHMavSGQYY----" ------MultipartBoundary--Bs7q3H6DxM2b72VMIzcnP7C3n71AubdJqHMavSGQYY---- Content-Type: text/html Content-ID: Content-Transfer-Encoding: quoted-printable Content-Location: https://www.karl.berlin/simplicity.html =09 Exercises in Simplicity =09

Exercises in Simplicity

The more time I spent on software development, the more I come to apprec= iate simplicity. When software is buggy, slow or lacking features, that is = annoying. But as long as it is simple, I can still understand the limitatio= ns and work around them or even fix them. When something goes wrong in a co= mplex program, it is often not worth spending the huge amount of time neces= sary to even understand what is happening. Instead of learning about the pr= oblem your software solves, you are drowned in build tools, pre- and post-p= rocessors, too many layers of abstractions, many different APIs and huge am= ounts of dependencies.

Dealing with simpler software is more satisfying for me and provides a f= aster way to deep understanding. I want to write a few posts about the diff= erent ways I approach simple software. Sometimes, I want to replace a progr= am I use by something simpler, in other cases I just want to try something = out in order to learn how much of the complexity of common solutions is rea= lly necessary.

Guidelines

  • Simplicity is more important than features.
  • Usability must not suffer too much.
  • If I start with something minimal, some growth over time is ok. The imp= ortant thing is a high ratio between benefit and increase of complexity.

Exercises

Inspiration

Quotes

Controlling complexity is the essence of computer programming.

-- Brian Kernighan

Simplicity is prerequisite for reliability.

-- Edsger W. Dijkstra

A program is like a poem: you cannot write a poem without writing it. Ye= t people talk about programming as if it were a production process and meas= ure "programmer productivity" in terms of "number of lines of code produced= ". In so doing they book that number on the wrong side of the ledger: We sh= ould always refer to "the number of lines of code spent".

-- Edsger W. Dijkstra

Written on 2020-04-19. Last updated on 2021-01-06.
------MultipartBoundary--Bs7q3H6DxM2b72VMIzcnP7C3n71AubdJqHMavSGQYY---- Content-Type: text/css Content-Transfer-Encoding: quoted-printable Content-Location: cid:css-20e48137-fb18-435c-acd5-5519c6bc0107@mhtml.blink @charset "utf-8"; .jcpwm-preloader { transform: translateX(0px) !important; } ------MultipartBoundary--Bs7q3H6DxM2b72VMIzcnP7C3n71AubdJqHMavSGQYY---- Content-Type: text/css Content-Transfer-Encoding: quoted-printable Content-Location: cid:css-416e6ac0-f0a9-4179-899c-e320daa9aa46@mhtml.blink @charset "utf-8"; body { font-family: sans-serif; margin: 0px auto; max-width: 48rem; line-he= ight: 1.45; padding: 0.5rem 0px 1.6rem; box-shadow: rgb(187, 187, 187) 0px = 0px 2rem 0px; border-radius: 0px 0px 0.6rem 0.6rem; } main { padding: 0px 1.4rem; hyphens: auto; } code { background: rgb(238, 238, 238); padding: 0.3rem; tab-size: 4; } pre code { display: block; overflow-x: auto; padding: 0.3rem 0.6rem; } blockquote { margin-left: 0em; padding-left: 1em; border-left: 0.3em solid = rgb(221, 221, 221); } nav ul { margin: 0px; padding: 0px; display: flex; background: rgb(17, 119,= 170); } nav li { list-style: none; } nav li * { display: block; padding: 0.4rem; color: white; } nav li strong { padding-left: 1.5rem; padding-right: 1rem; } nav a { text-decoration: none; } nav a:hover { background: rgb(0, 102, 153); } ------MultipartBoundary--Bs7q3H6DxM2b72VMIzcnP7C3n71AubdJqHMavSGQYY------