We Write Code By Hand
Here's an interesting group: https://handcraftedcode.org I'm an "absolutely no LLM" bigot. I need to do the thinking. I like to do the fiddly, tedious hard parts. I always have liked it.
Here's an interesting group: https://handcraftedcode.org I'm an "absolutely no LLM" bigot. I need to do the thinking. I like to do the fiddly, tedious hard parts. I always have liked it.
I have (finally) released a usable DSL for OpenD6 spells and characters. See the OpenD6 tag for a bunch of related content. See https://github.com/slott56/opend6-tools for the final product. I doubt there will ever be a PyPI package. For the few who want to use these tools …
See the OpenD6 tag for a bunch of related content. I have a DSL for OpenD6 spells and OpenD6 characters. At this moment, the test suite statistics are these: Statements Misses Coverage 2701 166 94% Background The OpenD6 tools have two extensive DSL's. These differ in a profound way: Spell …
Lets look at my favorite OO-Design problem domain: card games. We'll compare the design of two games: Cribbage and Canasta. Why? Because they have three common abstractions: cards, hands, and a score. Overall the player's are dealt cards, form hands, and at some point, accumulate a score. Of course, all …
What does the AI bubble mean? It means software has no intrinsic value. Since software is worthless, creating good software is a waste of effort. This is a conclusion of reached from observing the software industry for a half-century Gather 'Round The Fire All You Youngs Once upon a time …
See Writing Project -- perhaps a bad idea . I'm trying to dig around in my old notes to pull together a "World Book" with a fantasy setting I think has a lot of good gaming opportunities. I have a problem, though. History History is my problem. Some of this world-building and …
See Writing Project -- perhaps a bad idea . I'm trying to dig around in my old notes to pull together a "World Book" with a fantasy setting I think has a lot of good gaming opportunities. More important, I've got a pile of details for a fairly lengthy campaign. This isn't …
I'm trying to push the envelope in my writing. I write a fair amount of non-fiction. https://www.goodreads.com/author/list/4537706.Steven_F_Lott . This is a comfortable spot for me. I've got some self-published titles: Pivot to Python: A Guide for Professionals and skilled beginners Unlearning SQL: “When your …
When playing a game using D6 -- and only D6 -- we're sometimes confronted with a need to make a selection from equiprobable items. For example, pick a random day of the week: 7 choices, but only 6 sides to a die. What can we do? How can we select fairly among …
See https://codeberg.org/robida/human.json . This content is human-generated. All the mistakes are mine, without the taint of AI slop. I've added the needed human.json , and can update it if you want me to vouch for your content, also.
I went deep into OpenD6, chasing an idea through a maze of strange shapes. See this extract from a Jupyter Notebook: Area Effect Aspect Volume Computations . It was a lot of fun to uncover two errors in the rules, and work out what could have been used instead. TL;DR …
Maaike and Imke van Putten’s delightful Python Illustrated follows innocent Wiesje on a journey to learn the secrets only Zia seems to know. The journey is long and filled with discoveries about Python as well as the ways Wiesje needs to adapt and grow. No, you’re not reading …
The OpenD6 Table-Top Role-Playing Game (TTRPG) has a complicated bit of accounting around the definition for magical spells and invocations. For me, the accounting suggested a need for software tools. This -- in turn -- forced me to invent a Domain-Specific Language (DSL) to work with OpenD6 spells. I like the OpenD6 …
BLUF Your LLM conversations are emphatically not Literate Programming. The term "Literate Programming" cannot include code with separate documentation. I won't call it "Illiterate Programming." Sad Story An LLM coder had a lot of things to say about productivity, and explained their approach. They wrote 800 or so words, and …
See The eval() Conundrum for background. Also, see https://github.com/slott56/writing-tools . Permit me a long story about budgeting and a language to describe magic. The story leaves footprints that reveal the impossibility of making the right design choices up front. Important TL;DR. Almost all software design seems …
Please do not use an LLM to create a conference talk. Please. If you can't be bothered to put in the effort to write your own material, why should we put in effort to read the LLM slop you had your LLM post to the submission form? What's in it …
Please do not use an LLM to create a conference talk. Please. We want to hear your actual words in your actual voice We do not want diluted words created for you by sparkling auto-complete. We really don't. The vibe around LLM slop may seem better to you. But it's …
In time for your Holiday Reading. Want guidance on OO design in Python? Want a lot of concrete examples, fully tested? Master OOP fundamentals with hands-on examples and expert insights Learn design patterns and type hinting with real-world Python 3.13 code Develop scalable programs using testing and concurrency best …
BLUF You rarely need this. Python handles memory management for you. Except in an edge case where you have a lot of objects to work with. How many is a lot? Enough that your app crashes with MemoryError exception. Or, is consuming so much memory other processes have trouble working …
BLUF You rarely need this. Python handles memory management for you. Except in an edge case where you have a lot of objects to work with. How many is a lot? Enough that your app crashes with MemoryError exception. Or, is consuming so much memory other processes have trouble working …
Some quotes to provide context. "I read several times that ideally I should avoid inheritance with ABCs and if I do, then from a standard class. That is, I should avoid creating a typical base and subclass construct that is used in a strategy pattern, for example." "If I look …
Some quotes to provide context. "I read several times that ideally I should avoid inheritance with ABCs and if I do, then from a standard class. That is, I should avoid creating a typical base and subclass construct that is used in a strategy pattern, for example." "If I look …
Some quotes to provide context. "I read several times that ideally I should avoid inheritance with ABCs and if I do, then from a standard class. That is, I should avoid creating a typical base and subclass construct that is used in a strategy pattern, for example." "If I look …
Some quotes to provide context. "I read several times that ideally I should avoid inheritance with ABCs and if I do, then from a standard class. That is, I should avoid creating a typical base and subclass construct that is used in a strategy pattern, for example." "If I look …
Many people will proclaim that the eval() function is reprentnatly evil. Feel free to skip the two rants. BLUF The eval() function is relatively easy to work with. Important Limit the globals to the fewest possible names. Eval() Rant A too-common claim is that we can't use eval() because an …
This is delightful: Packt has this Humble Bundle including The Modern Python Cookbook . The Humble Bundle with The Modern Python Cookbook Since it's right arund my birthday, consider this discount my gift to you. Invest in yourself.
I write all my books using LaTeX. Parts of LaTeX are (at first) confusing. Recently, I had a moment of despair when my LaTeX processing tools no longer worked. BLUF Don't panic. Gather the data. If the logs aren't good enough to reveal what's going on, fix the logs. The …
Q: "Can you recommend books that are good for a beginner wanting to learn python?" Me: "Depends on the person’s background..." Q: "They has a deep background in the problem domain. Recently they've been doing a lot of reporting and analytics using SQL." Okay. That's excellent. One of the …
The back-story. See Coping With Complexity . See https://github.com/cloud-custodian/cel-python for the code base. Back around May 26, I created this branch. Today -- July 2 -- I've got the tests to pass. BLUF (TL;DR) I made mistakes. I spent a lot of time making a some significant mistakes …
The back-story. See Coping With Complexity . See https://github.com/cloud-custodian/cel-python for the code base. I've reached the point where progress is clearly impossible. A bad decision a few weeks ago has reached it's inevitable conclusion. I've made a terrible mistake. About 1,000 lines of code -- and tons …
I'm struggling with brain cramps trying to understand something my past self wrote. Current me needs to go outside and do something that doesn't involve software or complexity. Sadly, current me is trying to make one small change and it feels like the software has passed out of the realm …
We test software. We test people. My lawyer, all my various doctors, even the coffee bar on main street is subject to testing. The coffee shop proudly posts their score from health inspections. Want to know about food safety? Ask them. My professionals all have walls full of diplomas and …
Ugh. A painful stretch of hours looking for a problem. Working on this: https://github.com/cloud-custodian/cel-python/wiki/Evaluation-Design . I need to address a performance problem and upgrade things generally to get them ready for 3.13 and 3.14. You know how it goes, right? I touched something …
This: https://www.theregister.com/2025/05/12/opinion_column_ransomware/ Shabby IT infrastructure built with criminally low budgets. What did we expect? Of course there will be ruthless exploitation of weakness. Clearly, minimal IT budgets -- just enought to "keep the lights on" -- will provide avenues for exploitation.
Generally, I try to frown on Domain-Specific Languages. Often, a tidy set of related functions, or a group of class definitions with a few decorators can create something that's every bit as expressive as a DSL in native Python syntax. There are a few cases where a DSL can be …
Recently, we talked about extracting data from complex relational databases. This is -- in a way -- another case study for my Unlearning SQL book. This is a description of what comes next after the "low-level" conversion. Warning: it's complicated. BLUF : Take the time to get rid of SQL processing. Unlearning SQL …
We're talking about extracting data from complex relational databases. This is -- in a way -- another case study for my Unlearning SQL book. Unlearning SQL KDP https://www.amazon.com/dp/B0DDMFMXNW Lulu https://www.lulu.com/shop/steven-lott/unlearning-sql/paperback/product-yvnm8zn.html?page=1&pageSize=4 Google Play https://play …
We're talking about extracting data from complex relational databases. This is -- in a way -- another case study for my Unlearning SQL book. Unlearning SQL KDP https://www.amazon.com/dp/B0DDMFMXNW Lulu https://www.lulu.com/shop/steven-lott/unlearning-sql/paperback/product-yvnm8zn.html?page=1&pageSize=4 Google Play https://play …
We're talking about extracting data from complex relational databases. This is -- in a way -- another case study for my Unlearning SQL book. Unlearning SQL KDP https://www.amazon.com/dp/B0DDMFMXNW Lulu https://www.lulu.com/shop/steven-lott/unlearning-sql/paperback/product-yvnm8zn.html?page=1&pageSize=4 Google Play https://play …
Let's talk about extracting data from complex relational databases. This is -- in a way -- another case study for my Unlearning SQL book. Unlearning SQL KDP https://www.amazon.com/dp/B0DDMFMXNW Lulu https://www.lulu.com/shop/steven-lott/unlearning-sql/paperback/product-yvnm8zn.html?page=1&pageSize=4 Google Play https://play …
I'm working on revisions to Python 3 Object-Oriented Programming. Meanwhile, I have big news on Packt's end-of-year promotions. I’m always striving to make the knowledge in Python Real-World Projects , as useful as possible. That’s why I’m so excited about Packt’s $9.99 End-of-Year Sale! This adds …
Starting back in 2011 I was working on a way to manage a variety of spreadsheets in a variety of layouts with a common schema. Over the last 13 years, I've been updating and maintaining this little project. It's not widely used, but it interests me. Fundamentally, the use of …
In the process of writing Unlearning SQL , I had a need to extract SQL blocks from Python programs. Of course, I tried grep . It wasn't ideal. Note Book is available here: https://www.amazon.com/dp/B0DDMFMXNW https://www.lulu.com/shop/steven-lott/unlearning-sql/paperback/product-yvnm8zn.html?page=1&pageSize …
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 …
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 …
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: Convert EPUB to Print. This generally means …
Book (pre) Announcement: KDP - See https://www.amazon.com/stores/Steven-Lott/author/B00HNRSLEK for my author's page. https://www.amazon.com/Unlearning-SQL-hammer-every-problem-ebook/dp/B0DDMFMXNW is the book. Google Play - See https://play.google.com/store/books/details?id=23WAEAAAQBAJ . Be sure to get the 2024.08 edition; there's a previous …
Book Announcement: https://www.packtpub.com/en-us/product/modern-python-cookbook-9781835466384 There are about 130 recipes in here. Some new. Some revised. All examined (and tested) for Python 3.12. For the Python folks who are just starting as well as those looking to pick up some more skills, this is for …
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 …
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 …