Skip to content

Illustration requests

Marijn Haverbeke edited this page Apr 22, 2014 · 13 revisions

I am looking for help in illustrating the 2nd edition of Eloquent JavaScript. On this page, I'll gather some ideas for places where I would like to add an illustration. If you want to work on one, please edit this wiki page to indicate that you are working on it by putting your name above the item, or write me ([email protected]) if you don't want to create a github account. Include a date, and if it doesn't work out after all for whatever reason, remove your name again so others may take a shot).

The preferred format of the in-line illustrations is landscape (see http://eloquentjavascript.net/2nd_edition/preview/01_values.html for an example -- one page from the top). It is nice if they also reproduce well in black and white for the print version. The resulting image would be released under a creative-commons license.

As for style, I'm open to quite a lot of approaches. One thing I explicitly don't want is a 'goofy' tone—no newspaper-style funnies, word jokes, silly characters, and such. If you do a sketch, it's probably a good idea to get in touch with me to see if I like where you're going.

The mysterious computer

In the introduction, there's this paragraph:

There is something of an inherent gap between us, squishy biological
organisms with a talent for social and spatial reasoning, and the
computer, a straightforward manipulator of meaningless data with none
of our biases and instincts. Fortunately, there has been some great
progress on bridging this gap in the past sixty years.

I don't want to do the obvious thing here (a robot and a human not understanding each other, with funny speech bubbles and such). But maybe a large, incomprehensible machine would work (without speech bubbles). Or some kind of representation of the computer's abstract world (but that's tricky--communicate with me before you start putting work into such a concept).

Universes of virtually unlimited complexity

This quote appear in the intro:

The computer programmer is a creator of
universes for which he alone is responsible. Universes of virtually
unlimited complexity can be created in the form of computer programs.

A sprawling fantasy city or machine might work well here.

Nesting

In chapter 2:

This shows part of the beauty of a language-based interface.
Expressions can nest in a way very similar to the way sub-sentences in
human languages are nested—a sub-sentence can contain its own
sub-sentences, and so on. This allows us to combine expressions
together to express arbitrarily complex computations.

How do you visualize the recursive structure of language? I don't have a concrete suggestion, but if you can come up with something, let me know.

The farm

In chapter 3:

We want to write a program that prints two numbers, the amounts of
cows and chickens on a farm, with the words `Cows` and `Chickens`
after them, and zeroes padded before both numbers so that they are
always three digits long.

[...]

Mission accomplished! But just as we want to send him the code (along
with a hefty invoice of course), the farmer calls and tells us he's
also started keeping pigs, and couldn't we please extend the software
to also print pigs.

Reduce

Chapter 5:

Another common pattern of computation on arrays is computing a single
value from them. Our primordial example, the summing of a range of
numbers, is an instance of this. If we wanted to find the person with
the earliest year of birth in the data set, that would also follow
this pattern.

The steps are to first take a start value. Then, for each element in
the array, you combine the element and the current value to create a
new value. The value that comes out after the last element in the
array has been handled is the result we want.

Reduce is a very visualize-able algorithm. Something like a row of objects (animals? pans? books?) being reduced to find the biggest one, with a pairwise compare happening multiple times, picking out the biggest of two, and then continuing with that one and the next object in the row.

Rabbit

Chapter 6 uses a Rabbit class as example, and repeatedly falls back on using a killerRabbit object to demonstrates things. A killer rabbit, I expect, is a lot of fun to draw.