Much like programming, this book is a fork from another book series: Learning to Program Using Python. I started that series in 2008, while deployed in Iraq. I had just learned Python, but didn't feel comfortable with it, especially as the books I had read didn't really "click" with me.
I wrote that series for two reasons. First, I wanted to give back to the open source community. Second, the best way to learn something is to try and teach it to someone else; since I wasn't comfortable as a programmer, writing a book for others would be one of the best ways to ensure I knew what I was talking about.
I also wanted to write the type of book I would have liked to have read when I was learning: written from a personal perspective, rather than an academic viewpoint, and one that points out tips and traps to be aware of. Hence, every book in the series came from that viewpoint.
This new book expands and improves on that series by providing the basics of Python programming, but also walks through programming a real-world scenario: a fuel storage and transfer simulation. In addition, we will also look at how to add a graphical interface to the original, text-based program.
As an introductory book, some of the information presented here may not be completely accurate from a computer science point of view. Even though I have a degree in computer engineering, I consider myself a self-taught programmer, as the majority of my programming has not been in a professional or academic environment, so I may not know all the nuances of software creation.
In addition, being technically accurate isn't necessary for someone new to programming. I'd rather have the reader understand the concepts discussed so as to create a foundation for future learning, than bore the reader so they lose interest. Information will be provided to the best of my knowledge, but terms and theory may be slightly inaccurate to promote reader comprehension.
I'd also like to note that the term "*nix" is used throughout this book to denote any UNIX-like OS, such as Linux and Berkeley Software Distribution, as these OSes tend to have similar functionality. This can also apply to macOS (to an extent), as it has UNIX underpinnings.