Introduction
As Tim Arnold explains in Manipulating PDFs with Python, even beautiful PDFs are often unspeakably ugly inside, and if you can avoid having to manipulate them, you should. Nonetheless, you've decided to ignore Tim's advice, and that's why you're here. (Or maybe you haven't actually seen

There are some nasty PDFs out there, but there are several tools you can use to get what you need from them. Python enables you to get inside and scrape, split, merge, delete, and crop just about whatever you find, and I'll show you how.

The second installment in my series on rate limiting with Redis covers two different but related methods using standard Redis commands and Lua scripting. Each approach expands the number of use cases for rate limiting, and cleans up some of the rougher edges of previous rate limiters.

This tutorial series covers two different but related methods of performing rate limiting in Redis using standard Redis commands and Lua scripting. Each method expands the number of use-cases for rate limiting, and cleans up some of the rougher edges of previous rate limiters.

In the final installment of Building a text editor with PyQt, we add two more extensions: inserting the current date and time into our text, and another for inserting and managing tables. In addition, we create a way of prompting users about unsaved changes before closing *Writer*.

Part three in this series on Building a text editor with PyQt begins to add bells and whistles to the word processor we've built. We'll add features including find and replace, image insertion, as well as word and symbol count.

In the previous part of my tutorial series on Building a text editor with PyQt, we created our text editor's basic skeleton and added some useful features for file management, printing, inserting lists and more. This part will focus on the format bar, which we'll populate with a number of features, including actions to change the font family, background color, alignment and more.

In this piece, I'll introduce you to the power of agent-based when used to understand complex phenomenons. We'll use some Python, a social science case study and the Schelling model to get a deeper look at segregation in New York City.

Let's say you have a function that's slow and time-consuming. It's too intensive and
complex to run on the GPU (with it's thousand-ish cores) but the single core
Python uses isn't enough. Your machine has eight cores and you want to use them.
Well, how do you use them? Python's GIL makes it difficult.