Literature Recommendation Thread

How about a Holla Forums literature recommendation thread?

I'm currently reading Database System Concepts 6th edition (500 pages in atm), and it's very good, would recommend. It's a long read, but covers everything and then some.

I'm looking for a good book covering the concepts and best practices pertaining to backend web development. Thanks to the above book, I mostly understand SQL, database schema design, and so on, but there are gaps in my knowledge pertaining to stuff like routing, POSTing files to a server, and so on and so forth. I'm looking for a good book that could hopefully cover all my bases.

Other urls found in this thread:

gnu.org/doc/fsfs3-hardcover.pdf
en.wikipedia.org/wiki/TCP/IP_Illustrated
amazon.com/Computer-Networking-Top-Down-Approach-7th/dp/0133594149/ref=dp_ob_title_bk
amazon.com/Networking-Complete-Reference-Third-Sandberg/dp/0071827641
wayback.archive.org/web/20120120031001/http://m.simson.net/ugh.pdf
emma.nfshost.com/v7x86/vm.html
pages.cs.wisc.edu/~remzi/OSTEP/
pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html
web.archive.org/web/20170619024806/http://norvig.com/21-days.html
web-artanis.com/scheme.html
mitpress.mit.edu/books/little-schemer
7chan.org/pr/src/The_Little_Schemer_4th_2.pdf
github.com/pkrumins/the-little-schemer
fastchip.net/howcomputerswork/p1.html
charlespetzold.com/code/
learningtheartofelectronics.com/
mitpress.mit.edu/sicp/
gnu.org/doc/fsfs3-hardcover.pdf
shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition
example.org
f-droid.org/app/org.sufficientlysecure.viewer
twitter.com/SFWRedditImages

Programming in Ada 2012.

It's a pretty interesting language, and figure it would be worth knowing about for some projects I have planned in the future. I'm quite deep in the functional programming meme space, and haven't programmed C++ for a few years, so it's an interesting perspective.

I program Ada at work, and it is a mess once you see some real world code. It don't feel safe either, just strong types but that is all. You can do I/O like it is the wild west, not controlled like in Haskell or even force to handle possible exception like Java. I don't like the Pascal-like syntax either, feels even more verbose than Java.

The purely functional approach that haskell takes can make i/o quite disgusting to use in the real world too. You basically start piling on abstractions and abstractions and then handing newer developers a list of academic papers on monad transformers before they can understand how things really work. Eventually that particular project was written in Erlang, and everyone felt happier. (Erlang doesn't have the type safety, but there are some tools you can run on your code to get some limited typing guarantees).

I would not say disgusting, but it is painful sure and a bit of a meme language. I still expect something more in Ada when it comes to I/O, maybe not like in Haskell but something. I have worked in Erlang too, but despite its lack of types it is still quite ok due to its fault tolerant design (as claimed). Depending on project type I would chose Erlang over Ada. The problem I have with Ada is that is claims to be THE safest language to program in, when it really isnt. It is also not as fun to program in as Erlang if you want to compare languages.

gnu.org/doc/fsfs3-hardcover.pdf

looking for a good networking book if anyone has suggestions

As a reference (pretty old)
en.wikipedia.org/wiki/TCP/IP_Illustrated

A shorter overview of OSI
amazon.com/Computer-Networking-Top-Down-Approach-7th/dp/0133594149/ref=dp_ob_title_bk

More emphasized on hardware
amazon.com/Networking-Complete-Reference-Third-Sandberg/dp/0071827641

anyone have unix systems programming book recommendations?
I've been trying to read advanced programming in the unix environment and it's been giving me a hard time tbh, wondering if there are any options that are slightly easier to read

Are you implying that you've already read The Unix Programming Environment and The Practice of Programming, both by Kernighan and Pike?

I have not

/r/ing tech approved fiction

snow crash

Right to Read by Richard Stallman

Permutation City by Greg Egan

Okay user, I'm reading the Unix Programming Environment right now. It seems to be rather outdated, is there a recent edition? I can't seem to find one.
For example, I tried to use od -cb to read the bytes associated with one of my directories, only to find out that it wasn't readable, as directories had stopped being readable many years ago.

.. current year after all.

No. It was the point for you to dive into how things used to be and why.
And it gets to system programming right away.
The things haven't actually changed this match, I even used a program from this book to monitor who is logging to a Solaris server and screwing my stuff.

The UNIX Haters Handbook is also worth mentioning.
wayback.archive.org/web/20120120031001/http://m.simson.net/ugh.pdf

Otherwise you can try "Linux System Programming", it seems to be okay, though not as thorough as "Advanced Programming in the Unix Environment".

In most modern UNIXen it still works. I guess it depends on the implementation of open() syscall.
If you want to go exactly by the book you can run UNIX v7 in QEMU emma.nfshost.com/v7x86/vm.html

www.catb.org/esr/writings/taoup/

Actually, most things by greg egan are pretty good, though they can get a bit kool-aidy at times.

okay, here's a source of confusion for me.
The ISO C standard (for example) defines a number of headers that the operating system must provide implementations for, like stdio.
The implementations are not provided in the header files, only the definitions (?), so these functions and system constants must be implemented/declared elsewhere.
Yet, if we want to call something like write() (which is a system call?), we don't need to provide an implementation in our C source code, we can just import the header.
These functions are implemented by the operating system (I think); does the compiler know where to find the implementations for these standard library header files? I'm wondering why we don't need to explicitly include them.

The standard library does not get compiled each time you compile a program.
Yes
No, the compiler does not deal with that, the linker does. For things not in the standard library you have to tell the linker about them, usually by passing -llibrary to the compiler.
You should #include them, so the compiler can do type checking.

I can see how that would be a waste of resources, and how it'd be more optimal to have the implementations pre-compiled and ready to go. I'm assuming that's the rationale, anyway.
I think I phrased my question poorly: I know that there's a write() system call, but then there's also these wrapper functions of the same name as the system calls.
If I do:

#include "stdio.h"
and then call printf to send the desired text to stdout, what is the call to printf? This is a call to a wrapper function, which itself makes the system call, correct?

I don't have a very good understanding of the compilation process, what a preprocessor, linker, etc., do, so I think I'll have to expand my reading on that as well. The source of confusion right now for me is how implementations for these standard library header functions are found when we haven't explicitly imported stdio.c (for example).

printf is a precompiled function provided by the C runtime. It is exactly equivalent to calling fprintf(stdout, ...), where stdout is a global of type FILE*, a stdio file handle.
Stdio is a wrapper for system calls, with difference that it uses buffering (cf. man setbuf). Stdio is recommended over raw syscalls for speed, because it tries to minimize the number of read()/write() system calls.
Note that since stdio is really just a wrapper it is possible to convert from it to fd (fileno) and also the reverse (fdopen).

Going to read this over some upcoming weekends. It has been a long time since I've studied OS internals, so this will be a refresher and a first in-depth look at the design of BSD.

Look no further.

absolute openbsd

LARPing CIA nigger

You fucking retard, what do you think the focus of a compiler is? Anyways chaper 8 cover code gen and 9 and 11 cover optimization.

Also: The user who wanted to know more about the compilation process will be well served by reading chapter 1, and subsequent ones for greater detail. I see what I'm dealing with though, you're a comsci dropout who has interned the idea that the dragon book is out of reach, because you personally found it difficult. Not everyone shares the same restricted nature of your cognitive abilities, so drop that pretence.

Go read the RFPs.

Shut up and read Andrew Appel's books, faggot.

what material should I be familiar with before getting into this?
need to take things one step at a time

Familiarity with computer architecture is a must, and some exposure to assembly language programming. If you have that, then I'm sure you could start with the dragon book and see where you get stuck. There's a lot of directions you can go in this area though. There are theoretical issues concerning the grammars and of languages (Sipser's book is good), books on typing theory, programming language design etc...

what book(s) do you recommend?
I'll add them to my queue I guess, but I have no immediate shortage of reading material.

Hah, you'll never fully empty the queue. I'm pretty certain we all just have to accept dying before ever getting around to reading all the interesting books/texts out there. I guess it is a priority queue. Not niggers though, they don't have that problem.

Anyways, the first book is pretty good for understanding how the hardware works, the second is a good book on operating systems. Enqueue both, but the second book is probably more of what you're after.

ugh, meant the first. The reason is that it covers some basic assembly programming, and will explain the various addressing modes, calling conventions and memory layout. Those all vary somewhat depending on the architecture you're targeting, but the concepts remain the same.

pages.cs.wisc.edu/~remzi/OSTEP/

Pretty much OS internals

I just finished Quarantine. What a ride.

First time I've seen science fiction use quantum mechanics in a way that isn't just a cheap justification.

Anybody have good recommendations for books on machine learning and genetic algorithms? I'm looking for something with practical examples, language doesn't matter. I tried Programming Collective Intelligence but got burned because it has all these examples that rely on third-party web APIs that don't exist anymore.

I remember reading that book a while back and learning absolutely nothing, it was basically pop trash.

The friendliest overview of AI is the first book. It's an overview of the subject, so it doesn't get too heavy on details. It definitely touches on genetic algorithms and ML.

The next three books are great for machine learning, but you really need to have a good mathematics background. Advanced calculus + Linear Algebra are essential prerequisites (Be familiar with things like a Jacobian or Hessian matrix, Gradients etc). Books at this level don't have many practical examples though, although Haykin had some matlab experiments. I'm sure there are some books in between, but they'll be Python books which use libraries designed by people who can understand the material in the last three books.

I guess it depends if you want to use machine learning to solve problems, or gain academic understanding of the techniques. In either case, Russel and Norvig will be helpful.

(meant to include as well)

Thanks, I'll check out all four of these.

I didn't get an EE degree for nothing.

Ah you should be fine then. Simon Haykin has an EE background, so you might like his book over Bishop's.

One more book to consider. I haven't read it myself, but it comes well recommended. Again, it falls in the advanced category.

anyone want to start a book club?
I'm reading the Unix Programming Environment atm, and I was reading a book on networking, but I haven't been finding the time of late.
If anyone would like to discuss the concepts or anything as we read, I'd be all for it.

Best fantasy adventure novel I've ever read

Reading some random man pages sound more interesting.

here's as good a place as any.

reading UPE, came across this line:

if test -t 2>&1

This line is intended to test whether the standard output is a terminal.
Now, I'm used to seeing test being supplied an argument in the form of a file. No argument is supplied here, so would this command test the file descriptor of the terminal if it wasn't being piped into another command, or the file descriptor of the of the other command (process?) if it was?

Why do we redirect stderr to stdout in this case? This is redirecting stderr from the test command to the stdout of the test command, correct?

Check your shell's man page. I'm using pdksh (OpenBSD) and it says the argument is optional, and defaults to stdout. However POSIX seems to discourage this use, calling it "historical".
pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html
The stderr redirection is weird, because it normally just goes to your terminal. Maybe he just wants to make sure, in case there's any chance it was redirected previously to another file.
Anyway there's missing context to this line, since using "if" by itself like this will cause the shell to dump you into PS2 and wait for you to type the rest of the if-statement.
BTW my PS1 starts with $? (the exit code of last command).

The tech support sticky is more suitable.


Nope. "if" just checks the exit code of the command that follows it. Since "test -t 2>&1" is a full command it's a valid conditional. You need to finish it off with a "then", of course, but that's often put on a separate line.
In something like if [ "$v" = "test" ], [ is the command, and may be provided by /usr/bin/[. Unix is crazy.

Yeah, the rest is on separate line probably. That's why I was thinking there's more to this than just that fragment. To make it fit on single line in this form, you'd have to use semicolons:
if test -t ; then true; fi
But my favorite/shorter way is:
test -t && true
(replace true with whatever fits...)

Of course there's more to it than just that fragment, but the rest is probably irrelevant. That line contains everything necessary to make the fragment work.

Don't use either of those in a script people might have to read later. Readability is more important than code golfing.

It's hard to start book clubs for technical material. Many people here are at different levels, and we're all motivated by very specialized interests.

Here's some advice and scheme.

-Teach Yourself Programming in Ten Years
web.archive.org/web/20170619024806/http://norvig.com/21-days.html

-Learn Scheme in 15 minutes
web-artanis.com/scheme.html

The little schemer
mitpress.mit.edu/books/little-schemer
Here's the pdf but I recommend you to buy the book because otherwise you'll never read it.
7chan.org/pr/src/The_Little_Schemer_4th_2.pdf

The little schemer github examples:
github.com/pkrumins/the-little-schemer

man gcc

Well I usually write scripts in Perl instead of shell, so they won't undertand them anyway. :^)

bump

Hardware: (For childs/teenagers)
"How Computers Work: Processor and Main Memory"
ISBN: 1442113987

fastchip.net/howcomputerswork/p1.html

------------------------------

Hardware: (For teenagers+)
"The Hidden Language of Computer Hardware and Software"
ISBN: 0735611319

charlespetzold.com/code/

------------------------------

Electronics: (for students)
"Learning the Art of Electronics
A Hands-On Lab Course"
ISBN:0521177235

learningtheartofelectronics.com/

------------------------------

Hardware/electronics printers : (experienced users/developers)
"Inkjet Applications"
ISBN:0972015930

------------------------------

Programing: (scheme)
"The Little Schemer"
ISBN: 0262560992

mitpress.mit.edu/books/little-schemer

------------------------------

Programming: (Lisp)
"Structure and Interpretation of Computer Programs"
Freed content
mitpress.mit.edu/sicp/

------------------------------

Understanding the legal stuff around the GPL
Free software, free society

gnu.org/doc/fsfs3-hardcover.pdf
shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition

------------------------------

Human Communication:
Nonviolent Communication: A Language of Life
ISBN: 1892005034

Since writing that post, the inanities of the Bourne shell have finally pushed me over the edge, and I've started a small module to do shell scripting in Python.
wget example.org -O page.html becomes run.wget("example.org", O="page.html") and v=$(xclip -o) becomes v = capt.xclip(o=True)
curl example.org | grep domain > results will probably become run(pipe.curl("example.org") | pipe.grep("domain") > "results") but that's pretty ugly.

I don't know yet if any of this is a good idea.

What would be an good practical introductory text on topic of Machine Learning and Data Science?
What would make a good project to study this field?

Why not:
run(pipe(curl("example.org"), grep("domain")), "results")
Run takes two arguments: what to run and an optional output file (defaults to terminal). Pipe takes the sequence of commands as arguments, piping the result from one into the other and returning the result to run.

pipe(curl("example.org"), grep("domain")) is impossible, because curl and grep are external commands and have to be dynamic. run.curl and capt.curl work with getattr fuckery. But yeah, not doing crazy things with the syntax might be better.
The only way I've found to avoid needing some kind of lazy command builder for pipes is by using del to execute commands when they're garbage collected, and that's a step I'm not willing to take.

Bumping this thread.

Are there any recommended books on how to keep large projects maintainable? I'd like to become a better programmer. I can write smaller programs decently, but I have no idea about how to structure code properly.

libgen.io has essentially every book ever published in English for free and you should use it instead of random .pdf downloads
If you have some free space you can download one or more of their torrents and help back up the collection.

Can't you just make a fifo and redirect stdout there?

Clean Code and Clean Architecture by Robert C. Martin perhaps.
The Pragmatic Programmer: From Journeyman to Master is also good.
And try to avoid stuff like GoF.

Thank you user. Someone should compile a Holla Forums reading list.

Is Clean Coder also good?

but why?

The Clean Coder is about soft skills rather than programming or design, how to behave with colleges, argue with boss, plan career and stuff like that.
As an autistic person I find this book helpful as it's not very clear for me what I'm expected to do in certain situations.
It has some "progressive" drawbacks though.

Have you read "A survival guide for people with Asperger Syndrome" by Marc Segar?

Okay, thank you, will download that too.

I gave up about halfway through that book. It should be renamed into "how to make Java not blow up in your face", because most of it is only relevant to Java (and similar languages).

I also find some of the advice rather questionable. For example, he recommends making every self-contained action into its own method. The problem with this is that every time I see a method declaration my mind immediately thinks this method will be used more than once, but it won't. Other languages offer much better ways than bloating the namespace.

Which happens to be 90% of all written programs.

Which makes a lot of sense for TDD. Also this approach helps to detect dead code later on more easily.
Like what? Bloated namespace indicates bad design. You should refactor your class into several classes or interfaces.

Just started this, really liking it

On a related note what's the best eBook reader for android?

This works well enough that I haven't bothered looking for something better:
f-droid.org/app/org.sufficientlysecure.viewer
You can't properly change the text size even for epubs, though.

Does anyone have a PDF of Structure and Interpretation of Classical Mechanics (SICM) 2nd Edition? I was able to find a PDF of the first edition, but not the second one.

libgen.io

That's the first place I looked, but they only have the first edition.

I'll attempt the read the first book, then.
I was trying to read "Neural Networks for Pattern Recognition" by bishop, but chapter 2 is just nearly incomprehensible to me

bump

I would imagine that Holla Forums is interested in mathematics, especially fun things like puzzles and combinatorial game theory. Oh, and the obligatory recommendation for SICP, of course.

I want to get started with Verilog so I can dick around with FPGAs, what books does Holla Forums recommend?

use this random .io bullshit instead of some other random bullshit

smfh this machine learning stuff is hard lmao
I settled on "Pattern Recognition and Machine Learning".
Direct quote:
What did he mean by this?

I'm definitely missing the probability as far as prerequisite material goes, but what else is needed? I've taken all of the calculus and linear algebra, but that's not what I'm getting stuck on.

Rude.
Libgen is only hosting on .io because they give zero shits about abuse. Their collection is structured and very large.