[talk] The Classical Code Reading Group: NYC Chapter

Mike Burns mike+nycbug at mike-burns.com
Fri Jan 6 14:03:44 EST 2017


Hi all, I'd like to start organzing regular code reading events. We had
done this a few times in the past (and I did them regularly in
Stockholm) and they were appreciated.

Briefly: we read the classics. You know how everyone who has seen
Hackers knows that "they're trashing our rights!" means to look for
clues in the trashcan, and everyone who has read Marmion knows that if
someone is weaving a tangled web it means that they are telling many
lies? We're like that, but for programming. Join us as we read all the
snippets of code that we take for granted but never have the time to
read, compare, contrast, re-write, and re-imagine.

(We also exist on Meetup:
https://www.meetup.com/Classical-Code-Reading-Group-of-New-York/. I'll
post an event there after we nail down a date.)

I'm going to leave the timing up to the admins, but for the content
let's read yes.c, in all its implementations, while discussing its
history and how it fits into the greater context of our world.

I'll describe that below, but feel free to suggest other tiny commands.
They have to be tiny! cat.c is too big (!).

The yes command prints 'y', followed by a newline, forever. It can also
take arguments, which it prints forever.

We will look at (at least) the OpenBSD, FreeBSD, NetBSD, GNU, and
Illumos implementations. If you can find more, please share them!

With the many different authors and distinct cultures we will be sure to
have much to discuss and compare. Some things to think about: what are
some uses for the yes command? What errors can occur, and how are they
handled? How did GNU manage to make this program 88 lines long? How did
Illumos get this program indented by five tabs?

Just in case you don't have five copies of yes.c sitting on your hard
drive, you can find them online:

FreeBSD:
https://svnweb.freebsd.org/base/head/usr.bin/yes/yes.c?revision=308432&view=markup

NetBSD:
http://cvsweb.netbsd.org/bsdweb.cgi/src/usr.bin/yes/yes.c?rev=1.8.22.1&content-type=text/x-cvsweb-markup

OpenBSD:
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/yes/yes.c?rev=1.9&content-type=text/x-cvsweb-markup

GNU:
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/yes.c

Illumos:
https://github.com/illumos/illumos-gate/blob/master/usr/src/cmd/yes/yes.c

This should all take about three hours. Food, drinks, and location can
be provided by thoughtbot (1384 Broadway, fl. 20).

-Mike



More information about the talk mailing list