Hacker News new | past | comments | ask | show | jobs | submit login
At full speed with Python: a book for self-learners (github.com/joaoventura)
304 points by jventura on March 19, 2018 | hide | past | favorite | 50 comments

I've used Python sparingly in the past for tooling and helper apps and am now picking it up in a more serious way as I'm working on a Flask API app. I've been reading lots of instructional materials and the one thing that I find lacking across the board is coverage of the toolchain and it's edge cases. For starters, Macs only come with Python 2.X, tell me about installing 3.X and some of the walls I might run into in the process. Having used other package managers, pip is easy to pick up but you might get stuck if you forget you need to use pip3 instead. virtualenv is something that could use a more thorough explanation in almost everything I've read, but I'm also now seeing everyone shift to using pipenv and sorting this out yourself is not easy to newcomers (I haven't seen a text yet that discusses it other than packages using it in their install copy and paste and the pipenv site itself). The small things that seem obvious to seasoned devs are really what I'm looking for, especially in an accelerated course.

This applies almost equally to most language reference material I've come across but I'm asking politely, please spend more time on the toolchain.

Have you tried 'The Hitchhiker's Guide to Python'? It strives to be exactly this -- a guide on installation, configuration, and usage of the Python runtime and development toolchain.


Thanks. I feel like I have read sections of this guide but going back and seeing some of the now relevant section titles, there appears to be some good info in here I could use. I hope I didn't skip over some of these when I was looking for relevant material.

> This applies almost equally to most language reference material I've come across but I'm asking politely, please spend more time on the toolchain.

I have a chapter about the python installation in this book but in the documents I usually give to my students I also explain how to use pip and virtualenv. I may add something about the basic tooling, at least enough so that people can get up to speed with python.

Edit: removed "spent an entire chapter on the python installation".

That’s nice but the “entire chapter” you mention is three pages, divided into three platforms, so less than a page per platform including screenshots, which means really about one or two short paragraphs per platform. I really don’t want to take away from what you’ve done, but to say there is an “entire” chapter is not really getting the point of the comment you replied to. Installation may indeed be coverable in so few words, but I think what is missing is coverage of what it takes to go back and forth between different versions (using ‘python’ versus ‘python3’ on the command line doesn’t begin to cover it), although personally I will be happy when we no longer have to do that.

I am glad to see you are basing things on Python 3.

Oh, you're right, I've edited my answer because "entire chapter" seems a very big thing considering the size of the document, and it probably makes me be seen as quite arrogant. To my defense, I'm not a native English speaker and it's 2:30 am here, so the quality of my answers are not the best at this moment.. :)

quick suggestions:

* create sub-headings, for ex: 'Basic datatypes' chapter, create numbers/strings/lists as sub-headings...

* loop iteration - as you are anyway showing how to use 'enumerate', I'd suggest to not show 'range(len(mylist))'

* lots of ' Finally', might want to remove some or rework those sentences


Resources similar to this, but full fledged books

* http://greenteapress.com/wp/think-python-2e/

* http://openbookproject.net/thinkcs/python/english3e/ - based on think python

* https://automatetheboringstuff.com/

and for exercises (disclaimer: these are from my github repo):

* https://github.com/learnbyexample/scripting_course/blob/mast...

* https://github.com/learnbyexample/Python_Basics/blob/master/...

Nice book.

The simplicity of the build system for epub is impressive: https://github.com/joaoventura/full-speed-python/blob/master...

The beauty of Pandoc!

I discovered Pandoc in the past few months thanks to a post on HN, and I've been going out of my way to involve it in my projects because it's so fascinating to me.

Pandoc: https://pandoc.org/

PDF is terrible to read in a Kindle. This book would be much more valuable in a ebook format.

Every time I tried to generate mobi files from Tex they were terrible formatted. O'Reilly does it fine with some open source books, but I've never managed to do it myself. Are the good publishing tools for ebooks just avaiable for specialized publishers?

Which techniques do you have to convert these Tex books to mobi (the Kindle format)?

Pandoc[1] should do it for you. Running this -- from the root of the cloned project -- produced decent output for me:

  pandoc \
  	book.tex \
  	chapters/basic-datatypes.tex \
  	chapters/classes.tex \
  	chapters/dictionaries.tex \
  	chapters/functions.tex \
  	chapters/installation.tex \
  	chapters/introduction.tex \
  	chapters/loops.tex \
  	-o full-speed-python.epub
(you may replace .epub with .mobi to get that file format, but it seems to not support TeX math properly)

[1]: https://pandoc.org/MANUAL.html

If enough people are interested, i may try to do something with pandoc to generate an ebook!

I would be interested

Would be interested if the focus is on Python 3.

Yes, the focus is on Python 3, definitely..

Me too

Epub and mobi formats would be great

I will check if i can produce an epub easily! Thanks for all sugestions..

I would also be interested. LeanPub might also be a good shout.

Definitely, the problem with leanpub is that they ask for 99$ to start a book. I thought about that before, but i don't know if i could sell enough books to recover at least that inital value..


Yes. Me too

I am :)

I've included a pandoc generated epub at https://github.com/joaoventura/full-speed-python/releases/

I've had mixed results using Calibre (https://calibre-ebook.com/).

In all, I've converted 3 PDFs to Kindle format -- one is OK, one is a slog to read, and the third I forgot I was reading a converted version. Have never tried using it to convert a LaTeX-generated document of my own, though.

Since we already have the original TeX files, any conversion directly from PDF would be of lower quality.

Could someone suggest which title sounds better: "at full speed with python" vs "up to speed with python"?

I would like to convey the idea that this is a fast way for people to learn the basic concepts of python. But I'm not sure that "up to speed with X" exists, as I cant find many ocurrences of it in google (i'm not a english native speaker, this is the technique i use to find how certain expressions are used in english).

"Getting up to Speed with Python" is what you are after. "Up to speed" implies that the reader is already "there", hence, the book will be targeting readers that already have considerable knowledge and skill with Python. Clearly, your statement, "I would like to convey... that this is a fast way... to learn the basic concepts...", you are targeting those with minimal skills and experience. Therefore, they will be "getting up to speed" as they go through the book, with the implication that upon completion of the book, they will be "at speed".

Yes, that's it! Thanks!

(Changed the book title to match..)

They mean slightly different things.

Sorry for the Portuguese translation foreigners. But since I noticed you are from Setubal, Portugal.

"At full speed with python" -> "Chegar á velocidade máxima com Python."

"Up to speed with python" -> "Chega a velocidade desejada com Python."

"At Full Speed with Python" sounds more like an intermediate to advanced book. "Up to Speed with Python" sounds more like what you're trying to achieve.

Well done, very well written!

Be aware that the approach this book takes has its own type of target audience. I guess the audience that will like this book/tutorial are the kind of people that will usually just read the entire reference manual of anything to see what's in their toolbox before actually starting to build something. So by reading it, you help them as a guide to work through it, choosing the parts of the language that are best learned first. After following the exercises, the reader can already build some programs using those concepts, whatever it might be, leaving it to their own imagination.

The other type of audience, which this book might be less suited for, is people who get bored after chapter 1, thinking "I want to build something fun now already!". Those might be better served by a tutorial like "we're building a XYZ game", explaining concepts along the way.

Both are good, both are needed.

I'm one of the first type of people, so I'm really happy to see this kind of book. The second type of tutorials only give me fragments of information if I follow it building that XYZ game, while I have my own idea of what to build, and just want to learn how those lists and dictionaries work when I discover I need them. ;-]

Have you thought about releasing this book with something that makes it easier to read online? For example Gitbook: https://yumedzi.gitbooks.io/python-book/content. I am sure here are others as well.

"become familiar with Python's syntax in two weeks and are able to implement a distributed client-server application with sockets in the third week" are there plans to extend the book to include the design of the distributed Client-Server Application?Would be super intrigued.

> are there plans to extend the book to include the design of the distributed Client-Server Application?

I do not know how I could integrate that in this book specifically, because it is not something that a regular user would need to know to be able to use Python per se, but I would like to publish something eventually. Maybe something like "up to speed with socket programming in python".. :)

Basically, I give my students two files (client.py and server.py) with a basic and very simple use of sockets, and guide them to build a basic shell client app that sends messages to be evaluated by the server and to receive the result back.

Other is a very basic http server with sockets. These are not production-ready things, I'm just interested that they learn the concepts. You can check something about this http server in this blog post of mine: http://joaoventura.net/blog/2017/python-webserver/

Changed the book title to "Getting up to speed with Python" which is a more accurate title for what I wanted to write. Made a new release with a few corrections and the new title at https://github.com/joaoventura/full-speed-python/releases

Cannot change anymore the title or the link on HN though..

I've included a pandoc generated epub and it seems ok on my computer, would anyone be able to test it on a epub device to see if it works ok?


Looks good on my MBP. Thanks for sharing!

just fixed the Makefile and created a pull-request, it should build both epub and pdf as long as you have pandoc installed. The pdf file is 18 pages in total, so it is a very short one, or am I missing something?

I've just checked your pull-request, but the resulting pdf is on article form instead of book. I'm talking about the latex document class:

    \documentclass[12pt, a4paper, oneside]{book}
It has to be ran with pdflatex..

I'm starting to learn Python so I'm super interested in this. However for me the PDF is blurry?

I tried in Chrome/IE/Acrobat and the text is blurry for me, anyone else have this problem??

I've just confirmed on a virtualbox installation of windows 7 and it is working fine on Acrobat Reader. It may be a crazy suggestion, but can you reset your computer? I've also made available an epub, so maybe you can use it instead of the pdf..

epub works great. No issues. I got alot of PDF's i donno why only this one displays weird. :( if no one else has this issue must just be my work pc being bung.

Could you provide a screenshot? You can open a github issue if you want...

I think it’s just my work computer on it’s last legs. Worked fine at home and on the surface.

Great, thanks!

I use SumatraPDF and it looks ok. Maybe the size of the font as well as the type isn't the best but it's legible.

Thanks for the reference to your blog. Will check it out. Thanks for making this book available

congrats & thanks! would be great to have these as jupyter notebooks as well.

is there a slack channel that has been developed in addition to this learning?

good book

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