HackerNews Readings
40,000 HackerNews book recommendations identified using NLP and deep learning

Scroll down for comments...

Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services

Brendan Burns

4.3 on Amazon

9 HN comments

High Performance Python: Practical Performant Programming for Humans

Micha Gorelick and Ian Ozsvald

4.8 on Amazon

9 HN comments

JavaScript: The Definitive Guide: Master the World's Most-Used Programming Language

David Flanagan

4.7 on Amazon

9 HN comments

Kubernetes in Action

Marko Luksa

4.7 on Amazon

8 HN comments

Everybody Lies: Big Data, New Data, and What the Internet Can Tell Us About Who We Really Are

Seth Stephens-Davidowitz, Timothy Andrés Pabon, et al.

4.4 on Amazon

8 HN comments

Mathematics for Machine Learning

Marc Peter Deisenroth

4.7 on Amazon

7 HN comments

The Hundred-Page Machine Learning Book

Andriy Burkov

4.6 on Amazon

7 HN comments

Grokking Deep Learning

Andrew Trask

4.5 on Amazon

7 HN comments

Eating Animals

Jonathan Safran Foer

4.7 on Amazon

7 HN comments

Fundamentals of Database Systems

Ramez Elmasri and Shamkant Navathe

4.3 on Amazon

7 HN comments

Software Design for Flexibility: How to Avoid Programming Yourself into a Corner

Chris Hanson and Gerald Jay Sussman

4.3 on Amazon

7 HN comments

Invent Your Own Computer Games with Python

Al Sweigart

4.7 on Amazon

7 HN comments

Implementing Domain-Driven Design

Vaughn Vernon

4.5 on Amazon

7 HN comments

Math for Programmers: 3D graphics, machine learning, and simulations with Python

Paul Orland

4.9 on Amazon

7 HN comments

Digital Gold: Bitcoin and the Inside Story of the Misfits and Millionaires Trying to Reinvent Money

Nathaniel Popper

4.6 on Amazon

7 HN comments

Prev Page 7/16 Next
Sorted by relevance

mark_l_watsononApr 14, 2021

I am working the examples in the new book Software Design for Flexibility both in Scheme and Python. I agree with you that it is good to carry practices from Lisp languages to Python, when we must use Python.

mindcrimeonMar 20, 2021

Has anybody here read Software Design for Flexibility yet? I'm intrigued, but have been holding off on buying a copy just yet. Would be interested in hearing anyone's impressions who has been through it (or even part of it).

cellularmitosisonJune 10, 2020

> The class used a draft textbook that Chris Hanson and I have written. The book is entitled “Software Design for Flexibility (how to avoid programming yourself into a corner)”; it will be published by MIT Press soon, with a Creative Commons Share Alike license (and all the code in support of the book is under the GNU GPL)

Looking forward to this!!!

philzookonJune 10, 2020

"The class used a draft textbook that Chris Hanson and I have written. The book is entitled “Software Design for Flexibility (how to avoid programming yourself into a corner)”; it will be published by MIT Press soon, with a Creative Commons Share Alike license (and all the code in support of the book is under the GNU GPL)."

I'm very excited for this. https://mitpress.mit.edu/books/software-design-flexibility

For reference, Sussman is an author of Scheme and

- SICP https://mitpress.mit.edu/sites/default/files/sicp/full-text/...

- Structure and Interpretation of Classical Mechanics - https://mitpress.mit.edu/books/structure-and-interpretation-...

- Functional Differential Geometry - https://mitpress.mit.edu/books/functional-differential-geome...

All of which are available free online (look for the open access tab)

bmitconJuly 4, 2021

I’m not sure that stronger type systems always means an improvement to writing programs. They simply move the needle on the scale of where the difficulty lies in writing programs.

Untyped languages make it very easy to write programs while the stronger the type system, the harder it gets to write the program in the first place.

I think balance is in order and this is one reason why we haven’t seen fancy type systems become mainstream except for niche domains. If I’m writing a program in F#, I have a balance between a type system constraining me but a language that allows me, the programmer, to do what I want to do for the most part. The stronger and fancier type systems means I now have to somehow teach the type system things that I already now how to do and are safe.

Fancy type systems simply try to say that you should write down a specification of your program. But in the real world, this is an enormously difficult if not impossible task. It makes the programming process and program rigid and brittle and not robust, which is not necessarily properties of software you want.

There’s a reason why certain language ecosystems like Erlang/Elixir say errors, unexpected input, and more pathological events will happen (i.e., they can’t be reasoned out of the system) and so you need a way to explicitly deal with them. This is also a big theme in the recent book Software Design for Flexibility in terms of expanding programs, getting them to handle things they couldn’t before.

While fancy type systems are neat, like those in Idris, I think the most useful idea is to have mixed type systems and programming paradigms in a program, which seems to be relatively unexplored right now.

marai2onDec 8, 2020

There doesn't seem to be much information about the content of this book. But the quote by Dan Friedman is intriguing:

“Hanson and Sussman's Software Design for Flexibility has introduced additive programming, a game changer. An additive style allows for making changes to existing designs without the programmer's efforts looking like the work of a contortionist. With elegance, clarity, and care, they point out long-overlooked problems in software design and offer their Scheme-friendly, clever solutions. Enjoy!”

Dan FriedmanProfessor of Computer Science, University of Indiana; author of The Little Prover

dgb23onJuly 19, 2021

Not specifically software design, but insofar related books that take the perspective of programmers with unique insights:

- Coders at Work (Seibel)

- Working in Public (Eghbal)

The first one is very entertaining. Read it a couple years ago and found it gives some valuable perspective. The second one is on my reading list, it was recommended around these boards.

Related to software design, there are many. The two that are on my recent list are:

- Software Design for Flexibility (Sussman, Hanson)

- A Philosophy of Software Design (Ousterhout)

I can't comment personally on their content yet, still have to work through those two, but I have zero doubts to learn something valuable. Certainly consider them.

Built withby tracyhenry

.

Follow me on