Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Programming Notes for Professionals books (goalkicker.com)
466 points by gregorymichael on Jan 19, 2018 | hide | past | favorite | 61 comments


Is everyone aware that this is merely a dump of "Stack Overflow Documentation" (not Stack Overflow Q/A), repackaged in PDF format ? (Also a request for bitcoin donations.)

https://meta.stackoverflow.com/questions/354217/sunsetting-d...

https://stackoverflow.com/documentation

https://archive.org/details/documentation-dump.7z

There is no indication that these books are curated or edited.


Agreed. The Haskell version has advanced topics such as Free Monads in chapter 8 and higher-order functions in chapter 35! The author for each piece of content has also not been included, which means I have no way of knowing if the content has been authored by a computer science professor or his/her student.


There is a list of contributors at the end of each book, but it's only their site user name with a link to the profile.


> Is everyone aware that this is merely a dump of SO documentation, repackaged in PDF format ?

Yes, it's stated on each book's page.


True. However, the discussion here in this thread doesn't indicate that everyone understood that statement.


You can grab all the PDFs with wget:

  wget --random-wait -R ".html,.png" -r goalkicker.com
Or download the archive directly (Not PDF, data is in JSON format): https://archive.org/details/documentation-dump.7z


Alternatively you can download all from http://books.goalkicker.com/all.zip :)


You probably want a "--wait=?" or "-w ?" on there too, to set a non-zero wait time. The --random-wait flag just tells it to vary the wait time between 0.5 and 1.5 times the wait given by --wait.

Without --wait, the wait time is zero and either --random-wait is ignored or --random-wait is applied to 0 which has the same effect.

I was a little surprised by this, actually, when I tested it. I would have expected --random-wait with no --wait to either give a warning that you had included a useless option, or to have some useful non-zero default that it uses.


I haven't compared the text to see how much editing was involved here, but based on the credits line in the books this appears to be the abandoned StackOverflow Documentation beta in PDF form?

https://stackoverflow.com/documentation


Why did StackOverflow shut it down? It was really useful.



It's explained in OP's link. Among other things, because people didn't really use it and stackoverflow is good enough.


What an amazing initiative — not least because they're providing something consumable for offline.

Does anyone have any knowledge on the quality of this material? I'd love to dive into quite a few of them where I have surface-knowledge...


Agreed, this is incredible - especially to have something that can be perused in physical format.

Looking through some of the examples for the languages I know well enough to judge, these seem to be good quality. As a simple case in point, for how to open a file in Python they only show using a context manager. Even though you can easily read files without that, it is the better, safer, perhaps slightly-more-intermediate-level option and also makes a person more familiar with context managers in general. So it is nice to see best practices presented as the defaults.


Thanks! Python is one of the ones I'm going to check out so that example makes me feel confident about using this as a resource :)


From a cursory glance at the BASH one it seems pretty well organized and thorough. It is not overloaded with information, but gives a good overview of what's possible.

Some specific things I noticed in the BASH book: it says this about cp:

> -a … Combines the d, p and r options

But it doesn't show what -r means.

It could benefit from better discussion of using if without brackets with [] and with [[]]-It discusses them, but I wish it gave better insight on when to use them.

All in all, very handy reference material and I will be grabbing a few more to have on hand.


As somebody who contributed quite a bit to Bash Stack Overflow documentation, I have to say that I consider it a total train wreck. Before (or rather, instead of) touching this, I highly recommend reading something like the BashGuide (http://mywiki.wooledge.org/BashGuide) for anybody who looks to get started with Bash.

Even later, as a reference, SO Documentation isn't that useful, in my opinion.


From a look at the Haskell one... the pedagogy is non-existent so I think the "for professionals" label is apt. The content is not in a sensible order or anything like that: it is merely compiled as a topic by chapter.

The nice thing is the formatting and links to an online REPL where you can play with the code samples.

I think it will be a handy reference material.


I agree, I sometimes print to PDF stack overflow threads, now we have some PDFS!

Thanks for the link.


A lot of effort went into this, I also took a look at the languages I'm familiar with. They even have screenshots of the results and provide an excellent way of showing exactly what you would input and see. I really appreciate the fact that they are pdf that you can save and don't have to rely on an internet connection.


This is a really great effort to compile relevant answers into a narrative.

Is there any way that the community can contribute to adding new resources to the list, so that the books can be updated in future releases?


> great effort to compile relevant answers into a narrative

Don't confuse "StackOverflow Question&Answers" with "StackOverflow Documentation":

https://stackoverflow.com/documentation/

Goalkicker "only" provided formatting and beauty. They did not reformulate tons of Q&A into a documentation - that work was already performed by the StackOverflow Community.


Wait, did the Stack Overflow community compile these answers into the ordered list provided by the book?

What I had assumed is that the "author" of the book hand picked these answers and arranged them together along with their chapter names into a narrative to aid understanding.

Is my understanding incorrect?


No, it's "just" converting selected tags from Stack Overflow Documentation (https://stackoverflow.com/documentation - now shut down) into PDFs.


Several years ago, I would ask StackOverFlow questions on esoteric topics like elisp, with the idea that by asking small, well-defined questions, you could eventually create enough of a trail that no topic would remain difficult to learn. For example, here are a few I could find:

https://stackoverflow.com/questions/2170528/writing-hello-wo...

https://stackoverflow.com/questions/1541682/lisp-script-to-p...

https://stackoverflow.com/questions/2264286/generating-a-qui...

While books are great, something more interesting would be a little app window in your editor, where you could type (or ask Cortana, Siri, Google) “How do I declare a set”, “parse csv“, “open file for writing”, etc., and you would see small examples. The language is known by the editor so no need to include it in the query.

So, for instance, if I wanted to write an F# program, which I don’t know, I could learn it on the fly.

StackOverFlow has the database of knowledge by now. Now, how to get your exact answer, faster?

“Siri, how do I round the corners of a view in iOS?”


What you're describing is not unlike howdoi: https://github.com/gleitz/howdoi


I was hoping that someone had harvested every PDF cited in SO answers and culled it down to a definitive list of most popular reference works. Now there is an idea.


Not impressed. I downloaded the python book, chose a section at random (chapter 15: dictionaries), and found an error on the first thing I looked at.

The book says that:

    d=dict(**otherDict)
only works if otherDict's keys are strings, but in reality it also works if the keys are integers:

    >>> dict(**{1:2,3:4})
    {1: 2, 3: 4}


Looks like a 2 vs 3 thing:

  Python 2.7.14 (default, Jan  6 2018, 14:37:03)
  [GCC 5.4.0] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  >>> dict(**{1:2,3:4})
  {1: 2, 3: 4}
  >>>
vs

  Python 3.4.5 (default, Jan  6 2018, 14:44:12)
  [GCC 5.4.0] on linux
  Type "help", "copyright", "credits" or "license" for more information.
  >>> dict(**{1:2,3:4})
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  TypeError: keyword arguments must be strings
  >>>


This works in Python 3.6:

    >>> {**{1:2,3:4}}
    {1: 2, 3: 4}
:)


Somewhat unrelated, but hte first concern that popped into my head is how the information contained ties to specific version of its subject?

Like, the Python book looks awesome but I have to use Python 2.7 day-to-day (don't ask). Are Python 2/3 stuff clearly marked?


Absolutely incredible. Thanks for all the effort.


Looked at some pages on Algorithm and Java, the content looks very relevant to current practices and it is well organised!


goalkicker.com is related to codeday.top afaict. They are the only two sites on Google that match some of the snippets. CodeDay is a machine translation blog which is very sophisticated. The PDFs appear to be a reorganization of those blog entries.

Very interesting. Well-written by machines.


Is anyone aware of a resource which allows me to store programming documentation on .txt files? I have perused the internet but haven't found any. I am asking because I would like to view the documents within my text editor.


Great collection. Thanks for making them available to the community.


I'm tempted to print them for those moments when the internet is down and I still need to access SO.


I use a tool called "Dash.app" for Mac from Kapeli [1] (I've no affiliation with them). It allows me to download the documentation for a lot of development tools for offline consumption, these docs are called "Docsets", just to give you an idea of how many docsets it has check this link [3]. It makes also very easy to navigate and search.

You can also download a "tag" from stackoverflow which is very useful.

I know there is now alternatives for several operative systems using the same docsets [2].

I can't recommend this app enough, it is worth every penny.

[1]: https://kapeli.com/dash

[2]: https://blog.kapeli.com/dash-for-ios-android-windows-or-linu...

[3]: https://github.com/Kapeli/feeds


As well as the browsers that use the docsets from Dash (e.g. Zeal [1] for Windows/Linux), there's DevDocs [2], a web-application that works offline and uses its own scraper.

[1]: https://zealdocs.org/

[3]: https://devdocs.io/


devdocs.io is really neat!


Or just download the pdfs to your hard disk


Ok, but what if there's a power outage????? /s


Why do you need to kill trees just because the internet is down?


Think about the trees that are used to produce paper in the same way that you think about wheat that is used to make bread. There will always be demand for bread, so it makes sense to manage your natural resources responsibly. No natural resource means no product which means no business. Timber is managed like any other crop.

If there were no paper or wood products, those trees would be cut down to be replaced with homes, farmland, mining operations, etc. Owning land costs money, selling timber to the fiber & wood products industry actually preserves the forests occupying the land.


Print on recycled paper. No need to print anything related to programming on high quality paper. It will cost you about double the price per packs of sheets but we print so rarely it's worth filling all of your printers with them.


> No need to print anything related to programming on high quality paper

Why print anything related to programming at all? What's wrong with opening the PDF on your computer and putting it side-by-side to your IDE? Isn't this more practical anyway? (Full text search, being able to copy & paste, and so on)

Of course you can argue that some people prefer reading on paper over reading on a screen. But that argument would be a strawman: The original commenter said they would print this specifically for the case of a broken internet, meaning their normal behaviour is to read that stuff online, on screen.


It is a lot easier to bring a few sheets and pens in a meeting to collaborate with everyone than trying to use some webapp.

As a front-end developer, I very often print my layout to be able to scribble on them to show ideas and features mockups very quickly.


Screen space is more limited than space in the physical world. If I want to open an PDF next to my editor, I need to make them both share the screen, as opposed to making the editor full screen or having it share space with a web browser or other application.


I'd love to throw the guy a few bucks in bitcoin, but the network fee is going to cost me $11.


Why are there notes on Angular 2 and just Angular?


AngularJs is different from the completely redesigned Angular (2+).


Wow. This is awesome. Thank you!


This is why I come to HackerNews everyday to find resources like this. Thanks OP.


Amazing, thankyou!


This could use some explanation on the "from Stack Overflow" bit. How is GoalKicker related to SO?


From the bottom of http://books.goalkicker.com/DotNETFrameworkBook/ :

"The .NET Framework Notes for Professionals book is compiled from Stack Overflow Documentation, the content is written by the beautiful people at Stack Overflow. Text content is released under Creative Commons BY-SA. See credits at the end of this book whom contributed to the various chapters. Images may be copyright of their respective owners unless otherwise specified

Book created for educational purposes and is not affiliated with .NET Framework group(s), company(s) nor Stack Overflow. All trademarks belong to their respective company owners"


Beat me to it :)


Seems to be unrelated. GoalKicker is transforming SO data and publishing it under the same Creative Commons BY-SA licence. From the footer of one of the books:

    The .NET Framework Notes for Professionals book is compiled from Stack Overflow Documentation, the content is written by the beautiful people at Stack Overflow. Text content is released under Creative Commons BY-SA. See credits at the end of this book whom contributed to the various chapters. Images may be copyright of their respective owners unless otherwise specified

    Book created for educational purposes and is not affiliated with .NET Framework group(s), company(s) nor Stack Overflow. All trademarks belong to their respective company owners

    192 pages, published on January 2018


Why free? It seems like a lot of labor went into making these books.


The same came be said of so many things. However, computing has a long history of sharing knowledge freely. I applaud efforts like this to keep that tradition alive.


Because of the license of the source material. I believe it's all originally published under one of the Creative Commons Share Alike licenses.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: