
The Screwtape Letters
C. S. Lewis
4.7 on Amazon
18 HN comments

A Farewell to Arms: The Hemingway Library Edition
Ernest Hemingway , Sean Hemingway, et al.
4.5 on Amazon
17 HN comments

Good Omens
Neil Gaiman, Terry Pratchett, et al.
4.7 on Amazon
17 HN comments

Shantaram: A Novel
Gregory David Roberts, Humphrey Bower, et al.
4.6 on Amazon
16 HN comments

Jurassic Park: A Novel
Michael Crichton, Scott Brick, et al.
4.8 on Amazon
16 HN comments

Fight Club
Chuck Palahniuk, Jim Colby, et al.
4.7 on Amazon
15 HN comments

Twilight: The Twilight Saga, Book 1
Stephenie Meyer, Ilyana Kadushin, et al.
4.7 on Amazon
15 HN comments

Dune Messiah
Frank Herbert
4.5 on Amazon
14 HN comments

Cat's Cradle: A Novel
Kurt Vonnegut
4.6 on Amazon
14 HN comments

Midnight: A Gangster Love Story (1) (The Midnight Series)
Sister Souljah
4.7 on Amazon
14 HN comments

Born a Crime: Stories from a South African Childhood
Trevor Noah and Audible Studios
4.8 on Amazon
13 HN comments

The Broken Earth Trilogy: The Fifth Season, The Obelisk Gate, The Stone Sky
N. K. Jemisin
4.7 on Amazon
13 HN comments

Recursion: A Novel
Blake Crouch
4.5 on Amazon
13 HN comments

Leviathan Wakes
James S. A. Corey
4.7 on Amazon
12 HN comments

The Things They Carried
Tim O'Brien
4.5 on Amazon
12 HN comments
faicalonJuly 13, 2020
[1] https://www.cs.cmu.edu/~dst/LispBook/book.pdf
ad-hominemonAug 6, 2019
mgalgsonJan 5, 2020
dalecoonMay 12, 2020
In this world he’s woken up to, Jason’s life is not the one he knows. His wife is not his wife. His son was never born. And Jason is not an ordinary college physics professor, but a celebrated genius who has achieved something remarkable. Something impossible.
https://www.amazon.com/dp/1101904224/ref=cm_sw_r_cp_api_i_HY...
Another good one from the same author - Recursion: A Novel https://www.amazon.com/dp/1524759783/ref=cm_sw_r_cp_api_i_G0...
donnanortononMay 15, 2020
"Daisy Jones & The Six", Taylor Jenkins Reid: Everyone knows Daisy Jones & The Six: The band's album Aurora came to define the rock 'n' roll era of the late seventies, and an entire generation of girls wanted to grow up to be Daisy. But no one knows the reason behind the group's split on the night of their final concert at Chicago Stadium on July 12, 1979 . . . until now.
"The Silent Patient", Alex Michaelides: Alicia Berenson’s life is seemingly perfect. A famous painter married to an in-demand fashion photographer, she lives in a grand house with big windows overlooking a park in one of London’s most desirable areas. One evening her husband Gabriel returns home late from a fashion shoot, and Alicia shoots him five times in the face, and then never speaks another word. Alicia’s refusal to talk, or give any kind of explanation, turns a domestic tragedy into something far grander, a mystery that captures the public imagination and casts Alicia into notoriety.
DonaldPShimodaonJan 3, 2019
I mentioned this elsewhere but figured I'd bring it up here since you're the author.
I've tried explaining recursion in a lot of ways like this, such as "just assume it will work", "trust yourself", and "turn off your brain". (The first two are paraphrases from Matthew Flatt, the latter is from Will Byrd.)
I think "Recursion Fairy" is my favorite way to phrase the same idea. I think there's something about the nature of invoking a sense of magic in the phrasing that might help people really believe that it's okay to just let the recursion do its thing and not think about it too much. I'll definitely be using "Recursion Fairy" when (if) I end up explaining recursion again.
Thanks for making your material available for free! Cheers!
KirinDaveonOct 17, 2018
Fistly, wavelet trees! Wavelet trees with something like RRR encoding for the bit vectors lets you work with massive datasets in positively tiny space and constant time. They're not even expensive to construct! My favorite introduction to the whole space of rank/select-friendly structures is Alex Bowe's tutorial: https://alexbowe.com/wavelet-trees/
I constantly agitate for people to realize that we now have an algorithm for O(n) generalized sorting. It's called discrimination sort, and while it's a complex subject its quite elegant once you internalize the algorithm. There's a talk by Prof. Henglein here: https://www.youtube.com/watch?v=sz9ZlZIRDAg
2017 saw the recommendation of a truly phenomenal approach to indexing data, using simple leaning structures. These indexes are poorly explored, there's still a ton of headroom here, but the paper is an incredibly cool read and very approachable: https://arxiv.org/abs/1712.01208
Another really cool family of algorithms and associated structures in distributed systems is CRDTs. They're poorly understood, but in research they have largely superseded operational transforms. The Wikipedia page branches off into lots of good research: https://en.wikipedia.org/wiki/Conflict-free_replicated_data_...
If we slightly broadened the lens of what is an algorithm, my favoriate category-theoretic approaches to solving problems include Recursion Schemes which are a technique to totally separate the specification of recursive algorithms over data structures from both the structures and the code that the algorithm runs to compute a result (Patrick from Github has a great series on them here: https://blog.sumtypeofway.com/). I also love the modern and rapidly growing "Ghosts of Forgotten Proofs" as a way to let the compiler assert you've properly built and/or terminated values: https://github.com/matt-noonan/gdp-paper/releases/download/j...
Ping_2_Ur_PongonMar 5, 2016
---Non-software related
How to win friends and influence people -Dale Carnegie (The definitive guide to helping you work better with people, truly great book, should be required reading)
Blink- Malcolm Gladwell
Godel Escher, Bach - (Recursion, but not from a software perspective. Its a glorious book that will change the way you think about recursion.)
Hitch Hiker's guide to the galaxy, - Douglas Adams (Glorious book that is a fun read, when you need a break pick this up and laugh hard)
Foundation Series - Assimov (Great stories from one of the best sci-fi writers ever)
-------------------Software related
Code Complete
Concrete Mathematics
The Art of Computer Programming
The Design of the Unix Operating System
Introduction to Algorithms -Cormen
Design Patterns Elements of Resusable OO Design -Gang of Four
gargantuanonApr 22, 2014
Be honest now, did you actually read the article ;-) because it answers that exact question.
---
> Languages with Tail Call Elimination will recognize this situation and basically rewrite the function into a while loop. Since this is a low-level function, we should do the same, but sometimes it's hard to know when you're recurring dangerously.
---
> but it won't go away just because you don't like it.
I didn't like it and it go away. Out came Dart. I like Dart. All worked out well so far.
tmoertelonMar 10, 2018
And tail recursively, and – going full circle – you can convert that tail recursion into iteration (see [1] for example, using techniques described in [2]).
[1] Iterative fast-power implementation in Python
https://github.com/tmoertel/practice/blob/master/libraries/t...
[2] Recursion to Iteration, Part 1: The Simple Method, secret features, and accumulators
http://blog.moertel.com/posts/2013-05-11-recursive-to-iterat...
com2kidonJan 17, 2019
Modern science fiction describes worlds where people can clone their consciousness 50 times over, where it is possible to adjust the perception of time, and where plans take millennia to come to fruition.
Accelerando by Charles Stross. Recursion by Tony Ballantyne. Down and Out in the Magic Kingdom by Cory Doctorow.
Yes, these are all evolutions of previous ideas, but Science Fiction has always built on itself.
petefordeonJan 5, 2020
I urge you to try audiobooks. There still exists a stigma that it's not "real" reading, but that is like discussion of "real" men - absurd. Audiobooks are a joy.
My personal favourite is Cryptonomicon by Neil Stephenson, but heck, Ready Player One, Recursion, Delta-V, Walkaway by Cory Doctorow... just give it a shot.
dmbaggettonMar 18, 2013
At U Maryland I took a course from Bill Gasarch on computation. The first thing he said to the class, famously, was "I'm going to show you that there are problems that are impossible to solve. Then I'm going to show you some problems even harder than those. And by the end of the class, you will no longer laugh at that joke." He went on to show us the Halting Problem (an impossible-to-solve problem), then problems that one still can't solve even given an oracle for the halting problem. In other words: even if you could solve the Halting Problem, you still couldn't solve these other problems. And even if you could solve some of those problems, there are others you still couldn't solve, etc. Ultimately, we learned about Recursion Theory, which examines this implied infinite hierarchy of "impossibility".
Another interesting -- and, really, somewhat devastating -- conclusion one can draw from Recursion Theory is that tractable problems are incredibly rare. From a cardinality standpoint, the set of solvable problems is vanishingly small compared to the universe of unsolvable problems. It just so happens that many problems we actually care about are solvable and tractable. But, numerically speaking, this is incredibly unlikely. (In other words, if the distribution of problems we cared about were actually uniform, we'd be able to solve basically nothing we cared about.)
Exact exponential algorithms -- those "right at the edge of tractability" -- open one's eyes in similar ways. Why do we end up with magic numbers x, where the known lower bound seems to be O(x^n) where 1 < x < 2? Will we find underlying mathematical constants here that we don't yet know about? I think every day working developers would do well to learn about these tractability "edge cases".