
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
mark_l_watsononApr 14, 2021
mindcrimeonMar 20, 2021
cellularmitosisonJune 10, 2020
Looking forward to this!!!
philzookonJune 10, 2020
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
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
“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
- 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.