Better than grep


Modern Python Cookbook and Type Hints

Modern Python Cookbook — with lots and lots of recipes — is something you might need. Find the results of checking all these recipes here: https://www.amazon.com/Modern-Python-Cookbook-updated-techniques/dp/1835466389

I (reluctantly) switched from using mypy to using pyright to check all of these recipes carefully. The type alias (PEP …

more ...

Revised Books Available

Big Announcement: the 2024.8 version of Unlearning SQL, and the 2024.9 version of Pivot to Python are available from booksellers online. Both are revised and all the code tested with Python 3.12.

Unlearning SQL

This book shows you how to translate essential SQL concepts into the Python …

more ...

Sphinx EPUB and Print

Let's say you want to self-publish an ebook and a print-on-demand paperback book.

This isn't impossible, nor is it particularly easy. Here's what I've learned.

Basic Workflow

You've got two obvious paths to make sure your EPUB book and your print-on-demand book match:

  1. Convert EPUB to Print. This generally means …
more ...

Unlearning SQL, revised



Synthetic Data Tool

See Synthetic Data.

I've updated the repository with a "Noisy Data" feature.

This will generate bulk data with invalid field values.

It helps with testing ETL pipelines to be sure they will scale to the expected volumes.

Clone https://github.com/slott56/DataSynthTool

Read https://slott56.github.io/DataSynthTool/_build …

more ...

Functional SQL in Pure Python

I've published a framework for doing SQL-like programming in Pure Python -- no database required.

Here: https://github.com/slott56/functional-SQL. See the functional-SQL documentation.

This allows us to transform SQL:

SELECT n.name, v.c2
FROM names_table n, values_table v
WHERE n.code = v.c1

To pure Python:

Select(name …
more ...