Adam Johnson @adamj.eu · 07/08/2026🎨 I’m really enjoying the redesigned PyPI project pages. Thanks to Nicole Harris and team for making these improvements! Blog post: blog.pypi.org/posts/2026-0... #Python 070
Adam Johnson @adamj.eu · 01/12/20254. Speed Up Your Django Tests If you spend ages waiting for CI runs to complete before you can merge, this is the book for you. It covers many useful ways to make your tests go brrrr, like profiling, parallelism, reducing setup work, and using in-memory storage and cache backends. #Django 100
Adam Johnson @adamj.eu · 01/12/20253. Boost Your Django DX This book focuses on the tools and techniques that make developing with Django more productive. It covers installation tools, formatters, linters, development server packages, debuggers, and data setup tools. #Django 100
Adam Johnson @adamj.eu · 01/12/20252. Boost Your Git DX This book covers deep and effective use of command-line Git. It covers aliases and extra tools that integrate with Git, like Less and delta, as well as many commands, from the basic 'add' and 'commit' to the more advanced 'rebase' and 'reflog'. #Git 100
Adam Johnson @adamj.eu · 01/12/20251. Boost Your GitHub DX My newest book helps you find all the little tricks and shortcuts to make developing with GitHub more productive. It covers fundamental features like repositories, issues, and pull requests, and includes keyboard shortcuts and CLI commands to speed up common tasks. #GitHub 100
Adam Johnson @adamj.eu · 08/10/2025Yes! All versions down to 1.8 are available for offline instant search. 020
Adam Johnson @adamj.eu · 05/08/2025🕰️ time-machine 2.17.0 is out! 🧀 support and wheels for Python 3.14 and free-threaded builds ➡️ new CLI to help migrate from freezegun to time-machine 📚 docs now on Read the Docs ✨ new retro-futuristic logo time-machine.readthedocs.io/en/latest/ch... #Python 260
Adam Johnson @adamj.eu · 23/07/2025My fantastic technology will fix up to 100% of your impossible problems. 030
Adam Johnson @adamj.eu · 07/07/2025I didn’t share for a while... here’s where BYGHDX is at: 250 pages as of yesterday. It’s approaching completion, with just Issues and PRs to cover before release. 100
Adam Johnson @adamj.eu · 03/07/2025#Git mini tip: Use `git rev-list --count @` to count the number of commits in your repository, as reachable from HEAD (alias @). This command supports many of the commit limiting options available in `git log`, such as `--grep` to search commit messages. Full post: adamj.eu/tech/2024/11... 180
Adam Johnson @adamj.eu · 01/07/2025Met @anthonypjshaw.bsky.social and got ice cream in this UK heatwave! 0111
Adam Johnson @adamj.eu · 25/04/2025👨🎨 I made a logo for django-htmx too, what do you think? django-htmx.readthedocs.io/en/latest/ #Django 350
Adam Johnson @adamj.eu · 24/04/2025🎨 django-upgrade now has a swish logo! 📖 And its documentation has moved to ReadThe Docs! 👉 Check it out at django-upgrade.readthedocs.io/en/latest/ #Django 261
Adam Johnson @adamj.eu · 21/04/2025#Git mini tip Limit the 'git log' to a certain time period with '--since' and '--until'. 042
Adam Johnson @adamj.eu · 20/04/2025#GitHub mini tip: Use the GitHub CLI command `gh issue develop -c` to create and checkout a local branch linked to the given issue. No need to name the branch, and when you later run `gh pr create`, the pull request will be linked to the issue automatically. 1324
Adam Johnson @adamj.eu · 16/04/2025#Git mini tip: Acknowledge co-authors with a 'co-authored-by' trailer at the end of your commit message, like: co-authored-by: Otter Coder <otter@coolmail.example> GitHub, GitLab, and some other Git hosts will parse such trailers and show co-authors’ avatars alongside your own for that commit. 141
Adam Johnson @adamj.eu · 15/04/2025#GitHub mini tip: Many gh (GitHub CLI) commands support -w (--web) to open the respective page in the browser. For example, 'gh pr view -w' opens the pull request for the current branch in the browser. 050
Adam Johnson @adamj.eu · 14/04/2025#htmx tip: Use htmx.logAll() to log all htmx events to the console. Great for debugging which events are triggering or not! 0183
Adam Johnson @adamj.eu · 07/04/20253. Form `BoundField` customization. This change makes it easier to customize some parts of your forms’ rendered HTML, such as their <label> tags. 140
Adam Johnson @adamj.eu · 07/04/20252. Composite primary key support. You can now use relational databases’ support for tables with a multi-column primary key, unlocking better designs and interoperability with existing databases. 120
Adam Johnson @adamj.eu · 07/04/2025Django 5.2 came out last week, yay! I’ve just written my round-up highlighting my favourite new features: adamj.eu/tech/2025/04... Quick highlights-of-the-highlights: 1. The shell command now imports your model classes automatically. You can customize this with more imports. #Django 1150
Adam Johnson @adamj.eu · 01/04/2025#Python mini tip: The easiest way to create a signature-preserving function decorator is with `contextlib.contextmanager`. Use it on a generator function with one `yield` statement, and it will create a combined context manager and function decorator. 190
Adam Johnson @adamj.eu · 01/04/2025Lots of quirky facts on the Wikipedia front page today en.wikipedia.org/wiki/Main_Page 010
Adam Johnson @adamj.eu · 25/03/2025+67 pages, +3 chapters, fresh beta sent out. If you're interested, let me know. Back to coding for the rest of the week. 130
Adam Johnson @adamj.eu · 25/03/2025#GitHub tip: Don’t post “Any updates?” style comments on open source threads. Any updates would be there already. Open source is a gift; bugging maintainers acts like you're entitled to results. I just mark such comments as spam. 282
Adam Johnson @adamj.eu · 25/03/2025Django + htmx tip: Use hx-headers to pass Django’s CSRF token with all requests. This allows htmx to make data-modifying requests with methods like POST or PUT. More details: django-htmx.readthedocs.io/en/latest/ti... #Django #htmx 0110
Adam Johnson @adamj.eu · 22/03/2025I added a "vibe-coding" reference in my GitHub book, on the chapter about GitHub-Flavoured Markdown... will this be the first book to mention the term? 😂 (By the way, this is showing the “Alert“ syntax: docs.github.com/en/get-start...) #GitHub #AI 290
Adam Johnson @adamj.eu · 21/03/2025#Git mini tip: Enable `log.follow` globally to have `git log` always follow renames when checking the log for a single file. Otherwise, you need to remember the `--follow` option. 060
Adam Johnson @adamj.eu · 19/03/2025#Git mini tip: Use `git restore -p <path>` to interactively select parts of a file to restore. Press “y” to restore a hunk and “n” to skip it. This allows you to discard some changes from a file while keeping others. 290
Adam Johnson @adamj.eu · 18/03/2025#Git mini tip: You can shorten SHAs to as few as their first four characters, and Git will still accept them. If the prefix matches two or more commits, Git will tell you. Short prefixes can save a lot of copy-pasting or typing when jumping from commands, such as from `git log` to `git diff`. 190
Adam Johnson @adamj.eu · 18/03/2025I think this is a fake fact based on misreading the different standards between the US and the EU. From www.bbc.co.uk/news/magazin... : 120
Adam Johnson @adamj.eu · 13/03/2025I hit the arbitrary 100 page threshold the last day I worked on the book, Tuesday, so today’s goal is to massage it into shape to send to the first wave of beta readers. 150
Adam Johnson @adamj.eu · 13/03/2025#Git mini tip: Find commits by a particular author with `git log --author <name>`, which does a partial case-insensitive match on the author name and email address. 120
Adam Johnson @adamj.eu · 12/03/2025#Git mini tip: Use `git help -w <command>` to open the web help for that command in your browser (local copy, works offline!). Or run `git config --global help.format web` to make `git help <command>` and `git <command> --help` default to opening help in your web browser. 160
Adam Johnson @adamj.eu · 11/03/2025#Git mini tip: Use `git log --graph` with multiple branch names to reveal the branching connections between those branches. Or use `--all` to see all (local) branches. 081
Adam Johnson @adamj.eu · 10/03/2025#Git mini tip: Use `git ls-files` to list all files in your repository. Add pathspecs (Git’s glob syntax) to filter the list. 071
Adam Johnson @adamj.eu · 07/03/2025Tracking my progress on the new book with a chart, updated for every day I work on it! #GitHub #Writing #BYGHDX 190
Adam Johnson @adamj.eu · 25/02/2025#Git mini tip: To show just the subject of a commit (the first line of its message), use `git show -s --format='%s'`. The `-s` suppresses the patch, and the `--format` option selects just the subject. By default, it shows the latest commit. Specify a commit reference to see another commit. 120
Adam Johnson @adamj.eu · 21/02/2025#Git mini tip: Use `-U<n>`, where `<n>` is a number, to show n extra lines of context before and after diff chunks, instead of the default 3. I sometimes use `-U10` to bump it up to 10 lines to get a better sense of what exactly changed. This option works with `git diff`, `git log`, `git show`. 061