
At full speed with Python: a book for self-learners - jventura
https://github.com/joaoventura/full-speed-python
======
chrsstrm
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.

~~~
scheveningen
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.

[http://docs.python-guide.org/en/latest/](http://docs.python-
guide.org/en/latest/)

~~~
chrsstrm
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.

------
asicsp
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://greenteapress.com/wp/think-python-2e/)

* [http://openbookproject.net/thinkcs/python/english3e/](http://openbookproject.net/thinkcs/python/english3e/) \- based on think python

* [https://automatetheboringstuff.com/](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/scripting_course/blob/master/Python_curated_resources.md#code-practice)

* [https://github.com/learnbyexample/Python_Basics/blob/master/...](https://github.com/learnbyexample/Python_Basics/blob/master/Exercises.md)

------
ivan_ah
Nice book.

The simplicity of the build system for epub is impressive:
[https://github.com/joaoventura/full-speed-
python/blob/master...](https://github.com/joaoventura/full-speed-
python/blob/master/Makefile#L3)

~~~
333c
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/](https://pandoc.org/)

------
neves
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)?

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

~~~
unixhero
Me too

Epub and mobi formats would be great

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

~~~
jventura
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..

------
jventura
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).

~~~
drdave55
"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".

~~~
jventura
Yes, that's it! Thanks!

(Changed the book title to match..)

------
knorrie
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. ;-]

------
abhinai
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](https://yumedzi.gitbooks.io/python-book/content). I am sure here
are others as well.

------
ultrasounder
"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.

~~~
jventura
> 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/](http://joaoventura.net/blog/2017/python-webserver/)

------
jventura
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](https://github.com/joaoventura/full-speed-python/releases)

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

------
jventura
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?

[https://github.com/joaoventura/full-speed-
python/releases/](https://github.com/joaoventura/full-speed-python/releases/)

~~~
argonium
Looks good on my MBP. Thanks for sharing!

------
ausjke
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?

~~~
jventura
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..

------
philliphaydon
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??

~~~
jventura
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..

~~~
philliphaydon
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.

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

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

~~~
jventura
Great, thanks!

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

------
smortaz
congrats & thanks! would be _great_ to have these as jupyter notebooks as
well.

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

------
anara2696
good book

