Skip to content
HomeVideosBooks
AllTopicsTrends
BlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    Cover of SQL Queries for Mere Mortals

    SQL Queries for Mere Mortals

    John L. Viescas · 2018

    Systems & OSComputer ScienceProgramming
    Open LibraryAmazon
    Stats for nerds
    2recommend
    4mentions
    4people
    2020–2025years
    50% recommend50% neutral

    Mentions per year

    202020212022202320242025

    What Hacker News says

    1. tristorSep 2021
      I don't have any one complete book that I can recommend, and I don't even really have a great reading list for this. But I'll make an attempt to share what I think is useful as a starting point.

      1. Systems Operations is first and foremost about understanding systems, in all of their complexity, which means understanding the internals of your OS primarily.

      2. Performance and networking, in particular, are super important areas to focus on understanding when it comes to learning the topic to help with software development.

      3. A lot of it is about understanding concepts in abstract and being able to extrapolate to other situations and apply these concepts, so there's actually quite a lot of useful information that can be learned on one OS and still applied to another OS (or on one game engine and applied to another, et al).

      Here's a few books I think are worth reading, not in any particular order of prevalence, but loosely categorized

      Databases:

      High Performance MySQL: https://www.amazon.com/gp/product/1449314287/

      SQL Queries for Mere Mortals: https://www.amazon.com/gp/product/0321992474/

      The Art of SQL: https://www.amazon.com/gp/product/0596008945/

      Networking:

      TCP/IP Illustrated: https://www.amazon.com/exec/obidos/ISBN=0201633469/wrichards... (updates on author's site at http://www.kohala.com/start/tcpipiv1.html)

      The TCP/IP Guide: https://www.amazon.com/TCP-Guide-Comprehensive-Illustrated-P...

      UNIX Network Programming: https://www.amazon.com/dp/0131411551

      Beej's Guide to Network Programming: http://beej.us/guide/bgnet/

      Operating Systems:

      Operating Systems Concepts: https://www.amazon.com/Operating-System-Concepts-Abraham-Sil... (various editions, I have the 7th edition... I recommend you find the latest)

      Modern Operating Systems: https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanen... (the "Tanenbaum Book")

      Operating Systems Design and Implementation: https://www.amazon.com/Operating-Systems-Design-Implementat-... (the other one, the "MINIX Book")

      Windows Internals:

      Part 1: https://www.amazon.com/Windows-Internals-Part-architecture-m...

      Part 2: https://www.amazon.com/Windows-Internals-Part-2-7th/dp/01354... (I had the pleasure of being taught from this book by Mark Russinovich and David Solomon at a previous employer, was an amazing class and these books are incredible resources even applied outside of Windows, we used 5th edition, I linked 7th, which has the 2nd part pending publication).

      MacOS Internals:

      Part 1: https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/0991...

      Part 2: https://www.amazon.com/MacOS-iOS-Internals-II-Kernel/dp/0991...

      Part 3: https://www.amazon.com/MacOS-iOS-Internals-III-Insecurity/dp...

      Linux Kernel Programming:

      Part 1: https://www.amazon.com/Linux-Kernel-Development-Cookbook-pro...

      Part 2: https://www.amazon.com/Linux-Kernel-Programming-Part-Synchro...

      The Linux Programming Interface: https://www.amazon.com/Linux-Programming-Interface-System-Ha...

      General Systems Administration:

      Essential Systems Administration: https://www.amazon.com/gp/product/0596003439/

      UNIX and Linux Systems Administration Handbook: https://www.amazon.com/UNIX-Linux-System-Administration-Hand...

      The Linux Command Line and Shell Scripting Bible: https://www.amazon.com/Linux-Command-Shell-Scripting-Bible/d...

      UNIX Shell Programming: https://www.amazon.com/Unix-Shell-Programming-Stephen-Kochan...

      BASH Hackers Wiki: https://wiki.bash-hackers.org/

      TLDP Advanced BASH Scripting Guide: https://tldp.org/LDP/abs/html/

      The Debian Administrator's Handbook: https://debian-handbook.info/browse/stable/

      TLDP Linux System Administrator's Guide: https://tldp.org/LDP/sag/html/index.html

      Performance & Benchmarking:

      Systems Performance: https://www.amazon.com/Systems-Performance-Brendan-Gregg-dp-... (this is Brendan Gregg's book where you learn about the magic of dtrace)

      BPF Performance Tools: https://www.amazon.com/Performance-Tools-Addison-Wesley-Prof... (the newer Brendan Gregg book about BPF, stellar)

      The Art of Computer Systems Performance Analysis: https://www.cse.wustl.edu/~jain/books/perfbook.htm (no longer available from Amazon, but is available direct from publisher. This is basically the one book you should read about creating and structuring benchmarks or performance tests)

      I guess that's a "reading list", but this is just a small part of what you need to know to excel in systems operations.

      I would say for the typical software developer writing web applications, the most important thing to know is how databases work and how networking works, since these are going to be the primary items affecting your application performance. But there's obviously topics not included in this list that are also worth understanding, such as browser/DOM internals, how caching and CDNs work, and web-specific optimizations that can be achievable with HTTP/2 or QUIC.

      For the average software developer writing desktop applications, I'd say make sure you /really/ understand OS internals... at the base everything you do on a computer system is based on what the OS provides to you. Even though you are abstracted (possibly many layers) away from this, being able to peel back the layers and understand what's /really/ happening is essential to writing high-quality application code that is performant and secure, as well as making you a champ at debugging issues.

      If you're trying to get into systems operations as a field, this is just a brush over the top surface and there's a lot deeper diving required.

      thread
    2. megameterJun 2020
      With 11.5 years to study and no guarantee of an interactive environment, there is no particular reason to start on anything but fundamental CS topics - that's time enough for two degrees and research work, and most likely, if he gets a few years into it he will tire of CS fundamentals and start seeking study of a more specific problem domain, which will motivate further effort.

      Either way, the industry landscape will change, but the old stuff will still be around and still relevant reference. Therefore, start studying old classics of CS, with a focus on fundamental algorithms, compilers and older, simpler language specifications.

      It is extremely likely that even if this man doesn't have access to the Internet, the computer he uses has a web browser, and therefore some version of Javascript. Therefore, I would pick Web tech as the entry point: Learning Web Design: A Beginner's Guide to HTML, CSS, JavaScript, and Web Graphics, Javascript the Definitive Guide, Eloquent Javascript, and Javascript the Good Parts.

      Failing that, he will probably have to bootstrap from Windows batch files and x86 machine code into a programming environment. I will ignore that possibility, since AFAIK nobody has tried to tutorialize such a task.

      To complement the JS stuff, a general outline book. I like Schaum's Outline of Principles of Computer Science.

      Then all the "big hits":

      The Art of Computer Programming

      Algorithms + Data Structures = Programs

      The C Programming Language

      The Little Schemer, Structure and Interpretation of Computer Programs, and Common Lisp the Language.

      Starting Forth, Thinking Forth, and the Forth-83 standard

      Smalltalk-80 the Language

      Programming in Prolog: Using the ISO Standard

      A Relational Model of Data for Large Shared Data Banks (Codd 1970) plus SQL Queries for Mere Mortals for the practical.

      thread
    3. KerrickNov 2025
      I am indeed learning, working to close those gaps.

      For automated testing, I'm in the middle of reading Developer Testing by Alexander Tarlinder, with xUnit Test Patterns by Gerard Meszaros coming close behind. I'm also working through Test-Driven Development: By Example with my wife as we have time.

      For SQL, I read Grokking Relational Database Design by Qiang Hao last winter, and I started SQL Queries for Mere Mortals by John Viescas this week. Sadly, my flub with "left inner join" was not a joke.

      For OOP, I've been on a whirlwind tour: OOA&D With Applications by Booch et al., Object Thinking by David West, POODR and 99 Bottles of OOP by Sandi Metz, Domain-Driven Design by Eric Evans, IDDD and DDDD by Vaughn Vernon, Design Patterns in Ruby by Russ Olsen, Clean Architecture by Robert C. Martin, and Smalltalk Best Practice Patterns by Kent Beck. Still on the docket are Design Patterns by the Gang of Four, PoEAA by Martin Fowler, Smalltalk, Objects, and Design by Chamond Liu, and Object Design by Rebecca Wirfs-Brock.

      > confessing that you don't know something and gleefully stopping there is not much better [...] we shouldn't let shamelessness about what we don't know limit us either

      I promise you, this was not gleeful and this was not shameless. Shame and fear affected me for months on these issues. And I'm not stopping there... From the end of the article: "I’m going to continue to work on skill building, but now I feel free to write about it. If [...] you’d like to help me fill [my knowledge gaps], [...]"

      > if you want to write a blog about a topic, then part of the requirements here is that you do hold yourself to a high standard

      A high standard of writing, maybe. But plenty of great stories come from those who are striving for a high standard, not just those already in the upper echelon. It's what makes this place different from academic journals.

      thread
    4. user3939382Jun 2021
      I started studying SQL when I was a freshman in high school circa 2000, the book I had was called SQL Queries for Mere Mortals. Is this a play on that, or was that title an homage to something even earlier?
      thread

    Related

    Cover of The art of SQL
    2008–2021

    The art of SQL

    Stephane Faroult
    8 recommend · 10
    Cover of Programming in Prolog
    2009–2026

    Programming in Prolog

    William F. Clocksin
    8 recommend · 22
    Cover of High Performance MySQL
    2007–2026

    High Performance MySQL

    Jeremy D. Zawodny
    27 recommend · 44
    SQL for Web NerdsPhilip Greenspun
    2008–2013

    SQL for Web Nerds

    Philip Greenspun
    7 recommend · 11
    Cover of SQL for Dummies
    2009–2025

    SQL for Dummies

    Allen G. Taylor
    1 recommend · 3
    Cover of Learning SQL
    2014–2024

    Learning SQL

    Alan Beaulieu
    3 recommend · 4
    Cover of Joe Celko's SQL for Smarties
    2009–2020

    Joe Celko's SQL for Smarties

    Joe Celko
    10 recommend · 13
    Cover of SQL and relational theory
    2010–2020

    SQL and relational theory

    C. J. Date
    9 recommend · 17