HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
twcamper
sicp-kindle
HTML2011–2013
twcamper / sicp-kindle

sicp-kindle

Structure and Interpretation of Computer Programs, 2nd Edition, by Harold Abelson and Gerald Jay Sussman with Julie Sussman, The MIT Press. formatted and built for mobi/kindle

12Distinct people
12Mentions
0Explicit recommenders
954GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Structure and Interpretation of Computer Programs, 2nd Edition, by Harold Abelson and Gerald Jay Sussman with Julie Sussman, The MIT Press. formatted and built for mobi/kindle

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by month12 dated mentions

Observed mentions: 2011-01-19 02:45:35 UTC to 2013-08-01 20:56:30 UTC.

0122011-01-01 00:00:00 UTC to 2011-02-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJan 20112011-02-01 00:00:00 UTC to 2011-03-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-03-01 00:00:00 UTC to 2011-04-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-04-01 00:00:00 UTC to 2011-05-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2011-05-01 00:00:00 UTC to 2011-06-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-06-01 00:00:00 UTC to 2011-07-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-07-01 00:00:00 UTC to 2011-08-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-08-01 00:00:00 UTC to 2011-09-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2011-09-01 00:00:00 UTC to 2011-10-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2011-10-01 00:00:00 UTC to 2011-11-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2011-11-01 00:00:00 UTC to 2011-12-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2011-12-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2012-01-01 00:00:00 UTC to 2012-02-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2012-02-01 00:00:00 UTC to 2012-03-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2012-03-01 00:00:00 UTC to 2012-04-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2012-04-01 00:00:00 UTC to 2012-05-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsApr 20122012-05-01 00:00:00 UTC to 2012-06-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2012-06-01 00:00:00 UTC to 2012-07-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2012-07-01 00:00:00 UTC to 2012-08-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2012-08-01 00:00:00 UTC to 2012-09-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2012-09-01 00:00:00 UTC to 2012-10-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2012-10-01 00:00:00 UTC to 2012-11-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2012-11-01 00:00:00 UTC to 2012-12-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2012-12-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2013-01-01 00:00:00 UTC to 2013-02-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2013-02-01 00:00:00 UTC to 2013-03-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2013-03-01 00:00:00 UTC to 2013-04-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2013-04-01 00:00:00 UTC to 2013-05-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2013-05-01 00:00:00 UTC to 2013-06-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2013-06-01 00:00:00 UTC to 2013-07-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2013-07-01 00:00:00 UTC to 2013-08-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2013-08-01 00:00:00 UTC to 2013-09-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsAug 2013

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Jan 20112011-01-01 00:00:00 UTC2011-02-01 00:00:00 UTC101
Feb 20112011-02-01 00:00:00 UTC2011-03-01 00:00:00 UTC000
Mar 20112011-03-01 00:00:00 UTC2011-04-01 00:00:00 UTC000
Apr 20112011-04-01 00:00:00 UTC2011-05-01 00:00:00 UTC101
May 20112011-05-01 00:00:00 UTC2011-06-01 00:00:00 UTC000
Jun 20112011-06-01 00:00:00 UTC2011-07-01 00:00:00 UTC000
Jul 20112011-07-01 00:00:00 UTC2011-08-01 00:00:00 UTC000
Aug 20112011-08-01 00:00:00 UTC2011-09-01 00:00:00 UTC101
Sep 20112011-09-01 00:00:00 UTC2011-10-01 00:00:00 UTC101
Oct 20112011-10-01 00:00:00 UTC2011-11-01 00:00:00 UTC000
Nov 20112011-11-01 00:00:00 UTC2011-12-01 00:00:00 UTC101
Dec 20112011-12-01 00:00:00 UTC2012-01-01 00:00:00 UTC000
Jan 20122012-01-01 00:00:00 UTC2012-02-01 00:00:00 UTC110
Feb 20122012-02-01 00:00:00 UTC2012-03-01 00:00:00 UTC000
Mar 20122012-03-01 00:00:00 UTC2012-04-01 00:00:00 UTC000
Apr 20122012-04-01 00:00:00 UTC2012-05-01 00:00:00 UTC000
May 20122012-05-01 00:00:00 UTC2012-06-01 00:00:00 UTC000
Jun 20122012-06-01 00:00:00 UTC2012-07-01 00:00:00 UTC000
Jul 20122012-07-01 00:00:00 UTC2012-08-01 00:00:00 UTC101
Aug 20122012-08-01 00:00:00 UTC2012-09-01 00:00:00 UTC211
Sep 20122012-09-01 00:00:00 UTC2012-10-01 00:00:00 UTC000
Oct 20122012-10-01 00:00:00 UTC2012-11-01 00:00:00 UTC000
Nov 20122012-11-01 00:00:00 UTC2012-12-01 00:00:00 UTC000
Dec 20122012-12-01 00:00:00 UTC2013-01-01 00:00:00 UTC101
Jan 20132013-01-01 00:00:00 UTC2013-02-01 00:00:00 UTC101
Feb 20132013-02-01 00:00:00 UTC2013-03-01 00:00:00 UTC000
Mar 20132013-03-01 00:00:00 UTC2013-04-01 00:00:00 UTC000
Apr 20132013-04-01 00:00:00 UTC2013-05-01 00:00:00 UTC000
May 20132013-05-01 00:00:00 UTC2013-06-01 00:00:00 UTC000
Jun 20132013-06-01 00:00:00 UTC2013-07-01 00:00:00 UTC000
Jul 20132013-07-01 00:00:00 UTC2013-08-01 00:00:00 UTC000
Aug 20132013-08-01 00:00:00 UTC2013-09-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
A great looking PDF and EPUB can be found here: https://sicpebook.wordpress.com/ebook/ This, however, is just a slight reformatting of the pages at http://mitpress.mit.edu/sicp/full-text/book/book.html 1 - I got the source: wget -r http://mitpress.mit.edu/sicp/full-text/book/book.html 2 - used hpricot Nokogiri to: remove 'navigation' divs insert <mbp:pagebreak /> tags at the top of each html body to keep lines from getting split at page-breaks 3 - removed cover page 'book.html' since there's already a cover image 4 - set text-indent: 0 for p tags, since kindle indents about 1em by default, which deformatted the code snips ( <p><tt> is used instead of pre ) 5 - set height="2em" on div tags in 'References' section (kindle doesn't support the CSS for controlling this) 6 - added jump table to top of index 7 - built opf and ncx with ruby. toc.ncx allows 'nav points' for the 5-way kindle knob to get you from chapter to chapter 8 - reverted item 5 above: several years later simple p tags with an 85% font look fine. Notes on building the book The old build of sicp.mobi in this repo seems to work fine. But if you want or need to build it yourself, you need to: generate the input ncx and opf xml. run that input through 'kindlegen' to produce a large but functional book optionally strip out the source that kindlegen includes in the output using 'kindlestrip.py' A set of Rake tasks will do any or all of these tasks for you, in the correct order as needed. Building the Book install 'kindlegen' somewhere in your path. make sure you have Ruby 1.8.7 or later make sure you have the Rake gem ideally but optionally, have Python installed $ cd ~/sicp-kindle # to build the book (compact binary -- requires Python) $ rake build # or just $ rake # to just build a large but usable book, without stripping (no Python needed) $ rake build_large # to clean up the output artifacts $ rake clean # hack/test cycle $ rake clean build # learn about Rake itself $ rake -h # to see the available tasks and their dependencies $ rake -T && rake -P # if you just want to see what the XML looks like without building, # generate it like this: $ rake artifacts/toc.ncx artifacts/sicp.opf When you run Rake (:build_large or :build task), you'll see this for a few minutes: mkdir -p artifacts generating 'artifacts/toc.ncx' generating 'artifacts/sicp.opf' running 'kindlegen artifacts/sicp.opf -c2 -verbose > artifacts/kindlegen.log' writing to directory 'artifacts' Then probably this: kindlegen exit status: 1 Success with warnings: see artifacts/kindlegen.log for information mv artifacts/sicp.mobi artifacts/sicp-large.mobi The warnings refer to unresolved links that have no real effect on the formatting or navigability of the book itself. There are 2 kinds: html anchors referring back to the TOC page, and gif images. The anchors are actually broken links that persist in the live MIT source to this day. In the Kindle book they just don't do anything, so it's not a real issue. The gif's actually work like they should, so with respect to those Kindlegen is just crazy. To deflate the output size by stripping out the input source that Amazon must have some reason for including, yet removes when they publish in their store anyway, the final Rake task uses Paul Durrant's python script from this GitHub repo. So at the end, you'll see something like: running 'kindlestrip/kindlestrip.py artifacts/sicp.mobi artifacts/sicp-stripped.mobi' KindleStrip v1.35.0. Written 2010-2012 by Paul Durrant and Kevin Hendricks. Found SRCS section number 750, and count 2 beginning at offset 1082728 and ending at offset 1202268 done Header Bytes: 53524353000000100000002f00000001 kindlestrip/kindlestrip.py exit status: 0 Kindlegen Compression Settings According to the usage output from just $ kindlegen you can say -c0, -c1, -c2 or nothing at all. With respect to runtime and output size, "nothing" is about the same as -c1. -c0 is just 2 or 3 seconds faster than those, but an ENORMOUS file is produced. Size of a house, I'm serious. -c2 (my default) is SLOW but the smallest. You can alter the setting in the Rakefile in the LARGE_BOOK file task. Here are some results from my 2010 MBP running KindleGen 2.9. # No compression setting $ time kindlegen artifacts/sicp.opf -verbose > artifacts/kindlegen.log l0m9.258s user0m15.597s sys0m1.156s $ ll artifacts/*.mobi -rw-r--r-- 1 twcamper staff 4040242 Sep 4 18:51 artifacts/sicp-large.mobi -rw-r--r-- 1 twcamper staff 2833465 Sep 4 18:51 artifacts/sicp.mobi # '-c0' compression setting -- fast, fattest $ time kindlegen artifacts/sicp.opf -c0 -verbose > artifacts/kindlegen.log real0m7.864s user0m12.949s sys0m1.207s $ ll artifacts/*.mobi -rw-r--r-- 1 twcamper staff 6816182 Sep 4 18:52 artifacts/sicp-large.mobi -rw-r--r-- 1 twcamper staff 5609417 Sep 4 18:52 artifacts/sicp.mobi # '-c1' compression setting $ time kindlegen artifacts/sicp.opf -c1 -verbose > artifacts/kindlegen.log real0m9.245s user0m15.952s sys0m1.160s $ ll artifacts/*.mobi -rw-r--r-- 1 twcamper staff 4040078 Sep 4 18:52 artifacts/sicp-large.mobi -rw-r--r-- 1 twcamper staff 2833465 Sep 4 18:52 artifacts/sicp.mobi # '-c2' compression setting -- slowest, smallest $ time kindlegen artifacts/sicp.opf -c2 -verbose > artifacts/kindlegen.log real2m13.958s user3m58.323s sys0m1.684s $ ll artifacts/*.mobi -rw-r--r-- 1 twcamper staff 3249518 Sep 4 18:56 artifacts/sicp-large.mobi -rw-r--r-- 1 twcamper staff 2042629 Sep 4 18:56 artifacts/sicp.mobi Interested in reformatting? If you start with pristine HTML source from MIT (see links above), there is a :fix_html_source task that uses Nokogiri as an HTML parser to add mobi pagebreaks. You could build on
Read the full README on GitHub

What Hacker News says

12 sources
I don't know about TAoCP but SICP has been available in electronic format for some time. They released the full book as HTML [1] but others have taken to formatting it in Mobi [2], PDF [3] and even a "Pocket" edition [4] formatted for small devices. [1] http://mitpress.mit.edu/sicp/full-text/book/book.html [2] https://github.com/twcamper/sicp-kindle [3] https://github.com/sarabander/sicp-pdf [4] https://github.com/sarabander/sicp-pocket
In Paul Graham reviews Structure and Interpretation of Computer Programs (2000)
There are different versions of SICP around, depending on what you use for your reading pleasure: As mobi for Kindle: https://github.com/twcamper/sicp-kindle As ePub for iPad/Nook (I think?): https://github.com/ieure/sicp As PDF for whatever reason: http://sicpebook.files.wordpress.com/2011/11/sicp.pdf And of course, the original HTML for the browser of your choice: https://mitpress.mit.edu/sicp/full-text/book/book.html Note: Especially the epub and mobi version have different forks floating around so maybe there are better links for these, anyone got anything?
In What's the best programming language for a hobbyist?
In Ask HN: Free kindle books related to programming

Ask HN: Free kindle books related to programming

15 points · Open discussion
It looks like, though, that the sicp.mobi file is from the original repo (revision date of Jan 10) and the fork that this post points to includes a series of improvements to the text (revision date of Sept 18) that the .mobi hasn't been updated to take advantage of. Thus, it looks like the .mobi needs to be recompiled to include the improvements that @jonathanpatt has committed. There is also a pull request on the original repo that should likely be included in any revision, too: https://github.com/twcamper/sicp-kindle/pull/5
In SICP optimized for Kindle

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.