Tags
Yep, a tag cloud.
1Password
Alexa
Alfred
APT
Asana
Aurora
AWS
Bash
Bat
Bear
Browsers
Chess
Chicken
Chrome
CircleCI
Command-line tools
Ctags
Debugging
Discourse
Django
Docker
Documentation
FactoryBoy
fd
Flake8
Flakey tests
Food
Git
Github
Github actions
Github Copilot
Google
Google Workspace
Gotchas
Gunicorn
Helm
Home networking
Homebrew
Hugo
iOS
iTerm2
Javascript
Jekyll
JQ
JSON
Jupyter Notebook
Kubernetes
Linux
Logging
Loggly
MacOS
Markdown
mypy
Open-source
OpenDNS
OpenSSH
PostgreSQL
Productivity
Profiling
Pytest
Python
Recruitment
regex
ripgrep
RST
Ruby
Rust
SASS
Security
Sentinel
Sentry
Slack
Sphinx
SSH
Standards
systemd
Terminology
Terraform
Testing
Timezones
Twitter
Ubuntu
Unix
uWSGI
Vale
Vim
Vimium
Virgin Media
Websites
YAML
Zsh
And here's all posts broken down by tag:
1Password
- You can easily share 1Password items via a link on
- The keyboard shortcut for grabbing a MFA code in 1PW on
Alexa
Alfred
- How to run Google sites as standalone MacOS apps that Alfred can start on
- You can display the typed text in Alfred in a huge typeface on
- How to configure Alfred’s Bear workflow to open notes in the main window on
- About Alfred’s clipboard history feature on
- About Alfred’s snippet collections on
APT
Asana
Aurora
AWS
-
Python tests using
moto
should be explicit about AWS regions on - AWS target groups fail open when all instances are unhealthy on
- That AWS Aurora clusters have two types of storage on
-
How to use
aws-mfa-v2
to avoid entering so many MFA tokens on - You can have SSH sessions via AWS Session Manager on
- How to use AWS profiles that require MFA on
- AWS ASGs have an ‘instance refresh’ feature on
- There’s a Chrome extension for switching AWS IAM roles on
- AWS Availability Zones have counter-intuitive IDs on
-
Where authentication for the
ubuntu
user on a EC2 instance is defined on
Bash
- How to make Homebrew-installed Bash your default shell on
-
which
behaves diffferently in Zsh compared to Bash on - How to join an array in Bash on
-
About Bash’s
$SECONDS
shell variable on -
About Ubuntu’s
alert
Bash alias on -
About
readonly
Bash variables on -
About
shellcheck
on - About Bash’s DEBUG signal on
Bat
Bear
Browsers
Chess
Chicken
Chrome
- About Chrome’s named windows on
- Chrome has a flags page for enabling experimental features on
- You can take screenshots with Chrome DevTools on
- There’s a Chrome extension for switching AWS IAM roles on
CircleCI
Command-line tools
- How to create a word cloud from text piped via STDIN on
-
About the
typos
source code spell checker on -
How to format JSON into a table with
jq
andcolumn
on - About delta, a viewer for Git and diff output on
-
How to search for fixed strings with
grep
andripgrep
on -
You can define custom file-type filters in
ripgrep
on -
You can specify the file-type for
bat
on -
About
envsubst
on -
How to set per-project
ripgrep
andfzf
exclude rules on - Exuberant-ctags has been superceded by Universal-ctags on
-
About
column
on -
fd
has an option for searching filepaths on -
How to use
xargs
withprintf
on -
About
pngcrush
on
Ctags
- Universal Ctags can index more things than I realised on
-
How to configure
ctags
to parse Terraform files on
Debugging
Discourse
Django
-
Django’s JSON encoder rounds
datetime
s down to the nearest millisecond on -
How Django’s
override_settings
decorator causes flakey tests on - How to override Django’s settings for every method in a test class on
-
That Python’s
datetime
package doesn’t support ordinal suffixes for the day of the month on - You can’t use Django’s generic foreign key field with objects stored in a separate database on
-
About Django’s
setup
method for generic view classes on - Django settings prefixed with an underscore are private on
- Django doesn’t flush caches between tests on
- How Django’s management commands need to be type hinted on
Docker
- Docker for Mac stores all containers and images in a single disk image on
- How to list the mounts of a running Docker container on
- How to enable Docker BuildKit in MacOS Docker Desktop on
- How to run Jekyll in a Docker container on
Documentation
FactoryBoy
fd
Flake8
Flakey tests
-
How Django’s
override_settings
decorator causes flakey tests on -
How the
new
argument tomock.patch
is shared between parameterized tests on - That Postgres sequences aren’t restored after a transaction rollback on
-
How to inspect and clear Python’s
functools.lru_cache
on
Food
Git
- How to avoid committing Jupyter Notebook output to Git on
-
That
git for-each-ref
support conditional logic in its format on - How to perform a non-interactive, interactive Git rebase on
-
How to show the history of a file with
git log --patch
on - How to continue a Git rebase and skip editing the commit message on
- How to find the files from a commit that deleted a given pattern on
-
About Git’s
diff.relative
config option on -
About
git merge-base
on - Git aliases that run an external command are run from the repository root on
-
About
git log -G
on -
That
vim-polyglot
conflicts with Hub when creating pull requests on -
About
git-absorb
on -
How to include the date in
git reflog
output on - About delta, a viewer for Git and diff output on
- You can use Git log to view the evolution of a function on
- How to resolve Git rebase conflicts on renamed files on
- How to count lines of code in a Git repo for a given commit on
Github
- That two trailing spaces indicates a line break in Markdown on
- That Vimium has shortcuts for following pagination links on
-
That
hub
clashes withvim-polyglot
on -
About
pycon
markdown format on -
About Github’s
involves:$username
search filter on -
About Github’s
@me
search term on - How to embed markdown content in a Github code block on
Github actions
Github Copilot
Google Workspace
- Email Log Search in Google Workspace has some strange behaviour on
- Google Groups can be nested on
- GSuite’s “Groups Admin” role can read any group email on
- You can hide night-time hours in Google calendar on
Gotchas
Gunicorn
Helm
Home networking
Homebrew
Hugo
iOS
- That macOS Ventura and iOS 15 can play background rain noise on
- How to effectively scan files using an iPhone on
iTerm2
Javascript
Jekyll
JQ
-
How to use
jq
to only parse valid JSON lines on -
How to format JSON into a table with
jq
andcolumn
on - You can use JQ to build JSON payloads on
-
About
jq
’s--slurp
option on -
You can use
shuf
to take random samples of lines on - AWS Availability Zones have counter-intuitive IDs on
JSON
- How to get Gunicorn to log as JSON on
-
Django’s JSON encoder rounds
datetime
s down to the nearest millisecond on - JSON is valid YAML on
Jupyter Notebook
Kubernetes
Linux
-
About Ubuntu’s
alert
Bash alias on -
systemd sends SIGKILL signals after waiting for
TimeoutStopSec
seconds on - systemd timers can be stopped on
Logging
Loggly
MacOS
- How to run Google sites as standalone MacOS apps that Alfred can start on
- That macOS Ventura and iOS 15 can play background rain noise on
- How to easily copy annotated screenshots to the clipboard on macOS on
- The names for macOS keyboard meta-characters on
- About Chrome’s named windows on
- iTerm2’s “Cursor boost” feature will cause everything to appear dimmed on
- How to scroll horizontally with a mouse on
- How temporary files are removed on MacOS on
- About the difference between minimising and hiding windows in MacOS on
- The MacOS keybinds for en- and em-dashes on
- About the stationery pad feature in Finder on
- About Quitter on
-
About the MacOS
screencapture
utility on
Markdown
- That two trailing spaces indicates a line break in Markdown on
-
About
pycon
markdown format on - Some Markdown parsers support definition lists on
-
How to use
markdownlint
output in Vim’s quickfix list on - How to spell-check markdown repos on CircleCI on
- Vim-markdown has some useful commands on
- How to embed markdown content in a Github code block on
mypy
- Not to union Python list types on
- How to handle convenience imports with Mypy on
- Mypy skips empty functions on
- How Django’s management commands need to be type hinted on
-
About
mypy
’s unreachable code functionality on -
About
mypy
’sreveal_type
andreveal_locals
functions on -
That
mypy
only type-checks functions that have at least one type annotation on -
A better way of configuring
mypy
on -
How to use type annotations with Python’s
csv
module on
Open-source
OpenDNS
OpenSSH
PostgreSQL
- How to set per-role statement timeouts in Postgres on
- That Postgres sequences aren’t restored after a transaction rollback on
-
About a gotcha with
psycopg2
’s autocommit handling on - The correct sequence of SQL statements for dropping a role on
Productivity
Profiling
Pytest
-
How the
new
argument tomock.patch
is shared between parameterized tests on - About indirect parametrization with Pytest on
-
How to use
xmllint
to extract the failing test filenames from a JUnit-XML file on - How to override Django’s settings for every method in a test class on
- How to profile Pytest tests on
- That Pytest’s “keyword expression” filtering supports Python conditionals on
- You can have class-scoped autouse pytest fixtures on
- Pytest doesn’t play nicely with ipdb on
-
You can stack
pytest
’sparametrize
decorators on - You can label parameterized fixtures with pytest on
Python
- How to get Gunicorn to log as JSON on
- How to create a word cloud from text piped via STDIN on
- Not to union Python list types on
- How to handle convenience imports with Mypy on
-
How Django’s
override_settings
decorator causes flakey tests on - Mypy skips empty functions on
- It’s better to explicitly chain Python exceptions on
- About indirect parametrization with Pytest on
-
That Python’s
datetime
package doesn’t support ordinal suffixes for the day of the month on -
How to inspect and clear Python’s
functools.lru_cache
on -
About Factory Boy’s
SelfAttribute
class on - You can’t use Django’s generic foreign key field with objects stored in a separate database on
-
About Django’s
setup
method for generic view classes on -
How to use
aws-mfa-v2
to avoid entering so many MFA tokens on -
About a gotcha with
psycopg2
’s autocommit handling on -
Python’s
envparse
library has counter-intuitive boolean casting on - Factory boy can be used to build dicts on
- Django settings prefixed with an underscore are private on
- Django doesn’t flush caches between tests on
- How Django’s management commands need to be type hinted on
- File-level flake8 comments ignore all errors on
- That Pytest’s “keyword expression” filtering supports Python conditionals on
-
That FreezeGun doesn’t work with Pytest fixtures (unless you use
pytest-freezegun
) on -
About
mypy
’s unreachable code functionality on -
About
mypy
’sreveal_type
andreveal_locals
functions on -
That
mypy
only type-checks functions that have at least one type annotation on -
Python’s
csv.writer
function defaults to Windows line endings on - You can have class-scoped autouse pytest fixtures on
-
pdbpp
has a useful ‘sticky’ mode on -
To prefer
dateutil
overpytz
on - Pytest doesn’t play nicely with ipdb on
- You can arbitrarily chain Python comparison operations on
-
You can stack
pytest
’sparametrize
decorators on - You can label parameterized fixtures with pytest on
-
A better way of configuring
mypy
on -
datetime.datetime
is a subclass ofdatetime.date
on -
About
pip-licenses
on - Python 3.7 supports postponed evaluation of annotations on
-
How to use type annotations with Python’s
csv
module on
Recruitment
regex
ripgrep
-
How to use
ripgrep
inwhile read
loops on -
How
ripgrep
interprets.gitignore
rules changes when a filepath argument is used on -
How to use look-behind regex assertions with
ripgrep
on - How to pipe an argument list into Vim on
-
How to search for fixed strings with
grep
andripgrep
on -
You can define custom file-type filters in
ripgrep
on -
How to set per-project
ripgrep
andfzf
exclude rules on -
You can run
:grep
without using parent shell process on
RST
Ruby
Rust
SASS
Security
- Sensitive Terraform Cloud variables are included in Sentinel mocks on
- How to use Bandit with Vim’s quickfix list on
Sentinel
Sentry
Slack
- You can search Slack by custom channel section on
- You can search Slack by emoji reactions on
- You can convert a Slack group direct message chat into a private channel on
-
You can change the font in Slack with
/slackfont $font
on
Sphinx
SSH
- How to reset an SSH session on
- You can have SSH sessions via AWS Session Manager on
- How to convert SSH2 public keys to OpenSSH format on
Standards
systemd
-
systemd sends SIGKILL signals after waiting for
TimeoutStopSec
seconds on - systemd timers can be stopped on
Terminology
Terraform
- Sensitive Terraform Cloud variables are included in Sentinel mocks on
- AWS ASGs have an ‘instance refresh’ feature on
- How to conditionally include items in a Terraform list on
- Renaming a Terraform module is dangerous on
Testing
-
How Django’s
override_settings
decorator causes flakey tests on -
How the
new
argument tomock.patch
is shared between parameterized tests on - That Postgres sequences aren’t restored after a transaction rollback on
-
Python tests using
moto
should be explicit about AWS regions on - About indirect parametrization with Pytest on
-
How to use
xmllint
to extract the failing test filenames from a JUnit-XML file on - How to override Django’s settings for every method in a test class on
- How to profile Pytest tests on
-
About Factory Boy’s
SelfAttribute
class on - Factory boy can be used to build dicts on
- Django doesn’t flush caches between tests on
- That Pytest’s “keyword expression” filtering supports Python conditionals on
-
That FreezeGun doesn’t work with Pytest fixtures (unless you use
pytest-freezegun
) on - You can have class-scoped autouse pytest fixtures on
- Pytest doesn’t play nicely with ipdb on
- How to easily disable a CircleCI workflow on
-
You can stack
pytest
’sparametrize
decorators on - You can label parameterized fixtures with pytest on
Timezones
Ubuntu
-
That Ubuntu’s
retry
command captures STDOUT on -
About Ubuntu’s
alert
Bash alias on -
Where authentication for the
ubuntu
user on a EC2 instance is defined on
Unix
-
which
behaves diffferently in Zsh compared to Bash on -
You can use
shuf
to take random samples of lines on -
About
xargs -t
on - What the sections of the Unix manual are on
-
The order of permissions matters with
chmod
on
uWSGI
Vale
Vim
-
About the
typos
source code spell checker on - How to write Vimscript functions that operate on a visually selected area on
-
How to show the history of a file with
git log --patch
on - How to automatically disable Github Copilot in Vim when editing large files on
-
That
hub
clashes withvim-polyglot
on - How to use STDIN to populate Vim’s quickfix list on
- How to get Vale to work with Vim’s Ale plugin on
-
How to use
markdownlint
output in Vim’s quickfix list on - That Vim can transform replacement values when substituting on
- How to delete all buffers in Vim on
-
About the
:ALEInfo
command on - About Vim’s semi-colon search offset on
- That Vim’s uppercase marks are global and persistent on
-
That
vim-polyglot
conflicts with Hub when creating pull requests on -
How to use custom functions with
:cdo
on - How to pipe an argument list into Vim on
- How to copy the current filepath to the system clipboard in Vim on
- How to add project-specific Vim settings on
- Universal Ctags can index more things than I realised on
- Vim-markdown has some useful commands on
-
About how to use
keywordprg
effectively on -
How to configure
ctags
to parse Terraform files on - How to use Bandit with Vim’s quickfix list on
-
You can run
:grep
without using parent shell process on -
There’s a
QuickFixCmdPost
event in Vim on - You can jump to previous quickfix lists in Vim on
-
About
shellcheck
on - How to read from one buffer to another in Vim on
-
About Vim’s
:helpgrep
command on - Vim recommends using Emacs-style key bindings in command mode on
- Vim doesn’t create the persistent undo folder automatically on
- About better YAML file folding in Vim on
-
About
:help macvim
on -
About Vim’s
:diffthis
command on
Vimium
Virgin Media
Websites
YAML
- JSON is valid YAML on
- About YAML’s node anchors and aliases on
- YAML has several string-parsing gotchas on
Zsh
Browse all posts by month.