Ask HN: Books that impacted your work that few other people seem to care about?

60 points by debo_ ↗ HN
There are a few resources that really changed how I approach my job for the better, but that largely don't seem to stick with anyone else.

This made me curious about what unpopular resources I might be missing out on.

Doesn't have to be a book -- any resource or technique is fine, it was just easier to say 'book' in the title.

40 comments

[ 1.8 ms ] story [ 110 ms ] thread
Archives of sklogic’s posts here and /u/combinatorylogic’s posts on reddit. I think he might be right.

[edit]

reddit: https://camas.github.io/reddit-search/#{%22author%22:%22comb...

hn: https://news.ycombinator.com/threads?id=sklogic

looks like his account was suspended?
Ah yeah, I've updated the parent with links.
What insights did you gain from this user(s)?
My understanding of his argument goes something like this:

When you are solving a problem with a program, the program has two types of complexity; essential complexity which is needed to define the problem, and incidental complexity that comes from executing the program on the computer (variables, functions, class definitions, etc).

He argues that there is no way to eliminate the incidental complexity from the program without defining a DSL at the level of abstraction of the problem domain.

So a DSL for generating a flow chart would contain keywords for 'start', 'end', the various states and structure to join the states together, just the minimal amount needed to uniquely define the flowchart. Unlike when solving the problem using a general purpose language, what the DSL would not contain would be functions and variables, methods to draw boxes, housekeeping for export formats etc. In this way the essential complexity of the problem is captured entirely by the DSL, and the incidental complexity has been moved to the DSL implementation.

So once a DSL or language has been defined for the problem, he argues you now compile it down to an underlying metalanguage (anything with a quasiquotation operator, macros basically), rather than using an interpreter or something. The reason he argues for compilation is that compilation can be defined as a series of tree rewrite rules, as trivial as needed (nanopass was used as an example of a compiler framework that operates this way), then combined linearly until it's expressed in the underlying metalanguage (or another DSL). Any primitive runtime features needed for the program would be written in the metalanguage or another DSL.

He argues an advantage of having a common underlying metalanguage is it allows him to combine the DSL's as needed, and whip new ones up on the fly as needed. His threshold for making a new DSL is anything that takes more than 5 minutes. He has a bunch of tools to make this whole process easier, inferring IDE integration code, autocomplete, debug info, etc.

I find it compelling, and getting convinced by the argument that there's no other way to eliminate all incidental complexity from the program other than a babel tower of languages, linguistic abstraction.

Thanks for the writeup. I think this is spot on.

I've argued for DSLs many times here on HN due to a slightly different, although intimately related, reason.

I think it's the only way to avoid the Turing tarpit [1]. In other words, getting some clean semantics where it is easy to prove things. IMHO, the only way to get formal methods to scale.

[1] https://en.wikipedia.org/wiki/Turing_tarpit

I recommend reading A Philosophy of Software Design. Gets into some fundamental principles of writing software without getting too prescriptive.

A part of the book covers balancing the cost of abstraction with the amount of complexity it is hiding. The ideal is: simple interface (DSL in this context) and lot of hidden complexity.

I agree with your point, but the threshold for writing a DSL needs to be carefully considered.

I'm reluctant to even mention it, but I'll bite. :-)

I found the first half of "Prometheus Rising" by Robert Anton Wilson to be incredibly useful for understanding human dynamics -- I use the framework presented there every day. The core of this is in my opinion just a very straightforward computer-focused analogy that gives me insight into the behaviour of other people and myself that I haven't found elsewhere.

Of course, outside the core is a LOT of wild new age, Crowley-Leary-Regardie syncretism that provokes strong negative throw-the-book-across-the-room reactions in most people. A lot of very reasonable people would look at the wikipedia page or the cover of this book and not only think that the book is crap, but also that I'm a crazy hippie for even considering reading it.

RAW is such an underrated author and thinker. I don’t think there is a book of his that I have not read. I started reading him when I discovered Principia Discordia, Church of the Subgenius, etc. That whole scene of counter culture thinkers had a pretty major impact on me and my world view. Great to see others that appreciate the ideas just under the weirdness.
100% true for me as well -- I found the Illuminatus Trilogy via reading the Jargon File when I was an embryonic techie oh so long ago and that whole scene has been super-influential on me ever since.
i have to admit, as someone who dislikes new agey non rigorous stuff, that this book superficially gives off the vibe of being something Id absolutely hate.

Would you be willing to give an example or two of some topics the books discuss that might be counter to what that perception or that you just found really insightful?

Or is my perception that the focus is new age mysticism correct?

Sure! The "core" I mentioned above talks about the common psychological concepts of Id, Ego, and Superego (and more), and analogises them to separate processes running on your brain's processor, with a "layered approach". Lower-level processes have a higher interrupt priority. For example, fight-or-flight happens at a subrational level, and therefore "rational" thinking won't change the way you handle a fight-or-flight response, since the triggering of that response inherently interrupts your rational thought-loop.

I'm not saying that this is literally correct -- the brain is way more complicated than that! But I find it quite useful as a metaphor for processing and understanding social dynamics that I inherently find "irrational".

Interesting, yeah I like the analogy. I'll throw these on the reading list and give it a shot
1) Meditations, Marcus Aurelius

2) Principles of Product Development Flow, Donald G. Reinertsen

3) Step Away from the Computer or Hammock Driven Development, Rich Hi ckey

https://github.com/matthiasn/talk-transcripts/blob/master/Hi...

I really wanted to like meditations but found the translation i bought to be almost intentionally difficult. Like they were translating to role play ancient roman actor english instead of modern english.

did you by any chance find a translation that wasnt like that?

I have about half a dozen translations of the Meditations and i suggest the following;

* Translation by Gregory Hays published in "The Modern Library" classics. This is highly approachable and should be the first one you start with.

* Translation by Martin Hammond and published by Penguin Classics. Lots of illuminating Notes.

* Translation by Robin Hard and published in "Oxford World's Classics" series. Robin Hard also has a translation of Epictetus' Discourses/Enchiridion/Fragments and Sayings and Anecdotes of Diogenes in the same Oxford series, both of which are also excellent.

PS: All of the above contain a detailed Introduction to the work which you should not skip. They set the background, Worldview, Time etc. which help you understand the ideas in the book better.

The one I had is one of the easiest things I've read. Strangely I couldn't understand why my brother found it difficult going. Now you ve made me realise it's probably varying translations.
Not so much unpopular as it was rare at the time: De Re Atari. It was the first really complete reference for the computer I was using in my teen years. There wasn't too much mystery left between the silicon and what I saw on the screen (glossing over how display list processor worked in h/w). That led to my growing as a developer that always wanted to know how things really work and tinker with everything.
(comment deleted)
Conquest of Bread by Kropotkin

It's a really outdated book about a "perfect" anarchist sociaty. I started reading it for the political theme, but the author was so hopeful and puts so must trust in common people that I couldn't stop smile while reading it. It hit me harder that I could've ever imagined, I started putting more trust in others and totally changed the way I confront people. At that time I was a team leader in a really chaotic company and the change of approach did wonders. Management even started to receive request from other developers to join our team.

> It's a really outdated book about a "perfect" anarchist sociaty.

I do find a lot of it holds up pretty well as long as you sub-out some of the more specific examples with modern equivalents.

I felt he didn't touch enough on the cultural differences, and on how to handle areas where there are no resources. But ya, the core message still holds, specialty when he talks about how the middle class is the main obstacle to a equal sociaty

It took me while to see why, but I can't denied it now

Orbiting the Giant Hairball (Gordon MacKenzie). I gave my copy to someone, and never got it back, but would love to read it again. Not one thing in particular stuck, but the book as a whole provided some interesting insights on working for big companies as a 'creative' (yes, programmers are creative) individual.
How To Do Nothing [0]. The article, though the book is on my list.

This is not a straightforward article, so I can see how people could struggle with it, but I love every bit of it.

The author taught me to slow down, work less, and pay more attention to the other things.

[0] https://medium.com/@the_jennitaur/how-to-do-nothing-57e100f5...

---

The Life-Changing Magic Of Not Giving A F*ck, or at least the first chapter or two. This book should have been a blog article, so you don't need to read the whole thing.

Long story short, it's minimalism for obligations. If it doesn't bring joy or serve a purpose, chuck it.

It's not a clever book, but I suppose it hit at the right time. It made me realise how most work obligations are negotiable. It emboldened me to cancel meetings, cut their headcount, and send people back to their desks once they played their part in them.

When I went freelance, I applied the same energy to maintenance tasks like accounting, comment moderation and the dreaded introductory phone calls.

(comment deleted)
Patterns in Network Architecture

First published in 2007, Patterns... describes a kind of grand unification of network protocols, collapsing the fraught OSI model into a single, recursive layer. Notable features include: the unification of transport semantics, from TCP to UDP; the decimation of Internet routes through private-everywhere, topological addressing; the supplanting of URL and DNS with application names and a dynamic, distributed directory; elegant approaches to mobility and multicast/anycast; emergent security and DDoS mitigation; emergent throughput and connection scaling; a sophisticated approach to monitoring and management; and much more.

With the arguable failure of IPv6, the deepening swamp of IoT, and the now-leaning tower of HTTP-based transports, Patterns... illuminates a different path, one that can still be taken, both in the small and the large.

The probably won't be relevant to most people here, but one book that changed how I approach my work (as a physician) was "Sapira's Art & Science of Bedside Diagnosis". It goes beyond the basics of physical diagnosis and delves into the history and statistics of various physical diagnostic techniques. It even describes a few low-tech techniques and skills which have been forgotten in the US medical system because of high-tech (and more expensive) imaging or lab testing regimens.

Incidentally, I found this book referenced in this article: "Why Should Doctors Read Medical Books?" by Dr. Eric Cassell [0]

[0] http://www.ericcassell.com/download/WhyShouldDoctorsReadMedi...

The 2007 article "API: Design Matters" by Michi Henning gave insights on how to better design APIs. However, people I have shared it with don't seem to be excited about it.

Should the authors of lousy APIs be held accountable for their crimes? Why changing APIs might become a criminal offense Why changing APIs might become a criminal offense - Should the authors of lousy APIs be held accountable for their crimes?

"Developer hegemony" [0].

A couple of interesting insights:

- Software engineers are more like doctors/lawyers so why do software organizations look more traditional businesses rather than agencies?

- The way corporations are structured there is no incentive for software engineers at the bottom of the hierarchy to put more than a token effort in.

There's also a previous ASK HN about the "books that improved your career" [1].

[0] https://www.goodreads.com/en/book/show/35051753- developer-hegemony

[1] https://news.ycombinator.com/item?id=27963226

"A Confession" [1] and "The Kingdom of God is Within You" [2] by Leo Tolstoy. I believe Mahatma Gandhi considered the latter as a core influence for his nonviolent resistance philosophy.

Also, "The Death of Ivan Ilych" [3] by Tolstoy. I felt like a ping-pong ball in the hands of the author: whichever way he wanted me to think at a certain point in the plot, I did. Masterful insight into the life and death of an ordinary, diligent man. And, above and beyond that, it depicts the rarely avoidable self-centeredness of humans.

Oh, and lately, the prominent Finnish deep ecologist Pentti Linkola [4] has been a huge influence on me. In the Nordic countries, he is sometimes called "ecofascist", but this is an obvious cherry-picked overstatement of his views to my mind. I think only one of his books has been translated into English, though: "Can Life Prevail?" [5].

1: https://en.wikipedia.org/wiki/A_Confession

2: https://en.wikipedia.org/wiki/The_Kingdom_of_God_Is_Within_Y...

3: https://en.wikipedia.org/wiki/The_Death_of_Ivan_Ilyich

4: https://en.wikipedia.org/wiki/Pentti_Linkola and a fan page at http://www.penttilinkola.com/

5: https://www.goodreads.com/book/show/6397542-can-life-prevail

The Startup of You by Reid Hoffman and Ben Casnocha. There are lessons in this book which go far beyond conceptual origin of LinkedIn. There are network effects in labor market which can be systematically harnessed to accelerate one's career. It contains lot of those practices which are simple but not easy.
“The Design of Everyday Things”. The book that sparked a change in my career (to be honest)

In programming, the analogous problem is API design: taking whatever data structures are used by a software tool internally, and figuring out how to present them to external programmers in a useful, intelligible way. If there’s a mismatch between the internal structure of the system and the structure of what-users-want, then it’s the API designer’s job to translate. A “good” API is one which handles the translation well.

User interface design is a more general version of the same problem: take whatever structures are used by a tool internally, and figure out how to present them to external users in a useful, intelligible way. Conceptually, the only difference from API design is that we no longer assume our users are programmers interacting with the tool via code. We design the interface to fit however people use it - that could mean handles on doors, or buttons and icons in a mobile app, or the temperature knobs on a fridge.

“How I Found Freedom in an Unfree World” by Harry Browne.
Deskbound: Standing Up to a Sitting World [0].

I've always been fascinated, and driven by, good health; particularly in the context of working at a desk on a computer all day long.

This book has helped me to understand the implications and negative impact of typical habits surrounding working at a computer; specifically sitting all day.

By considering, and practicing, the advice presented in the book, I've changed the way that I physically work which in turn has significantly impacted my efficiency and performance.

I now stand a majority of the day and have learned methods for doing so effectively without simply tiring out my legs and causing a different set of problems. I've learned much about posture, particularly in the context of typing, which has helped reduce various aches and pains. And I've also learned various mobility exercises which have reduced stiffness in my arms, shoulders, and neck.

All in all, I feel better, which in turn has helped me to gain mental clarity and stay focused.

[0] https://www.goodreads.com/book/show/22557522-deskbound