
Ask HN: CS and programming books of 2017 - avrmav
Which CS&#x2F;Programming related book(s) that were released in 2017 would you suggest?<p>My suggestion: Clean Architecture by Robert Martin
======
cessor
My highlight was Yegor Bugayenko's "Elegant Objects". Volume 2 was released
this year (however I found the first Volume (2016) much better).

Yegor describes what went wrong with object-oriented programming. Whether you
are stuck with Java or broaden your horizon, I can really recommend this book
series, as it shows nicely how to deal with object-oriented code in the right
way.

What was eyeopening for me was that code, written after some of the rules he
proposes, becomes indistinguishable from functional programs. One example of a
tree of objects resembles a LISP program. This all made me realize how flawed
some of the arguments are that to me seem to divide the functional/types and
OO camps.

[https://www.amazon.com/Elegant-Objects-1-Yegor-
Bugayenko/dp/...](https://www.amazon.com/Elegant-Objects-1-Yegor-
Bugayenko/dp/1519166915/)

[https://www.amazon.com/Elegant-Objects-2-Yegor-
Bugayenko/dp/...](https://www.amazon.com/Elegant-Objects-2-Yegor-
Bugayenko/dp/1534908307/)

The books are short and relatively expensive, but Yegor claims to refund 20
euros for everyone who is willing to write a blogpost.

~~~
andrzejsz
Any ebook on the way?

~~~
rozhok
Nope, the author described why he won't made e-books here:
[http://www.yegor256.com/2016/11/09/why-no-
ebooks.html](http://www.yegor256.com/2016/11/09/why-no-ebooks.html)

~~~
Arkaad
tl;dr because of piracy

------
a_bonobo
Francois Cholet (author of Keras)'s Deep Learning with Python will be complete
and fully published on the 20th of December:
[https://www.manning.com/books/deep-learning-with-
python](https://www.manning.com/books/deep-learning-with-python) The chapters
released so far are very good, the outlook chapters were extensively discussed
on HN: [https://blog.keras.io/the-limitations-of-deep-
learning.html](https://blog.keras.io/the-limitations-of-deep-learning.html)
and [https://blog.keras.io/the-future-of-deep-
learning.html](https://blog.keras.io/the-future-of-deep-learning.html)

Wickham's R for Data Science came out in December 2016, I'd like to pretend
that counts as 2017: [http://r4ds.had.co.nz/](http://r4ds.had.co.nz/) It's a
very complete introduction to the tidyverse which makes working in R much more
pleasurable.

The second edition of Python for Data Science came out in October 2017 - that
one focuses on Pandas, numpy and Jupyter notebooks, reasonably good
introduction to those libraries.

The second edition of Sebastian Raschka's Python Machine Learning came out
2017 too - that one focuses more on scikit-learn and tensorflow, have only
heard good things but haven't read much in it.

~~~
j_s
HN discussions for the lazy:

[https://news.ycombinator.com/item?id=14790251](https://news.ycombinator.com/item?id=14790251)

[https://news.ycombinator.com/item?id=14797364](https://news.ycombinator.com/item?id=14797364)

search:
[https://hn.algolia.com/?query=blog.keras.io](https://hn.algolia.com/?query=blog.keras.io)

------
TheAceOfHearts
As a side-comment, don't limit yourself to recently released programming
books! I used to do that when reading about web stuff, since most older texts
were outdated. But there's many topics for which older books are far better
sources of information! The 80s and 90s had tons of improvements and
innovations which are still highly relevant. Don't fall into the trap of
thinking that something is better just because it's new.

As for 2017 CS books, I'd second Designing Data‑Intensive Applications.

If we count updates, the latest revision of The Swift Programming Language is
solid. My forays into Swift have been enjoyable.

This last one is kinda cheating since it's continuously updated, but I'd
highly suggest browsing through the HTML Living Standard [0] and reading any
parts that grab your attention.

EDIT: Looking through whatwg's news, I found out there's a developer edition
[1] of the spec which strips the stuff that's only relevant to browser
developers.

[0]
[https://html.spec.whatwg.org/multipage/](https://html.spec.whatwg.org/multipage/)

[1] [https://html.spec.whatwg.org/dev/](https://html.spec.whatwg.org/dev/)

~~~
wavesandwind
Yup, Martin did a fantastic job with his book. Before you would have to go
through hundreds of blog post and articles to piece all that distributed
systems knowledge together. It's kind incredible how much he managed to cover
in a clear and understandable language without going into the math or proofs.
His talks are great too, thank you Martin if you're reading this!

------
jscholes
I found Clean Architecture to be a big disappointment. I specifically waited
for its release to read all of his architecture-related advice in one volume,
and then found that most of the meat was in figures and diagrams which I
couldn't follow because of my visual impairment. I realise that's not entirely
Uncle Bob's problem, but all the way through the book I was telling myself
that it would be worth it once I reached the case study in chapter 33. At
which point he zoomed through a use case and architecture diagram and called
it a day.

Good books have figures. The best books have figures and textual explanations
to go with them.

~~~
darepublic
Are you able to read braille? Are these diagrams translateable on that
fashion?

~~~
jscholes
Yes to both, but unfortunately the cost in time, money and related skills is
prohibitively high:

\- The diagrams would need to be re-traced and any printed labels replaced
with braille ones.

\- As braille characters can often take up more space, the labels might need
to be shortened, meaning that a separate diagram key would need to be
prepared.

\- These are technical diagrams, so if you redraw them at the same scale they
appear in the book they might not necessarily be understandable in a tactile
form.

In terms of money, if you can get away with using A4 paper, the particular
type you would need costs £0.38 per sheet. If you need to use A3, it's £0.77
per sheet. Many commercial transcription services, when you take into account
the labour costs of adapting the diagram, will charge £70 plus per image, and
£3-5 for additional copies if you need them. There are free transcription
services provided by charities, but the staff are not experts in preparing
technical diagram material and the turnover time can be six months or more.

TL;DR - it's not worth it. Producing one tactile figure would cost twice the
cost of the book. I don't know how many figures there are in total.

------
j_s
Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools,
and Techniques to Build Intelligent Systems

[https://amzn.com/B06XNKV5TS](https://amzn.com/B06XNKV5TS) ($24.99 Kindle)

This book has picked up quite a bit of buzz as an intro to machine learning.
[https://news.ycombinator.com/item?id=15772174](https://news.ycombinator.com/item?id=15772174)

>cloverich: _The quality of the book (thus far) is so high that I immediately
started Googling about the author to try and learn more_

>chillee: _He used to be the PM of youtube video classification too._

~~~
andyjohnson0
+1. I'm finding this book really useful for getting my head around machine
learning and TensorFlow.

Also _Deep Learning: A Practitioner 's Approach_ by Patterson and Gibson.

------
m0ck
Effective Java, 3rd edition is coming 28th of December!

[https://www.amazon.co.uk/Effective-Java-Joshua-
Bloch/dp/0134...](https://www.amazon.co.uk/Effective-Java-Joshua-
Bloch/dp/0134685997/ref=sr_1_1?ie=UTF8&qid=1512745141&sr=8-1&keywords=effective+java)

~~~
mirceal
plot twist: the book is actually on Kotlin

------
ggambetta
Shameless plug: I've recently released an open source, online, interactive[1],
little-prerequisite, plain language, introductory Computer Graphics textbook
here: [http://gabrielgambetta.com/computer-graphics-from-
scratch](http://gabrielgambetta.com/computer-graphics-from-scratch)

[1] Live demos with more interaction coming very soon!

~~~
bogomipz
You actually have a lot of really interesting stuff on your site. The Client-
Server Game Architecture and Pathfinding Demystified articles also both look
like really good reads. Thanks for sharing.

~~~
ggambetta
Thanks for your kind words :)

------
bjz_
Type-Driven Development with Idris: [https://www.manning.com/books/type-
driven-development-with-i...](https://www.manning.com/books/type-driven-
development-with-idris)

~~~
miranda_rights
This looks like a nice book but I'm wondering if the overhead of learning
Idris on top of Coq (which I'm familiar with) would have any benefits - would
you say it's different enough from Software Foundations?

~~~
dropbet
I haven't gone through SF yet, but I believe TDDwI and SF have very different
goals. TDDwI is about hands-on development with a particular language, whereas
SF uses Coq to investigate and formally verify broad theoretical topics,
right?

TDDwI is also my pick for the year. It's really well done.

~~~
miranda_rights
You're right that SF is more theoretical. I guess I was curious if the benefit
of the book comes from being newly exposed to a dependently-typed language in
general or the actual topics of the book, if that makes sense. It sounds like
it's well-written though - I'll have to add it to my list. Thanks!

------
save_ferris
Technically Wrong by Sara Wachter-Boettcher

A really interesting dive into looking at common apps and industry problems
from alternate perspectives, as well as how bias affects technical and design
decisions in software. Not super technical per se, but it's pretty short and
raises great and timely questions.

[https://www.amazon.com/Technically-Wrong-Sexist-
Algorithms-T...](https://www.amazon.com/Technically-Wrong-Sexist-Algorithms-
Threats/dp/0393634639/ref=sr_1_1?s=books&ie=UTF8&qid=1512749679&sr=1-1&keywords=technically+wrong+by+sara+wachter-
boettcher)

~~~
MilnerRoute
I loved that book too. What I especially liked is it wasn't just theory and
rhetoric. There were specific examples of things that went wrong, backed with
statistics on _why_ it went wrong, and actionable ideas for how to fix things.

------
indescions_2017
Efron and Hastie's CASI is an instant classic. Deep history for any ML
researcher or enthusiast. And remarkably accessible ;)

Computer Age Statistical Inference: Algorithms, Evidence and Data Science

[https://web.stanford.edu/~hastie/CASI/](https://web.stanford.edu/~hastie/CASI/)

------
wavesandwind
Designing Data‑Intensive Applications by Martin Kleppmann

~~~
julsonl
This is the book I wish I had 5 years ago.

------
llimllib
I've been enjoying the in-progress "Crafting Interpreters" by Bob Nystrom:
[http://www.craftinginterpreters.com/contents.html](http://www.craftinginterpreters.com/contents.html)

~~~
elf_m_sternberg
I found "Writing an Interpreter in Go" to be a much better read. It was
actually completely portable to C++ and Rust, and that made it useful to
pretty much anyone.

~~~
llimllib
Presumably: [https://interpreterbook.com/](https://interpreterbook.com/) is
what you mean?

(Also: I'm following along with "crafting interpreters" and not writing my
interpreter in java, have had no troubles)

------
tjr
Looking forward a bit, there's an update to _The Reasoned Schemer_ due out in
February: [https://www.amazon.com/Reasoned-Schemer-MIT-
Press/dp/0262535...](https://www.amazon.com/Reasoned-Schemer-MIT-
Press/dp/0262535513/)

------
j_s
Any 2017 recommendations for the non-technical aspects of working as a
programmer? I'll stretch the boundaries a bit mentioning an October 2016 book
as an example of what I'm looking for:

Programming Beyond Practices: Be More Than Just a Code Monkey

[https://amzn.com/B01LYRCGA8](https://amzn.com/B01LYRCGA8) ($14.99 Kindle)

>"a sense of how a very experienced developer sees the world an[d] approaches
decision making"

Maybe the ZenFounder book helping founders maintain their mental health will
make it out before the end of this year!

[https://zenfounder.com/entrepreneurs-guide-keeping-st-
togeth...](https://zenfounder.com/entrepreneurs-guide-keeping-st-together)

Edit: just got an email - nope, delayed til 2018!

------
thdn
Mastering Linux Kernel Development

[https://www.amazon.com/gp/product/1785883054/ref=ox_sc_act_t...](https://www.amazon.com/gp/product/1785883054/ref=ox_sc_act_title_6?smid=ATVPDKIKX0DER&psc=1)

~~~
fellellor
I'm interested in this. Can you list the prerequisites for working through
this? I know a bit of C programming. What else do I need besides this?

------
boffinism
If you'll forgive the self-promotion, 'Working with Coders: A Guide to
Software Development for the Perplexed Non-Techie' came out over the summer
and is designed for project/product managers and others who have to deal with
programming on a daily basis but don't actually code:
[https://www.amazon.com/Working-Coders-Development-
Perplexed-...](https://www.amazon.com/Working-Coders-Development-Perplexed-
Non-Techie/dp/148422700X/ref=asap_bc?ie=UTF8)

~~~
fenier
I actually bought this because of this comment, enjoying it so far!

~~~
boffinism
Boom! My December sales just doubled.

~~~
jeremy_k
Just grabbed one! With tons of non technical product people floating around, I
figured this would be nice a fun gift for the office.

~~~
boffinism
Tripled!

------
bstamour
Fundamental Proof Methods in Computer Science, by Konstantine Arkoudas and
David Musser.

~~~
haskellandchill
Amazing, can’t believe I missed this one!

------
ericfrederich
Somewhat on topic I'd like to ask what a good device is to read these books
on? I'd like to grab a couple books to read over the holidays.

For example someone else mentioned this book.
[https://www.manning.com/books/deep-learning-with-
python](https://www.manning.com/books/deep-learning-with-python)

It's available as two options...

combo $49.99: pBook + eBook + liveBook

eBook $39.99: pdf + ePub + kindle + liveBook

Personally, I prefer paperback books, but I'm willing to try out something
digital. Do any digital options allow me to take notes? I currently own a
Lenovo X1 Yoga which folds completely into tablet mode and has a very nice
stylus. Does any Windows software allow me to read one of those digital
formats and take notes?

Thanks, ~Eric

~~~
starquake
I like my Kindle Paperwhite. I think it allows you to take notes too. It's
soooo much better than an LCD screen with a backlight shining in your face.

~~~
ericfrederich
Is it good for reading technical books which may have diagrams and source code
excerpts?

------
gfredtech
Writing an Interpreter in Go is a very elegant book for learning how to write
an interpreter from scratch using Go. Worth every cent:
[https://www.amazon.com/dp/300055808X](https://www.amazon.com/dp/300055808X)

[2] [https://interpreterbook.com/](https://interpreterbook.com/)

------
agumonkey
I wonder if there's been a new groundbreaking book in the recent years

------
daedalbug
_Races to suggest 'Hitchhikers Guide To Python' but then sadly realises it was
from 2016_

------
nazgob
+1 for Designing Data‑Intensive Applications.

------
MilnerRoute
I _wanted_ to read Tim O'Reilly's "WTF", but haven't gotten to it yet.

~~~
yawz
I'm currently reading it. It's been pretty good.

------
patricklouys
Another shameless plug: I also released my first programming book this year.

Professional PHP: Building maintainable and secure applications

[http://patricklouys.com/professional-
php/](http://patricklouys.com/professional-php/)

------
vcool07
Query: Any good free books on C# and/or ASP.net ? I'm looking more from a
perspective of an experienced C++ developer who's looking to learn C#.

------
TN412
I liked Sams Teach Yourself C++ in One Hour A Day, it goes over C++14 and
C++17 and it was really informative.

------
megaman22
_Game Engine Black Book: Wolfenstein 3D_ is one of the better ones I've read
this year. It's a fun nostalgia trip, if you played it, and it covers some
interesting stuff about historical low-level game programming and quirks of
early PC gaming.

[https://www.amazon.com/dp/B0768B3PWV/](https://www.amazon.com/dp/B0768B3PWV/)

~~~
kiddico
I bought that about two weeks ago. It really is a good read. I wasn't around
for the game itself, so it's nice that the book introduces the target
hardware.

~~~
tmccrmck
It really was a fun read. Highly recommend to any programmer!

------
DeceiveEither
Designing Data‑Intensive Applications: The Big Ideas Behind Reliable, Scalable
and Maintainable systems - Martin Kelppmann
[https://dataintensive.net/](https://dataintensive.net/)

I have recommended this to everyone.

