“Invent with Scratch” Screencast Series

I’ve created a series of video screencast tutorials for Scratch. Scratch is a block-based programming environment from MIT. It is a programming education toy that is made for kids between the ages of 8 and 16. The screencasts can be found at:

“Invent with Scratch” Screencast at http://inventwithscratch.com

Scratch itself is hosted at http://scratch.mit.edu

I highly recommend Scratch as a teaching tool for younger kids who may not be ready for Python programming or are frustrated by their slow typing. Scratch is a drag-and-drop environment with code “blocks” that snap together.

Read More

Text Adventure vs. MUD vs. Roguelike vs. Dwarf Fortress

A text-style game is a common project for beginner programmers. These can be fun to do, but also require spending time up-front to design it is worthwhile. Before you start designing your own game, look at the design decisions of a few different text-style game genres.

Text Adventures

Also known as interactive fiction or IF, a text adventure game were the first incarnations of these types of games. They are single-player, turn-based (the game paused while the player typed in commands), and presented the user with an English text description of each room the player was in. The player was often a single character with an inventory of items picked up in the rooms. Commands were simple English phrases like "open door" or "get lamp".

West of House
You are standing in an open field west
of a white house, with a boarded front
door.
There is a small mailbox here.
> open mailbox

While the player could die, often the player did not have stats such as hit points, money, or experience points. Text adventures are puzzle-based (such as finding different rooms or figuring out which items to use where), rather than based on progressing in stats or levels.

Text adventure games are more than just “Choose Your Own Adventure” programs, because they take place in open sandbox worlds that the player can freely explore.

These are the simplest types of games to make. In fact, you don’t even need a real programming language to make one of these games. There is software specifically for creating text adventure games.

The 1993 hit Myst is an example of a graphical version of this genre. These games became more sophisticated with the graphic adventure game genre (or “point-and-click adventure games”), the most notable coming from LucasArts. Specialized software for making graphic adventure games also exists, chief of which is Adventure Game Studio.

  • Single-player
  • Turn-based
  • Player directly controls a single character
  • English text descriptions (not ASCII art)
  • English phrases for commands
  • Inventory
  • No stats or levels
  • Puzzle-based and role-playing story elements

(more…)

Read More

New Forums for the Books

I’ve been meaning to add forums to the website where readers of the programming books could talk to each other and ask questions. I’ve held off on doing this for a while until I could figure out a way to handle spam. However, I’ve decided instead to set up a subreddit for all three books (in effect, making Reddit the host for the forums).

Feel free to email me any questions you have as always, but these forums are also now available to use:

/r/inventwithpython

Read More

Multithreaded Python Tutorial with the “Threadworms” Demo

The code for this tutorial can be downloaded here: threadworms.py or from GitHub. This code works with Python 3 or Python 2, and you need Pygame installed as well in order to run it.

Click the animated gif to view a larger version.

This is a tutorial on threads and multithreaded programs in Python, aimed at beginning programmers. It helps if you know the basics of classes (what they are, how you define methods, and that methods always have self as the first parameter, what subclasses (i.e. child classes) are and how a method can be inherited from a parent class, etc.) Here’s a more in-depth classes tutorial.

The example used is a “Nibbles” or “Snake” style clone that has multiple worms running around a grid-like field, with each worm running in a separate thread.
(more…)

Read More

“Hacking Secret Ciphers with Python” Released

My third book, Hacking Secret Ciphers with Python, is finished. It is free to download under a Creative Commons license, and available for purchase as a physical book on Amazon for $25 (which qualifies it for free shipping). This book is aimed at people who have no experience programming or with cryptography. The book goes through writing Python programs that not only implement several ciphers but also can hack these ciphers.

100% of the proceeds from the book sales will be donated to the Electronic Frontier Foundation, Creative Commons, and The Tor Project.

Each chapter presents a new program and explains how the source code works. At the same time, various ciphers and cryptography concepts are explored. This book covers:

I first started this book two years ago. The Word doc calculates my editing time for the file at 85,860 minutes (not including the time to write and debug the programs). The book is over 400 pages long with over 1700 lines of code written for the programs (not including whitespace and comments).

The book’s website is at http://inventwithpython.com/hacking

Feel free to email me questions or comments at [email protected] or leave a comment below.

Read More

Taking Punches is a Sucker’s Game

There are two camps when it comes to issues of harassment, bullying, diversity, and making inclusive communities, especially when the medium is online or in the tech industry. Without trying to let my own bias tilt my presentation, I think these two camps can be summed up with the following sayings:

“Even if you think it’s a light jab, you shouldn’t throw punches.”

and

“I’ve taken worse and haven’t been bruised. You need to learn how to take a punch.”

If you don’t think the low rates of women and minorities participating in the tech industry is fundamentally a problem that should be corrected, you can stop reading now and save yourself a few minutes. But software developers are in high demand. There’s a lot of great software out there waiting to be written. And while the current generation is much more technically literate than say, 30 years ago, raising the general level of technical expertise would blossom the possibilities for more sophisticated products and avenues of communication. We should get as many people across all demographics on board as possible.

I’m not going to talk solely about sexism itself in the tech industry (though at the front of my views on that are pointing out how widely the Internet blames Adria Richards for the dongle-joker’s firing rather than Play Haven, who did the actual firing.) But I also want to talk about inclusion and how to build community, and the attitudes that tear community down.

(more…)

Read More