---
title: Announcing the Classical Code Reading Group of Stockholm
teaser:
tags: news,stockholm
author: Mike Burns
published_on: 2013-10-07
---

If I were to say that someone is [weaving a tangled web](http://www.gutenberg.org/ebooks/5077 "Marmion: A Tale of Flodden Field in Six Cantos, by Sir Walter Scott"), [Hell is other people](http://vtheatre.net/script/doc/sartre.html "No Exit, by Jean Paul Sartre"), or [if you build it they will come](http://www.fodmoviesite.com/ "Field of Dreams (film)"), you would know what I'm trying to express. You know what a [catch-22](http://archon.brandeis.edu/index.php?p=collections/findingaid&id=39&q=&rootcontentid=23986#id23986 "Catch-22, by Joseph Heller") is. There is a fear of waking up to [discover that you are a giant insect](http://www.gutenberg.org/ebooks/5200 "The Metamorphosis (English), by Franz Kafka (David Wyllie)"), and the phrase "[it's alive!](http://www.gutenberg.org/ebooks/84 "Frankenstein, by Mary Shelley")" conjures up not just Frankenstein's monster but also its poor, misunderstood fate.

So why can I not reference the way the [`echo`](http://pubs.opengroup.org/onlinepubs/009696799/utilities/echo.html "echo(1)") program prints a space between each argument, the way GNU [`false`](http://pubs.opengroup.org/onlinepubs/009696799/utilities/false.html "false(1)") uses C trickery to avoid code duplication, or the classic constant [`0x5f3759df`](http://www.beyond3d.com/content/articles/8/ "Origin of Quake3") without the same recognition?

These are our classics. Not only are these programs we use every day, but they're written by some of the most influential programmers of generations past, inspiring not just entire operating systems but also design patterns large and small.

[The Classical Code Reading Group of Stockholm](http://www.meetup.com/The-Classical-Code-Reading-Group-of-Stockholm/) reads the classics.

In our pilot meetup we examined `echo.c` across five different implementations. From [OpenBSD](http://www.openbsd.org/cgi-bin/cvsweb/src/bin/echo/echo.c?rev=1.7;content-type=text%2Fx-cvsweb-markup "echo.c from OpenBSD") we learned about minimalism, including this statement that would bring pride to every nihilist:

    (void)fputs(*argv, stdout);

[NetBSD](http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/echo/echo.c?rev=1.15.16.1&content-type=text/x-cvsweb-markup "echo.c from NetBSD") taught us about dotting our i's and crossing our t's, including flushing standard output, watching the return types, and that errors can exist anywhere. From [FreeBSD](http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/echo/echo.c?rev=1.20.2.2;content-type=text%2Fplain "echo.c from FreeBSD") we learned to love again, embracing not the stark minimalism of OpenBSD but instead the industriousness exploration of bare metal input and output.

[The GNU `echo`](http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/echo.c "echo.c from GNU coreutils") and its predecessor, the GNU bash `echo` builtin, showed how to cleanly handle backward compatibility in the face of the complex forward march of progress, including hexadecimal parsing, environment variables, well-named keywords, and short-circuit termination.

This excursion down the guts of `echo.c` took three hours, with a break for food and drink.

So grab your sense of adventure and join us as we explore `true` and `false`, from shell to shining C, and see just how GNU managed to hit 78 lines for this classic, tiny app, at [the next Classical Code Reading Group of Stockholm event on the 21st of October](http://www.meetup.com/The-Classical-Code-Reading-Group-of-Stockholm/events/142991942/ "The search for truth: the `true` and `false` programs").
