Full Code of jbranchaud/til for AI

master 329ce1aa3e20 cached
1768 files
1.7 MB
521.5k tokens
1 requests
Download .txt
Showing preview only (2,145K chars total). Download the full file or copy to clipboard to get everything.
Repository: jbranchaud/til
Branch: master
Commit: 329ce1aa3e20
Files: 1768
Total size: 1.7 MB

Directory structure:
gitextract_4xrtz725/

├── .gitmodules
├── .vimrc
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── Taskfile.yml
├── ack/
│   ├── ack-bar.md
│   ├── case-insensitive-search.md
│   └── list-available-file-types.md
├── ansible/
│   └── loop-over-a-list-of-dictionaries.md
├── astro/
│   ├── generate-types-for-a-content-collection.md
│   └── markdown-files-are-of-type-markdown-instance.md
├── aws/
│   ├── aws-cli-requires-groff-executable.md
│   ├── find-and-follow-server-logs.md
│   ├── list-rds-snapshots-with-matching-identifier-prefix.md
│   ├── output-cli-results-in-different-formats.md
│   ├── sign-up-user-with-email-and-password.md
│   ├── ssh-into-an-ecs-container.md
│   ├── turn-off-output-pager-for-a-command.md
│   └── use-specific-aws-profile-with-cli.md
├── bash/
│   └── edit-the-current-command-prompt.md
├── brew/
│   ├── clean-up-your-brew-installations.md
│   ├── configure-brew-environment-variables.md
│   ├── export-list-of-everything-installed-by-brew.md
│   ├── install-from-nonstandard-brewfile.md
│   ├── install-go-packages-in-brewfile.md
│   └── list-all-services-managed-by-brew.md
├── chrome/
│   ├── access-a-value-logged-to-the-console.md
│   ├── chrome-supports-many-unix-keyboard-shortcuts.md
│   ├── copy-some-data-from-the-console.md
│   ├── duplicate-the-current-tab.md
│   ├── easier-access-to-network-throttling-controls.md
│   ├── keybinding-to-focus-the-address-bar.md
│   ├── navigate-the-browser-history-with-vimium.md
│   ├── open-current-tab-in-new-window-with-vimium.md
│   ├── pause-javascript-from-the-source-devtools-panel.md
│   ├── pretty-print-tabular-data.md
│   ├── reference-the-selected-node.md
│   ├── search-tabs-with-the-vimium-vomnibar.md
│   ├── selecting-dom-elements-faster-than-ever.md
│   ├── simulating-various-connection-speeds.md
│   ├── toggle-device-mode.md
│   ├── toggle-open-the-console-drawer.md
│   ├── trigger-commands-from-the-devtools-command-palette.md
│   └── view-network-traffic-for-new-tabs.md
├── claude-code/
│   ├── allow-edits-from-the-start.md
│   ├── monitor-usage-limits-from-cli.md
│   ├── open-current-prompt-in-default-editor.md
│   └── resume-specific-session.md
├── clojure/
│   ├── aggregation-using-merge-with.md
│   ├── argument-requirements-for-a-function.md
│   ├── combinations-of-items-from-a-sequence.md
│   ├── define-something-only-once.md
│   ├── evaluate-one-liners-with-lein-exec.md
│   ├── expanding-macros.md
│   ├── get-the-value-of-an-environment-variable.md
│   ├── list-functions-for-a-namespace.md
│   ├── load-a-file-into-the-repl.md
│   ├── mapping-with-an-index.md
│   ├── open-javadocs.md
│   ├── pretty-print-the-last-thing.md
│   ├── quick-clojure-docs.md
│   ├── reductions.md
│   ├── set-max-heap-size.md
│   ├── specify-the-directory-of-a-shell-command.md
│   ├── splitting-on-whitespace.md
│   ├── swap-two-items-in-a-vector.md
│   ├── try-a-clojure-project-in-the-repl.md
│   ├── type-of-anything.md
│   └── when-overflow-is-desired.md
├── css/
│   ├── add-fab-icons-to-your-site-with-fontawesome-5.md
│   ├── add-line-numbers-to-a-code-block-with-counter.md
│   ├── animate-smoothly-between-two-background-colors.md
│   ├── apply-multiple-box-shadows-to-single-element.md
│   ├── apply-styles-based-on-dark-mode-preferences.md
│   ├── apply-styles-to-the-last-child-of-a-specific-type.md
│   ├── change-the-orientation-of-an-image.md
│   ├── circular-icons-with-a-massive-border-radius.md
│   ├── clean-up-repetition-with-is-pseudo-class.md
│   ├── conditional-styling-for-unsupported-css-features.md
│   ├── create-a-pulsing-background-with-css-animation.md
│   ├── define-css-custom-properties-with-scss-variables.md
│   ├── define-hsl-colors-with-alpha-values.md
│   ├── display-responsive-iframe-maintaining-aspect-ratio.md
│   ├── dry-up-scss-with-mixins.md
│   ├── filter-blur-requires-expensive-calculation.md
│   ├── give-elements-the-same-width-with-flexbox.md
│   ├── let-pointer-events-pass-through-an-element.md
│   ├── lighten-and-darken-with-css-brightness-filter.md
│   ├── lighten-and-darken-with-scss.md
│   ├── make-a-block-of-text-respect-new-lines.md
│   ├── parameterized-scss-mixins.md
│   ├── prevent-invisible-elements-from-being-clicked.md
│   ├── root-has-higher-specificity-than-html.md
│   ├── style-a-background-with-a-linear-gradient.md
│   └── using-maps-in-scss.md
├── cursor/
│   └── allow-cursor-to-be-launched-from-cli.md
├── deno/
│   └── read-in-the-contents-of-a-file.md
├── devops/
│   ├── aliasing-an-ansible-host.md
│   ├── allow-cross-origin-requests-to-include-cookies.md
│   ├── allow-https-through-your-ufw-firewall.md
│   ├── check-for-cached-site-association-file-for-ios.md
│   ├── check-the-status-of-all-services.md
│   ├── check-the-syntax-of-nginx-files.md
│   ├── connect-to-an-rds-postgresql-database.md
│   ├── default-rails-deploy-script-on-hatchbox.md
│   ├── determine-the-ip-address-of-a-domain.md
│   ├── hatchbox-exports-env-vars-with-asdf.md
│   ├── path-of-the-packets.md
│   ├── push-non-master-branch-to-heroku.md
│   ├── reload-the-nginx-configuration.md
│   ├── resolve-the-public-ip-of-a-url.md
│   ├── running-out-of-inode-space.md
│   ├── set-get-and-unset-env-vars-with-dokku.md
│   ├── set-up-domain-for-hatchbox-rails-app.md
│   ├── ssh-into-a-docker-container.md
│   ├── ssl-certificates-can-cover-multiple-domains.md
│   └── wipe-a-heroku-postgres-database.md
├── docker/
│   ├── check-postgres-version-running-in-docker-container.md
│   ├── configure-different-host-and-container-ports.md
│   ├── list-running-docker-containers.md
│   ├── prevent-containers-from-running-on-startup.md
│   ├── run-a-basic-postgresql-server-in-docker.md
│   └── run-sql-script-against-postgres-container.md
├── dprint.json
├── drizzle/
│   ├── create-bigint-identity-column-for-primary-key.md
│   ├── drizzle-tracks-migrations-in-a-log-table.md
│   └── get-fields-for-inserted-row.md
├── elixir/
│   ├── all-values-for-a-key-in-a-keyword-list.md
│   ├── append-to-a-keyword-list.md
│   ├── assert-an-exception-is-raised.md
│   ├── binary-representation-of-a-string.md
│   ├── check-for-a-substring-match.md
│   ├── check-list-membership.md
│   ├── comparing-datetime-structs.md
│   ├── compute-intermediate-values-in-a-with-construct.md
│   ├── compute-md5-digest-of-a-string.md
│   ├── counting-records-with-ecto.md
│   ├── create-a-date-with-the-date-sigil.md
│   ├── create-a-list-of-atoms.md
│   ├── creating-a-pid.md
│   ├── creating-indexes-with-ecto.md
│   ├── defining-multiple-clauses-in-an-anonymous-function.md
│   ├── determine-the-latest-release-of-a-hex-package.md
│   ├── do-you-have-the-time-part-2.md
│   ├── do-you-have-the-time.md
│   ├── documentation-lookup-with-vim-and-alchemist.md
│   ├── dynamically-generating-atoms.md
│   ├── execute-raw-sql-in-an-ecto-migration.md
│   ├── expose-internal-representation.md
│   ├── include-captures-with-string-split.md
│   ├── inspecting-the-process-message-queue.md
│   ├── list-functions-for-a-module.md
│   ├── listing-files-in-iex.md
│   ├── match-on-a-map-in-a-with-construct.md
│   ├── passing-around-and-using-modules.md
│   ├── pattern-matching-in-anonymous-functions.md
│   ├── pipe-into-a-case-statement.md
│   ├── quitting-iex.md
│   ├── range-into-list-using-comprehensions.md
│   ├── refer-to-a-module-within-itself.md
│   ├── referencing-values-in-iexs-history.md
│   ├── remove-one-list-from-another.md
│   ├── replace-duplicates-in-a-keyword-list.md
│   ├── requiring-keys-for-structs.md
│   ├── reversing-a-list-part-2.md
│   ├── reversing-a-list.md
│   ├── root-directory-of-a-project.md
│   ├── round-floats-to-integers.md
│   ├── run-exunit-tests-in-a-deterministic-order.md
│   ├── run-the-test-at-a-specific-line-number.md
│   ├── same-functions-should-be-grouped-together.md
│   ├── skip-a-specific-test.md
│   ├── string-interpolation-with-just-about-anything.md
│   ├── unique-indexes-with-ecto.md
│   ├── updating-values-in-a-map.md
│   ├── using-when-clauses-in-a-with-construct.md
│   ├── virtual-fields-with-ecto-schemas.md
│   ├── when-things-dont-match-the-with-statements.md
│   └── word-lists-for-atoms.md
├── gatsby/
│   └── add-javascript-to-body-of-the-document.md
├── git/
│   ├── accessing-a-lost-commit.md
│   ├── add-a-range-of-filenames-to-gitignore.md
│   ├── add-only-tracked-files-from-a-directory.md
│   ├── amend-author-of-previous-commit.md
│   ├── auto-squash-those-fixup-commits.md
│   ├── better-diffs-with-delta.md
│   ├── caching-credentials.md
│   ├── change-the-start-point-of-a-branch.md
│   ├── check-how-a-file-is-being-ignored.md
│   ├── check-if-a-file-has-changed-in-a-script.md
│   ├── check-if-a-file-is-under-version-control.md
│   ├── checking-commit-ancestry.md
│   ├── checkout-old-version-of-a-file.md
│   ├── checkout-previous-branch.md
│   ├── cherry-pick-a-range-of-commits.md
│   ├── cherry-pick-multiple-commits-at-once.md
│   ├── clean-out-all-local-branches.md
│   ├── clean-out-working-copy-with-patched-restore.md
│   ├── clean-up-old-remote-tracking-references.md
│   ├── clear-entries-from-git-stash.md
│   ├── clone-a-repo-just-for-the-files-without-history.md
│   ├── clone-a-repo-locally-from-git.md
│   ├── configure-global-gitignore-file.md
│   ├── configuring-the-pager.md
│   ├── copy-a-file-from-another-branch.md
│   ├── count-all-files-of-specific-type-tracked-by-git.md
│   ├── count-number-of-commits-on-a-branch.md
│   ├── create-a-new-branch-with-git-switch.md
│   ├── delete-all-untracked-files.md
│   ├── determine-absolute-path-of-top-level-project-directory.md
│   ├── determine-the-hash-id-for-a-blob.md
│   ├── diffing-with-patience.md
│   ├── dropping-commits-with-git-rebase.md
│   ├── dry-runs-in-git.md
│   ├── exclude-a-directory-during-a-command.md
│   ├── exclude-a-file-from-a-diff-output.md
│   ├── excluding-files-locally.md
│   ├── extend-git-with-custom-commands.md
│   ├── files-with-local-changes-cannot-be-removed.md
│   ├── find-and-remove-files-that-match-a-name.md
│   ├── find-the-date-that-a-file-was-added-to-the-repo.md
│   ├── find-the-initial-commit.md
│   ├── fix-whitespace-errors-throughout-branch-commits.md
│   ├── get-latest-commit-timestamp-for-a-file.md
│   ├── get-the-name-of-the-current-branch.md
│   ├── get-the-short-version-of-the-latest-commit.md
│   ├── grab-a-single-file-from-a-stash.md
│   ├── grep-for-a-pattern-on-another-branch.md
│   ├── grep-over-commit-messages.md
│   ├── highlight-extra-whitespace-in-diff-output.md
│   ├── highlight-small-change-on-single-line.md
│   ├── ignore-changes-to-a-tracked-file.md
│   ├── ignore-files-specific-to-your-workflow.md
│   ├── include-a-message-with-your-stashed-changes.md
│   ├── include-or-exclude-remaining-patch-changes.md
│   ├── include-some-stats-in-your-git-log.md
│   ├── intent-to-add.md
│   ├── interactively-checkout-specific-files-from-a-stash.md
│   ├── interactively-unstage-changes.md
│   ├── keep-file-locally-with-git-rm.md
│   ├── last-commit-a-file-appeared-in.md
│   ├── list-all-files-added-during-span-of-time.md
│   ├── list-all-files-changed-between-two-branches.md
│   ├── list-all-git-aliases-from-gitconfig.md
│   ├── list-branches-that-contain-a-commit.md
│   ├── list-commits-on-a-branch.md
│   ├── list-different-commits-between-two-branches.md
│   ├── list-filenames-without-the-diffs.md
│   ├── list-just-the-files-involved-in-a-commit.md
│   ├── list-most-git-commands.md
│   ├── list-untracked-files-for-scripting.md
│   ├── list-untracked-files.md
│   ├── move-the-latest-commit-to-a-new-branch.md
│   ├── override-the-global-git-ignore-file.md
│   ├── pick-specific-changes-to-stash.md
│   ├── pulling-in-changes-during-an-interactive-rebase.md
│   ├── push-to-a-branch-on-another-remote.md
│   ├── quicker-commit-fixes-with-the-fixup-flag.md
│   ├── rebase-commits-with-an-arbitrary-command.md
│   ├── reference-a-commit-via-commit-message-pattern-matching.md
│   ├── reference-commits-earlier-than-reflog-remembers.md
│   ├── remove-untracked-files-from-a-directory.md
│   ├── rename-a-remote.md
│   ├── renaming-a-branch.md
│   ├── resetting-a-reset.md
│   ├── resolve-a-merge-conflict-from-stash-pop.md
│   ├── restore-file-from-one-branch-to-the-current.md
│   ├── review-commits-from-before-a-certain-date.md
│   ├── run-a-git-command-from-outside-the-repo.md
│   ├── set-a-custom-pager-for-a-specific-command.md
│   ├── set-default-branch-name-for-new-repos.md
│   ├── set-up-gpg-signing-key.md
│   ├── shorthand-to-force-push-a-branch.md
│   ├── show-all-commits-for-a-file-beyond-renaming.md
│   ├── show-changes-for-files-that-match-a-pattern.md
│   ├── show-changes-in-the-compose-commit-message-view.md
│   ├── show-file-diffs-when-viewing-git-log.md
│   ├── show-list-of-most-recently-committed-branches.md
│   ├── show-only-commits-that-touch-specific-lines.md
│   ├── show-summary-stats-for-current-branch.md
│   ├── show-the-diffstat-summary-of-a-commit.md
│   ├── show-the-good-and-the-bad-with-git-bisect.md
│   ├── show-what-is-in-a-stash.md
│   ├── single-key-presses-in-interactive-mode.md
│   ├── skip-a-bad-commit-when-bisecting.md
│   ├── skip-git-hooks-as-needed.md
│   ├── skip-pre-commit-hooks.md
│   ├── staging-changes-within-vim.md
│   ├── staging-stashes-interactively.md
│   ├── stash-a-single-untracked-file.md
│   ├── stash-everything.md
│   ├── stashing-only-unstaged-changes.md
│   ├── stashing-untracked-files.md
│   ├── switch-to-a-recent-branch-with-fzf.md
│   ├── transition-a-branch-from-one-base-to-another.md
│   ├── turn-off-the-output-pager-for-one-command.md
│   ├── two-kinds-of-dotted-range-notation.md
│   ├── undo-latest-changes-committed-to-specific-file.md
│   ├── unstage-changes-with-git-restore.md
│   ├── untrack-a-directory-of-files-without-deleting.md
│   ├── untrack-a-file-without-deleting-it.md
│   ├── update-the-url-of-a-remote.md
│   ├── use-external-diff-tool-like-difftastic.md
│   ├── using-commands-with-a-relative-date-format.md
│   ├── verbose-commit-message.md
│   ├── viewing-a-file-on-another-branch.md
│   ├── what-changed.md
│   ├── what-is-the-current-branch.md
│   └── whitespace-warnings.md
├── github/
│   ├── access-your-github-profile-photo.md
│   ├── open-a-pr-to-an-unforked-repo.md
│   ├── target-another-repo-when-creating-a-pr.md
│   └── tell-gh-what-the-default-repo-is.md
├── github-actions/
│   ├── cache-playwright-dependencies-across-workflows.md
│   ├── capture-an-output-value-for-use-in-a-later-step.md
│   ├── disable-a-workflow-with-the-gh-cli.md
│   ├── reference-an-encrypted-secret-in-an-action.md
│   ├── trigger-a-workflow-via-an-api-call.md
│   └── use-labels-to-block-pr-merge.md
├── go/
│   ├── access-go-docs-offline.md
│   ├── add-a-method-to-a-struct.md
│   ├── basic-delve-debugging-session.md
│   ├── build-for-a-specific-os-and-architecture.md
│   ├── check-if-cobra-flag-was-set.md
│   ├── combine-two-slices.md
│   ├── configure-max-string-print-length-for-delve.md
│   ├── connect-to-a-sqlite-database.md
│   ├── create-a-slice-from-an-array.md
│   ├── detect-if-stdin-comes-from-a-redirect.md
│   ├── deterministically-seed-a-random-number-generator.md
│   ├── difference-between-slice-and-pointer-to-slice.md
│   ├── do-something-n-times.md
│   ├── find-executables-installed-by-go.md
│   ├── format-date-and-time-with-time-constants.md
│   ├── not-so-random.md
│   ├── parse-a-string-into-individual-fields.md
│   ├── parse-flags-from-cli-arguments.md
│   ├── pass-a-struct-to-a-function.md
│   ├── produce-the-zero-value-of-a-generic-type.md
│   ├── redirect-file-to-stdin-during-delve-debug.md
│   ├── replace-the-current-process-with-an-external-command.md
│   ├── sleep-for-a-duration.md
│   ├── sort-slice-in-ascending-or-descending-order.md
│   ├── upgrading-from-an-older-version-on-mac.md
│   └── write-a-custom-scan-function-for-file-io.md
├── groq/
│   ├── grab-multiple-values-from-a-reference.md
│   ├── grab-values-from-an-array-of-references.md
│   ├── include-attributes-when-conditional-check-passes.md
│   └── include-type-of-operation-in-webhook-response.md
├── heroku/
│   ├── check-ruby-version-for-production-app.md
│   ├── connect-to-a-database-by-color.md
│   ├── deploy-a-review-app-to-a-different-stack.md
│   ├── diagnose-problems-in-a-heroku-postgres-database.md
│   ├── open-dashboard-for-specific-add-on.md
│   ├── run-sql-against-remote-postgres-database.md
│   ├── set-and-show-heroku-env-variables.md
│   ├── specify-default-team-and-app-for-project.md
│   └── ssh-into-heroku-server-hosting-app.md
├── html/
│   ├── adding-alt-text-to-an-image.md
│   ├── allow-number-input-to-accept-decimal-values.md
│   ├── determine-which-button-submitted-the-form.md
│   ├── disable-auto-completion-for-a-form-input.md
│   ├── disclose-additional-details.md
│   ├── make-elements-non-interactive-with-inert.md
│   ├── prevent-search-engines-from-indexing-a-page.md
│   ├── render-text-as-superscript.md
│   └── submit-a-form-with-a-button-outside-the-form.md
├── http/
│   └── what-counts-as-cross-origin-with-cors.md
├── inngest/
│   ├── ensure-lookup-can-be-retried.md
│   └── exit-function-early-without-retries.md
├── internet/
│   ├── add-emoji-to-github-repository-description.md
│   ├── add-styled-alerts-to-github-markdown-documents.md
│   ├── analyze-your-website-performance.md
│   ├── check-your-public-ip-address.md
│   ├── digraph-unicode-characters-have-a-titlecase.md
│   ├── download-a-google-doc-as-specific-format.md
│   ├── enable-keyboard-shortcuts-in-gmail.md
│   ├── exclude-ai-overview-from-google-search.md
│   ├── exclude-whitespace-changes-from-github-diffs.md
│   ├── figure-out-your-public-ip-address.md
│   ├── focus-the-url-bar.md
│   ├── get-random-images-from-unsplash.md
│   ├── grab-the-rss-feed-for-a-substack-blog.md
│   ├── hide-overflowing-text-for-google-sheets-column.md
│   ├── search-tweets-by-author.md
│   ├── show-all-pivotal-stories-with-blockers.md
│   └── verify-site-ownership-with-dns-record.md
├── java/
│   ├── ensure-resources-always-get-closed.md
│   ├── install-java-on-mac-with-brew.md
│   └── run-a-hello-world-program-in-eclipse.md
├── javascript/
│   ├── accessing-arguments-to-a-function.md
│   ├── add-item-to-an-array-of-references-in-sanity.md
│   ├── basic-date-formatting-without-a-library.md
│   ├── character-codes-from-keyboard-listeners.md
│   ├── check-classes-on-a-dom-element.md
│   ├── check-if-a-number-is-positive-or-negative.md
│   ├── check-if-file-exists-before-reading-it.md
│   ├── check-if-something-is-an-array.md
│   ├── check-media-queries-from-javascript.md
│   ├── check-the-password-confirmation-with-yup.md
│   ├── compare-the-equality-of-two-date-objects.md
│   ├── computed-property-names-in-es6.md
│   ├── conditionally-include-pairs-in-an-object.md
│   ├── configure-jest-to-run-a-test-setup-file.md
│   ├── convert-seconds-to-date-object.md
│   ├── create-a-cancelable-promise-with-pcancelable.md
│   ├── create-an-array-containing-1-to-n.md
│   ├── create-an-object-with-no-properties.md
│   ├── create-bootstrapped-apps-with-yarn.md
│   ├── create-future-and-past-dates-from-today.md
│   ├── custom-type-checking-error-messages-with-yup.md
│   ├── default-and-named-exports-from-the-same-module.md
│   ├── define-a-custom-jest-matcher.md
│   ├── destructure-with-access-to-nested-value-and-parent-value.md
│   ├── destructuring-the-rest-of-an-array.md
│   ├── easy-date-comparison-with-dayjs.md
│   ├── enable-es7-transforms-with-react-rails.md
│   ├── ensure-shell-can-find-global-npm-binaries.md
│   ├── expand-emojis-with-the-spread-operator.md
│   ├── fill-an-input-with-a-ton-of-text.md
│   ├── find-the-version-of-an-installed-dependency.md
│   ├── find-where-yarn-is-installing-binaries.md
│   ├── for-in-iterates-over-object-properties.md
│   ├── format-a-decimal-to-a-fixed-number-of-digits.md
│   ├── format-a-list-of-items-by-locale.md
│   ├── format-time-zone-identifier.md
│   ├── formatting-values-with-units-for-display.md
│   ├── freeze-an-object-sorta.md
│   ├── generate-a-v4-uuid-in-the-browser.md
│   ├── generate-random-integers.md
│   ├── get-the-location-and-size-of-an-element.md
│   ├── get-the-response-status-from-an-axios-error.md
│   ├── get-the-time-components-of-a-date.md
│   ├── get-the-time-zone-of-the-client-computer.md
│   ├── globally-install-a-package-with-yarn.md
│   ├── globally-install-specific-version-of-pnpm.md
│   ├── immutable-remove-with-the-spread-operator.md
│   ├── initialize-a-new-javascript-project-with-yarn.md
│   ├── install-the-latest-version-of-node-with-nvm.md
│   ├── interpolate-a-string-into-a-regex.md
│   ├── iso-8601-formatted-dates-are-interpreted-as-utc.md
│   ├── link-a-javascript-package-locally.md
│   ├── list-top-level-npm-dependencies.md
│   ├── load-and-use-env-var-in-node-script.md
│   ├── make-the-browser-editable-with-design-mode.md
│   ├── make-truly-deep-clone-with-structured-clone.md
│   ├── matching-a-computed-property-in-function-args.md
│   ├── matching-multiple-values-in-a-switch-statement.md
│   ├── mock-a-function-with-return-values-using-jest.md
│   ├── new-dates-can-take-out-of-bounds-values.md
│   ├── numbers-are-empty.md
│   ├── object-initialization-with-shorthand-property-names.md
│   ├── obtain-undefined-value-with-the-void-operator.md
│   ├── open-global-npm-config-file.md
│   ├── parse-a-date-from-a-timestamp.md
│   ├── pre-and-post-hooks-for-yarn-scripts.md
│   ├── prevent-hidden-element-from-flickering-on-load.md
│   ├── purge-null-and-undefined-values-from-object.md
│   ├── random-cannot-be-seeded.md
│   ├── reach-into-an-object-for-nested-data-with-get.md
│   ├── render-an-array-of-elements-with-react-16.md
│   ├── resolve-and-pass-multiple-values-from-a-then.md
│   ├── run-a-bash-script-from-a-node-script.md
│   ├── run-multiple-node-scripts-concurrently.md
│   ├── running-es6-specs-with-mocha.md
│   ├── scoping-variables-with-a-block-statement.md
│   ├── short-circuit-concurrently-when-process-fails.md
│   ├── show-description-of-all-npm-config-options.md
│   ├── sleep-for-a-bit-in-async-code.md
│   ├── sorting-arrays-of-objects-with-lodash.md
│   ├── splat-arguments-to-a-function.md
│   ├── spread-merging-objects-includes-nil-values.md
│   ├── spread-the-rest-with-es6.md
│   ├── start-node-process-in-specific-timezone.md
│   ├── string-interpolation-with-template-literals.md
│   ├── support-nested-matching-in-custom-jest-matchers.md
│   ├── tell-jest-to-focus-on-running-only-one-test.md
│   ├── tell-node-to-treat-js-files-as-esm.md
│   ├── tell-prettier-to-not-format-a-statement.md
│   ├── test-coverage-stats-with-jest.md
│   ├── test-timing-based-code-with-jest-fake-timers.md
│   ├── the-comma-operator.md
│   ├── throttling-a-function-call.md
│   ├── timing-processes.md
│   ├── transforming-es6-and-jsx-with-babel-6.md
│   ├── truthiness-of-integer-arrays.md
│   ├── turn-an-html-collection-into-an-array.md
│   ├── turn-off-console-error-messages-in-a-test.md
│   ├── turn-off-npm-funding-message.md
│   ├── waiting-on-multiple-promises.md
│   ├── who-am-i-npm-edition.md
│   ├── write-a-javascript-object-to-a-json-file.md
│   ├── yarn-commands-without-the-emojis.md
│   └── yup-schemas-are-validated-asynchronously.md
├── jj/
│   ├── colocate-jj-and-git-directories-for-project.md
│   ├── describe-current-changes-and-create-new-change.md
│   ├── find-system-wide-config-file-for-user.md
│   └── squash-changes-into-parent-commit-interactively.md
├── jq/
│   ├── combine-an-array-of-objects-into-a-single-object.md
│   ├── count-each-collection-in-a-json-object.md
│   ├── count-the-number-of-things-in-a-json-file.md
│   ├── extract-a-list-of-values.md
│   ├── filter-out-results-based-on-list-of-values.md
│   ├── find-all-objects-in-an-array-where-key-is-set.md
│   ├── find-all-objects-with-a-matching-key-value-pair.md
│   ├── get-a-slice-of-the-ends-of-an-array.md
│   ├── get-the-first-item-for-every-top-level-key.md
│   ├── get-the-last-item-from-an-array.md
│   ├── reduce-object-to-just-entries-of-a-specific-type.md
│   ├── turn-a-list-from-a-command-into-json.md
│   └── zip-two-json-files-together-based-on-shared-id.md
├── kitty/
│   ├── set-the-title-of-a-window.md
│   └── use-the-built-in-emoji-picker.md
├── linux/
│   ├── check-ubuntu-version.md
│   ├── configure-your-server-timezone.md
│   ├── list-the-statuses-of-all-upstart-jobs.md
│   ├── show-current-system-time-and-settings.md
│   ├── show-used-and-available-system-memory.md
│   └── upgrading-ubuntu.md
├── llm/
│   ├── send-curl-to-claude-text-completion-api.md
│   └── use-the-llm-cli-with-claude-models.md
├── mac/
│   ├── access-all-screen-and-video-capture-options.md
│   ├── access-system-information-on-osx.md
│   ├── access-unsupported-screen-resolutions-with-rdm.md
│   ├── add-a-bunch-of-cli-utilities-with-coreutils.md
│   ├── capture-screenshot-to-clipboard-from-cli.md
│   ├── check-network-quality-stats-from-the-command-line.md
│   ├── clean-up-old-homebrew-files.md
│   ├── control-which-monitor-app-switcher-appears-on.md
│   ├── convert-an-heic-image-file-to-jpg.md
│   ├── default-screenshot-location.md
│   ├── detect-how-long-a-user-has-been-idle.md
│   ├── disable-swipe-navigation-for-a-specific-app.md
│   ├── display-a-message-with-alfred.md
│   ├── find-the-process-using-a-specific-port.md
│   ├── gesture-for-viewing-all-windows-of-current-app.md
│   ├── insert-a-non-breaking-space-character.md
│   ├── inspect-assertions-preventing-sleep.md
│   ├── keyboard-shortcuts-for-interacting-with-text-areas.md
│   ├── launch-some-confetti.md
│   ├── list-all-the-say-voices.md
│   ├── open-finder-app-to-specific-directory.md
│   ├── prevent-sleep-with-the-caffeinate-command.md
│   ├── quickly-type-en-dashes-and-em-dashes.md
│   ├── require-additional-js-libraries-in-postman.md
│   ├── resize-app-windows-with-applescript.md
│   ├── resizing-both-corners-of-a-window.md
│   ├── reveal-location-of-file-in-finder-app.md
│   ├── run-a-hardware-check.md
│   ├── run-applescript-commands-inline-in-the-terminal.md
│   ├── set-a-window-to-its-default-zoom-level.md
│   ├── specify-app-when-opening-from-command-line.md
│   ├── start-amphetamine-session-with-applescript.md
│   ├── uninstall-logitech-g-hub-from-mac.md
│   ├── use-a-different-font-with-iterm2.md
│   ├── use-default-screenshot-shortcuts-with-cleanshot-x.md
│   ├── view-all-windows-of-the-current-app.md
│   └── write-system-clipboard-to-a-file.md
├── mise/
│   ├── create-umbrella-task-for-all-test-tasks.md
│   ├── list-the-files-being-loaded-by-mise.md
│   ├── look-in-ruby-version-dotfile.md
│   ├── override-your-project-mise-file.md
│   ├── pick-from-tasks-using-interactive-picker.md
│   ├── preserve-color-output-for-task-command.md
│   ├── read-existing-dot-env-file-into-env-vars.md
│   ├── run-a-command-with-specific-tool-version.md
│   └── search-through-bin-paths-for-tool-locations.md
├── mongodb/
│   ├── determine-the-database-version.md
│   ├── dump-a-remote-database.md
│   ├── dump-and-restore-with-a-single-gzip-file.md
│   ├── get-size-stats-for-a-collection.md
│   └── list-size-stats-for-all-collections.md
├── mysql/
│   ├── change-existing-column-to-not-null.md
│   ├── connect-to-a-database-in-safe-update-mode.md
│   ├── default-username-and-password-for-new-instance.md
│   ├── display-output-in-a-vertical-format.md
│   ├── doing-date-math.md
│   ├── dump-a-database-to-a-file.md
│   ├── echo-a-message-from-a-sql-file.md
│   ├── get-idea-of-what-is-in-a-json-column.md
│   ├── ignore-duplicates-when-inserting-records.md
│   ├── list-databases-and-tables.md
│   ├── run-statements-in-a-transaction.md
│   ├── select-rows-after-an-offset.md
│   ├── set-value-on-null-json-column.md
│   ├── show-create-statement-for-a-table.md
│   ├── show-indexes-for-a-table.md
│   └── show-tables-that-match-a-pattern.md
├── neovim/
│   ├── allow-neovim-to-copy-paste-with-system-clipboard.md
│   ├── create-user-command-to-open-init-config.md
│   ├── jump-between-changes-in-current-file.md
│   ├── run-a-lua-statement-from-the-command-prompt.md
│   ├── run-nvim-with-factory-defaults.md
│   └── set-up-vim-plug-with-neovim.md
├── netlify/
│   └── override-the-default-yarn-version.md
├── next-auth/
│   └── adjust-the-shape-of-the-user-type.md
├── nextjs/
│   ├── avoid-conflicting-files.md
│   ├── create-files-and-directories-for-dynamic-routes.md
│   ├── define-url-redirects-in-the-next-config.md
│   ├── fetch-does-not-work-in-api-serverless-function.md
│   ├── make-environment-variable-publicly-available.md
│   ├── match-middleware-on-groups-of-paths.md
│   ├── organize-pages-in-route-groups.md
│   ├── precedence-of-dot-env-files.md
│   ├── push-a-route-with-a-url-object.md
│   ├── redirect-an-unauthorized-user.md
│   ├── remove-a-query-param-from-the-url.md
│   └── ship-public-assets-with-a-nextjs-app.md
├── phoenix/
│   ├── bypass-template-rendering.md
│   ├── check-the-installed-version.md
│   ├── generate-new-app-without-brunch.md
│   ├── render-a-template-to-a-string.md
│   ├── serve-static-assets-from-custom-directory.md
│   ├── specifying-the-digest-directory.md
│   └── specifying-the-server-port.md
├── planetscale/
│   ├── see-what-databases-you-have-access-to.md
│   └── seed-production-data-into-another-branch.md
├── pnpm/
│   ├── execute-a-command-from-the-workspace-root.md
│   ├── install-command-runs-for-entire-workspace.md
│   └── list-the-installed-version-of-a-specific-package.md
├── postgres/
│   ├── a-better-null-display-character.md
│   ├── add-foreign-key-constraint-without-a-full-lock.md
│   ├── add-on-delete-cascade-to-foreign-key-constraint.md
│   ├── add-unique-constraint-using-existing-index.md
│   ├── adding-composite-uniqueness-constraints.md
│   ├── aggregate-a-column-into-an-array.md
│   ├── assumed-radius-of-the-earth.md
│   ├── auto-expanded-display.md
│   ├── between-symmetric.md
│   ├── capitalize-all-the-words.md
│   ├── change-the-current-directory-for-psql.md
│   ├── change-the-owner-of-a-sequence.md
│   ├── check-if-clusters-are-upgrade-compatible.md
│   ├── check-if-the-local-server-is-running.md
│   ├── check-if-user-role-exists-for-database.md
│   ├── check-table-for-any-orphaned-records.md
│   ├── check-the-size-of-databases-in-a-cluster.md
│   ├── checking-inequality.md
│   ├── checking-the-type-of-a-value.md
│   ├── clear-the-screen-in-psql-2.md
│   ├── clear-the-screen-in-psql.md
│   ├── compute-hashes-with-pgcrypto.md
│   ├── compute-median-instead-of-average.md
│   ├── compute-the-levenshtein-distance-of-two-strings.md
│   ├── compute-the-md5-hash-of-a-string.md
│   ├── concatenate-strings-with-a-separator.md
│   ├── configure-the-timezone.md
│   ├── constructing-a-range-of-dates.md
│   ├── convert-a-string-to-a-timestamp.md
│   ├── count-how-many-records-there-are-of-each-type.md
│   ├── count-records-by-type.md
│   ├── count-the-number-of-items-in-an-array.md
│   ├── count-the-number-of-trues-in-an-aggregate-query.md
│   ├── create-a-cluster-in-a-specific-data-directory.md
│   ├── create-a-composite-primary-key.md
│   ├── create-a-table-from-the-structure-of-another.md
│   ├── create-an-index-across-two-columns.md
│   ├── create-an-index-without-locking-the-table.md
│   ├── create-and-execute-sql-statements-with-gexec.md
│   ├── create-database-uses-template1.md
│   ├── create-hstore-from-two-arrays.md
│   ├── create-table-adds-a-data-type.md
│   ├── creating-conditional-constraints.md
│   ├── creating-custom-types.md
│   ├── day-of-week-by-name-for-a-date.md
│   ├── day-of-week-for-a-date.md
│   ├── default-schema.md
│   ├── defining-arrays.md
│   ├── determine-types-of-jsonb-records.md
│   ├── determining-the-age-of-things.md
│   ├── difference-between-explain-and-explain-analyze.md
│   ├── different-ways-to-define-an-interval.md
│   ├── dump-all-databases-to-a-sql-file.md
│   ├── dump-and-restore-a-database.md
│   ├── dump-the-sql-needed-recreate-a-table.md
│   ├── duplicate-a-local-database.md
│   ├── edit-existing-functions.md
│   ├── enable-logging-of-database-activity.md
│   ├── enforce-uniqueness-on-column-expression.md
│   ├── escaping-a-quote-in-a-string.md
│   ├── escaping-string-literals-with-dollar-quoting.md
│   ├── export-query-results-to-a-csv.md
│   ├── extracting-nested-json-data.md
│   ├── fetch-data-from-an-endpoint-in-sql.md
│   ├── fetch-specific-number-of-results.md
│   ├── find-duplicate-records-in-table-without-unique-id.md
│   ├── find-records-that-contain-duplicate-values.md
│   ├── find-records-that-have-multiple-associated-records.md
│   ├── find-the-data-directory.md
│   ├── find-the-location-of-postgres-config-files.md
│   ├── fizzbuzz-with-common-table-expressions.md
│   ├── force-ssl-when-making-a-psql-connection.md
│   ├── generate-a-uuid.md
│   ├── generate-modern-primary-key-columns.md
│   ├── generate-random-alphanumeric-identifier.md
│   ├── generate-random-uuids-without-an-extension.md
│   ├── generate-series-of-numbers.md
│   ├── generating-uuids-with-pgcrypto.md
│   ├── get-a-quick-approximate-count-of-a-table.md
│   ├── get-row-count-for-most-recent-query.md
│   ├── get-the-size-of-a-database.md
│   ├── get-the-size-of-a-table.md
│   ├── get-the-size-of-an-index.md
│   ├── get-the-size-on-disk-of-an-index.md
│   ├── getting-a-slice-of-an-array.md
│   ├── group-by-the-result-of-a-function-call.md
│   ├── idempotent-inserts.md
│   ├── include-all-queries-in-the-log-file.md
│   ├── include-columns-in-a-covering-index.md
│   ├── include-multiple-tables-in-a-pg-dump.md
│   ├── insert-a-bunch-of-records-with-generate-series.md
│   ├── insert-just-the-defaults.md
│   ├── inspect-progress-of-long-running-create-index.md
│   ├── install-postgres-with-uuid-ossp-using-asdf.md
│   ├── integers-in-postgres.md
│   ├── intervals-of-time-by-week.md
│   ├── is-it-null-or-not-null.md
│   ├── label-dollar-quoted-strings-with-a-tag.md
│   ├── limit-execution-time-of-statements.md
│   ├── list-all-columns-of-a-specific-type.md
│   ├── list-all-rows-in-a-table.md
│   ├── list-all-the-databases.md
│   ├── list-all-versions-of-a-function.md
│   ├── list-available-schemas.md
│   ├── list-connections-to-a-database.md
│   ├── list-database-objects-with-disk-usage.md
│   ├── list-database-users.md
│   ├── list-databases-available-for-connecting.md
│   ├── list-various-kinds-of-objects.md
│   ├── lower-is-faster-than-ilike.md
│   ├── manage-major-versions-with-brew-and-direnv.md
│   ├── max-identifier-length-is-63-bytes.md
│   ├── open-heroku-database-in-postico-from-terminal.md
│   ├── output-explain-query-plan-in-different-formats.md
│   ├── pg-prefix-is-reserved-for-system-schemas.md
│   ├── postgres-does-not-support-unsigned-integers.md
│   ├── prepare-execute-and-deallocate-statements.md
│   ├── pretty-print-data-sizes.md
│   ├── pretty-printing-jsonb-rows.md
│   ├── prevent-a-query-from-running-too-long.md
│   ├── print-the-query-buffer-in-psql.md
│   ├── put-unique-constraint-on-generated-column.md
│   ├── references-target-primary-key-by-default.md
│   ├── remove-not-null-constraint-from-a-column.md
│   ├── renaming-a-sequence.md
│   ├── renaming-a-table.md
│   ├── restart-a-sequence.md
│   ├── restarting-sequences-when-truncating-tables.md
│   ├── salt-and-hash-a-password-with-pgcrypto.md
│   ├── send-a-command-to-psql.md
│   ├── set-a-seed-for-the-random-number-generator.md
│   ├── set-a-statement-timeout-threshold-for-a-session.md
│   ├── set-inclusion-with-hstore.md
│   ├── set-up-a-project-local-cluster-with-postgres-app.md
│   ├── sets-with-the-values-command.md
│   ├── shorthand-absolute-value-operator.md
│   ├── show-all-versions-of-an-operator.md
│   ├── show-reconstructed-constraints-for-a-table.md
│   ├── show-the-hidden-queries-behind-backslash-commands.md
│   ├── sleeping.md
│   ├── special-math-operators.md
│   ├── storing-emails-with-citext.md
│   ├── string-contains-another-string.md
│   ├── survey-of-user-defined-ordering-of-records.md
│   ├── switch-non-castable-column-type-with-using-clause.md
│   ├── switch-the-running-postgres-server-version.md
│   ├── table-names-are-treated-as-lower-case-by-default.md
│   ├── temporarily-disable-triggers.md
│   ├── temporary-tables.md
│   ├── terminating-a-connection.md
│   ├── the-nullif-function.md
│   ├── timestamp-functions.md
│   ├── toggling-the-pager-in-psql.md
│   ├── track-psql-history-separately-per-database.md
│   ├── trim-leading-and-trailing-space-from-string.md
│   ├── truncate-all-rows.md
│   ├── truncate-tables-with-dependents.md
│   ├── turn-timing-on.md
│   ├── two-ways-to-compute-factorial.md
│   ├── two-ways-to-escape-a-quote-in-a-string.md
│   ├── types-by-category.md
│   ├── unable-to-infer-data-type-in-production.md
│   ├── union-all-rows-including-duplicates.md
│   ├── use-a-psqlrc-file-for-common-settings.md
│   ├── use-a-trigger-to-mirror-inserts-to-another-table.md
│   ├── use-argument-indexes.md
│   ├── use-not-valid-to-immediately-enforce-a-constraint.md
│   ├── use-rename-to-hot-swap-two-tables.md
│   ├── use-variables-in-an-anonymous-function.md
│   ├── using-expressions-in-indexes.md
│   ├── using-intervals-to-offset-time.md
│   ├── who-is-the-current-user.md
│   ├── word-count-for-a-column.md
│   └── write-a-query-result-to-file.md
├── prisma/
│   ├── apply-separate-formatting-with-a-blank-line.md
│   ├── batch-insert-records-with-create-many.md
│   ├── check-if-database-and-schema-are-not-in-sync.md
│   ├── configure-client-to-log-sql-queries.md
│   ├── execute-a-raw-sql-query.md
│   ├── grab-a-limited-set-of-records.md
│   ├── open-connections-to-multiple-databases.md
│   ├── override-table-name-for-prisma-model.md
│   └── specify-alternate-location-for-prisma-schema.md
├── python/
│   ├── access-instance-variables.md
│   ├── access-most-recent-return-value-in-repl.md
│   ├── break-debugger-on-first-line-of-program.md
│   ├── check-if-package-is-installed-with-pip.md
│   ├── control-passing-of-time-in-tests.md
│   ├── create-a-dummy-dataframe-in-pandas.md
│   ├── create-a-range-of-descending-values.md
│   ├── dunder-methods.md
│   ├── easy-key-value-aggregates-with-defaultdict.md
│   ├── install-with-pip-for-specific-interpreter.md
│   ├── iterate-first-n-items-from-enumerable.md
│   ├── iterate-over-a-dictionary.md
│   ├── keep-a-tally-with-collections-counter.md
│   ├── load-a-file-into-the-python-repl.md
│   ├── look-inside-pytest-tmp-path.md
│   ├── override-the-boolean-context-of-a-class.md
│   ├── parse-relative-time-to-datetime-object.md
│   ├── store-and-access-immutable-data-in-a-tuple.md
│   ├── test-a-function-with-pytest.md
│   ├── use-pipx-to-install-end-user-apps.md
│   └── use-verbose-flag-to-get-more-diff.md
├── rails/
│   ├── access-secrets-in-a-rails-5-2-app.md
│   ├── active-record-query-for-this-or-that.md
│   ├── add-a-check-constraint-to-a-table.md
│   ├── add-a-database-index-if-it-does-not-already-exist.md
│   ├── add-a-foreign-key-reference-to-a-table.md
│   ├── add-a-generated-column-to-a-postgresql-table.md
│   ├── add-a-reference-column-with-an-index.md
│   ├── add-activerecord-error-not-tied-to-any-attribute.md
│   ├── add-color-to-the-irb-console-prompt.md
│   ├── add-react-with-webpacker-to-a-new-rails-app.md
│   ├── add-timestamptz-columns-with-the-migration-dsl.md
│   ├── adjust-the-production-log-level.md
│   ├── advance-the-date.md
│   ├── all-or-nothing-database-transactions.md
│   ├── allow-associations-to-be-optional.md
│   ├── allow-list-params-anywhere-with-strong-params.md
│   ├── alphabetize-schema-columns-to-keep-them-consistent.md
│   ├── alter-the-rails-setup-script.md
│   ├── apply-basic-html-formatting-to-block-of-text.md
│   ├── assert-two-arrays-have-the-same-items-with-rspec.md
│   ├── attach-a-file-with-capybara.md
│   ├── attribute-getter-without-the-recursion.md
│   ├── attribute-was.md
│   ├── autosave-false-on-activerecord-associations.md
│   ├── bind-parameters-to-activerecord-sql-query.md
│   ├── build-a-hash-of-model-attributes.md
│   ├── capture-development-emails-with-mailhog.md
│   ├── capybara-page-status-code.md
│   ├── cast-common-boolean-like-values-to-booleans.md
│   ├── change-the-nullability-of-a-column.md
│   ├── change-the-time-zone-offset-of-a-datetime-object.md
│   ├── check-how-database-is-configured.md
│   ├── check-if-activerecord-update-fails.md
│   ├── check-if-any-records-have-a-null-value.md
│   ├── check-specific-attributes-on-activerecord-array.md
│   ├── check-the-current-named-log-level.md
│   ├── clean-up-memory-hungry-rails-console-processes.md
│   ├── code-statistics-for-an-application.md
│   ├── columns-with-default-values-are-nil-on-create.md
│   ├── comparing-datetimes-down-to-second-precision.md
│   ├── conditional-class-selectors-in-haml.md
│   ├── convert-a-symbol-to-a-constant.md
│   ├── convert-json-field-to-hash-with-indifferent-access.md
│   ├── count-the-number-of-records-by-attribute.md
│   ├── create-a-custom-named-references-column.md
│   ├── create-a-join-table-with-the-migration-dsl.md
│   ├── create-table-with-bigint-id-as-primary-key.md
│   ├── creating-records-of-has-one-associations.md
│   ├── custom-validation-message.md
│   ├── customize-paths-and-helpers-for-devise-routes.md
│   ├── customize-template-for-new-schema-migration.md
│   ├── customize-the-path-of-a-resource-route.md
│   ├── define-the-root-path-for-the-app.md
│   ├── delete-paranoid-records.md
│   ├── demodulize-a-class-name.md
│   ├── determine-the-configured-primary-key-type.md
│   ├── different-ways-to-add-a-foreign-key-reference.md
│   ├── disambiguate-where-in-a-joined-relation.md
│   ├── empty-find-by-returns-first-record.md
│   ├── enforce-locals-passed-to-a-partial.md
│   ├── ensure-a-rake-task-cannot-write-data.md
│   ├── ensure-migrations-use-the-latest-schema.md
│   ├── ensure-record-saved-with-after-commit-callback.md
│   ├── filter-active-model-validation-errors.md
│   ├── filter-active-storage-blobs-to-only-images.md
│   ├── find-or-create-a-record-with-factory-bot.md
│   ├── find-records-with-multiple-associated-records.md
│   ├── force-all-users-to-sign-out.md
│   ├── format-datetime-with-builtin-formats.md
│   ├── format-specific-html-erb-template-files.md
│   ├── generate-a-model.md
│   ├── generate-a-rails-app-from-the-main-branch.md
│   ├── generating-and-executing-sql.md
│   ├── get-a-quick-approximate-count-of-a-large-table.md
│   ├── get-active-record-attribute-directly-from-database.md
│   ├── get-an-array-of-values-from-the-database.md
│   ├── get-an-empty-activerecord-relation.md
│   ├── get-formatted-utc-offset-value.md
│   ├── get-help-with-a-rails-app-update.md
│   ├── get-the-column-names-for-a-model.md
│   ├── get-the-current-time.md
│   ├── grab-a-random-record-from-the-database.md
│   ├── handle-named-arguments-in-a-rake-task.md
│   ├── hash-slicing.md
│   ├── ignore-poltergeist-javascript-errors.md
│   ├── include-devise-helpers-in-your-controller-tests.md
│   ├── inspect-configuration-of-database-connection.md
│   ├── inspect-previous-changes-to-activerecord-object.md
│   ├── link-to-the-current-page-with-query-params.md
│   ├── list-all-installable-rails-versions.md
│   ├── list-the-enqueued-jobs.md
│   ├── load-a-file-when-starting-rails-console.md
│   ├── load-records-in-batches-with-find-each.md
│   ├── log-sql-queries-executed-by-activerecord.md
│   ├── look-up-time-zone-info-for-identifier.md
│   ├── make-a-string-attribute-easy-to-inquire-about.md
│   ├── make-action-mailer-synchronous-in-test.md
│   ├── make-remove-column-migration-reversible.md
│   ├── manage-timestamps-with-upsert.md
│   ├── manually-run-a-migration-from-rails-console.md
│   ├── mark-a-migration-as-irreversible.md
│   ├── mark-for-destruction.md
│   ├── mask-an-activerecord-attribute.md
│   ├── merge-a-scope-into-an-activerecord-query.md
│   ├── migrating-up-down-up.md
│   ├── mock-rails-environment-with-an-inquiry-instance.md
│   ├── order-matters-for-rescue-from-blocks.md
│   ├── override-text-displayed-by-form-label.md
│   ├── parameterize-a-string-with-underscores.md
│   ├── params-includes-submission-button-info.md
│   ├── params-is-a-hash-with-indifferent-access.md
│   ├── parse-query-params-from-a-url.md
│   ├── parse-request-params-in-rack-attack-block.md
│   ├── perform-sql-explain-with-activerecord.md
│   ├── polymorphic-path-helpers.md
│   ├── prefer-select-all-over-execute-for-read-queries.md
│   ├── pretend-generations.md
│   ├── prevent-mailer-previews-from-cluttering-database.md
│   ├── prevent-writes-with-a-sandboxed-rails-console.md
│   ├── provide-fake-form-helper-to-controllers.md
│   ├── query-a-single-value-from-the-database.md
│   ├── read-in-environment-specific-config-values.md
│   ├── read-only-models.md
│   ├── rebuild-tailwind-bundle-for-dev-server.md
│   ├── remove-a-database-column-from-a-table.md
│   ├── remove-the-default-value-on-a-column.md
│   ├── render-an-alternative-action-mailer-template.md
│   ├── render-the-response-body-in-controller-specs.md
│   ├── replace-an-index-with-a-unique-index.md
│   ├── rescue-from-with-a-separate-method.md
│   ├── rescue-from.md
│   ├── respond-with-json-regardless-of-content-type.md
│   ├── restart-puma-server-by-touching-restart-file.md
│   ├── retrieve-an-object-if-it-exists.md
│   ├── rollback-a-couple-migrations.md
│   ├── rollback-a-specific-migration-out-of-order.md
│   ├── rounding-numbers-with-precision.md
│   ├── run-a-rake-task-programmatically.md
│   ├── run-commands-with-specific-rails-version.md
│   ├── run-dev-processes-with-overmind-instead-of-foreman.md
│   ├── run-rails-console-with-remote-dokku-app.md
│   ├── run-some-code-whenever-rails-console-starts.md
│   ├── scaffold-auth-functionality-with-rails-8-generator.md
│   ├── schedule-sidekiq-jobs-out-into-the-future.md
│   ├── scope-records-to-a-lower-or-upper-bound.md
│   ├── secure-passwords-with-rails-and-bcrypt.md
│   ├── select-a-select-by-selector.md
│   ├── select-a-specific-rails-version-to-install.md
│   ├── select-value-for-sql-counts.md
│   ├── serialize-with-fast-jsonapi-in-a-rails-app.md
│   ├── set-a-timestamp-field-to-the-current-time.md
│   ├── set-datetime-to-include-time-zone-in-migrations.md
│   ├── set-default-as-sql-function-in-migration.md
│   ├── set-default-url-options-for-entire-application.md
│   ├── set-meta-tags-in-erb-views.md
│   ├── set-schema-search-path.md
│   ├── set-statement-timeout-for-all-postgres-connections.md
│   ├── set-the-default-development-port.md
│   ├── show-pending-migrations.md
│   ├── show-rails-models-with-pry.md
│   ├── show-rails-routes-with-pry.md
│   ├── skip-validations-when-creating-a-record.md
│   ├── specify-new-attributes-for-find-or-create-by.md
│   ├── temporarily-disable-strong-params.md
│   ├── temporarily-turn-off-pending-migrations-error.md
│   ├── test-for-a-subset-of-attributes-on-a-model.md
│   ├── test-if-an-instance-variable-was-assigned.md
│   ├── test-if-deliver-later-is-called-for-a-mailer.md
│   ├── test-out-url-and-path-helpers-in-the-console.md
│   ├── truncate-almost-all-tables.md
│   ├── update-column-versus-update-attribute.md
│   ├── upgrading-your-manifest-for-sprockets-4.md
│   ├── use-irb-and-ruby-flags-with-rails-console.md
│   ├── use-ruby-extension-for-template-file.md
│   ├── useful-active-support-constants-for-durations.md
│   ├── validate-column-data-with-check-constraints.md
│   ├── verify-and-read-a-signed-cookie-value.md
│   ├── where-am-i-in-the-partial-iteration.md
│   ├── why-redirect-and-return-in-controllers.md
│   ├── wipe-out-all-precompiled-assets.md
│   ├── write-reversible-migration-to-set-default.md
│   └── write-safer-where-clauses-with-placeholders.md
├── react/
│   ├── a-component-is-just-a-bag-of-data.md
│   ├── access-the-latest-lifecycle-methods-in-an-old-app.md
│   ├── accessing-env-vars-in-create-react-app.md
│   ├── accessing-location-within-reach-router.md
│   ├── allow-md-as-an-extension-with-gatsby-mdx.md
│   ├── alter-the-display-name-of-a-component.md
│   ├── building-a-react-app-in-the-browser.md
│   ├── check-the-type-of-a-child-component.md
│   ├── conditionally-including-event-handler-functions.md
│   ├── create-a-snowpack-bundled-react-app.md
│   ├── create-dynamically-named-custom-react-components.md
│   ├── create-react-app-comes-with-lodash.md
│   ├── create-react-app-has-a-default-test-setup-file.md
│   ├── css-important-is-not-supported-by-inline-styles.md
│   ├── debug-jest-tests-in-create-react-app.md
│   ├── defining-state-in-a-simple-class-component.md
│   ├── destructure-variables-as-props-to-a-component.md
│   ├── details-tags-are-a-controllable-component.md
│   ├── dispatch-anywhere-with-redux.md
│   ├── dynamically-add-props-to-a-child-component.md
│   ├── dynamically-create-html-elements.md
│   ├── enforce-specific-values-with-proptypes.md
│   ├── focus-an-input-with-useref-hook.md
│   ├── force-a-component-to-only-have-one-child.md
│   ├── forcing-a-child-remount-with-the-key-prop.md
│   ├── formik-connected-components.md
│   ├── formiks-validation-schema-as-a-function.md
│   ├── inactive-and-active-component-styles-with-radium.md
│   ├── inline-style-attributes-should-be-camel-cased.md
│   ├── manage-state-in-a-functional-component.md
│   ├── mapping-over-one-or-many-children.md
│   ├── mock-a-function-that-a-component-imports.md
│   ├── navigate-with-state-via-reach-router.md
│   ├── pairing-a-callback-with-a-usestate-hook.md
│   ├── pass-a-function-to-a-usestate-updater.md
│   ├── passing-props-down-to-react-router-route.md
│   ├── prevent-reach-router-redirect-error-screen-in-dev.md
│   ├── proxy-to-an-api-server-in-development-with-cra.md
│   ├── quickly-search-for-a-component-with-react-devtools.md
│   ├── reach-router-renders-to-a-div.md
│   ├── read-only-input-elements.md
│   ├── rendering-multiple-nodes-with-fragments.md
│   ├── set-the-type-for-a-usestate-hook.md
│   ├── specifying-dependencies-of-a-useeffect-hook.md
│   ├── spelunking-through-components-with-enzymes-dive.md
│   ├── sync-your-react-router-state-with-redux.md
│   ├── test-files-in-create-react-app.md
│   ├── test-that-element-does-not-render-in-the-component.md
│   ├── trigger-effect-only-when-the-component-mounts.md
│   ├── update-formik-initial-values-when-props-change.md
│   ├── upgrading-to-the-latest-react-in-codesandbox.md
│   ├── use-a-ref-to-autofocus-an-input.md
│   ├── use-react-16-with-gatsby.md
│   ├── use-withrouter-to-pass-down-react-router-history.md
│   ├── visually-select-a-react-element-for-inspection.md
│   ├── who-is-your-favorite-child.md
│   └── wrap-the-root-of-a-gatsby-app-in-a-component.md
├── react-testing-library/
│   ├── check-that-a-component-renders-as-null.md
│   ├── find-by-queries-have-async-built-in.md
│   ├── pretty-print-some-dom-to-debug-a-test.md
│   └── test-a-component-that-uses-react-portals.md
├── react_native/
│   └── avoid-the-notch-with-safeareaview.md
├── reason/
│   ├── break-out-of-a-while-loop.md
│   ├── compile-reason-to-native-with-dune.md
│   ├── compile-reason-with-an-ocaml-package-using-dune.md
│   ├── create-a-map-of-strings.md
│   ├── create-a-stream-from-an-array.md
│   ├── creating-a-2d-array.md
│   ├── data-structures-with-self-referential-types.md
│   ├── defining-variants-with-constructor-arguments.md
│   ├── dynamically-create-a-printf-string-format.md
│   ├── exhaustive-pattern-matching-of-list-variants.md
│   ├── format-the-current-file-within-vim.md
│   ├── generate-a-native-reasonml-project-with-pesy.md
│   ├── generate-starter-reason-projects.md
│   ├── helping-the-compiler-help-us-with-variants.md
│   ├── inline-component-styles-with-reason-react.md
│   ├── is-this-a-directory-or-a-file.md
│   ├── making-things-mutable.md
│   ├── modifying-a-string-with-blit-string.md
│   ├── multi-argument-functions-as-syntactic-sugar.md
│   ├── pattern-match-on-exceptions.md
│   ├── quickly-bootstrap-a-react-app-using-reason.md
│   ├── seeding-and-generating-random-integers.md
│   ├── stream-a-file-line-by-line.md
│   ├── string-interpolation-with-integers-and-sprintf.md
│   ├── string-interpolation-with-quoted-strings.md
│   ├── trying-out-reasonml-in-codesandbox.md
│   ├── two-ways-to-find-an-item-in-a-list.md
│   ├── using-optional-labeled-function-arguments.md
│   └── wrapping-a-component-for-use-in-javascript.md
├── remix/
│   ├── get-query-params-from-the-request-url.md
│   ├── markdown-and-mdx-files-are-rendered-to-routes.md
│   ├── relative-and-absolute-paths-in-links.md
│   ├── run-the-development-server-from-another-port.md
│   └── set-the-title-of-a-page.md
├── rspec/
│   ├── avoid-accidentally-disabling-pry.md
│   ├── check-specific-arguments-to-received-method.md
│   ├── configure-tests-to-run-in-random-order.md
│   ├── find-minimal-set-of-tests-causing-a-flicker.md
│   ├── format-test-results-as-a-json-file.md
│   ├── run-tests-with-documentation-formatting.md
│   └── use-specific-cache-store-in-a-single-test.md
├── ruby/
│   ├── a-basic-case-statement.md
│   ├── a-shorthand-for-rerunning-failed-tests-with-rspec.md
│   ├── add-comments-to-regex-with-free-spacing.md
│   ├── add-linux-as-a-bundler-platform.md
│   ├── add-progress-reporting-to-long-running-script.md
│   ├── are-they-all-true.md
│   ├── assert-about-an-objects-attributes-with-rspec.md
│   ├── assoc-for-hashes.md
│   ├── audit-your-ruby-project-for-any-cves.md
│   ├── avoid-double-negation-with-minitest-refute.md
│   ├── block-comments.md
│   ├── block-syntaxes-have-different-precedence.md
│   ├── build-http-and-https-urls.md
│   ├── chaining-multiple-rspec-change-matchers.md
│   ├── check-for-any-overlaps-in-list-of-ranges.md
│   ├── check-if-a-url-resolves-to-200.md
│   ├── check-if-an-object-includes-a-module.md
│   ├── check-return-status-of-running-a-shell-command.md
│   ├── clamp-to-an-endless-range.md
│   ├── click-on-text-with-capybara.md
│   ├── colorful-output-with-minitest.md
│   ├── comparing-arrays-in-rspec.md
│   ├── comparing-class-hierarchy-relationships.md
│   ├── construct-a-constant-from-a-string.md
│   ├── convert-a-unix-epoch-timestamp-to-a-time-object.md
│   ├── create-a-csv-table-object.md
│   ├── create-a-hash-from-an-array-of-arrays.md
│   ├── create-a-module-of-utility-functions.md
│   ├── create-an-array-of-stringed-numbers.md
│   ├── create-listing-of-all-middleman-pages.md
│   ├── create-mock-class-that-can-be-overridden.md
│   ├── create-named-structs-with-struct-new.md
│   ├── create-thumbnail-image-for-a-pdf.md
│   ├── decompose-unicode-character-with-diacritic-mark.md
│   ├── defaulting-to-frozen-string-literals.md
│   ├── define-a-custom-rspec-matcher.md
│   ├── define-a-method-on-a-struct.md
│   ├── define-multiline-strings-with-heredocs.md
│   ├── destructure-the-first-item-from-an-array.md
│   ├── destructuring-arrays-in-blocks.md
│   ├── disable-interpolation-for-a-heredoc-string.md
│   ├── disassemble-some-codes.md
│   ├── double-splat-to-merge-hashes.md
│   ├── edit-previous-parts-of-the-pry-buffer-history.md
│   ├── editing-code-in-pry.md
│   ├── encode-a-string-as-url-safe-base64.md
│   ├── enumerate-a-pairing-of-every-two-sequential-items.md
│   ├── evaluating-one-off-commands.md
│   ├── exclude-values-from-an-array.md
│   ├── execute-several-commands-with-backtick-heredoc.md
│   ├── exit-a-process-with-an-error-message.md
│   ├── expect-a-method-to-be-called-and-actually-call-it.md
│   ├── extract-a-column-of-data-from-a-csv-file.md
│   ├── extract-capture-group-matches-with-string-slices.md
│   ├── factory-girl-sequences.md
│   ├── fail.md
│   ├── fetch-warns-about-superseding-block-argument.md
│   ├── filter-by-type.md
│   ├── find-the-min-and-max-with-a-single-call.md
│   ├── finding-the-source-of-ruby-methods.md
│   ├── format-a-hash-into-a-string-template.md
│   ├── forward-all-arguments-to-another-method.md
│   ├── gather-positional-arguments-in-method-definition.md
│   ├── generate-a-signed-jwt-token.md
│   ├── generate-ruby-version-and-gemset-files-with-rvm.md
│   ├── get-info-about-your-ruby-gems-environment.md
│   ├── get-specific-values-from-hashes-and-arrays.md
│   ├── get-the-names-of-the-month.md
│   ├── get-the-output-of-running-a-system-program.md
│   ├── get-utc-offset-for-different-time-zones.md
│   ├── identify-outdated-gems.md
│   ├── if-you-detect-none.md
│   ├── include-extra-context-in-a-honeybadger-notify.md
│   ├── ins-and-outs-of-pry.md
│   ├── install-and-require-gems-inline-without-gemfile.md
│   ├── install-latest-version-of-ruby-with-asdf.md
│   ├── invoking-rake-tasks-multiple-times.md
│   ├── irb-has-built-in-benchmarking-with-ruby-3.md
│   ├── iterate-with-an-offset-index.md
│   ├── join-uri-path-parts.md
│   ├── jump-out-of-a-nested-context-with-throw-catch.md
│   ├── last-raised-exception-in-the-call-stack.md
│   ├── limit-split.md
│   ├── list-the-running-ruby-version.md
│   ├── listing-local-variables.md
│   ├── load-a-module-and-execute-a-statement.md
│   ├── make-a-long-string-of-text-readable.md
│   ├── make-an-executable-ruby-script.md
│   ├── make-structs-easier-to-use-with-keyword-initialization.md
│   ├── map-with-index-over-an-array.md
│   ├── mock-method-chain-calls-with-rspec.md
│   ├── mocking-requests-with-partial-uris-using-regex.md
│   ├── multi-line-comments.md
│   ├── named-regex-captures-are-assigned-to-variables.md
│   ├── navigate-back-in-the-browser-with-capybara.md
│   ├── next-and-previous-floats.md
│   ├── open-struct-has-bad-performance-characteristics.md
│   ├── or-operator-precedence.md
│   ├── output-bytecode-for-a-ruby-program.md
│   ├── override-the-initial-sequence-value.md
│   ├── parallel-bundle-install.md
│   ├── parse-json-into-an-open-struct.md
│   ├── parsing-a-csv-with-quotes-in-the-data.md
│   ├── pass-a-block-to-count.md
│   ├── passing-arbitrary-methods-as-blocks.md
│   ├── passing-arguments-to-a-rake-task.md
│   ├── pattern-match-values-from-a-hash.md
│   ├── percent-notation.md
│   ├── precedence-of-logical-operators.md
│   ├── prevent-erb-lint-from-removing-opening-tags.md
│   ├── print-data-to-formatted-table.md
│   ├── question-mark-operator.md
│   ├── rake-only-lists-tasks-with-descriptions.md
│   ├── read-the-first-line-from-a-file.md
│   ├── refer-to-implicit-block-argument-with-it.md
│   ├── reference-hash-key-with-safe-navigation.md
│   ├── regenerate-lock-file-with-newer-bundler.md
│   ├── rendering-erb.md
│   ├── replace-the-current-process-with-an-external-command.md
│   ├── require-entire-gemfile-in-pry-session.md
│   ├── rerun-only-failures-with-rspec.md
│   ├── retry-a-block-after-an-exception.md
│   ├── return-the-thing-being-printed.md
│   ├── returning-with-sequel.md
│   ├── rexml-is-a-bundled-gem-as-of-ruby-3-0-0.md
│   ├── run-an-older-version-of-bundler.md
│   ├── running-a-single-minitest-example.md
│   ├── safe-navigation-operator.md
│   ├── scripting-with-rvm.md
│   ├── scroll-to-top-of-page-with-capybara.md
│   ├── search-for-gem-versions-available-to-install.md
│   ├── set-default-tasks-for-rake-to-run.md
│   ├── set-rvm-default-ruby.md
│   ├── shift-the-month-on-a-date-object.md
│   ├── show-public-methods-with-pry.md
│   ├── show-the-bundler-location-of-an-installed-gem.md
│   ├── silence-the-output-of-a-ruby-statement-in-pry.md
│   ├── single-and-double-quoted-string-notation.md
│   ├── skip-specific-cves-when-auditing-your-bundle.md
│   ├── skip-the-front-of-an-array-with-drop.md
│   ├── specify-default-for-data-definition.md
│   ├── specify-dependencies-for-a-rake-task.md
│   ├── specify-how-random-array-sample-is.md
│   ├── split-a-float-into-its-integer-and-decimal.md
│   ├── squeeze-out-the-extra-space.md
│   ├── stack-heredocs-in-a-method-call.md
│   ├── string-interpolation-with-instance-variables.md
│   ├── summing-collections.md
│   ├── triple-equals-the-case-equality-operator.md
│   ├── turn-key-and-values-arrays-into-a-hash.md
│   ├── turning-any-class-into-an-enumerator.md
│   ├── turning-things-into-hashes.md
│   ├── uncaught-exceptions-in-pry.md
│   ├── undef-method-and-the-inheritance-hierarchy.md
│   ├── uninstall-specific-version-of-a-ruby-gem.md
│   ├── unpacking-strings-into-binary.md
│   ├── up-and-down-with-integers.md
│   ├── update-the-gemfile-bundled-with-version.md
│   ├── use-a-case-statement-as-a-cond-statement.md
│   ├── use-dotenv-in-a-non-rails-project.md
│   ├── use-tap-for-better-test-data-setup.md
│   ├── using-bcrypt-to-create-and-check-hashed-passwords.md
│   ├── what-to-do-when-you-dont-rescue.md
│   ├── who-are-my-ancestors.md
│   ├── wrap-things-in-an-array-even-hashes.md
│   └── zero-padding.md
├── sed/
│   ├── apply-multiple-substitutions-to-the-input.md
│   ├── equivalence-classes-of-repetition-metachars.md
│   ├── extract-value-from-command-output-with-sed.md
│   ├── grab-all-the-method-names-defined-in-a-ruby-file.md
│   ├── grab-the-first-line-of-a-file.md
│   ├── osx-sed-does-regex-a-bit-different.md
│   ├── output-only-lines-involved-in-a-substitution.md
│   ├── reference-a-capture-in-the-regex.md
│   ├── reference-the-full-match-in-the-replacement.md
│   └── use-an-alternative-delimiter-in-a-substitution.md
├── shell/
│   ├── check-if-the-first-argument-is-given.md
│   └── format-and-print-the-current-date-and-time.md
├── sqlite/
│   ├── display-results-in-readable-column-format.md
│   └── explore-the-database-schema.md
├── streaming/
│   └── monitor-an-audio-input-device-in-obs.md
├── tailwind/
│   ├── apply-tailwind-classes-to-existing-css-class.md
│   ├── base-styles-for-text-link.md
│   ├── disable-and-enable-a-button.md
│   ├── specify-paths-for-purging-unused-css.md
│   └── use-tailwind-typography-prose-in-dark-mode.md
├── taskfile/
│   ├── create-interactive-picker-for-set-of-subtasks.md
│   └── run-a-task-if-it-meets-criteria.md
├── tmux/
│   ├── access-past-copy-buffer-history.md
│   ├── add-bindings-to-split-panes-to-current-directory.md
│   ├── adjusting-window-pane-size.md
│   ├── break-current-pane-out-to-separate-window.md
│   ├── change-base-directory-of-existing-session.md
│   ├── change-base-directory-without-detaching.md
│   ├── change-the-default-prefix-key.md
│   ├── create-a-named-tmux-session.md
│   ├── create-a-new-session-in-a-new-server.md
│   ├── cycle-through-layouts.md
│   ├── display-titles-for-each-pane-in-a-window.md
│   ├── enabling-vi-mode.md
│   ├── get-mouse-copy-paste-working-in-kitty.md
│   ├── hiding-the-status-bar.md
│   ├── jumping-between-sessions.md
│   ├── kill-all-your-tmux-sessions.md
│   ├── kill-other-connections-to-a-session.md
│   ├── kill-the-current-session.md
│   ├── list-all-key-bindings.md
│   ├── list-processes-running-across-all-sessions.md
│   ├── list-sessions.md
│   ├── open-new-splits-to-the-current-directory.md
│   ├── open-new-window-with-a-specific-directory.md
│   ├── organizing-windows.md
│   ├── paging-up-and-down.md
│   ├── pane-killer.md
│   ├── reclaiming-the-entire-window.md
│   ├── remove-the-delay-on-the-escape-key.md
│   ├── rename-the-current-session.md
│   ├── reset-an-option-back-to-its-default-value.md
│   ├── set-environment-variables-when-creating-session.md
│   ├── set-session-specific-environment-variables.md
│   ├── set-up-forwarding-prefix-for-nested-session.md
│   ├── show-the-current-value-for-an-option.md
│   ├── swap-split-panes.md
│   ├── switch-to-a-specific-session-and-window.md
│   ├── tmux-in-your-tmux.md
│   └── toggle-between-two-common-sessions.md
├── typescript/
│   ├── add-generic-typing-to-an-anonymous-function.md
│   ├── add-types-to-an-object-destructuring.md
│   ├── compiler-checks-for-unused-params-and-variables.md
│   ├── create-a-non-empty-array-type.md
│   ├── create-a-union-type-from-an-array.md
│   ├── create-union-type-from-constants.md
│   ├── extract-object-type-keys-into-a-union-type.md
│   ├── extract-object-type-values-into-a-union-type.md
│   ├── generate-an-initial-tsconfig-file.md
│   ├── generate-inferred-type-from-zod-schema.md
│   ├── get-the-return-type-of-an-async-function.md
│   ├── ignore-all-errors-in-a-typescript-file.md
│   ├── interfaces-with-the-same-name-are-merged.md
│   ├── narrow-the-type-of-an-array-to-its-values.md
│   ├── re-export-an-imported-type.md
│   ├── set-path-alias-for-cleaner-imports.md
│   ├── type-narrowing-with-const-vs-let-strings.md
│   ├── type-narrowing-with-similarly-shaped-objects.md
│   ├── type-promise-results-with-the-awaited-type.md
│   ├── use-an-array-check-for-type-narrowing.md
│   └── zero-config-environments-for-trying-out-types.md
├── unix/
│   ├── all-the-environment-variables.md
│   ├── apply-successive-filters-to-lines-in-less.md
│   ├── authorize-a-curl-request.md
│   ├── cat-a-file-with-line-numbers.md
│   ├── cat-files-with-color-using-bat.md
│   ├── change-default-shell-for-a-user.md
│   ├── change-to-that-new-directory.md
│   ├── check-connected-stripe-account-name.md
│   ├── check-if-a-port-is-in-use.md
│   ├── check-if-command-is-executable-before-using.md
│   ├── check-ssh-key-fingerprints-of-known-hosts.md
│   ├── check-the-current-working-directory.md
│   ├── check-the-installed-openssl-version.md
│   ├── clear-the-screen.md
│   ├── combine-all-my-tils-into-a-single-file.md
│   ├── command-line-length-limitations.md
│   ├── compare-two-variables-in-a-bash-script.md
│   ├── configure-cd-to-behave-like-pushd-in-zsh.md
│   ├── convert-jpeg-to-png-with-ffmpeg.md
│   ├── convert-svg-to-favicon.md
│   ├── copying-file-contents-to-system-paste-buffer.md
│   ├── copying-nested-directories-with-ditto.md
│   ├── count-the-lines-in-a-csv-where-a-column-is-empty.md
│   ├── count-the-number-of-matches-in-a-grep.md
│   ├── count-the-number-of-ripgrep-pattern-matches.md
│   ├── count-the-number-of-words-on-a-webpage.md
│   ├── create-a-file-descriptor-with-process-substitution.md
│   ├── create-a-filename-with-the-current-date.md
│   ├── create-a-sequence-of-values-with-a-step.md
│   ├── curl-with-cookies.md
│   ├── curling-for-headers.md
│   ├── curling-with-basic-auth-credentials.md
│   ├── determine-ipv4-and-ipv6-public-ip-addresses.md
│   ├── diff-two-files-in-unified-format.md
│   ├── different-ways-to-generate-a-v4-uuid.md
│   ├── display-all-the-terminal-colors.md
│   ├── display-free-disk-space.md
│   ├── display-line-numbers-while-using-less.md
│   ├── display-the-contents-of-a-directory-as-a-tree.md
│   ├── do-a-dry-run-of-an-rsync.md
│   ├── do-not-overwrite-existing-files.md
│   ├── download-a-file-with-curl.md
│   ├── enable-multi-select-of-results-with-fzf.md
│   ├── exclude-a-command-from-the-zsh-history-file.md
│   ├── exclude-a-directory-with-find.md
│   ├── exclude-a-specific-file-from-fd-results.md
│   ├── exclude-certain-files-from-an-rsync-run.md
│   ├── figure-out-the-week-of-the-year-from-the-terminal.md
│   ├── file-type-info-with-file.md
│   ├── find-a-file-installed-by-brew.md
│   ├── find-all-files-matching-a-name-with-fd.md
│   ├── find-all-files-with-a-specific-extension-with-fd.md
│   ├── find-all-tool-version-files-containing-postgres.md
│   ├── find-and-copy-a-value-from-large-json-output.md
│   ├── find-any-dotfiles-that-modify-path-env-var.md
│   ├── find-duplicate-lines-in-a-file.md
│   ├── find-files-with-fd.md
│   ├── find-newer-files.md
│   ├── find-occurrences-of-multiple-values-with-ripgrep.md
│   ├── find-top-level-directories-matching-a-pattern.md
│   ├── fix-previous-command-with-fc.md
│   ├── fix-shim-path-after-asdf-upgrade.md
│   ├── fix-unlinked-node-binaries-with-asdf.md
│   ├── format-and-display-small-amounts-of-columnar-data.md
│   ├── forward-multiple-ports-over-ssh.md
│   ├── generate-a-saml-key-and-certificate-pair.md
│   ├── generate-a-sequence-of-numbered-items.md
│   ├── generate-base64-encoding-without-newlines.md
│   ├── generate-random-20-character-hex-string.md
│   ├── get-a-list-of-locales-on-your-system.md
│   ├── get-matching-filenames-as-output-from-grep.md
│   ├── get-the-sha256-hash-for-a-file.md
│   ├── get-the-unix-timestamp.md
│   ├── get-word-count-for-all-files-in-git-repo.md
│   ├── global-substitution-on-the-previous-command.md
│   ├── globbing-for-all-directories-in-zsh.md
│   ├── globbing-for-filenames-in-zsh.md
│   ├── gracefully-exit-a-script-with-trap.md
│   ├── grep-for-files-with-multiple-matches.md
│   ├── grep-for-files-without-a-match.md
│   ├── grep-for-multiple-patterns.md
│   ├── have-script-shellcheck-itself-when-executing.md
│   ├── hexdump-a-compiled-file.md
│   ├── ignore-a-directory-during-ripgrep-search.md
│   ├── ignore-the-alias-when-running-a-command.md
│   ├── include-ignore-files-in-ripgrep-search.md
│   ├── inspect-exif-data-for-an-image-file.md
│   ├── interactively-browse-availabile-node-versions.md
│   ├── interactively-switch-asdf-package-versions.md
│   ├── interpret-cron-schedule-from-the-cli.md
│   ├── jump-to-the-ends-of-your-shell-history.md
│   ├── kill-everything-running-on-a-certain-port.md
│   ├── killing-a-frozen-ssh-session.md
│   ├── last-argument-of-the-last-command.md
│   ├── less-with-style.md
│   ├── limit-protocols-used-in-a-curl-command.md
│   ├── list-all-fonts-on-your-machine.md
│   ├── list-all-the-enabled-zsh-options.md
│   ├── list-all-users.md
│   ├── list-files-in-a-single-column.md
│   ├── list-files-ordered-by-modification-date.md
│   ├── list-names-of-files-with-matches.md
│   ├── list-of-sessions-to-a-machine.md
│   ├── list-parent-pid-with-ps.md
│   ├── list-stats-for-a-file.md
│   ├── list-the-available-jdks.md
│   ├── list-the-pid-and-name-of-current-shell-process.md
│   ├── list-the-stack-of-remembered-directories.md
│   ├── list-txt-dns-records-for-a-domain.md
│   ├── load-env-vars-in-bash-script.md
│   ├── look-through-all-files-that-have-been-git-stashed.md
│   ├── make-direnv-less-noisy.md
│   ├── make-neovim-the-default-way-to-view-man-pages.md
│   ├── manually-pass-two-git-files-to-delta.md
│   ├── map-a-domain-to-localhost.md
│   ├── negative-look-ahead-search-with-ripgrep.md
│   ├── occupy-a-local-port-with-netcat.md
│   ├── only-show-the-matches.md
│   ├── open-the-current-command-in-an-editor.md
│   ├── output-the-last-n-bytes-of-a-large-file.md
│   ├── partial-string-matching-in-bash-scripts.md
│   ├── pid-of-the-current-shell.md
│   ├── print-a-range-of-lines-for-a-file-with-bat.md
│   ├── print-datetime-represented-by-unix-timestamp.md
│   ├── print-milliseconds-in-human-readable-format.md
│   ├── print-out-files-in-reverse.md
│   ├── print-the-current-date-in-human-readable-format.md
│   ├── produce-a-lowercase-v4-uuid.md
│   ├── provide-a-fallback-value-for-unset-parameter.md
│   ├── remove-a-directory-called-dash-p.md
│   ├── rename-a-bunch-of-files-by-constructing-mv-commands.md
│   ├── repeat-yourself.md
│   ├── replace-pattern-across-many-files-in-a-project.md
│   ├── run-a-command-repeatedly-several-times.md
│   ├── run-a-curl-command-without-the-progress-meter.md
│   ├── safely-edit-the-sudoers-file-with-vim.md
│   ├── saying-yes.md
│   ├── search-files-specific-to-a-language.md
│   ├── search-for-homebrew-packages-to-install.md
│   ├── search-history.md
│   ├── search-man-page-descriptions.md
│   ├── securely-remove-files.md
│   ├── see-where-asdf-gets-current-tool-version.md
│   ├── set-the-asdf-package-version-for-a-single-shell.md
│   ├── shorten-ssh-commands-with-aliases.md
│   ├── show-a-file-preview-when-searching-with-fzf.md
│   ├── show-disk-usage-for-the-current-directory.md
│   ├── show-the-size-of-everything-in-a-directory.md
│   ├── show-tree-view-of-processes-and-subprocesses.md
│   ├── skip-paging-if-output-fits-on-screen-with-less.md
│   ├── sort-in-numerical-order.md
│   ├── specify-the-language-for-a-file-with-bat.md
│   ├── ssh-escape-sequences.md
│   ├── ssh-with-a-specific-key.md
│   ├── ssh-with-port-forwarding.md
│   ├── switch-versions-of-a-brew-formula.md
│   ├── tell-direnv-to-load-the-env-file.md
│   ├── touch-access-and-modify-times-individually.md
│   ├── transform-text-to-lowercase.md
│   ├── type-fewer-paths-with-brace-expansion.md
│   ├── undo-changes-made-to-current-terminal-prompt.md
│   ├── undo-some-command-line-editing.md
│   ├── unrestrict-where-ripgrep-searches.md
│   ├── update-package-versions-known-by-asdf-plugin.md
│   ├── use-fzf-to-change-directories.md
│   ├── use-negative-lookbehind-matching-with-ripgrep.md
│   ├── use-regex-pattern-matching-with-grep.md
│   ├── view-a-web-page-in-the-terminal.md
│   ├── view-the-source-for-a-brew-formula.md
│   ├── watch-the-difference.md
│   ├── watch-this-run-repeatedly.md
│   ├── where-are-the-binaries.md
│   ├── xargs-default-command-is-echo.md
│   └── xargs-ignores-alias-substitution-by-default.md
├── vercel/
│   ├── add-web-server-layer-redirects.md
│   ├── deploy-an-app-without-pushing-an-empty-commit.md
│   ├── naming-of-the-vercel-config-file.md
│   ├── pin-specific-pnpm-version-for-builds.md
│   └── share-development-environment-variables-via-cli.md
├── vim/
│   ├── aborting-git-commits-and-rebases.md
│   ├── absolute-and-relative-line-numbers.md
│   ├── add-a-file-without-loading-it.md
│   ├── add-custom-dictionary-words.md
│   ├── all-the-ways-to-write-and-quit-in-vim.md
│   ├── almost-the-end-of-the-line.md
│   ├── alternate-files-with-vim-rails.md
│   ├── always-keep-the-gutter-open.md
│   ├── amend-commits-with-fugitive.md
│   ├── backspace-options.md
│   ├── beginning-and-end-of-previous-change.md
│   ├── blank-lines-above-and-below.md
│   ├── breaking-the-undo-sequence.md
│   ├── buffer-time-travel.md
│   ├── build-and-install-a-go-program.md
│   ├── bypass-on-save-tooling-when-writing-file.md
│   ├── case-aware-substitution-with-vim-abolish.md
│   ├── case-insensitive-substitution.md
│   ├── center-the-cursor.md
│   ├── check-for-an-executable.md
│   ├── check-your-current-color-scheme.md
│   ├── clear-out-the-jump-list.md
│   ├── close-all-other-splits.md
│   ├── close-all-other-windows.md
│   ├── close-the-current-buffer.md
│   ├── coerce-the-current-filetype.md
│   ├── coercing-casing-with-vim-abolish.md
│   ├── configure-fzf-to-use-fd-for-file-finding.md
│   ├── count-the-number-of-matches.md
│   ├── create-a-new-directory-in-netrw.md
│   ├── create-a-new-file-in-a-new-directory.md
│   ├── creating-non-existent-directories.md
│   ├── default-netrw-to-tree-liststyle.md
│   ├── delete-every-other-line.md
│   ├── delete-lines-that-match-a-pattern.md
│   ├── delete-to-the-end-of-the-line.md
│   ├── deleting-buffers-in-bufexplorer.md
│   ├── deleting-directories-of-files-from-netrw.md
│   ├── detect-if-you-are-on-a-mac.md
│   ├── difference-between-wq-and-x.md
│   ├── display-word-count-stats.md
│   ├── edges-of-the-selection.md
│   ├── edit-a-file-at-a-specific-line-number.md
│   ├── edit-a-file-starting-on-the-last-line.md
│   ├── end-of-the-word.md
│   ├── escaping-terminal-mode-in-an-nvim-terminal.md
│   ├── filter-lines-through-an-external-program.md
│   ├── find-the-nth-character-position-in-a-file.md
│   ├── fix-the-spelling-of-a-word.md
│   ├── fold-a-visual-selection-and-expand-it-back.md
│   ├── for-when-that-escape-key-is-hard-to-reach.md
│   ├── format-long-lines-to-text-width.md
│   ├── from-ruby-variables-to-javascript-variables.md
│   ├── generate-and-edit-rails-migration.md
│   ├── get-the-pid-of-the-session.md
│   ├── go-back-to-the-previous-window.md
│   ├── go-to-beginning-and-end-of-line.md
│   ├── go-to-file-with-line-number.md
│   ├── grepping-through-the-vim-help-files.md
│   ├── head-of-file-name.md
│   ├── help-for-non-normal-mode-features.md
│   ├── highlighting-search-matches.md
│   ├── horizontal-to-vertical-and-back-again.md
│   ├── increment-all-the-numbers.md
│   ├── incremental-searching.md
│   ├── interact-with-the-alternate-file.md
│   ├── interactive-buffer-list.md
│   ├── joining-lines-together.md
│   ├── jump-back-to-the-latest-jump-position.md
│   ├── jump-between-and-stage-git-hunks-with-fugitive.md
│   ├── jump-to-matching-pair.md
│   ├── jump-to-the-next-misspelling.md
│   ├── list-all-buffers.md
│   ├── list-autocmds-configured-for-the-current-buffer.md
│   ├── list-of-plugins.md
│   ├── load-a-directory-of-files-into-the-buffer-list.md
│   ├── make-directories-for-the-current-file.md
│   ├── marks-across-vim-sessions.md
│   ├── match-the-beginning-and-end-of-words.md
│   ├── moving-to-a-specific-line.md
│   ├── navigate-to-the-nth-column-on-a-line.md
│   ├── navigating-by-blank-lines.md
│   ├── netrw-listing-styles.md
│   ├── next-modified-buffer.md
│   ├── normal-mode-binding-to-just-quit.md
│   ├── open-a-tag-in-a-split-window.md
│   ├── open-an-unnamed-buffer.md
│   ├── open-fzf-result-in-a-split.md
│   ├── open-routes-file-with-vim-rails.md
│   ├── open-the-directory-of-the-current-file.md
│   ├── open-the-fugitive-git-summary-window.md
│   ├── open-the-gemfile.md
│   ├── open-the-latest-rails-migration.md
│   ├── open-the-selected-lines-in-github-with-gbrowse.md
│   ├── open-vim-to-a-tag-definition.md
│   ├── opening-a-url.md
│   ├── opening-man-pages-in-vim.md
│   ├── paste-a-register-from-insert-mode.md
│   ├── preventing-typos-with-abbreviations.md
│   ├── previous-buffer.md
│   ├── previous-visual-selection.md
│   ├── print-the-relative-path-of-the-current-file.md
│   ├── print-version-information.md
│   ├── quick-file-info.md
│   ├── quick-man-pages.md
│   ├── quick-quickfix-list-navigation.md
│   ├── quickly-fix-a-misspelled-word.md
│   ├── quickly-switch-to-a-buffer-by-number.md
│   ├── quit-when-there-is-an-argument-list.md
│   ├── read-in-the-contents-of-a-rails-file.md
│   ├── reindenting-your-code.md
│   ├── rename-a-file-through-netrw.md
│   ├── rename-current-file.md
│   ├── repeat-the-previous-change.md
│   ├── repeating-characters.md
│   ├── replace-a-character.md
│   ├── reset-target-tslime-pane.md
│   ├── reverse-a-group-of-lines.md
│   ├── reword-a-commit-message-with-fugitive.md
│   ├── rotate-everything-by-13-letters.md
│   ├── rotate-the-orientation-of-split-windows.md
│   ├── running-bundle-with-vim-bundler.md
│   ├── scrolling-relative-to-the-cursor.md
│   ├── search-backward-through-a-file.md
│   ├── searching-for-hex-digits.md
│   ├── select-several-results-from-an-fzf-search.md
│   ├── set-end-of-line-markers.md
│   ├── set-your-color-scheme.md
│   ├── setting-filetype-with-modelines.md
│   ├── show-all-syntax-highlighting-rules.md
│   ├── show-matching-entries-for-help.md
│   ├── source-original-vimrc-when-using-neovim.md
│   ├── specify-the-line-height-of-the-quick-fix-window.md
│   ├── split-different.md
│   ├── split-the-current-window.md
│   ├── splitting-for-new-files.md
│   ├── sum-a-bunch-of-numbers-in-the-current-file.md
│   ├── swap-occurrences-of-two-words.md
│   ├── swap-the-position-of-two-split-windows.md
│   ├── swapping-split-windows.md
│   ├── switch-moving-end-of-visual-selection.md
│   ├── tabs-to-spaces.md
│   ├── the-black-hole-register.md
│   ├── the-vim-info-file.md
│   ├── toggle-absolute-and-relative-paths-in-bufexplorer.md
│   ├── toggling-syntax-highlighting.md
│   ├── turning-of-search-highlighting.md
│   ├── unloading-a-buffer.md
│   ├── use-active-window-with-bufexplorer.md
│   ├── use-the-terminal-inside-a-vim-session.md
│   ├── using-vim-surround-with-a-visual-selection.md
│   ├── verbose-commits-with-fugitive.md
│   ├── view-commit-history-of-a-file.md
│   ├── view-the-current-file-in-github.md
│   ├── viewing-man-pages-with-man-vim.md
│   ├── vim-without-the-extras.md
│   ├── what-is-on-the-runtime-path.md
│   ├── whole-line-auto-completion.md
│   └── wrap-with-some-room.md
├── vscode/
│   ├── add-the-vscode-cli-to-your-path.md
│   ├── advance-through-search-results.md
│   ├── enable-breadcrumbs-for-version-126-release.md
│   ├── find-the-location-of-user-settings-json-file.md
│   ├── jump-to-problems-in-the-current-file.md
│   ├── open-an-integrated-terminal-window.md
│   ├── open-file-on-remote-like-github.md
│   ├── pop-open-the-quick-fix-window.md
│   ├── step-through-project-wide-search-results.md
│   ├── synchronize-vim-clipboard-with-system-clipboard.md
│   ├── toggle-between-terminals.md
│   └── turn-off-display-of-tabs-for-files.md
├── webpack/
│   ├── better-module-imports-with-aliases.md
│   ├── debugging-with-full-source-maps.md
│   ├── run-eslint-as-a-preloader.md
│   ├── specify-port-of-cra-webpack-dev-server.md
│   └── use-a-specific-config-file.md
├── workflow/
│   ├── access-1password-credential-from-cli.md
│   ├── add-hotkeys-for-specific-raycast-extensions.md
│   ├── add-subscriber-to-kit-form-via-api.md
│   ├── add-subtitles-to-existing-mux-video-asset.md
│   ├── allow-key-repeating-with-cursor.md
│   ├── break-justfile-into-separate-hidden-steps.md
│   ├── change-window-name-in-iterm.md
│   ├── configure-email-redirect-with-cloudflare.md
│   ├── control-media-with-drop-keyboard.md
│   ├── convert-an-epub-document-to-pdf-on-mac.md
│   ├── create-a-local-sanity-dataset-backup.md
│   ├── create-a-public-url-for-a-local-server.md
│   ├── create-todo-items-in-logseq.md
│   ├── do-project-time-tracking-from-the-cli.md
│   ├── enable-dev-tools-for-safari.md
│   ├── forward-stripe-events-to-local-server.md
│   ├── get-url-for-github-user-profile-photo.md
│   ├── get-your-public-ip-address.md
│   ├── import-a-github-project-into-codesandbox.md
│   ├── interactively-kill-a-process-with-fkill.md
│   ├── open-slacks-keyboard-shortcuts-reference-panel.md
│   ├── pop-videos-out-as-picture-in-picture.md
│   ├── prune-the-excess-from-node-modules.md
│   ├── rotate-an-image-to-be-oriented-upright.md
│   ├── see-overlaps-for-a-set-of-time-zones.md
│   ├── send-a-message-to-a-discord-channel.md
│   ├── send-a-pdf-to-your-kindle.md
│   ├── set-recurring-reminders-in-slack.md
│   ├── show-linting-errors-in-zed.md
│   ├── temporarily-hide-cleanshot-x-capture-previews.md
│   ├── toggle-between-stories-in-storybook.md
│   ├── update-asdf-plugins-with-latest-package-versions.md
│   ├── view-a-nicely-formatted-csv-in-terminal.md
│   └── view-the-pr-for-the-current-github-branch.md
├── xstate/
│   ├── always-use-inline-functions-with-assign.md
│   ├── custom-jest-matcher-for-xstate-machine-states.md
│   ├── define-event-that-does-internal-self-transition.md
│   ├── events-stop-propagating-once-handled.md
│   ├── inline-actions-vs-actions-in-machine-options.md
│   ├── make-immediate-and-delayed-transitions.md
│   ├── simple-states-and-composite-states.md
│   ├── start-a-machine-in-a-specific-state.md
│   └── use-an-xstate-machine-with-react.md
├── yaml/
│   ├── create-multi-line-strings-without-the-line-breaks.md
│   └── yaml-is-a-superset-of-json.md
├── zod/
│   ├── check-if-an-object-is-empty-with-zod.md
│   ├── create-a-schema-that-matches-on-any-object.md
│   ├── create-union-type-of-nearly-identical-objects.md
│   ├── get-readable-errors-from-schema-parse.md
│   ├── incorporate-existing-type-into-zod-schema.md
│   └── set-custom-error-message-for-nonempty-array.md
└── zsh/
    ├── a-better-way-to-reload-zsh-configuration.md
    ├── add-to-the-path-via-path-array.md
    ├── create-and-jump-into-a-directory.md
    ├── link-a-scalar-to-an-array.md
    └── use-a-space-to-exclude-command-from-history.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitmodules
================================================
[submodule "notes"]
	path = notes
	url = git@github.com:jbranchaud/til-notes-private.git
	branch = main
	ignore = all


================================================
FILE: .vimrc
================================================
" vimrc for til

" In order for this file to be loaded by Vim, the main `.vimrc` file must
" contain `set exrc` and optionally `set secure`. Without those lines, Vim
" will ignore this file.

function! CountTILs()
    execute '%s/^- \[//n'
endfunction

nnoremap <leader>c :call CountTILs()<cr>

augroup DisableMarkdownFormattingForTILReadme
    autocmd!
    autocmd BufRead ~/code/til/README.md autocmd! Format
augroup END

" local til_readme_group = vim.api.nvim_create_augroup('DisableMarkdownFormattingForTILReadme', { clear = true })
" vim.api.nvim_create_autocmd('BufRead', {
"   command = 'autocmd! Format',
"   group = til_readme_group,
"   pattern = vim.fn.expand '~/code/til/README.md',
" })


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing

Thanks for wanting to contribute to my TIL repository!

I welcome submissions that fix typos and correct wrong or misleading
content. All you need to do is fork the repo, make a single commit with a
concise, descriptive message, and then submit it as a pull request.

If you are interested in contributing your own TIL content, I encourage you
to head on over to
[til-collective](https://github.com/til-collective/til-collective) and make your
submission there. As for this repo, I'd like to maintain it as my own
personal learning journey.

If you have any questions or suggestions, feel free to open an issue.


================================================
FILE: LICENSE
================================================
Copyright (c) 2015 Josh Branchaud

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: README.md
================================================
# TIL

> Today I Learned

A collection of concise write-ups on small things I learn day to day across a
variety of languages and technologies. These are things that don't really
warrant a full blog post. These are things I've picked up by [Learning In
Public™](https://dev.to/jbranchaud/how-i-built-a-learning-machine-45k9) and
working across different projects via [VisualMode](https://www.visualmode.dev/).

For a steady stream of TILs, [sign up for my newsletter](https://visualmode.kit.com/newsletter).

_1761 TILs and counting..._

See some of the other learning resources I work on:

- [Get Started with Vimium](https://egghead.io/courses/get-started-with-vimium~3t5f7)
- [Ruby Operator Lookup](https://www.visualmode.dev/ruby-operators)
- [Vim Un-Alphabet](https://www.youtube.com/playlist?list=PL46-cKSxMYYCMpzXo6p0Cof8hJInYgohU)

If you've learned something here, support my efforts writing daily TILs by
[buying me a coffee](https://buymeacoffee.com/jbranchaud) 💜

---

### Categories

* [Ack](#ack)
* [Ansible](#ansible)
* [Astro](#astro)
* [AWS](#aws)
* [Bash](#bash)
* [Brew](#brew)
* [Chrome](#chrome)
* [Claude Code](#claude-code)
* [Clojure](#clojure)
* [CSS](#css)
* [Deno](#deno)
* [Devops](#devops)
* [Docker](#docker)
* [Drizzle](#drizzle)
* [Elixir](#elixir)
* [Gatsby](#gatsby)
* [Git](#git)
* [GitHub](#github)
* [GitHub Actions](#github-actions)
* [Go](#go)
* [GROQ](#groq)
* [Heroku](#heroku)
* [HTML](#html)
* [HTTP](#http)
* [Inngest](#inngest)
* [Internet](#internet)
* [Java](#java)
* [JavaScript](#javascript)
* [jj](#jj)
* [jq](#jq)
* [Kitty](#kitty)
* [Linux](#linux)
* [LLM](#llm)
* [Mac](#mac)
* [Mise](#mise)
* [MongoDB](#mongodb)
* [MySQL](#mysql)
* [Neovim](#neovim)
* [Netlify](#netlify)
* [NextAuth.js](#next-auth)
* [Next.js](#nextjs)
* [Phoenix](#phoenix)
* [Planetscale](#planetscale)
* [pnpm](#pnpm)
* [PostgreSQL](#postgresql)
* [Prisma](#prisma)
* [Python](#python)
* [Rails](#rails)
* [React](#react)
* [React Native](#react-native)
* [React Testing Library](#react-testing-library)
* [ReasonML](#reasonml)
* [Remix](#remix)
* [RSpec](#rspec)
* [Ruby](#ruby)
* [sed](#sed)
* [Shell](#shell)
* [SQLite](#sqlite)
* [Streaming](#streaming)
* [Tailwind CSS](#tailwind-css)
* [Taskfile](#taskfile)
* [tmux](#tmux)
* [TypeScript](#typescript)
* [Unix](#unix)
* [Vercel](#vercel)
* [Vim](#vim)
* [VSCode](#vscode)
* [Webpack](#webpack)
* [Workflow](#workflow)
* [XState](#xstate)
* [YAML](#yaml)
* [Zod](#zod)
* [Zsh](#zsh)

---

### Ack

- [ack --bar](ack/ack-bar.md)
- [Case-Insensitive Search](ack/case-insensitive-search.md)
- [List Available File Types](ack/list-available-file-types.md)

### Ansible

- [Loop Over A List Of Dictionaries](ansible/loop-over-a-list-of-dictionaries.md)

### Astro

- [Generate Types For A Content Collection](astro/generate-types-for-a-content-collection.md)
- [Markdown Files Are Of Type MarkdownInstance](astro/markdown-files-are-of-type-markdown-instance.md)

### AWS

- [AWS CLI Requires Groff Executable](aws/aws-cli-requires-groff-executable.md)
- [Find And Follow Server Logs](aws/find-and-follow-server-logs.md)
- [List RDS Snapshots With Matching Identifier Prefix](aws/list-rds-snapshots-with-matching-identifier-prefix.md)
- [Output CLI Results In Different Formats](aws/output-cli-results-in-different-formats.md)
- [Sign Up User With Email And Password](aws/sign-up-user-with-email-and-password.md)
- [SSH Into An ECS Container](aws/ssh-into-an-ecs-container.md)
- [Turn Off Output Pager For A Command](aws/turn-off-output-pager-for-a-command.md)
- [Use Specific AWS Profile With CLI](aws/use-specific-aws-profile-with-cli.md)

### Bash

- [Edit The Current Command Prompt](bash/edit-the-current-command-prompt.md)

### Brew

- [Clean Up Your Brew Installations](brew/clean-up-your-brew-installations.md)
- [Configure Brew Environment Variables](brew/configure-brew-environment-variables.md)
- [Export List Of Everything Installed By Brew](brew/export-list-of-everything-installed-by-brew.md)
- [Install From Nonstandard Brewfile](brew/install-from-nonstandard-brewfile.md)
- [Install Go Packages In Brewfile](brew/install-go-packages-in-brewfile.md)
- [List All Services Managed By Brew](brew/list-all-services-managed-by-brew.md)

### Chrome

- [Access A Value Logged To The Console](chrome/access-a-value-logged-to-the-console.md)
- [Chrome Supports Many Unix Keyboard Shortcuts](chrome/chrome-supports-many-unix-keyboard-shortcuts.md)
- [Copy Some Data From The Console](chrome/copy-some-data-from-the-console.md)
- [Duplicate The Current Tab](chrome/duplicate-the-current-tab.md)
- [Easier Access To Network Throttling Controls](chrome/easier-access-to-network-throttling-controls.md)
- [Keybinding To Focus The Address Bar](chrome/keybinding-to-focus-the-address-bar.md)
- [Open Current Tab In New Window With Vimium](chrome/open-current-tab-in-new-window-with-vimium.md)
- [Pause JavaScript From The Source DevTools Panel](chrome/pause-javascript-from-the-source-devtools-panel.md)
- [Navigate The Browser History With Vimium](chrome/navigate-the-browser-history-with-vimium.md)
- [Pretty Print Tabular Data](chrome/pretty-print-tabular-data.md)
- [Reference The Selected Node](chrome/reference-the-selected-node.md)
- [Search Tabs With The Vimium Vomnibar](chrome/search-tabs-with-the-vimium-vomnibar.md)
- [Selecting DOM Elements Faster Than Ever](chrome/selecting-dom-elements-faster-than-ever.md)
- [Simulating Various Connection Speeds](chrome/simulating-various-connection-speeds.md)
- [Toggle Device Mode](chrome/toggle-device-mode.md)
- [Toggle Open The Console Drawer](chrome/toggle-open-the-console-drawer.md)
- [Trigger Commands From The Devtools Command Palette](chrome/trigger-commands-from-the-devtools-command-palette.md)
- [View Network Traffic For New Tabs](chrome/view-network-traffic-for-new-tabs.md)

### Claude Code

- [Allow Edits From The Start](claude-code/allow-edits-from-the-start.md)
- [Monitor Usage Limits From CLI](claude-code/monitor-usage-limits-from-cli.md)
- [Open Current Prompt In Default Editor](claude-code/open-current-prompt-in-default-editor.md)
- [Resume Specific Session](claude-code/resume-specific-session.md)

### Clojure

- [Aggregation Using merge-with](clojure/aggregation-using-merge-with.md)
- [Argument Requirements For A Function](clojure/argument-requirements-for-a-function.md)
- [Combinations Of Items From A Sequence](clojure/combinations-of-items-from-a-sequence.md)
- [Define Something Only Once](clojure/define-something-only-once.md)
- [Evaluate One Liners With lein-exec](clojure/evaluate-one-liners-with-lein-exec.md)
- [Expanding Macros](clojure/expanding-macros.md)
- [Get The Value Of An Environment Variable](clojure/get-the-value-of-an-environment-variable.md)
- [List Functions For A Namespace](clojure/list-functions-for-a-namespace.md)
- [Load A File Into The REPL](clojure/load-a-file-into-the-repl.md)
- [Mapping With An Index](clojure/mapping-with-an-index.md)
- [Open JavaDocs](clojure/open-javadocs.md)
- [Pretty Print The Last Thing](clojure/pretty-print-the-last-thing.md)
- [Quick Clojure Docs](clojure/quick-clojure-docs.md)
- [Reductions](clojure/reductions.md)
- [Set Max Heap Size](clojure/set-max-heap-size.md)
- [Specify the Directory of a Shell Command](clojure/specify-the-directory-of-a-shell-command.md)
- [Splitting On Whitespace](clojure/splitting-on-whitespace.md)
- [Swap Two Items in a Vector](clojure/swap-two-items-in-a-vector.md)
- [Try A Clojure Project In The REPL](clojure/try-a-clojure-project-in-the-repl.md)
- [Type of Anything](clojure/type-of-anything.md)
- [When Overflow Is Desired](clojure/when-overflow-is-desired.md)

### CSS

- [Add Fab Icons To Your Site With FontAwesome 5](css/add-fab-icons-to-your-site-with-fontawesome-5.md)
- [Add Line Numbers To A Code Block With Counter](css/add-line-numbers-to-a-code-block-with-counter.md)
- [Animate Smoothly Between Two Background Colors](css/animate-smoothly-between-two-background-colors.md)
- [Apply Multiple Box Shadows To Single Element](css/apply-multiple-box-shadows-to-single-element.md)
- [Apply Styles Based On Dark-Mode Preferences](css/apply-styles-based-on-dark-mode-preferences.md)
- [Apply Styles To The Last Child Of A Specific Type](css/apply-styles-to-the-last-child-of-a-specific-type.md)
- [Change The Orientation Of An Image](css/change-the-orientation-of-an-image.md)
- [Circular Icons With A Massive Border Radius](css/circular-icons-with-a-massive-border-radius.md)
- [Clean Up Repetition With :is() Pseudo-Class](css/clean-up-repetition-with-is-pseudo-class.md)
- [Conditional Styling For Unsupported CSS Features](css/conditional-styling-for-unsupported-css-features.md)
- [Create A Pulsing Background With CSS Animation](css/create-a-pulsing-background-with-css-animation.md)
- [Define CSS Custom Properties With CSS Variables](css/define-css-custom-properties-with-scss-variables.md)
- [Define HSL Colors With Alpha Values](css/define-hsl-colors-with-alpha-values.md)
- [Display Responsive iframe Maintaining Aspect Ratio](css/display-responsive-iframe-maintaining-aspect-ratio.md)
- [Dry Up SCSS With Mixins](css/dry-up-scss-with-mixins.md)
- [Filter Blur Requires Expensive Calculation](css/filter-blur-requires-expensive-calculation.md)
- [Give Elements The Same Width With Flexbox](css/give-elements-the-same-width-with-flexbox.md)
- [Let Pointer Events Pass Through An Element](css/let-pointer-events-pass-through-an-element.md)
- [Lighten And Darken With CSS Brightness Filter](css/lighten-and-darken-with-css-brightness-filter.md)
- [Lighten And Darken With SCSS](css/lighten-and-darken-with-scss.md)
- [Make A Block Of Text Respect New Lines](css/make-a-block-of-text-respect-new-lines.md)
- [Parameterized SCSS Mixins](css/parameterized-scss-mixins.md)
- [Prevent Invisible Elements From Being Clicked](css/prevent-invisible-elements-from-being-clicked.md)
- [:root Has Higher Specificity Than html](css/root-has-higher-specificity-than-html.md)
- [Style A Background With A Linear Gradient](css/style-a-background-with-a-linear-gradient.md)
- [Using Maps In SCSS](css/using-maps-in-scss.md)

### Cursor

- [Allow Cursor To Be Launched From CLI](cursor/allow-cursor-to-be-launched-from-cli.md)

### Deno

- [Read In The Contents Of A File](deno/read-in-the-contents-of-a-file.md)

### Devops

- [Aliasing An Ansible Host](devops/aliasing-an-ansible-host.md)
- [Allow Cross-Origin Requests To Include Cookies](devops/allow-cross-origin-requests-to-include-cookies.md)
- [Allow HTTPS Through Your UFW Firewall](devops/allow-https-through-your-ufw-firewall.md)
- [Check For Cached Site Assocation File For iOS](devops/check-for-cached-site-association-file-for-ios.md)
- [Check The Status of All Services](devops/check-the-status-of-all-services.md)
- [Check The Syntax Of nginx Files](devops/check-the-syntax-of-nginx-files.md)
- [Connect To An RDS PostgreSQL Database](devops/connect-to-an-rds-postgresql-database.md)
- [Default Rails Deploy Script On Hatchbox](devops/default-rails-deploy-script-on-hatchbox.md)
- [Determine The IP Address Of A Domain](devops/determine-the-ip-address-of-a-domain.md)
- [Hatchbox Exports Env Vars With asdf](devops/hatchbox-exports-env-vars-with-asdf.md)
- [Path Of The Packets](devops/path-of-the-packets.md)
- [Push Non-master Branch To Heroku](devops/push-non-master-branch-to-heroku.md)
- [Reload The nginx Configuration](devops/reload-the-nginx-configuration.md)
- [Resolve The Public IP Of A URL](devops/resolve-the-public-ip-of-a-url.md)
- [Running Out Of inode Space](devops/running-out-of-inode-space.md)
- [Set, Get, And Unset Env Vars With Dokku](devops/set-get-and-unset-env-vars-with-dokku.md)
- [Set Up Domain For Hatchbox Rails App](devops/set-up-domain-for-hatchbox-rails-app.md)
- [SSH Into A Docker Container](devops/ssh-into-a-docker-container.md)
- [SSL Certificates Can Cover Multiple Domains](devops/ssl-certificates-can-cover-multiple-domains.md)
- [Wipe A Heroku Postgres Database](devops/wipe-a-heroku-postgres-database.md)

### Docker

- [Check Postgres Version Running In Docker Container](docker/check-postgres-version-running-in-docker-container.md)
- [Configure Different Host And Container Ports](docker/configure-different-host-and-container-ports.md)
- [List Running Docker Containers](docker/list-running-docker-containers.md)
- [Prevent Containers From Running On Startup](docker/prevent-containers-from-running-on-startup.md)
- [Run A Basic PostgreSQL Server In Docker](docker/run-a-basic-postgresql-server-in-docker.md)
- [Run SQL Script Against Postgres Container](docker/run-sql-script-against-postgres-container.md)

### Drizzle

- [Create bigint Identity Column For Primary Key](drizzle/create-bigint-identity-column-for-primary-key.md)
- [Drizzle Tracks Migrations In A Log Table](drizzle/drizzle-tracks-migrations-in-a-log-table.md)
- [Get Fields For Inserted Row](drizzle/get-fields-for-inserted-row.md)

### Elixir

- [All Values For A Key In A Keyword List](elixir/all-values-for-a-key-in-a-keyword-list.md)
- [Append To A Keyword List](elixir/append-to-a-keyword-list.md)
- [Assert An Exception Is Raised](elixir/assert-an-exception-is-raised.md)
- [Binary Representation Of A String](elixir/binary-representation-of-a-string.md)
- [Check For A Substring Match](elixir/check-for-a-substring-match.md)
- [Check List Membership](elixir/check-list-membership.md)
- [Comparing DateTime Structs](elixir/comparing-datetime-structs.md)
- [Compute Intermediate Values In A With Construct](elixir/compute-intermediate-values-in-a-with-construct.md)
- [Compute md5 Digest Of A String](elixir/compute-md5-digest-of-a-string.md)
- [Counting Records With Ecto](elixir/counting-records-with-ecto.md)
- [Create A Date With The Date Sigil](elixir/create-a-date-with-the-date-sigil.md)
- [Create A List Of Atoms](elixir/create-a-list-of-atoms.md)
- [Creating A PID](elixir/creating-a-pid.md)
- [Creating Indexes With Ecto](elixir/creating-indexes-with-ecto.md)
- [Defining Multiple Clauses In An Anonymous Function](elixir/defining-multiple-clauses-in-an-anonymous-function.md)
- [Determine The Latest Release Of A Hex Package](elixir/determine-the-latest-release-of-a-hex-package.md)
- [Do You Have The Time?](elixir/do-you-have-the-time.md)
- [Do You Have The Time? - Part 2](elixir/do-you-have-the-time-part-2.md)
- [Documentation Lookup With Vim And Alchemist](elixir/documentation-lookup-with-vim-and-alchemist.md)
- [Dynamically Generating Atoms](elixir/dynamically-generating-atoms.md)
- [Execute Raw SQL In An Ecto Migration](elixir/execute-raw-sql-in-an-ecto-migration.md)
- [Expose Internal Representation](elixir/expose-internal-representation.md)
- [Include Captures With String.split](elixir/include-captures-with-string-split.md)
- [Inspecting The Process Message Queue](elixir/inspecting-the-process-message-queue.md)
- [List Functions For A Module](elixir/list-functions-for-a-module.md)
- [Listing Files In IEx](elixir/listing-files-in-iex.md)
- [Match On A Map In A With Construct](elixir/match-on-a-map-in-a-with-construct.md)
- [Passing Around And Using Modules](elixir/passing-around-and-using-modules.md)
- [Pattern Matching In Anonymous Functions](elixir/pattern-matching-in-anonymous-functions.md)
- [Pipe Into A Case Statement](elixir/pipe-into-a-case-statement.md)
- [Quitting IEx](elixir/quitting-iex.md)
- [Range Into List Using Comprehensions](elixir/range-into-list-using-comprehensions.md)
- [Refer To A Module Within Itself](elixir/refer-to-a-module-within-itself.md)
- [Referencing Values In IEx's History](elixir/referencing-values-in-iexs-history.md)
- [Remove One List From Another](elixir/remove-one-list-from-another.md)
- [Replace Duplicates In A Keyword List](elixir/replace-duplicates-in-a-keyword-list.md)
- [Requiring Keys For Structs](elixir/requiring-keys-for-structs.md)
- [Reversing A List](elixir/reversing-a-list.md)
- [Reversing A List - Part 2](elixir/reversing-a-list-part-2.md)
- [Root Directory Of A Project](elixir/root-directory-of-a-project.md)
- [Round Floats To Integers](elixir/round-floats-to-integers.md)
- [Run ExUnit Tests In A Deterministic Order](elixir/run-exunit-tests-in-a-deterministic-order.md)
- [Run The Test At A Specific Line Number](elixir/run-the-test-at-a-specific-line-number.md)
- [Same Functions Should Be Grouped Together](elixir/same-functions-should-be-grouped-together.md)
- [Skip A Specific Test](elixir/skip-a-specific-test.md)
- [String Interpolation With Just About Anything](elixir/string-interpolation-with-just-about-anything.md)
- [Unique Indexes With Ecto](elixir/unique-indexes-with-ecto.md)
- [Updating Values In A Map](elixir/updating-values-in-a-map.md)
- [Using When Clauses In A With Construct](elixir/using-when-clauses-in-a-with-construct.md)
- [Virtual Fields With Ecto Schemas](elixir/virtual-fields-with-ecto-schemas.md)
- [When Things Don't Match The With Statements](elixir/when-things-dont-match-the-with-statements.md)
- [Word Lists For Atoms](elixir/word-lists-for-atoms.md)

### Gatsby

- [Add JavaScript To Body Of The Document](gatsby/add-javascript-to-body-of-the-document.md)

### Git

- [Accessing a Lost Commit](git/accessing-a-lost-commit.md)
- [Add A Range Of Filename To gitignore](git/add-a-range-of-filenames-to-gitignore.md)
- [Add Only Tracked Files From A Directory](git/add-only-tracked-files-from-a-directory.md)
- [Amend Author Of Previous Commit](git/amend-author-of-previous-commit.md)
- [Auto-Squash Those Fixup Commits](git/auto-squash-those-fixup-commits.md)
- [Better Diffs With Delta](git/better-diffs-with-delta.md)
- [Caching Credentials](git/caching-credentials.md)
- [Change The Start Point Of A Branch](git/change-the-start-point-of-a-branch.md)
- [Check How A File Is Being Ignored](git/check-how-a-file-is-being-ignored.md)
- [Check If A File Has Changed In A Script](git/check-if-a-file-has-changed-in-a-script.md)
- [Check If A File Is Under Version Control](git/check-if-a-file-is-under-version-control.md)
- [Checking Commit Ancestry](git/checking-commit-ancestry.md)
- [Checkout Old Version Of A File](git/checkout-old-version-of-a-file.md)
- [Checkout Previous Branch](git/checkout-previous-branch.md)
- [Cherry Pick A Range Of Commits](git/cherry-pick-a-range-of-commits.md)
- [Cherry Pick Multiple Commits At Once](git/cherry-pick-multiple-commits-at-once.md)
- [Clean Out All Local Branches](git/clean-out-all-local-branches.md)
- [Clean Out Working Copy With Patched Restore](git/clean-out-working-copy-with-patched-restore.md)
- [Clean Up Old Remote Tracking References](git/clean-up-old-remote-tracking-references.md)
- [Clear Entries From Git Stash](git/clear-entries-from-git-stash.md)
- [Clone A Repo Just For The Files, Without History](git/clone-a-repo-just-for-the-files-without-history.md)
- [Clone A Repo Locally From .git](git/clone-a-repo-locally-from-git.md)
- [Configure Global gitignore File](git/configure-global-gitignore-file.md)
- [Configuring The Pager](git/configuring-the-pager.md)
- [Copy A File From Another Branch](git/copy-a-file-from-another-branch.md)
- [Count All Files Of Specific Type Tracked By Git](git/count-all-files-of-specific-type-tracked-by-git.md)
- [Count Number Of Commits On A Branch](git/count-number-of-commits-on-a-branch.md)
- [Create A New Branch With Git Switch](git/create-a-new-branch-with-git-switch.md)
- [Delete All Untracked Files](git/delete-all-untracked-files.md)
- [Determine Absolute Path Of Top-Level Project Directory](git/determine-absolute-path-of-top-level-project-directory.md)
- [Determine The Hash Id For A Blob](git/determine-the-hash-id-for-a-blob.md)
- [Diffing With Patience](git/diffing-with-patience.md)
- [Dropping Commits With Git Rebase](git/dropping-commits-with-git-rebase.md)
- [Dry Runs in Git](git/dry-runs-in-git.md)
- [Exclude A File From A Diff Output](git/exclude-a-file-from-a-diff-output.md)
- [Exclude A Directory During A Command](git/exclude-a-directory-during-a-command.md)
- [Excluding Files Locally](git/excluding-files-locally.md)
- [Extend Git With Custom Commands](git/extend-git-with-custom-commands.md)
- [Files With Local Changes Cannot Be Removed](git/files-with-local-changes-cannot-be-removed.md)
- [Find And Remove Files That Match A Name](git/find-and-remove-files-that-match-a-name.md)
- [Find The Date That A File Was Added To The Repo](git/find-the-date-that-a-file-was-added-to-the-repo.md)
- [Find The Initial Commit](git/find-the-initial-commit.md)
- [Fix Whitespace Errors Throughout Branch Commits](git/fix-whitespace-errors-throughout-branch-commits.md)
- [Get Latest Commit Timestamp For A File](git/get-latest-commit-timestamp-for-a-file.md)
- [Get The Name Of The Current Branch](git/get-the-name-of-the-current-branch.md)
- [Get The Short Version Of The Latest Commit](git/get-the-short-version-of-the-latest-commit.md)
- [Grab A Single File From A Stash](git/grab-a-single-file-from-a-stash.md)
- [Grep For A Pattern On Another Branch](git/grep-for-a-pattern-on-another-branch.md)
- [Grep Over Commit Messages](git/grep-over-commit-messages.md)
- [Highlight Extra Whitespace In Diff Output](git/highlight-extra-whitespace-in-diff-output.md)
- [Highlight Small Change On Single Line](git/highlight-small-change-on-single-line.md)
- [Ignore Changes To A Tracked File](git/ignore-changes-to-a-tracked-file.md)
- [Ignore Files Specific To Your Workflow](git/ignore-files-specific-to-your-workflow.md)
- [Include A Message With Your Stashed Changes](git/include-a-message-with-your-stashed-changes.md)
- [Include Or Exclude Remaining Patch Changes](git/include-or-exclude-remaining-patch-changes.md)
- [Include Some Stats In Your Git Log](git/include-some-stats-in-your-git-log.md)
- [Intent To Add](git/intent-to-add.md)
- [Interactively Checkout Specific Files From A Stash](git/interactively-checkout-specific-files-from-a-stash.md)
- [Interactively Unstage Changes](git/interactively-unstage-changes.md)
- [Keep File Locally With `git rm`](git/keep-file-locally-with-git-rm.md)
- [Last Commit A File Appeared In](git/last-commit-a-file-appeared-in.md)
- [List All Files Added During Span Of Time](git/list-all-files-added-during-span-of-time.md)
- [List All Files Changed Between Two Branches](git/list-all-files-changed-between-two-branches.md)
- [List All Git Aliases From gitconfig](git/list-all-git-aliases-from-gitconfig.md)
- [List Branches That Contain A Commit](git/list-branches-that-contain-a-commit.md)
- [List Commits On A Branch](git/list-commits-on-a-branch.md)
- [List Different Commits Between Two Branches](git/list-different-commits-between-two-branches.md)
- [List Filenames Without The Diffs](git/list-filenames-without-the-diffs.md)
- [List Just The Files Involved In A Commit](git/list-just-the-files-involved-in-a-commit.md)
- [List Most Git Commands](git/list-most-git-commands.md)
- [List Untracked Files](git/list-untracked-files.md)
- [List Untracked Files For Scripting](git/list-untracked-files-for-scripting.md)
- [Move The Latest Commit To A New Branch](git/move-the-latest-commit-to-a-new-branch.md)
- [Override The Global Git Ignore File](git/override-the-global-git-ignore-file.md)
- [Pick Specific Changes To Stash](git/pick-specific-changes-to-stash.md)
- [Pulling In Changes During An Interactive Rebase](git/pulling-in-changes-during-an-interactive-rebase.md)
- [Push To A Branch On Another Remote](git/push-to-a-branch-on-another-remote.md)
- [Quicker Commit Fixes With The Fixup Flag](git/quicker-commit-fixes-with-the-fixup-flag.md)
- [Rebase Commits With An Arbitrary Command](git/rebase-commits-with-an-arbitrary-command.md)
- [Reference A Commit Via Commit Message Pattern Matching](git/reference-a-commit-via-commit-message-pattern-matching.md)
- [Reference Commits Earlier Than Reflog Remembers](git/reference-commits-earlier-than-reflog-remembers.md)
- [Remove Untracked Files From A Directory](git/remove-untracked-files-from-a-directory.md)
- [Rename A Remote](git/rename-a-remote.md)
- [Renaming A Branch](git/renaming-a-branch.md)
- [Resetting A Reset](git/resetting-a-reset.md)
- [Resolve A Merge Conflict From Stash Pop](git/resolve-a-merge-conflict-from-stash-pop.md)
- [Restore File From One Branch To The Current](git/restore-file-from-one-branch-to-the-current.md)
- [Review Commits From Before A Certain Date](git/review-commits-from-before-a-certain-date.md)
- [Run A Git Command From Outside The Repo](git/run-a-git-command-from-outside-the-repo.md)
- [Set A Custom Pager For A Specific Command](git/set-a-custom-pager-for-a-specific-command.md)
- [Set Default Branch Name For New Repos](git/set-default-branch-name-for-new-repos.md)
- [Set Up GPG Signing Key](git/set-up-gpg-signing-key.md)
- [Shorthand To Force Push A Branch](git/shorthand-to-force-push-a-branch.md)
- [Show All Commits For A File Beyond Renaming](git/show-all-commits-for-a-file-beyond-renaming.md)
- [Show Changes For Files That Match A Pattern](git/show-changes-for-files-that-match-a-pattern.md)
- [Show Changes In The Compose Commit Message View](git/show-changes-in-the-compose-commit-message-view.md)
- [Show File Diffs When Viewing Git Log](git/show-file-diffs-when-viewing-git-log.md)
- [Show List Of Most Recently Committed Branches](git/show-list-of-most-recently-committed-branches.md)
- [Show Only Commits That Touch Specific Lines](git/show-only-commits-that-touch-specific-lines.md)
- [Show Summary Stats For Current Branch](git/show-summary-stats-for-current-branch.md)
- [Show The diffstat Summary Of A Commit](git/show-the-diffstat-summary-of-a-commit.md)
- [Show The Good And The Bad With Git Bisect](git/show-the-good-and-the-bad-with-git-bisect.md)
- [Show What Is In A Stash](git/show-what-is-in-a-stash.md)
- [Single Key Presses in Interactive Mode](git/single-key-presses-in-interactive-mode.md)
- [Skip A Bad Commit When Bisecting](git/skip-a-bad-commit-when-bisecting.md)
- [Skip Git Hooks As Needed](git/skip-git-hooks-as-needed.md)
- [Skip Pre-Commit Hooks](git/skip-pre-commit-hooks.md)
- [Staging Changes Within Vim](git/staging-changes-within-vim.md)
- [Staging Stashes Interactively](git/staging-stashes-interactively.md)
- [Stash A Single Untracked File](git/stash-a-single-untracked-file.md)
- [Stash Everything](git/stash-everything.md)
- [Stashing Only Unstaged Changes](git/stashing-only-unstaged-changes.md)
- [Stashing Untracked Files](git/stashing-untracked-files.md)
- [Switch To A Recent Branch With FZF](git/switch-to-a-recent-branch-with-fzf.md)
- [Transition A Branch From One Base To Another](git/transition-a-branch-from-one-base-to-another.md)
- [Turn Off The Output Pager For One Command](git/turn-off-the-output-pager-for-one-command.md)
- [Two Kinds Of Dotted Range Notation](git/two-kinds-of-dotted-range-notation.md)
- [Undo Latest Changes Committed To Specific File](git/undo-latest-changes-committed-to-specific-file.md)
- [Unstage Changes Wih Git Restore](git/unstage-changes-with-git-restore.md)
- [Untrack A Directory Of Files Without Deleting](git/untrack-a-directory-of-files-without-deleting.md)
- [Untrack A File Without Deleting It](git/untrack-a-file-without-deleting-it.md)
- [Update The URL Of A Remote](git/update-the-url-of-a-remote.md)
- [Use External Diff Tool Like Difftastic](git/use-external-diff-tool-like-difftastic.md)
- [Using Commands With A Relative Date Format](git/using-commands-with-a-relative-date-format.md)
- [Verbose Commit Message](git/verbose-commit-message.md)
- [Viewing A File On Another Branch](git/viewing-a-file-on-another-branch.md)
- [What Changed?](git/what-changed.md)
- [What Is The Current Branch?](git/what-is-the-current-branch.md)
- [Whitespace Warnings](git/whitespace-warnings.md)

### GitHub

- [Access Your GitHub Profile Photo](github/access-your-github-profile-photo.md)
- [Open A PR To An Unforked Repo](github/open-a-pr-to-an-unforked-repo.md)
- [Target Another Repo When Creating A PR](github/target-another-repo-when-creating-a-pr.md)
- [Tell gh What The Default Repo Is](github/tell-gh-what-the-default-repo-is.md)

### GitHub Actions

- [Cache Playwright Dependencies Across Workflows](github-actions/cache-playwright-dependencies-across-workflows.md)
- [Capture An Output Value For Use In A Later Step](github-actions/capture-an-output-value-for-use-in-a-later-step.md)
- [Disable A Workflow With The gh CLI](github-actions/disable-a-workflow-with-the-gh-cli.md)
- [Reference An Encrypted Secret In An Action](github-actions/reference-an-encrypted-secret-in-an-action.md)
- [Trigger A Workflow Via An API Call](github-actions/trigger-a-workflow-via-an-api-call.md)
- [Use Labels To Block PR Merge](github-actions/use-labels-to-block-pr-merge.md)

### Go

- [Access Go Docs Offline](go/access-go-docs-offline.md)
- [Add A Method To A Struct](go/add-a-method-to-a-struct.md)
- [Basic Delve Debugging Session](go/basic-delve-debugging-session.md)
- [Build For A Specific OS And Architecture](go/build-for-a-specific-os-and-architecture.md)
- [Check If Cobra Flag Was Set](go/check-if-cobra-flag-was-set.md)
- [Combine Two Slices](go/combine-two-slices.md)
- [Configure Max String Print Length For Delve](go/configure-max-string-print-length-for-delve.md)
- [Connect To A SQLite Database](go/connect-to-a-sqlite-database.md)
- [Create A Slice From An Array](go/create-a-slice-from-an-array.md)
- [Detect If Stdin Comes From A Redirect](go/detect-if-stdin-comes-from-a-redirect.md)
- [Deterministically Seed A Random Number Generator](go/deterministically-seed-a-random-number-generator.md)
- [Difference Between Slice And Pointer To Slice](go/difference-between-slice-and-pointer-to-slice.md)
- [Do Something N Times](go/do-something-n-times.md)
- [Find Executables Installed By Go](go/find-executables-installed-by-go.md)
- [Format Date And Time With Time Constants](go/format-date-and-time-with-time-constants.md)
- [Not So Random](go/not-so-random.md)
- [Parse A String Into Individual Fields](go/parse-a-string-into-individual-fields.md)
- [Parse Flags From CLI Arguments](go/parse-flags-from-cli-arguments.md)
- [Pass A Struct To A Function](go/pass-a-struct-to-a-function.md)
- [Produce The Zero Value Of A Generic Type](go/produce-the-zero-value-of-a-generic-type.md)
- [Redirect File To Stdin During Delve Debug](go/redirect-file-to-stdin-during-delve-debug.md)
- [Replace The Current Process With An External Command](go/replace-the-current-process-with-an-external-command.md)
- [Sleep For A Duration](go/sleep-for-a-duration.md)
- [Sort Slice In Ascending Or Descending Order](go/sort-slice-in-ascending-or-descending-order.md)
- [Upgrading From An Older Version On Mac](go/upgrading-from-an-older-version-on-mac.md)
- [Write A Custom Scan Function For File IO](go/write-a-custom-scan-function-for-file-io.md)

### GROQ

- [Grab Multiple Values From A Reference](groq/grab-multiple-values-from-a-reference.md)
- [Grab Values From An Array Of References](groq/grab-values-from-an-array-of-references.md)
- [Include Attributes When Conditional Check Passes](groq/include-attributes-when-conditional-check-passes.md)
- [Include Type Of Operation In Webhook Response](groq/include-type-of-operation-in-webhook-response.md)

### Heroku

- [Check Ruby Version For Production App](heroku/check-ruby-version-for-production-app.md)
- [Connect To A Database By Color](heroku/connect-to-a-database-by-color.md)
- [Deploy A Review App To A Different Stack](heroku/deploy-a-review-app-to-a-different-stack.md)
- [Diagnose Problems In A Heroku Postgres Database](heroku/diagnose-problems-in-a-heroku-postgres-database.md)
- [Open Dashboard For Specific Add-On](heroku/open-dashboard-for-specific-add-on.md)
- [Run SQL Against Remote Postgres Database](heroku/run-sql-against-remote-postgres-database.md)
- [Set And Show Heroku Env Variables](heroku/set-and-show-heroku-env-variables.md)
- [Specify Default Team And App For Project](heroku/specify-default-team-and-app-for-project.md)
- [SSH Into Heroku Server Hosting App](heroku/ssh-into-heroku-server-hosting-app.md)

### HTML

- [Adding Alt Text To An Image](html/adding-alt-text-to-an-image.md)
- [Allow Number Input To Accept Decimal Values](html/allow-number-input-to-accept-decimal-values.md)
- [Determine Which Button Submitted The Form](html/determine-which-button-submitted-the-form.md)
- [Disable Auto-Completion For A Form Input](html/disable-auto-completion-for-a-form-input.md)
- [Disclose Additional Details](html/disclose-additional-details.md)
- [Make Elements Non-Interactive With Inert](html/make-elements-non-interactive-with-inert.md)
- [Prevent Search Engines From Indexing A Page](html/prevent-search-engines-from-indexing-a-page.md)
- [Render Text As Superscript](html/render-text-as-superscript.md)
- [Submit A Form With A Button Outside The Form](html/submit-a-form-with-a-button-outside-the-form.md)

### HTTP

- [What Counts As Cross-Origin With CORS?](http/what-counts-as-cross-origin-with-cors.md)

### Inngest

- [Ensure Lookup Can Be Retried](inngest/ensure-lookup-can-be-retried.md)
- [Exit Function Early Without Retries](inngest/exit-function-early-without-retries.md)

### Internet

- [Add Emoji To GitHub Repository Description](internet/add-emoji-to-github-repository-description.md)
- [Add Styled Alerts To GitHub Markdown Documents](internet/add-styled-alerts-to-github-markdown-documents.md)
- [Analyze Your Website Performance](internet/analyze-your-website-performance.md)
- [Check Your Public IP Address](internet/check-your-public-ip-address.md)
- [Digraph Unicode Characters Have A Titlecase](internet/digraph-unicode-characters-have-a-titlecase.md)
- [Download A Google Doc As Specific Format](internet/download-a-google-doc-as-specific-format.md)
- [Enable Keyboard Shortcuts In Gmail](internet/enable-keyboard-shortcuts-in-gmail.md)
- [Exclude AI Overview From Google Search](internet/exclude-ai-overview-from-google-search.md)
- [Exclude Whitespace Changes From GitHub Diffs](internet/exclude-whitespace-changes-from-github-diffs.md)
- [Figure Out Your Public IP Address](internet/figure-out-your-public-ip-address.md)
- [Focus The URL Bar](internet/focus-the-url-bar.md)
- [Get Random Images From Unsplash](internet/get-random-images-from-unsplash.md)
- [Grab The RSS Feed For A Substack Blog](internet/grab-the-rss-feed-for-a-substack-blog.md)
- [Hide Overflowing Text For Google Sheets Column](internet/hide-overflowing-text-for-google-sheets-column.md)
- [Search Tweets By Author](internet/search-tweets-by-author.md)
- [Show All Pivotal Stories With Blockers](internet/show-all-pivotal-stories-with-blockers.md)
- [Verify Site Ownership With DNS Record](internet/verify-site-ownership-with-dns-record.md)

### Java

- [Ensure Resources Always Get Closed](java/ensure-resources-always-get-closed.md)
- [Install Java On Mac With Brew](java/install-java-on-mac-with-brew.md)
- [Run A Hello World Program In Eclipse](java/run-a-hello-world-program-in-eclipse.md)

### JavaScript

- [Accessing Arguments To A Function](javascript/accessing-arguments-to-a-function.md)
- [Add Item To An Array Of References In Sanity](javascript/add-item-to-an-array-of-references-in-sanity.md)
- [Basic Date Formatting Without A Library](javascript/basic-date-formatting-without-a-library.md)
- [Character Codes from Keyboard Listeners](javascript/character-codes-from-keyboard-listeners.md)
- [Check Classes On A DOM Element](javascript/check-classes-on-a-dom-element.md)
- [Check If A Number Is Positive Or Negative](javascript/check-if-a-number-is-positive-or-negative.md)
- [Check If File Exists Before Reading It](javascript/check-if-file-exists-before-reading-it.md)
- [Check If Something Is An Array](javascript/check-if-something-is-an-array.md)
- [Check Media Queries From JavaScript](javascript/check-media-queries-from-javascript.md)
- [Check The Password Confirmation With Yup](javascript/check-the-password-confirmation-with-yup.md)
- [Compare The Equality Of Two Date Objects](javascript/compare-the-equality-of-two-date-objects.md)
- [Computed Property Names In ES6](javascript/computed-property-names-in-es6.md)
- [Conditionally Include Pairs In An Object](javascript/conditionally-include-pairs-in-an-object.md)
- [Configure Jest To Run A Test Setup File](javascript/configure-jest-to-run-a-test-setup-file.md)
- [Convert Seconds To Date Object](javascript/convert-seconds-to-date-object.md)
- [Create A Cancelable Promise With PCancelable](javascript/create-a-cancelable-promise-with-pcancelable.md)
- [Create An Array Containing 1 To N](javascript/create-an-array-containing-1-to-n.md)
- [Create An Object With No Properties](javascript/create-an-object-with-no-properties.md)
- [Create Bootstrapped Apps With Yarn](javascript/create-bootstrapped-apps-with-yarn.md)
- [Create Future And Past Dates From Today](javascript/create-future-and-past-dates-from-today.md)
- [Custom Type Checking Error Messages With Yup](javascript/custom-type-checking-error-messages-with-yup.md)
- [Default And Named Exports From The Same Module](javascript/default-and-named-exports-from-the-same-module.md)
- [Define A Custom Jest Matcher](javascript/define-a-custom-jest-matcher.md)
- [Destructure With Access To Nested Value And Parent Value](javascript/destructure-with-access-to-nested-value-and-parent-value.md);
- [Destructuring The Rest Of An Array](javascript/destructuring-the-rest-of-an-array.md)
- [Enable ES7 Transforms With react-rails](javascript/enable-es7-transforms-with-react-rails.md)
- [Ensure Shell Can Find Global npm Binaries](javascript/ensure-shell-can-find-global-npm-binaries.md)
- [Easy Date Comparison With DayJS](javascript/easy-date-comparison-with-dayjs.md)
- [Expand Emojis With The Spread Operator](javascript/expand-emojis-with-the-spread-operator.md)
- [Fill An Input With A Ton Of Text](javascript/fill-an-input-with-a-ton-of-text.md)
- [Find The Version Of An Installed Dependency](javascript/find-the-version-of-an-installed-dependency.md)
- [Find Where Yarn Is Installing Binaries](javascript/find-where-yarn-is-installing-binaries.md)
- [for...in Iterates Over Object Properties](javascript/for-in-iterates-over-object-properties.md)
- [Format A Decimal To A Fixed Number Of Digits](javascript/format-a-decimal-to-a-fixed-number-of-digits.md)
- [Format A List Of Items By Locale](javascript/format-a-list-of-items-by-locale.md)
- [Format Time Zone Identifier](javascript/format-time-zone-identifier.md)
- [Formatting Values With Units For Display](javascript/formatting-values-with-units-for-display.md)
- [Freeze An Object, Sorta](javascript/freeze-an-object-sorta.md)
- [Generate A V4 UUID In The Browser](javascript/generate-a-v4-uuid-in-the-browser.md)
- [Generate Random Integers](javascript/generate-random-integers.md)
- [Get The Location And Size Of An Element](javascript/get-the-location-and-size-of-an-element.md)
- [Get The Response Status From An Axios Error](javascript/get-the-response-status-from-an-axios-error.md)
- [Get The Time Components Of A Date](javascript/get-the-time-components-of-a-date.md)
- [Get The Time Zone Of The Client Computer](javascript/get-the-time-zone-of-the-client-computer.md)
- [Globally Install A Package With Yarn](javascript/globally-install-a-package-with-yarn.md)
- [Globally Install Specific Version Of PNPM](javascript/globally-install-specific-version-of-pnpm.md)
- [Immutable Remove With The Spread Operator](javascript/immutable-remove-with-the-spread-operator.md)
- [Initialize A New JavaScript Project With Yarn](javascript/initialize-a-new-javascript-project-with-yarn.md)
- [Install The Latest Version Of Node With Nvm](javascript/install-the-latest-version-of-node-with-nvm.md)
- [Interpolate A String Into A Regex](javascript/interpolate-a-string-into-a-regex.md)
- [ISO-8601 Formatted Dates Are Interpreted As UTC](javascript/iso-8601-formatted-dates-are-interpreted-as-utc.md)
- [Link A JavaScript Package Locally](javascript/link-a-javascript-package-locally.md)
- [List Top-Level NPM Dependencies](javascript/list-top-level-npm-dependencies.md)
- [Load And Use Env Var In Node Script](javascript/load-and-use-env-var-in-node-script.md)
- [Make The Browser Editable With Design Mode](javascript/make-the-browser-editable-with-design-mode.md)
- [Make Truly Deep Clone With Structured Clone](javascript/make-truly-deep-clone-with-structured-clone.md)
- [Matching A Computed Property In Function Args](javascript/matching-a-computed-property-in-function-args.md)
- [Matching Multiple Values In A Switch Statement](javascript/matching-multiple-values-in-a-switch-statement.md)
- [Mock A Function With Return Values Using Jest](javascript/mock-a-function-with-return-values-using-jest.md)
- [New Dates Can Take Out Of Bounds Values](javascript/new-dates-can-take-out-of-bounds-values.md)
- [Numbers Are Empty](javascript/numbers-are-empty.md)
- [Object Initialization With Shorthand Property Names](javascript/object-initialization-with-shorthand-property-names.md)
- [Obtain Undefined Value With The Void Operator](javascript/obtain-undefined-value-with-the-void-operator.md)
- [Open Global npm Config File](javascript/open-global-npm-config-file.md)
- [Parse A Date From A Timestamp](javascript/parse-a-date-from-a-timestamp.md)
- [Pre And Post Hooks For Yarn Scripts](javascript/pre-and-post-hooks-for-yarn-scripts.md)
- [Prevent Hidden Element From Flickering On Load](javascript/prevent-hidden-element-from-flickering-on-load.md)
- [Purge Null And Undefined Values From Object](javascript/purge-null-and-undefined-values-from-object.md)
- [Random Cannot Be Seeded](javascript/random-cannot-be-seeded.md)
- [Reach Into An Object For Nested Data With Get](javascript/reach-into-an-object-for-nested-data-with-get.md)
- [Render An Array Of Elements With React 16](javascript/render-an-array-of-elements-with-react-16.md)
- [Resolve And Pass Multiple Values From A Then](javascript/resolve-and-pass-multiple-values-from-a-then.md)
- [Run A Bash Script From A Node Script](javascript/run-a-bash-script-from-a-node-script.md)
- [Run Multiple Node Scripts Concurrently](javascript/run-multiple-node-scripts-concurrently.md)
- [Running ES6 Specs With Mocha](javascript/running-es6-specs-with-mocha.md)
- [Scoping Variables With A Block Statement](javascript/scoping-variables-with-a-block-statement.md)
- [Short Circuit Concurrently When Process Fails](javascript/short-circuit-concurrently-when-process-fails.md)
- [Show Description Of All npm Config Options](javascript/show-description-of-all-npm-config-options.md)
- [Sleep For A Bit In Async Code](javascript/sleep-for-a-bit-in-async-code.md)
- [Sorting Arrays Of Objects With Lodash](javascript/sorting-arrays-of-objects-with-lodash.md)
- [Splat Arguments To A Function](javascript/splat-arguments-to-a-function.md)
- [Spread Merging Objects Includes Nil Values](javascript/spread-merging-objects-includes-nil-values.md)
- [Spread The Rest With ES6](javascript/spread-the-rest-with-es6.md)
- [Start Node Process In Specific Timezone](javascript/start-node-process-in-specific-timezone.md)
- [String Interpolation With Template Literals](javascript/string-interpolation-with-template-literals.md)
- [Support Nested Matching In Custom Jest Matchers](javascript/support-nested-matching-in-custom-jest-matchers.md)
- [Tell Jest To Focus On Running Only One Test](javascript/tell-jest-to-focus-on-running-only-one-test.md)
- [Tell Node To Treat JS Files As ESM](javascript/tell-node-to-treat-js-files-as-esm.md)
- [Tell Prettier To Not Format A Statement](javascript/tell-prettier-to-not-format-a-statement.md)
- [Test Coverage Stats With Jest](javascript/test-coverage-stats-with-jest.md)
- [Test Timing-Based Code With Jest Fake Timers](javascript/test-timing-based-code-with-jest-fake-timers.md)
- [The Comma Operator](javascript/the-comma-operator.md)
- [Throttling A Function Call](javascript/throttling-a-function-call.md)
- [Timing Processes](javascript/timing-processes.md)
- [Transforming ES6 and JSX With Babel 6](javascript/transforming-es6-and-jsx-with-babel-6.md)
- [Truthiness of Integer Arrays](javascript/truthiness-of-integer-arrays.md)
- [Turn An HTMLCollection Into An Array](javascript/turn-an-html-collection-into-an-array.md)
- [Turn Off Console Error Messages In A Test](javascript/turn-off-console-error-messages-in-a-test.md)
- [Turn Off npm Funding Message](javascript/turn-off-npm-funding-message.md)
- [Waiting On Multiple Promises](javascript/waiting-on-multiple-promises.md)
- [Who Am I: NPM Edition](javascript/who-am-i-npm-edition.md)
- [Write A JavaScript Object To A JSON File](javascript/write-a-javascript-object-to-a-json-file.md)
- [Yarn Commands Without The Emojis](javascript/yarn-commands-without-the-emojis.md)
- [Yup Schemas Are Validated Asynchronously](javascript/yup-schemas-are-validated-asynchronously.md)

### jj

- [Colocate jj And git Directories For Project](jj/colocate-jj-and-git-directories-for-project.md)
- [Describe Current Changes And Create New Change](jj/describe-current-changes-and-create-new-change.md)
- [Find System-wide Config File For User](jj/find-system-wide-config-file-for-user.md)
- [Squash Changes Into Parent Commit Interactively](jj/squash-changes-into-parent-commit-interactively.md)

### jq

- [Combine An Array Of Objects Into A Single Object](jq/combine-an-array-of-objects-into-a-single-object.md)
- [Count Each Collection In A JSON Object](jq/count-each-collection-in-a-json-object.md)
- [Count The Number Of Things In A JSON File](jq/count-the-number-of-things-in-a-json-file.md)
- [Extract A List Of Values](jq/extract-a-list-of-values.md)
- [Filter Out Results Based On List Of Values](jq/filter-out-results-based-on-list-of-values.md)
- [Find All Objects In An Array Where Key Is Set](jq/find-all-objects-in-an-array-where-key-is-set.md)
- [Find All Objects With A Matching Key Value Pair](jq/find-all-objects-with-a-matching-key-value-pair.md)
- [Get A Slice Of The Ends Of An Array](jq/get-a-slice-of-the-ends-of-an-array.md)
- [Get The First Item For Every Top-Level Key](jq/get-the-first-item-for-every-top-level-key.md)
- [Get The Last Item From An Array](jq/get-the-last-item-from-an-array.md)
- [Reduce Object To Just Entries Of A Specific Type](jq/reduce-object-to-just-entries-of-a-specific-type.md)
- [Turn A List From A Command Into JSON](jq/turn-a-list-from-a-command-into-json.md)
- [Zip Two JSON Files Together Based On Shared ID](jq/zip-two-json-files-together-based-on-shared-id.md)

### Kitty

- [Set The Title Of A Window](kitty/set-the-title-of-a-window.md)
- [Use The Built-In Emoji Picker](kitty/use-the-built-in-emoji-picker.md)

### Linux

- [Check Ubuntu Version](linux/check-ubuntu-version.md)
- [Configure Your Server Timezone](linux/configure-your-server-timezone.md)
- [List The Statuses Of All Upstart Jobs](linux/list-the-statuses-of-all-upstart-jobs.md)
- [Show Current System Time And Settings](linux/show-current-system-time-and-settings.md)
- [Show Used And Available System Memory](linux/show-used-and-available-system-memory.md)
- [Upgrading Ubuntu](linux/upgrading-ubuntu.md)

### LLM

- [Send cURL To Claude Text Completion API](llm/send-curl-to-claude-text-completion-api.md)
- [Use The llm CLI With Claude Models](llm/use-the-llm-cli-with-claude-models.md)

### Mac

- [Access All Screen And Video Capture Options](mac/access-all-screen-and-video-capture-options.md)
- [Access System Information On OS X](mac/access-system-information-on-osx.md)
- [Access Unsupported Screen Resolutions With RDM](mac/access-unsupported-screen-resolutions-with-rdm.md)
- [Add A Bunch Of CLI Utilities With coreutils](mac/add-a-bunch-of-cli-utilities-with-coreutils.md)
- [Capture Screenshot To Clipboard From CLI](mac/capture-screenshot-to-clipboard-from-cli.md)
- [Check Network Quality Stats From The Command Line](mac/check-network-quality-stats-from-the-command-line.md)
- [Clean Up Old Homebrew Files](mac/clean-up-old-homebrew-files.md)
- [Control Which Monitor App Switcher Appears On](mac/control-which-monitor-app-switcher-appears-on.md)
- [Convert An HEIC Image File To JPG](mac/convert-an-heic-image-file-to-jpg.md)
- [Default Screenshot Location](mac/default-screenshot-location.md)
- [Detect How Long A User Has Been Idle](mac/detect-how-long-a-user-has-been-idle.md)
- [Disable Swipe Navigation For A Specific App](mac/disable-swipe-navigation-for-a-specific-app.md)
- [Display A Message With Alfred](mac/display-a-message-with-alfred.md)
- [Find The Process Using A Specific Port](mac/find-the-process-using-a-specific-port.md)
- [Gesture For Viewing All Windows Of Current App](mac/gesture-for-viewing-all-windows-of-current-app.md)
- [Insert A Non-Breaking Space Character](mac/insert-a-non-breaking-space-character.md)
- [Inspect Assertions Preventing Sleep](mac/inspect-assertions-preventing-sleep.md)
- [Keyboard Shortcuts For Interesting With Text Areas](mac/keyboard-shortcuts-for-interacting-with-text-areas.md)
- [Launch Some Confetti](mac/launch-some-confetti.md)
- [List All The Say Voices](mac/list-all-the-say-voices.md)
- [Open Finder.app To Specific Directory](mac/open-finder-app-to-specific-directory.md)
- [Prevent Sleep With The Caffeinate Command](mac/prevent-sleep-with-the-caffeinate-command.md)
- [Quickly Type En Dashes And Em Dashes](mac/quickly-type-en-dashes-and-em-dashes.md)
- [Require Additional JS Libraries In Postman](mac/require-additional-js-libraries-in-postman.md)
- [Resize App Windows With AppleScript](mac/resize-app-windows-with-applescript.md)
- [Resizing Both Corners Of A Window](mac/resizing-both-corners-of-a-window.md)
- [Reveal Location Of File In Finder.app](mac/reveal-location-of-file-in-finder-app.md)
- [Run A Hardware Check](mac/run-a-hardware-check.md)
- [Run AppleScript Commands Inline In The Terminal](mac/run-applescript-commands-inline-in-the-terminal.md)
- [Set A Window To Its Default Zoom Level](mac/set-a-window-to-its-default-zoom-level.md)
- [Specify App When Opening From Command Line](mac/specify-app-when-opening-from-command-line.md)
- [Start Amphetamine Session With AppleScript](mac/start-amphetamine-session-with-applescript.md)
- [Uninstall LogiTech G Hub From Mac](mac/uninstall-logitech-g-hub-from-mac.md)
- [Use A Different Font With iTerm2](mac/use-a-different-font-with-iterm2.md)
- [Use Default Screenshot Shortcuts With CleanShot X](mac/use-default-screenshot-shortcuts-with-cleanshot-x.md)
- [View All Windows Of The Current App](mac/view-all-windows-of-the-current-app.md)
- [Write System Clipboard To A File](mac/write-system-clipboard-to-a-file.md)

### Mise

- [Create Umbrella Task For All Test Tasks](mise/create-umbrella-task-for-all-test-tasks.md)
- [List The Files Being Loaded By Mise](mise/list-the-files-being-loaded-by-mise.md)
- [Look In Ruby Version Dotfile](mise/look-in-ruby-version-dotfile.md)
- [Override Your Project Mise File](mise/override-your-project-mise-file.md)
- [Pick From Tasks Using Interactive Picker](mise/pick-from-tasks-using-interactive-picker.md)
- [Preserve Color Output For Task Command](mise/preserve-color-output-for-task-command.md)
- [Read Existing Dot Env File Into Env Vars](mise/read-existing-dot-env-file-into-env-vars.md)
- [Run A Command With Specific Tool Version](mise/run-a-command-with-specific-tool-version.md)
- [Search Through Bin Paths For Tool Locations](mise/search-through-bin-paths-for-tool-locations.md)

### MongoDB

- [Determine The Database Version](mongodb/determine-the-database-version.md)
- [Dump A Remote Database](mongodb/dump-a-remote-database.md)
- [Dump And Restore With A Single gzip File](mongodb/dump-and-restore-with-a-single-gzip-file.md)
- [Get Size Stats For A Collection](mongodb/get-size-stats-for-a-collection.md)
- [List Size Stats For All Collections](mongodb/list-size-stats-for-all-collections.md)

### MySQL

- [Change Existing Column To Not Null](mysql/change-existing-column-to-not-null.md)
- [Connect To A Database In Safe Update Mode](mysql/connect-to-a-database-in-safe-update-mode.md)
- [Default Username And Password For New Instance](mysql/default-username-and-password-for-new-instance.md)
- [Display Output In A Vertical Format](mysql/display-output-in-a-vertical-format.md)
- [Doing Date Math](mysql/doing-date-math.md)
- [Dump A Database To A File](mysql/dump-a-database-to-a-file.md)
- [Echo A Message From A SQL File](mysql/echo-a-message-from-a-sql-file.md)
- [Get Idea Of What Is In A JSON Column](mysql/get-idea-of-what-is-in-a-json-column.md)
- [Ignore Duplicates When Inserting Records](mysql/ignore-duplicates-when-inserting-records.md)
- [List Databases And Tables](mysql/list-databases-and-tables.md)
- [Run Statements In A Transaction](mysql/run-statements-in-a-transaction.md)
- [Select Rows After An Offset](mysql/select-rows-after-an-offset.md)
- [Set Value On Null JSON Column](mysql/set-value-on-null-json-column.md)
- [Show Create Statement For A Table](mysql/show-create-statement-for-a-table.md)
- [Show Tables That Match A Pattern](mysql/show-tables-that-match-a-pattern.md)
- [Show Indexes For A Table](mysql/show-indexes-for-a-table.md)

### Neovim

- [Allow Neovim To Copy/Paste With System Clipboard](neovim/allow-neovim-to-copy-paste-with-system-clipboard.md)
- [Create User Command To Open Init Config](neovim/create-user-command-to-open-init-config.md)
- [Jump Between Changes In Current File](neovim/jump-between-changes-in-current-file.md)
- [Run A Lua Statement From The Command Prompt](neovim/run-a-lua-statement-from-the-command-prompt.md)
- [Run nvim With Factory Defaults](neovim/run-nvim-with-factory-defaults.md)
- [Set Up Vim-Plug With Neovim](neovim/set-up-vim-plug-with-neovim.md)

### Netlify

- [Override The Default Yarn Version](netlify/override-the-default-yarn-version.md)

### NextAuth.js

- [Adjust The Shape Of The User Type](next-auth/adjust-the-shape-of-the-user-type.md)

### Next.js

- [Avoid Conflicting Files](nextjs/avoid-conflicting-files.md)
- [Create Files And Directories For Dynamic Routes](nextjs/create-files-and-directories-for-dynamic-routes.md)
- [Define URL Redirects In The Next Config](nextjs/define-url-redirects-in-the-next-config.md)
- [Fetch Does Not Work In API Serverless Function](nextjs/fetch-does-not-work-in-api-serverless-function.md)
- [Make Environment Variable Publicly Available](nextjs/make-environment-variable-publicly-available.md)
- [Match Middleware On Groups Of Paths](nextjs/match-middleware-on-groups-of-paths.md)
- [Organize Pages In Route Groups](nextjs/organize-pages-in-route-groups.md)
- [Precedence Of Dot Env Files](nextjs/precedence-of-dot-env-files.md)
- [Push A Route With A URL Object](nextjs/push-a-route-with-a-url-object.md)
- [Redirect An Unauthorized User](nextjs/redirect-an-unauthorized-user.md)
- [Remove A Query Param From The URL](nextjs/remove-a-query-param-from-the-url.md)
- [Ship Public Assets With A Next.js App](nextjs/ship-public-assets-with-a-nextjs-app.md)

### Phoenix

- [Bypass Template Rendering](phoenix/bypass-template-rendering.md)
- [Check The Installed Version](phoenix/check-the-installed-version.md)
- [Generate New App Without Brunch](phoenix/generate-new-app-without-brunch.md)
- [Render A Template To A String](phoenix/render-a-template-to-a-string.md)
- [Serve Static Assets From Custom Directory](phoenix/serve-static-assets-from-custom-directory.md)
- [Specifying The Digest Directory](phoenix/specifying-the-digest-directory.md)
- [Specifying The Server Port](phoenix/specifying-the-server-port.md)

### Planetscale

- [See What Databases You Have Access To](planetscale/see-what-databases-you-have-access-to.md)
- [Seed Production Data Into Another Branch](planetscale/seed-production-data-into-another-branch.md)

### pnpm

- [Execute A Command From The Workspace Root](pnpm/execute-a-command-from-the-workspace-root.md)
- [Install Command Runs For Entire Workspace](pnpm/install-command-runs-for-entire-workspace.md)
- [List The Installed Version Of A Specific Package](pnpm/list-the-installed-version-of-a-specific-package.md)

### PostgreSQL

- [A Better Null Display Character](postgres/a-better-null-display-character.md)
- [Add Foreign Key Constraint Without A Full Lock](postgres/add-foreign-key-constraint-without-a-full-lock.md)
- [Add ON DELETE CASCADE To Foreign Key Constraint](postgres/add-on-delete-cascade-to-foreign-key-constraint.md)
- [Add Unique Constraint Using Existing Index](postgres/add-unique-constraint-using-existing-index.md)
- [Adding Composite Uniqueness Constraints](postgres/adding-composite-uniqueness-constraints.md)
- [Aggregate A Column Into An Array](postgres/aggregate-a-column-into-an-array.md)
- [Assumed Radius Of The Earth](postgres/assumed-radius-of-the-earth.md)
- [Auto Expanded Display](postgres/auto-expanded-display.md)
- [Between Symmetric](postgres/between-symmetric.md)
- [Capitalize All The Words](postgres/capitalize-all-the-words.md)
- [Change The Current Directory For psql](postgres/change-the-current-directory-for-psql.md)
- [Change The Owner Of A Sequence](postgres/change-the-owner-of-a-sequence.md)
- [Check If Clusters Are Upgrade Compatible](postgres/check-if-clusters-are-upgrade-compatible.md)
- [Check If The Local Server Is Running](postgres/check-if-the-local-server-is-running.md)
- [Check If User Role Exists For Database](postgres/check-if-user-role-exists-for-database.md)
- [Check Table For Any Oprhaned Records](postgres/check-table-for-any-orphaned-records.md)
- [Check The Size Of Databases In A Cluster](postgres/check-the-size-of-databases-in-a-cluster.md)
- [Checking Inequality](postgres/checking-inequality.md)
- [Checking The Type Of A Value](postgres/checking-the-type-of-a-value.md)
- [Clear The Screen In psql](postgres/clear-the-screen-in-psql.md)
- [Clear The Screen In psql (2)](postgres/clear-the-screen-in-psql-2.md)
- [Compute Hashes With pgcrypto](postgres/compute-hashes-with-pgcrypto.md)
- [Compute Median Instead Of Average](postgres/compute-median-instead-of-average.md)
- [Compute The Levenshtein Distance Of Two Strings](postgres/compute-the-levenshtein-distance-of-two-strings.md)
- [Compute The md5 Hash Of A String](postgres/compute-the-md5-hash-of-a-string.md)
- [Concatenate Strings With A Separator](postgres/concatenate-strings-with-a-separator.md)
- [Configure The Timezone](postgres/configure-the-timezone.md)
- [Constructing A Range Of Dates](postgres/constructing-a-range-of-dates.md)
- [Convert A String To A Timestamp](postgres/convert-a-string-to-a-timestamp.md)
- [Count How Many Records There Are Of Each Type](postgres/count-how-many-records-there-are-of-each-type.md)
- [Count Records By Type](postgres/count-records-by-type.md)
- [Count The Number Of Items In An Array](postgres/count-the-number-of-items-in-an-array.md)
- [Count The Number Of Trues In An Aggregate Query](postgres/count-the-number-of-trues-in-an-aggregate-query.md)
- [Create A Cluster In A Specific Data Directory](postgres/create-a-cluster-in-a-specific-data-directory.md)
- [Create A Composite Primary Key](postgres/create-a-composite-primary-key.md)
- [Create A Table From The Structure Of Another](postgres/create-a-table-from-the-structure-of-another.md)
- [Create An Index Across Two Columns](postgres/create-an-index-across-two-columns.md)
- [Create An Index Without Locking The Table](postgres/create-an-index-without-locking-the-table.md)
- [Create And Execute SQL Statements With \gexec](postgres/create-and-execute-sql-statements-with-gexec.md)
- [Create Database Uses Template1](postgres/create-database-uses-template1.md)
- [Create hstore From Two Arrays](postgres/create-hstore-from-two-arrays.md)
- [Create Table Adds A Data Type](postgres/create-table-adds-a-data-type.md)
- [Creating Conditional Constraints](postgres/creating-conditional-constraints.md)
- [Creating Custom Types](postgres/creating-custom-types.md)
- [Day Of Week By Name For A Date](postgres/day-of-week-by-name-for-a-date.md)
- [Day Of Week For A Date](postgres/day-of-week-for-a-date.md)
- [Default Schema](postgres/default-schema.md)
- [Defining Arrays](postgres/defining-arrays.md)
- [Determine Types Of JSONB Records](postgres/determine-types-of-jsonb-records.md)
- [Determining The Age Of Things](postgres/determining-the-age-of-things.md)
- [Difference Between Explain And Explain Analyze](postgres/difference-between-explain-and-explain-analyze.md)
- [Different Ways To Define An Interval](postgres/different-ways-to-define-an-interval.md)
- [Dump All Databases To A SQL File](postgres/dump-all-databases-to-a-sql-file.md)
- [Dump And Restore A Database](postgres/dump-and-restore-a-database.md)
- [Dump The SQL Needed To Recreate A Table](postgres/dump-the-sql-needed-recreate-a-table.md)
- [Duplicate A Local Database](postgres/duplicate-a-local-database.md)
- [Edit Existing Functions](postgres/edit-existing-functions.md)
- [Enable Logging Of Database Activity](postgres/enable-logging-of-database-activity.md)
- [Enforce Uniqueness On Column Expression](postgres/enforce-uniqueness-on-column-expression.md)
- [Escaping A Quote In A String](postgres/escaping-a-quote-in-a-string.md)
- [Escaping String Literals With Dollar Quoting](postgres/escaping-string-literals-with-dollar-quoting.md)
- [Export Query Results To A CSV](postgres/export-query-results-to-a-csv.md)
- [Extracting Nested JSON Data](postgres/extracting-nested-json-data.md)
- [Fetch Data From An Endpoint In SQL](postgres/fetch-data-from-an-endpoint-in-sql.md)
- [Fetch Specific Number Of Results](postgres/fetch-specific-number-of-results.md)
- [Find Duplicate Records In Table Without Unique Id](postgres/find-duplicate-records-in-table-without-unique-id.md)
- [Find Records That Contain Duplicate Values](postgres/find-records-that-contain-duplicate-values.md)
- [Find Records That Have Multiple Associated Records](postgres/find-records-that-have-multiple-associated-records.md)
- [Find The Data Directory](postgres/find-the-data-directory.md)
- [Find The Location Of Postgres Config Files](postgres/find-the-location-of-postgres-config-files.md)
- [Fizzbuzz With Common Table Expressions](postgres/fizzbuzz-with-common-table-expressions.md)
- [Force SSL When Making A psql Connection](postgres/force-ssl-when-making-a-psql-connection.md)
- [Generate A UUID](postgres/generate-a-uuid.md)
- [Generate Modern Primary Key Columns](postgres/generate-modern-primary-key-columns.md)
- [Generate Random Alphanumeric Identifier](postgres/generate-random-alphanumeric-identifier.md)
- [Generate Random UUIDs Without An Extension](postgres/generate-random-uuids-without-an-extension.md)
- [Generate Series Of Numbers](postgres/generate-series-of-numbers.md)
- [Generating UUIDs With pgcrypto](postgres/generating-uuids-with-pgcrypto.md)
- [Get A Quick Approximate Count Of A Table](postgres/get-a-quick-approximate-count-of-a-table.md)
- [Get Row Count For Most Recent Query](postgres/get-row-count-for-most-recent-query.md)
- [Get The Size On Disk of An Index](postgres/get-the-size-on-disk-of-an-index.md)
- [Get The Size Of A Database](postgres/get-the-size-of-a-database.md)
- [Get The Size Of A Table](postgres/get-the-size-of-a-table.md)
- [Get The Size Of An Index](postgres/get-the-size-of-an-index.md)
- [Getting A Slice Of An Array](postgres/getting-a-slice-of-an-array.md)
- [Group By The Result Of A Function Call](postgres/group-by-the-result-of-a-function-call.md)
- [Idempotent Inserts](postgres/idempotent-inserts.md)
- [Include All Queries In The Log File](postgres/include-all-queries-in-the-log-file.md)
- [Include Columns In A Covering Index](postgres/include-columns-in-a-covering-index.md)
- [Include Multiple Tables In A pg_dump](postgres/include-multiple-tables-in-a-pg-dump.md)
- [Insert A Bunch Of Records With Generate Series](postgres/insert-a-bunch-of-records-with-generate-series.md)
- [Insert Just The Defaults](postgres/insert-just-the-defaults.md)
- [Inspect Progress Of Long-Running Create Index](postgres/inspect-progress-of-long-running-create-index.md)
- [Install Postgres With uuid-ossp Using asdf](postgres/install-postgres-with-uuid-ossp-using-asdf.md)
- [Integers In Postgres](postgres/integers-in-postgres.md)
- [Intervals Of Time By Week](postgres/intervals-of-time-by-week.md)
- [Is It Null Or Not Null?](postgres/is-it-null-or-not-null.md)
- [Label Dollar-Quoted Strings With A Tag](postgres/label-dollar-quoted-strings-with-a-tag.md)
- [Limit Execution Time Of Statements](postgres/limit-execution-time-of-statements.md)
- [List All Columns Of A Specific Type](postgres/list-all-columns-of-a-specific-type.md)
- [List All Rows In A Table](postgres/list-all-rows-in-a-table.md)
- [List All The Databases](postgres/list-all-the-databases.md)
- [List All Versions Of A Function](postgres/list-all-versions-of-a-function.md)
- [List Available Schemas](postgres/list-available-schemas.md)
- [List Connections To A Database](postgres/list-connections-to-a-database.md)
- [List Databases Available For Connecting](postgres/list-databases-available-for-connecting.md)
- [List Database Objects With Disk Usage](postgres/list-database-objects-with-disk-usage.md)
- [List Database Users](postgres/list-database-users.md)
- [List Various Kinds Of Objects](postgres/list-various-kinds-of-objects.md)
- [Lower Is Faster Than ilike](postgres/lower-is-faster-than-ilike.md)
- [Manage Major Versions With Brew And Direnv](postgres/manage-major-versions-with-brew-and-direnv.md)
- [Max Identifier Length Is 63 Bytes](postgres/max-identifier-length-is-63-bytes.md)
- [Open Heroku Database In Postico From Terminal](postgres/open-heroku-database-in-postico-from-terminal.md)
- [Output Explain Query Plan In Different Formats](postgres/output-explain-query-plan-in-different-formats.md)
- [pg Prefix Is Reserved For System Schemas](postgres/pg-prefix-is-reserved-for-system-schemas.md)
- [Postgres Does Not Support Unsigned Integers](postgres/postgres-does-not-support-unsigned-integers.md)
- [Prepare, Execute, And Deallocate Statements](postgres/prepare-execute-and-deallocate-statements.md)
- [Pretty Print Data Sizes](postgres/pretty-print-data-sizes.md)
- [Pretty Printing JSONB Rows](postgres/pretty-printing-jsonb-rows.md)
- [Prevent A Query From Running Too Long](postgres/prevent-a-query-from-running-too-long.md)
- [Print The Query Buffer In psql](postgres/print-the-query-buffer-in-psql.md)
- [Put Unique Constraint On Generated Column](postgres/put-unique-constraint-on-generated-column.md)
- [References Target Primary Key By Default](postgres/references-target-primary-key-by-default.md)
- [Remove Not Null Constraint From A Column](postgres/remove-not-null-constraint-from-a-column.md)
- [Renaming A Sequence](postgres/renaming-a-sequence.md)
- [Renaming A Table](postgres/renaming-a-table.md)
- [Restart A Sequence](postgres/restart-a-sequence.md)
- [Restarting Sequences When Truncating Tables](postgres/restarting-sequences-when-truncating-tables.md)
- [Salt And Hash A Password With pgcrypto](postgres/salt-and-hash-a-password-with-pgcrypto.md)
- [Send A Command To psql](postgres/send-a-command-to-psql.md)
- [Set Inclusion With hstore](postgres/set-inclusion-with-hstore.md)
- [Set A Seed For The Random Number Generator](postgres/set-a-seed-for-the-random-number-generator.md)
- [Set A Statement Timeout Threshold For A Session](postgres/set-a-statement-timeout-threshold-for-a-session.md)
- [Set Up A Project-Local Cluster With Postgres.app](postgres/set-up-a-project-local-cluster-with-postgres-app.md)
- [Sets With The Values Command](postgres/sets-with-the-values-command.md)
- [Shorthand Absolute Value Operator](postgres/shorthand-absolute-value-operator.md)
- [Show All Versions Of An Operator](postgres/show-all-versions-of-an-operator.md)
- [Show Reconstructed Constraints For A Table](postgres/show-reconstructed-constraints-for-a-table.md)
- [Show The Hidden Queries Behind Backslash Commands](postgres/show-the-hidden-queries-behind-backslash-commands.md)
- [Sleeping](postgres/sleeping.md)
- [Special Math Operators](postgres/special-math-operators.md)
- [Storing Emails With citext](postgres/storing-emails-with-citext.md)
- [String Contains Another String](postgres/string-contains-another-string.md)
- [Survey Of User-Defined Ordering Of Records](postgres/survey-of-user-defined-ordering-of-records.md)
- [Switch Non-Castable Column Type With Using Clause](postgres/switch-non-castable-column-type-with-using-clause.md)
- [Switch The Running Postgres Server Version](postgres/switch-the-running-postgres-server-version.md)
- [Table Names Are Treated As Lower-Case By Default](postgres/table-names-are-treated-as-lower-case-by-default.md)
- [Temporarily Disable Triggers](postgres/temporarily-disable-triggers.md)
- [Temporary Tables](postgres/temporary-tables.md)
- [Terminating A Connection](postgres/terminating-a-connection.md)
- [The nullif Function](postgres/the-nullif-function.md)
- [Timestamp Functions](postgres/timestamp-functions.md)
- [Toggling The Pager In PSQL](postgres/toggling-the-pager-in-psql.md)
- [Track psql History Separately Per Database](postgres/track-psql-history-separately-per-database.md)
- [Trim Leading And Trailing Space From String](postgres/trim-leading-and-trailing-space-from-string.md)
- [Truncate All Rows](postgres/truncate-all-rows.md)
- [Truncate Tables With Dependents](postgres/truncate-tables-with-dependents.md)
- [Turning Timing On](postgres/turn-timing-on.md)
- [Two Ways To Compute Factorial](postgres/two-ways-to-compute-factorial.md)
- [Two Ways To Escape A Quote In A String](postgres/two-ways-to-escape-a-quote-in-a-string.md)
- [Types By Category](postgres/types-by-category.md)
- [Unable To Infer Data Type In Production](postgres/unable-to-infer-data-type-in-production.md)
- [Union All Rows Including Duplicates](postgres/union-all-rows-including-duplicates.md)
- [Use A psqlrc File For Common Settings](postgres/use-a-psqlrc-file-for-common-settings.md)
- [Use A Trigger To Mirror Inserts To Another Table](postgres/use-a-trigger-to-mirror-inserts-to-another-table.md)
- [Use Argument Indexes](postgres/use-argument-indexes.md)
- [Use Not Valid To Immediately Enforce A Constraint](postgres/use-not-valid-to-immediately-enforce-a-constraint.md)
- [Use Rename To Hot Swap Two Tables](postgres/use-rename-to-hot-swap-two-tables.md)
- [Use Variables In An Anonymous Function](postgres/use-variables-in-an-anonymous-function.md)
- [Using Expressions In Indexes](postgres/using-expressions-in-indexes.md)
- [Using Intervals To Offset Time](postgres/using-intervals-to-offset-time.md)
- [Who Is The Current User](postgres/who-is-the-current-user.md)
- [Word Count for a Column](postgres/word-count-for-a-column.md)
- [Write A Query Result To File](postgres/write-a-query-result-to-file.md)

### Prisma

- [Apply Separate Formatting With A Blank Line](prisma/apply-separate-formatting-with-a-blank-line.md)
- [Batch Insert Records With createMany](prisma/batch-insert-records-with-create-many.md)
- [Check If Database And Schema Are Not In Sync](prisma/check-if-database-and-schema-are-not-in-sync.md)
- [Configure Client To Log SQL Queries](prisma/configure-client-to-log-sql-queries.md)
- [Execute A Raw SQL Query](prisma/execute-a-raw-sql-query.md)
- [Grab A Limited Set Of Records](prisma/grab-a-limited-set-of-records.md)
- [Open Connections To Multiple Databases](prisma/open-connections-to-multiple-databases.md)
- [Override Table Name For Prisma Model](prisma/override-table-name-for-prisma-model.md)
- [Specify Alternate Location For Prisma Schema](prisma/specify-alternate-location-for-prisma-schema.md)

### Python

- [Access Instance Variables](python/access-instance-variables.md)
- [Access Most Recent Return Value In REPL](python/access-most-recent-return-value-in-repl.md)
- [Break Debugger On First Line Of Program](python/break-debugger-on-first-line-of-program.md)
- [Check If Package Is Installed With Pip](python/check-if-package-is-installed-with-pip.md)
- [Control Passing Of Time In Tests](python/control-passing-of-time-in-tests.md)
- [Create A Dummy DataFrame In Pandas](python/create-a-dummy-dataframe-in-pandas.md)
- [Create A Range Of Descending Values](python/create-a-range-of-descending-values.md)
- [Dunder Methods](python/dunder-methods.md)
- [Easy Key-Value Aggregates With defaultdict](python/easy-key-value-aggregates-with-defaultdict.md)
- [Install With PIP For Specific Interpreter](python/install-with-pip-for-specific-interpreter.md)
- [Iterate First N Items From Enumerable](python/iterate-first-n-items-from-enumerable.md)
- [Iterate Over A Dictionary](python/iterate-over-a-dictionary.md)
- [Keep A Tally With collections.Counter](python/keep-a-tally-with-collections-counter.md)
- [Load A File Into The Python REPL](python/load-a-file-into-the-python-repl.md)
- [Look Inside Pytest tmp_path](python/look-inside-pytest-tmp-path.md)
- [Override The Boolean Context Of A Class](python/override-the-boolean-context-of-a-class.md)
- [Parse Relative Time To datetime Object](python/parse-relative-time-to-datetime-object.md)
- [Store And Access Immutable Data In A Tuple](python/store-and-access-immutable-data-in-a-tuple.md)
- [Test A Function With Pytest](python/test-a-function-with-pytest.md)
- [Use pipx To Install End User Apps](python/use-pipx-to-install-end-user-apps.md)
- [Use Verbose Flag To Get More Diff](python/use-verbose-flag-to-get-more-diff.md)

### Rails

- [Access Secrets In A Rails 5.2 App](rails/access-secrets-in-a-rails-5-2-app.md)
- [ActiveRecord Query For This Or That](rails/active-record-query-for-this-or-that.md)
- [Add A Check Constraint To A Table](rails/add-a-check-constraint-to-a-table.md)
- [Add A Database Index If It Does Not Already Exist](rails/add-a-database-index-if-it-does-not-already-exist.md)
- [Add A Foreign Key Reference To A Table](rails/add-a-foreign-key-reference-to-a-table.md)
- [Add A Generated Column To A PostgreSQL Table](rails/add-a-generated-column-to-a-postgresql-table.md)
- [Add A Reference Column With An Index](rails/add-a-reference-column-with-an-index.md)
- [Add ActiveRecord Error Not Tied To Any Attribute](rails/add-activerecord-error-not-tied-to-any-attribute.md)
- [Add Color To The IRB Console Prompt](rails/add-color-to-the-irb-console-prompt.md)
- [Add React With Webpacker To A New Rails App](rails/add-react-with-webpacker-to-a-new-rails-app.md)
- [Add timestamptz Columns With The Migration DSL](rails/add-timestamptz-columns-with-the-migration-dsl.md)
- [Adjust The Production Log Level](rails/adjust-the-production-log-level.md)
- [Advance The Date](rails/advance-the-date.md)
- [Allow Associations To Be Optional](rails/allow-associations-to-be-optional.md)
- [Allow List Params Anywhere With Strong Params](rails/allow-list-params-anywhere-with-strong-params.md)
- [All or Nothing Database Transactions](rails/all-or-nothing-database-transactions.md)
- [Alphabetize Schema Columns To Keep Them Consistent](rails/alphabetize-schema-columns-to-keep-them-consistent.md)
- [Alter The Rails Setup Script](rails/alter-the-rails-setup-script.md)
- [Apply Basic HTML Formatting To Block Of Text](rails/apply-basic-html-formatting-to-block-of-text.md)
- [Assert Two Arrays Have The Same Items With RSpec](rails/assert-two-arrays-have-the-same-items-with-rspec.md)
- [Attach A File With Capybara](rails/attach-a-file-with-capybara.md)
- [Attribute Getter without the Recursion](rails/attribute-getter-without-the-recursion.md)
- [Attribute Was](rails/attribute-was.md)
- [Autosave False On ActiveRecord Associations](rails/autosave-false-on-activerecord-associations.md)
- [Bind Parameters To ActiveRecord SQL Query](rails/bind-parameters-to-activerecord-sql-query.md)
- [Build A Hash Of Model Attributes](rails/build-a-hash-of-model-attributes.md)
- [Capture Development Emails With Mailhog](rails/capture-development-emails-with-mailhog.md)
- [Capybara Page Status Code](rails/capybara-page-status-code.md)
- [Cast Common Boolean-Like Values To Booleans](rails/cast-common-boolean-like-values-to-booleans.md)
- [Change The Nullability Of A Column](rails/change-the-nullability-of-a-column.md)
- [Change The Time Zone Offset Of A DateTime Object](rails/change-the-time-zone-offset-of-a-datetime-object.md)
- [Check How Database Is Configured](rails/check-how-database-is-configured.md)
- [Check If ActiveRecord Update Fails](rails/check-if-activerecord-update-fails.md)
- [Check If Any Records Have A Null Value](rails/check-if-any-records-have-a-null-value.md)
- [Check Specific Attributes On ActiveRecord Array](rails/check-specific-attributes-on-activerecord-array.md)
- [Check The Current Named Log Level](rails/check-the-current-named-log-level.md)
- [Clean Up Memory Hungry Rails Console Processes](rails/clean-up-memory-hungry-rails-console-processes.md)
- [Code Statistics For An Application](rails/code-statistics-for-an-application.md)
- [Columns With Default Values Are Nil On Create](rails/columns-with-default-values-are-nil-on-create.md)
- [Comparing DateTimes Down To Second Precision](rails/comparing-datetimes-down-to-second-precision.md)
- [Conditional Class Selectors in Haml](rails/conditional-class-selectors-in-haml.md)
- [Convert A Symbol To A Constant](rails/convert-a-symbol-to-a-constant.md)
- [Convert JSON Field To Hash With Indifferent Access](rails/convert-json-field-to-hash-with-indifferent-access.md)
- [Count The Number Of Records By Attribute](rails/count-the-number-of-records-by-attribute.md)
- [Create A Custom Named References Column](rails/create-a-custom-named-references-column.md)
- [Create A Join Table With The Migration DSL](rails/create-a-join-table-with-the-migration-dsl.md)
- [Create Table With bigint Id As Primary Key](rails/create-table-with-bigint-id-as-primary-key.md)
- [Creating Records of Has_One Associations](rails/creating-records-of-has-one-associations.md)
- [Custom Validation Message](rails/custom-validation-message.md)
- [Customize Paths And Helpers For Devise Routes](rails/customize-paths-and-helpers-for-devise-routes.md)
- [Customize Template For New Schema Migration](rails/customize-template-for-new-schema-migration.md)
- [Customize The Path Of A Resource Route](rails/customize-the-path-of-a-resource-route.md)
- [Define The Root Path For The App](rails/define-the-root-path-for-the-app.md)
- [Delete Paranoid Records](rails/delete-paranoid-records.md)
- [Demodulize A Class Name](rails/demodulize-a-class-name.md)
- [Determine The Configured Primary Key Type](rails/determine-the-configured-primary-key-type.md)
- [Different Ways To Add A Foreign Key Reference](rails/different-ways-to-add-a-foreign-key-reference.md)
- [Disambiguate Where In A Joined Relation](rails/disambiguate-where-in-a-joined-relation.md)
- [Empty find_by Returns First Record](rails/empty-find-by-returns-first-record.md)
- [Enforce Locals Passed To A Partial](rails/enforce-locals-passed-to-a-partial.md)
- [Ensure A Rake Task Cannot Write Data](rails/ensure-a-rake-task-cannot-write-data.md)
- [Ensure Migrations Use The Latest Schema](rails/ensure-migrations-use-the-latest-schema.md)
- [Ensure Record Saved With after_commit Callback](rails/ensure-record-saved-with-after-commit-callback.md)
- [Filter ActiveModel Validation Errors](rails/filter-active-model-validation-errors.md)
- [Filter ActiveStorage Blobs To Only Images](rails/filter-active-storage-blobs-to-only-images.md)
- [Find Or Create A Record With FactoryBot](rails/find-or-create-a-record-with-factory-bot.md)
- [Find Records With Multiple Associated Records](rails/find-records-with-multiple-associated-records.md)
- [Force All Users To Sign Out](rails/force-all-users-to-sign-out.md)
- [Format DateTime With Builtin Formats](rails/format-datetime-with-builtin-formats.md)
- [Format Specific html.erb Template Files](rails/format-specific-html-erb-template-files.md)
- [Generate A Model](rails/generate-a-model.md)
- [Generate A Rails App From The Main Branch](rails/generate-a-rails-app-from-the-main-branch.md)
- [Generating And Executing SQL](rails/generating-and-executing-sql.md)
- [Get A Quick Approximate Count Of A Large Table](rails/get-a-quick-approximate-count-of-a-large-table.md)
- [Get ActiveRecord Attribute Directly From Database](rails/get-active-record-attribute-directly-from-database.md)
- [Get An Array Of Values From The Database](rails/get-an-array-of-values-from-the-database.md)
- [Get An Empty ActiveRecord Relation](rails/get-an-empty-activerecord-relation.md)
- [Get Formatted UTC Offset Value](rails/get-formatted-utc-offset-value.md)
- [Get Help With A Rails App Update](rails/get-help-with-a-rails-app-update.md)
- [Get The Column Names For A Model](rails/get-the-column-names-for-a-model.md)
- [Get The Current Time](rails/get-the-current-time.md)
- [Grab A Random Record From The Database](rails/grab-a-random-record-from-the-database.md)
- [Handle Named Arguments In A Rake Task](rails/handle-named-arguments-in-a-rake-task.md)
- [Hash Slicing](rails/hash-slicing.md)
- [Ignore Poltergeist JavaScript Errors](rails/ignore-poltergeist-javascript-errors.md)
- [Include Devise Helpers In Your Controller Tests](rails/include-devise-helpers-in-your-controller-tests.md)
- [Inspect Configuration Of Database Connection](rails/inspect-configuration-of-database-connection.md)
- [Inspect Previous Changes To ActiveRecord Object](rails/inspect-previous-changes-to-activerecord-object.md)
- [Link To The Current Page With Query Params](rails/link-to-the-current-page-with-query-params.md)
- [List All Installable Rails Versions](rails/list-all-installable-rails-versions.md)
- [List The Enqueued Jobs](rails/list-the-enqueued-jobs.md)
- [Load A File When Starting Rails Console](rails/load-a-file-when-starting-rails-console.md)
- [Load Records In Batches With find_each](rails/load-records-in-batches-with-find-each.md)
- [Log SQL Queries Executed By ActiveRecord](rails/log-sql-queries-executed-by-activerecord.md)
- [Look Up Time Zone Info For Identifier](rails/look-up-time-zone-info-for-identifier.md)
- [Mark A Migration As Irreversible](rails/mark-a-migration-as-irreversible.md)
- [Make A String Attribute Easy To Inquire About](rails/make-a-string-attribute-easy-to-inquire-about.md)
- [Make ActionMailer Synchronous In Test](rails/make-action-mailer-synchronous-in-test.md)
- [Make Remove Column Migration Reversible](rails/make-remove-column-migration-reversible.md)
- [Manage Timestamps With Upsert](rails/manage-timestamps-with-upsert.md)
- [Manually Run A Migration From Rails Console](rails/manually-run-a-migration-from-rails-console.md)
- [Mark For Destruction](rails/mark-for-destruction.md)
- [Mask An ActiveRecord Attribute](rails/mask-an-activerecord-attribute.md)
- [Merge A Scope Into An ActiveRecord Query](rails/merge-a-scope-into-an-activerecord-query.md)
- [Migrating Up Down Up](rails/migrating-up-down-up.md)
- [Mock Rails Environment With An Inquiry Instance](rails/mock-rails-environment-with-an-inquiry-instance.md)
- [Order Matters For `rescue_from` Blocks](rails/order-matters-for-rescue-from-blocks.md)
- [Override Text Displayed By Form Label](rails/override-text-displayed-by-form-label.md)
- [Parameterize A String With Underscores](rails/parameterize-a-string-with-underscores.md)
- [Params Includes Submission Button Info](rails/params-includes-submission-button-info.md)
- [Params Is A Hash With Indifferent Access](rails/params-is-a-hash-with-indifferent-access.md)
- [Parse Query Params From A URL](rails/parse-query-params-from-a-url.md)
- [Parse Request Params In Rack::Attack Block](rails/parse-request-params-in-rack-attack-block.md)
- [Perform SQL Explain With ActiveRecord](rails/perform-sql-explain-with-activerecord.md)
- [Polymorphic Path Helpers](rails/polymorphic-path-helpers.md)
- [Prefer select_all Over execute For Read Queries](rails/prefer-select-all-over-execute-for-read-queries.md)
- [Pretend Generations](rails/pretend-generations.md)
- [Prevent Mailer Previews From Cluttering Database](rails/prevent-mailer-previews-from-cluttering-database.md)
- [Prevent Writes With A Sandboxed Rails Console](rails/prevent-writes-with-a-sandboxed-rails-console.md)
- [Provide Fake Form Helper To Controllers](rails/provide-fake-form-helper-to-controllers.md)
- [Query A Single Value From The Database](rails/query-a-single-value-from-the-database.md)
- [Read In Environment-Specific Config Values](rails/read-in-environment-specific-config-values.md)
- [Read-Only Models](rails/read-only-models.md)
- [Rebuild Tailwind Bundle For Dev Server](rails/rebuild-tailwind-bundle-for-dev-server.md)
- [Remove A Database Column From A Table](rails/remove-a-database-column-from-a-table.md)
- [Remove The Default Value On A Column](rails/remove-the-default-value-on-a-column.md)
- [Render An Alternative ActionMailer Template](rails/render-an-alternative-action-mailer-template.md)
- [Render The Response Body In Controller Specs](rails/render-the-response-body-in-controller-specs.md)
- [Replace An Index With A Unique Index](rails/replace-an-index-with-a-unique-index.md)
- [Rescue From](rails/rescue-from.md)
- [Rescue From With A Separate Method](rails/rescue-from-with-a-separate-method.md)
- [Respond With JSON Regardless of Content Type](rails/respond-with-json-regardless-of-content-type.md)
- [Restart Puma Server By Touching Restart File](rails/restart-puma-server-by-touching-restart-file.md)
- [Retrieve An Object If It Exists](rails/retrieve-an-object-if-it-exists.md)
- [Rollback A Couple Migrations](rails/rollback-a-couple-migrations.md)
- [Rollback A Specific Migration Out Of Order](rails/rollback-a-specific-migration-out-of-order.md)
- [Rounding Numbers With Precision](rails/rounding-numbers-with-precision.md)
- [Run A Rake Task Programmatically](rails/run-a-rake-task-programmatically.md)
- [Run Commands With Specific Rails Version](rails/run-commands-with-specific-rails-version.md)
- [Run Dev Processes With Overmind Instead Of Foreman](rails/run-dev-processes-with-overmind-instead-of-foreman.md)
- [Run Rails Console With Remote Dokku App](rails/run-rails-console-with-remote-dokku-app.md)
- [Run Some Code Whenever Rails Console Starts](rails/run-some-code-whenever-rails-console-starts.md)
- [Scaffold Auth Functionality With Rails 8 Generator](rails/scaffold-auth-functionality-with-rails-8-generator.md)
- [Schedule Sidekiq Jobs Out Into The Future](rails/schedule-sidekiq-jobs-out-into-the-future.md)
- [Scope Records To A Lower Or Upper Bound](rails/scope-records-to-a-lower-or-upper-bound.md)
- [Secure Passwords With Rails And Bcrypt](rails/secure-passwords-with-rails-and-bcrypt.md)
- [Select A Select By Selector](rails/select-a-select-by-selector.md)
- [Select A Specific Rails Version To Install](rails/select-a-specific-rails-version-to-install.md)
- [Select Value For SQL Counts](rails/select-value-for-sql-counts.md)
- [Serialize With fast_jsonapi In A Rails App](rails/serialize-with-fast-jsonapi-in-a-rails-app.md)
- [Set A Timestamp Field To The Current Time](rails/set-a-timestamp-field-to-the-current-time.md)
- [Set DateTime To Include Time Zone In Migrations](rails/set-datetime-to-include-time-zone-in-migrations.md)
- [Set Default As SQL Function In Migration](rails/set-default-as-sql-function-in-migration.md)
- [Set default_url_options For Entire Application](rails/set-default-url-options-for-entire-application.md)
- [Set Meta Tags In ERB Views](rails/set-meta-tags-in-erb-views.md)
- [Set Schema Search Path](rails/set-schema-search-path.md)
- [Set Statement Timeout For All Postgres Connections](rails/set-statement-timeout-for-all-postgres-connections.md)
- [Set The Default Development Port](rails/set-the-default-development-port.md)
- [Show Pending Migrations](rails/show-pending-migrations.md)
- [Show Rails Models With Pry](rails/show-rails-models-with-pry.md)
- [Show Rails Routes With Pry](rails/show-rails-routes-with-pry.md)
- [Skip Validations When Creating A Record](rails/skip-validations-when-creating-a-record.md)
- [Specify New Attributes For #find_or_create_by](rails/specify-new-attributes-for-find-or-create-by.md)
- [Temporarily Disable strong_params](rails/temporarily-disable-strong-params.md)
- [Temporarily Turn Off Pending Migrations Error](rails/temporarily-turn-off-pending-migrations-error.md)
- [Test For A Subset Of Attributes On A Model](rails/test-for-a-subset-of-attributes-on-a-model.md)
- [Test If An Instance Variable Was Assigned](rails/test-if-an-instance-variable-was-assigned.md)
- [Test If deliver_later Is Called For A Mailer](rails/test-if-deliver-later-is-called-for-a-mailer.md)
- [Test Out URL And Path Helpers In The Console](rails/test-out-url-and-path-helpers-in-the-console.md)
- [Truncate Almost All Tables](rails/truncate-almost-all-tables.md)
- [Update Column Versus Update Attribute](rails/update-column-versus-update-attribute.md)
- [Upgrading Your Manifest For Sprocket's 4](rails/upgrading-your-manifest-for-sprockets-4.md)
- [Use IRB And Ruby Flags With Rails Console](rails/use-irb-and-ruby-flags-with-rails-console.md)
- [Use .ruby Extension For Template File](rails/use-ruby-extension-for-template-file.md)
- [Useful ActiveSupport Constants For Durations](rails/useful-active-support-constants-for-durations.md)
- [Validate Column Data With Check Constraints](rails/validate-column-data-with-check-constraints.md)
- [Verify And Read A Signed Cookie Value](rails/verify-and-read-a-signed-cookie-value.md)
- [Where Am I In The Partial Iteration?](rails/where-am-i-in-the-partial-iteration.md)
- [Why Redirect And Return In Controllers](rails/why-redirect-and-return-in-controllers.md)
- [Wipe Out All Precompiled Assets](rails/wipe-out-all-precompiled-assets.md)
- [Write Reversible Migration To Set Default](rails/write-reversible-migration-to-set-default.md)
- [Write Safer Where Clauses With Placeholders](rails/write-safer-where-clauses-with-placeholders.md)

### React

- [A Component Is Just A Bag Of Data](react/a-component-is-just-a-bag-of-data.md)
- [Access The Latest Lifecycle Methods In An Old App](react/access-the-latest-lifecycle-methods-in-an-old-app.md)
- [Accessing Env Vars In create-react-app](react/accessing-env-vars-in-create-react-app.md)
- [Accessing Location Within @reach/router](react/accessing-location-within-reach-router.md)
- [Allow md As An Extension With gatsby-mdx](react/allow-md-as-an-extension-with-gatsby-mdx.md)
- [Alter The Display Name Of A Component](react/alter-the-display-name-of-a-component.md)
- [Building A React App In The Browser](react/building-a-react-app-in-the-browser.md)
- [Check The Type Of A Child Component](react/check-the-type-of-a-child-component.md)
- [Conditionally Including Event Handler Functions](react/conditionally-including-event-handler-functions.md)
- [Create A Snowpack-Bundled React App](react/create-a-snowpack-bundled-react-app.md)
- [Create Dynamically Named Custom React Components](react/create-dynamically-named-custom-react-components.md)
- [create-react-app Comes With Lodash](react/create-react-app-comes-with-lodash.md)
- [create-react-app Has A Default Test Setup File](react/create-react-app-has-a-default-test-setup-file.md)
- [CSS !important Is Not Supported By Inline Styles](react/css-important-is-not-supported-by-inline-styles.md)
- [Debug Jest Tests In create-react-app](react/debug-jest-tests-in-create-react-app.md)
- [Defining State In A Simple Class Component](react/defining-state-in-a-simple-class-component.md)
- [Destructure Variables As Props To A Component](react/destructure-variables-as-props-to-a-component.md)
- [Details Tags Are A Controllable Component](react/details-tags-are-a-controllable-component.md)
- [Dispatch Anywhere With Redux](react/dispatch-anywhere-with-redux.md)
- [Dynamically Add Props To A Child Component](react/dynamically-add-props-to-a-child-component.md)
- [Dynamically Create HTML Elements](react/dynamically-create-html-elements.md)
- [Enforce Specific Values With PropTypes](react/enforce-specific-values-with-proptypes.md)
- [Focus An Input With useRef Hook](react/focus-an-input-with-useref-hook.md)
- [Force A Component To Only Have One Child](react/force-a-component-to-only-have-one-child.md)
- [Forcing A Child Remount With The Key Prop](react/forcing-a-child-remount-with-the-key-prop.md)
- [Formik Connected Components](react/formik-connected-components.md)
- [Formik's Validation Schema As A Function](react/formiks-validation-schema-as-a-function.md)
- [Inactive And Active Component Styles With Radium](react/inactive-and-active-component-styles-with-radium.md)
- [Inline Style Attributes Should Be Camel Cased](react/inline-style-attributes-should-be-camel-cased.md)
- [Manage State In A Functional Component](react/manage-state-in-a-functional-component.md)
- [Mapping Over One Or Many Children](react/mapping-over-one-or-many-children.md)
- [Mock A Function That A Component Imports](react/mock-a-function-that-a-component-imports.md)
- [Navigate With State Via @reach/router](react/navigate-with-state-via-reach-router.md)
- [Pairing A Callback With A useState Hook](react/pairing-a-callback-with-a-usestate-hook.md)
- [Pass A Function To A useState Updater](react/pass-a-function-to-a-usestate-updater.md)
- [Passing Props Down To React-Router Route](react/passing-props-down-to-react-router-route.md)
- [Prevent reach/router Redirect Error Screen In Dev](react/prevent-reach-router-redirect-error-screen-in-dev.md)
- [Proxy To An API Server In Development With CRA](react/proxy-to-an-api-server-in-development-with-cra.md)
- [Quickly Search For A Component With React DevTools](react/quickly-search-for-a-component-with-react-devtools.md)
- [@reach/router Renders To A Div](react/reach-router-renders-to-a-div.md)
- [Read Only Input Elements](react/read-only-input-elements.md)
- [Rendering Multiple Nodes With Fragments](react/rendering-multiple-nodes-with-fragments.md)
- [Set The Type For A useState Hook](react/set-the-type-for-a-usestate-hook.md)
- [Specifying Dependencies Of A useEffect Hook](react/specifying-dependencies-of-a-useeffect-hook.md)
- [Spelunking Through Components With Enzyme's Dive](react/spelunking-through-components-with-enzymes-dive.md)
- [Sync Your react-router State With Redux](react/sync-your-react-router-state-with-redux.md)
- [Test Files In create-react-app](react/test-files-in-create-react-app.md)
- [Test That Element Does Not Render In The Component](react/test-that-element-does-not-render-in-the-component.md)
- [Trigger Effect Only When The Component Mounts](react/trigger-effect-only-when-the-component-mounts.md)
- [Update Formik Initial Values When Props Change](react/update-formik-initial-values-when-props-change.md)
- [Upgrading To The Latest React In CodeSandbox](react/upgrading-to-the-latest-react-in-codesandbox.md)
- [Use A Ref To Autofocus An Input](react/use-a-ref-to-autofocus-an-input.md)
- [Use React 16 With Gatsby](react/use-react-16-with-gatsby.md)
- [Use withRouter To Pass Down React-Router History](react/use-withrouter-to-pass-down-react-router-history.md)
- [Visually Select A React Element For Inspection](react/visually-select-a-react-element-for-inspection.md)
- [Who Is Your Favorite Child?](react/who-is-your-favorite-child.md)
- [Wrap The Root Of A Gatsby App In A Component](react/wrap-the-root-of-a-gatsby-app-in-a-component.md)

### React Native

- [Avoid The Notch With SafeAreaView](react_native/avoid-the-notch-with-safeareaview.md)

### React Testing Library

- [Check That A Component Renders As Null](react-testing-library/check-that-a-component-renders-as-null.md)
- [findBy\* Queries Have Async Built In](react-testing-library/find-by-queries-have-async-built-in.md)
- [Pretty Print Some DOM To Debug A Test](react-testing-library/pretty-print-some-dom-to-debug-a-test.md)
- [Test A Component That Uses React Portals](react-testing-library/test-a-component-that-uses-react-portals.md)

### ReasonML

- [Break Out Of A While Loop](reason/break-out-of-a-while-loop.md)
- [Compile Reason To Native With Dune](reason/compile-reason-to-native-with-dune.md)
- [Compile Reason With An OCaml Package Using Dune](reason/compile-reason-with-an-ocaml-package-using-dune.md)
- [Create A Map Of Strings](reason/create-a-map-of-strings.md)
- [Create A Stream From An Array](reason/create-a-stream-from-an-array.md)
- [Creating A 2D Array](reason/creating-a-2d-array.md)
- [Data Structures With Self-Referential Types](reason/data-structures-with-self-referential-types.md)
- [Defining Variants With Constructor Arguments](reason/defining-variants-with-constructor-arguments.md)
- [Dynamically Create A Printf String Format](reason/dynamically-create-a-printf-string-format.md)
- [Exhaustive Pattern Matching Of List Variants](reason/exhaustive-pattern-matching-of-list-variants.md)
- [Format The Current File Within Vim](reason/format-the-current-file-within-vim.md)
- [Generate A Native ReasonML Project With Pesy](reason/generate-a-native-reasonml-project-with-pesy.md)
- [Generate Starter Reason Projects](reason/generate-starter-reason-projects.md)
- [Helping The Compiler Help Us With Variants](reason/helping-the-compiler-help-us-with-variants.md)
- [Inline Component Styles With Reason React](reason/inline-component-styles-with-reason-react.md)
- [Is This A Directory Or A File?](reason/is-this-a-directory-or-a-file.md)
- [Making Things Mutable](reason/making-things-mutable.md)
- [Modifying A String With blit_string](reason/modifying-a-string-with-blit-string.md)
- [Multi-Argument Functions As Syntactic Sugar](reason/multi-argument-functions-as-syntactic-sugar.md)
- [Pattern Match On Exceptions](reason/pattern-match-on-exceptions.md)
- [Quickly Bootstrap A React App Using Reason](reason/quickly-bootstrap-a-react-app-using-reason.md)
- [Seeding And Generating Random Integers](reason/seeding-and-generating-random-integers.md)
- [Stream A File Line By Line](reason/stream-a-file-line-by-line.md)
- [String Interpolation With Integers And Sprintf](reason/string-interpolation-with-integers-and-sprintf.md)
- [String Interpolation With Quoted Strings](reason/string-interpolation-with-quoted-strings.md)
- [Trying Out ReasonML In CodeSandbox](reason/trying-out-reasonml-in-codesandbox.md)
- [Two Ways To Find An Item In A List](reason/two-ways-to-find-an-item-in-a-list.md)
- [Using Optional Labeled Function Arguments](reason/using-optional-labeled-function-arguments.md)
- [Wrapping A Component For Use In JavaScript](reason/wrapping-a-component-for-use-in-javascript.md)

### Remix

- [Get Query Params From The Request URL](remix/get-query-params-from-the-request-url.md)
- [Markdown And MDX Files Are Rendered To Routes](remix/markdown-and-mdx-files-are-rendered-to-routes.md)
- [Relative And Absolute Paths In Links](remix/relative-and-absolute-paths-in-links.md)
- [Run The Development Server From Another Port](remix/run-the-development-server-from-another-port.md)
- [Set The Title Of A Page](remix/set-the-title-of-a-page.md)

### RSpec

- [Avoid Accidentally Disabling Pry](rspec/avoid-accidentally-disabling-pry.md)
- [Check Specific Arguments To Received Method](rspec/check-specific-arguments-to-received-method.md)
- [Configure Tests To Run In Random Order](rspec/configure-tests-to-run-in-random-order.md)
- [Find Minimal Set Of Tests Causing A Flicker](rspec/find-minimal-set-of-tests-causing-a-flicker.md)
- [Format Test Results As A JSON File](rspec/format-test-results-as-a-json-file.md)
- [Run Tests With Documentation Formatting](rspec/run-tests-with-documentation-formatting.md)
- [Use Specific Cache Store In A Single Test](rspec/use-specific-cache-store-in-a-single-test.md)

### Ruby

- [A Basic Case Statement](ruby/a-basic-case-statement.md)
- [A Shorthand For Rerunning Failed Tests With RSpec](ruby/a-shorthand-for-rerunning-failed-tests-with-rspec.md)
- [Add Comments To Regex With Free-Spacing](ruby/add-comments-to-regex-with-free-spacing.md)
- [Add Linux As A Bundler Platform](ruby/add-linux-as-a-bundler-platform.md)
- [Add Progress Reporting To Long-Running Script](ruby/add-progress-reporting-to-long-running-script.md)
- [Are They All True?](ruby/are-they-all-true.md)
- [Assert About An Object's Attributes With RSpec](ruby/assert-about-an-objects-attributes-with-rspec.md)
- [Assoc For Hashes](ruby/assoc-for-hashes.md)
- [Audit Your Ruby Project For Any CVEs](ruby/audit-your-ruby-project-for-any-cves.md)
- [Avoid Double Negation With Minitest Refute](ruby/avoid-double-negation-with-minitest-refute.md)
- [Block Comments](ruby/block-comments.md)
- [Block Syntaxes Have Different Precedence](ruby/block-syntaxes-have-different-precedence.md)
- [Build HTTP And HTTPS URLs](ruby/build-http-and-https-urls.md)
- [Chaining Multiple RSpec Change Matchers](ruby/chaining-multiple-rspec-change-matchers.md)
- [Check For Any Overlaps In List Of Ranges](ruby/check-for-any-overlaps-in-list-of-ranges.md)
- [Check If A URL Resolves To 200](ruby/check-if-a-url-resolves-to-200.md)
- [Check If An Object Includes A Module](ruby/check-if-an-object-includes-a-module.md)
- [Check Return Status Of Running A Shell Command](ruby/check-return-status-of-running-a-shell-command.md)
- [Clamp To An Endless Range](ruby/clamp-to-an-endless-range.md)
- [Click On Text With Capybara](ruby/click-on-text-with-capybara.md)
- [Colorful Output With MiniTest](ruby/colorful-output-with-minitest.md)
- [Comparing Class Hierarchy Relationships](ruby/comparing-class-hierarchy-relationships.md)
- [Comparing Arrays In RSpec](ruby/comparing-arrays-in-rspec.md)
- [Construct A Constant From A String](ruby/construct-a-constant-from-a-string.md)
- [Convert A Unix Epoch Timestamp To A Time Object](ruby/convert-a-unix-epoch-timestamp-to-a-time-object.md)
- [Create an Array of Stringed Numbers](ruby/create-an-array-of-stringed-numbers.md)
- [Create a CSV::Table Object](ruby/create-a-csv-table-object.md)
- [Create A Hash From An Array Of Arrays](ruby/create-a-hash-from-an-array-of-arrays.md)
- [Create Listing Of All Middleman Pages](ruby/create-listing-of-all-middleman-pages.md)
- [Create Mock Class That Can Be Overridden](ruby/create-mock-class-that-can-be-overridden.md)
- [Create A Module Of Utility Functions](ruby/create-a-module-of-utility-functions.md)
- [Create Named Structs With Struct.new](ruby/create-named-structs-with-struct-new.md)
- [Create Thumbnail Image For A PDF](ruby/create-thumbnail-image-for-a-pdf.md)
- [Decompose Unicode Character With Diacritic Mark](ruby/decompose-unicode-character-with-diacritic-mark.md)
- [Defaulting To Frozen String Literals](ruby/defaulting-to-frozen-string-literals.md)
- [Define A Custom RSpec Matcher](ruby/define-a-custom-rspec-matcher.md)
- [Define A Method On A Struct](ruby/define-a-method-on-a-struct.md)
- [Define Multiline Strings With Heredocs](ruby/define-multiline-strings-with-heredocs.md)
- [Destructure The First Item From An Array](ruby/destructure-the-first-item-from-an-array.md)
- [Destructuring Arrays In Blocks](ruby/destructuring-arrays-in-blocks.md)
- [Disable Interpolation For A Heredoc String](ruby/disable-interpolation-for-a-heredoc-string.md)
- [Disassemble Some Codes](ruby/disassemble-some-codes.md)
- [Double Splat To Merge Hashes](ruby/double-splat-to-merge-hashes.md)
- [Edit Previous Parts Of The Pry Buffer History](ruby/edit-previous-parts-of-the-pry-buffer-history.md)
- [Editing Code In Pry](ruby/editing-code-in-pry.md)
- [Encode A String As URL-Safe Base64](ruby/encode-a-string-as-url-safe-base64.md)
- [Enumerate A Pairing Of Every Two Sequential Items](ruby/enumerate-a-pairing-of-every-two-sequential-items.md)
- [Evaluating One-Off Commands](ruby/evaluating-one-off-commands.md)
- [Exclude Values From An Array](ruby/exclude-values-from-an-array.md)
- [Execute Several Commands With Backtick Heredoc](ruby/execute-several-commands-with-backtick-heredoc.md)
- [Exit A Process With An Error Message](ruby/exit-a-process-with-an-error-message.md)
- [Expect A Method To Be Called And Actually Call It](ruby/expect-a-method-to-be-called-and-actually-call-it.md)
- [Extract A Column Of Data From A CSV File](ruby/extract-a-column-of-data-from-a-csv-file.md)
- [Extract Capture Group Matches With String Slices](ruby/extract-capture-group-matches-with-string-slices.md)
- [FactoryGirl Sequences](ruby/factory-girl-sequences.md)
- [Fail](ruby/fail.md)
- [Fetch Warns About Superseding Block Argument](ruby/fetch-warns-about-superseding-block-argument.md)
- [Filter By Type](ruby/filter-by-type.md)
- [Find The Min And Max With A Single Call](ruby/find-the-min-and-max-with-a-single-call.md)
- [Finding The Source of Ruby Methods](ruby/finding-the-source-of-ruby-methods.md)
- [Format A Hash Into A String Template](ruby/format-a-hash-into-a-string-template.md)
- [Forward All Arguments To Another Method](ruby/forward-all-arguments-to-another-method.md)
- [Gather Positional Arguments In Method Definition](ruby/gather-positional-arguments-in-method-definition.md)
- [Generate A Signed JWT Token](ruby/generate-a-signed-jwt-token.md)
- [Generate Ruby Version And Gemset Files With RVM](ruby/generate-ruby-version-and-gemset-files-with-rvm.md)
- [Get Info About Your RubyGems Environment](ruby/get-info-about-your-ruby-gems-environment.md)
- [Get Specific Values From Arrays And Hashes](ruby/get-specific-values-from-hashes-and-arrays.md)
- [Get The Names Of The Month](ruby/get-the-names-of-the-month.md)
- [Get The Output Of Running A System Program](ruby/get-the-output-of-running-a-system-program.md)
- [Get UTC Offset For Different Time Zones](ruby/get-utc-offset-for-different-time-zones.md)
- [Identify Outdated Gems](ruby/identify-outdated-gems.md)
- [If You Detect None](ruby/if-you-detect-none.md)
- [Iterate With An Offset Index](ruby/iterate-with-an-offset-index.md)
- [Include Extra Context In A Honeybadger Notify](ruby/include-extra-context-in-a-honeybadger-notify.md)
- [Ins And Outs Of Pry](ruby/ins-and-outs-of-pry.md)
- [Install And Require Gems Inline Without Gemfile](ruby/install-and-require-gems-inline-without-gemfile.md)
- [Install Latest Version Of Ruby With asdf](ruby/install-latest-version-of-ruby-with-asdf.md)
- [Invoking Rake Tasks Multiple Times](ruby/invoking-rake-tasks-multiple-times.md)
- [IRB Has Built-In Benchmarking With Ruby 3](ruby/irb-has-built-in-benchmarking-with-ruby-3.md)
- [Join URI Path Parts](ruby/join-uri-path-parts.md)
- [Jump Out Of A Nested Context With Throw/Catch](ruby/jump-out-of-a-nested-context-with-throw-catch.md)
- [Last Raised Exception In The Call Stack](ruby/last-raised-exception-in-the-call-stack.md)
- [Limit Split](ruby/limit-split.md)
- [List The Running Ruby Version](ruby/list-the-running-ruby-version.md)
- [Listing Local Variables](ruby/listing-local-variables.md)
- [Load A Module And Execute A Statement](ruby/load-a-module-and-execute-a-statement.md)
- [Make A Long String Of Text Readable](ruby/make-a-long-string-of-text-readable.md)
- [Make An Executable Ruby Script](ruby/make-an-executable-ruby-script.md)
- [Make Structs Easier To Use With Keyword Initialization](ruby/make-structs-easier-to-use-with-keyword-initialization.md)
- [Map With Index Over An Array](ruby/map-with-index-over-an-array.md)
- [Mock Method Chain Calls With RSpec](ruby/mock-method-chain-calls-with-rspec.md)
- [Mocking Requests With Partial URIs Using Regex](ruby/mocking-requests-with-partial-uris-using-regex.md)
- [Multi-Line Comments](ruby/multi-line-comments.md)
- [Named Regex Captures Are Assigned To Variables](ruby/named-regex-captures-are-assigned-to-variables.md)
- [Navigate Back In The Browser With Capybara](ruby/navigate-back-in-the-browser-with-capybara.md)
- [Next And Previous Floats](ruby/next-and-previous-floats.md)
- [OpenStruct Has Bad Performance Characteristics](ruby/open-struct-has-bad-performance-characteristics.md)
- [Or Operator Precedence](ruby/or-operator-precedence.md)
- [Output Bytecode For A Ruby Program](ruby/output-bytecode-for-a-ruby-program.md)
- [Override The Initial Sequence Value](ruby/override-the-initial-sequence-value.md)
- [Parallel Bundle Install](ruby/parallel-bundle-install.md)
- [Parse JSON Into An OpenStruct](ruby/parse-json-into-an-open-struct.md)
- [Parsing A CSV With Quotes In The Data](ruby/parsing-a-csv-with-quotes-in-the-data.md)
- [Pass A Block To Count](ruby/pass-a-block-to-count.md)
- [Passing Arbitrary Methods As Blocks](ruby/passing-arbitrary-methods-as-blocks.md)
- [Passing Arguments To A Rake Task](ruby/passing-arguments-to-a-rake-task.md)
- [Pattern Match Values From A Hash](ruby/pattern-match-values-from-a-hash.md)
- [Percent Notation](ruby/percent-notation.md)
- [Precedence Of Logical Operators](ruby/precedence-of-logical-operators.md)
- [Prevent erb_lint From Removing Opening Tags](ruby/prevent-erb-lint-from-removing-opening-tags.md)
- [Print Data To Formatted Table](ruby/print-data-to-formatted-table.md)
- [Question Mark Operator](ruby/question-mark-operator.md)
- [Rake Only Lists Tasks With Descriptions](ruby/rake-only-lists-tasks-with-descriptions.md)
- [Read The First Line From A File](ruby/read-the-first-line-from-a-file.md)
- [Refer To Implicit Block Argument With It](ruby/refer-to-implicit-block-argument-with-it.md)
- [Reference Hash Key With Safe Navigation](ruby/reference-hash-key-with-safe-navigation.md)
- [Regenerate Lock File With Newer Bundler](ruby/regenerate-lock-file-with-newer-bundler.md)
- [Rendering ERB](ruby/rendering-erb.md)
- [Replace The Current Process With An External Command](ruby/replace-the-current-process-with-an-external-command.md)
- [Require Entire Gemfile In Pry Session](ruby/require-entire-gemfile-in-pry-session.md)
- [Rerun Only Failures With RSpec](ruby/rerun-only-failures-with-rspec.md)
- [Retry A Block After An Exception](ruby/retry-a-block-after-an-exception.md)
- [Return The Thing Being Printed](ruby/return-the-thing-being-printed.md)
- [Returning With Sequel](ruby/returning-with-sequel.md)
- [rexml Is A Bundled Gem As Of Ruby 3.0.0](ruby/rexml-is-a-bundled-gem-as-of-ruby-3-0-0.md)
- [Run An Older Version Of Bundler](ruby/run-an-older-version-of-bundler.md)
- [Running A Single MiniTest Example](ruby/running-a-single-minitest-example.md)
- [Safe Navigation Operator](ruby/safe-navigation-operator.md)
- [Scripting With RVM](ruby/scripting-with-rvm.md)
- [Scroll To Top Of Page With Capybara](ruby/scroll-to-top-of-page-with-capybara.md)
- [Search For Gem Versions Available To Install](ruby/search-for-gem-versions-available-to-install.md)
- [Set Default Tasks For Rake To Run](ruby/set-default-tasks-for-rake-to-run.md)
- [Set RVM Default Ruby](ruby/set-rvm-default-ruby.md)
- [Shift The Month On A Date Object](ruby/shift-the-month-on-a-date-object.md)
- [Show Public Methods With Pry](ruby/show-public-methods-with-pry.md)
- [Show The Bundler Location Of An Installed Gem](ruby/show-the-bundler-location-of-an-installed-gem.md)
- [Silence The Output Of A Ruby Statement In Pry](ruby/silence-the-output-of-a-ruby-statement-in-pry.md)
- [Single And Double Quoted String Notation](ruby/single-and-double-quoted-string-notation.md)
- [Skip Specific CVEs When Auditing Your Bundle](ruby/skip-specific-cves-when-auditing-your-bundle.md)
- [Skip The Front Of An Array With Drop](ruby/skip-the-front-of-an-array-with-drop.md)
- [Specify Default For Data Definition](ruby/specify-default-for-data-definition.md)
- [Specify Dependencies For A Rake Task](ruby/specify-dependencies-for-a-rake-task.md)
- [Specify How Random Array#sample Is](ruby/specify-how-random-array-sample-is.md)
- [Split A Float Into Its Integer And Decimal](ruby/split-a-float-into-its-integer-and-decimal.md)
- [Squeeze Out The Extra Space](ruby/squeeze-out-the-extra-space.md)
- [Stack Heredocs In A Method Call](ruby/stack-heredocs-in-a-method-call.md)
- [String Interpolation With Instance Variables](ruby/string-interpolation-with-instance-variables.md)
- [Summing Collections](ruby/summing-collections.md)
- [Triple Equals: The Case Equality Operator](ruby/triple-equals-the-case-equality-operator.md)
- [Turn Key And Value Arrays Into A Hash](ruby/turn-key-and-values-arrays-into-a-hash.md)
- [Turning Any Class Into An Enumerator](ruby/turning-any-class-into-an-enumerator.md)
- [Turning Things Into Hashes](ruby/turning-things-into-hashes.md)
- [Uncaught Exceptions In Pry](ruby/uncaught-exceptions-in-pry.md)
- [`undef_method` And The Inheritance Hierarchy](ruby/undef-method-and-the-inheritance-hierarchy.md)
- [Uninstall Specific Version Of A Ruby Gem](ruby/uninstall-specific-version-of-a-ruby-gem.md)
- [Unpacking Strings Into Binary](ruby/unpacking-strings-into-binary.md)
- [Up And Down With Integers](ruby/up-and-down-with-integers.md)
- [Update The Gemfile Bundled With Version](ruby/update-the-gemfile-bundled-with-version.md)
- [Use A Case Statement As A Cond Statement](ruby/use-a-case-statement-as-a-cond-statement.md)
- [Use dotenv In A Non-Rails Project](ruby/use-dotenv-in-a-non-rails-project.md)
- [Use Tap For Better Test Data Setup](ruby/use-tap-for-better-test-data-setup.md)
- [Using BCrypt To Create And Check Hashed Passwords](ruby/using-bcrypt-to-create-and-check-hashed-passwords.md)
- [What To Do When You Don't Rescue](ruby/what-to-do-when-you-dont-rescue.md)
- [Who Are My Ancestors?](ruby/who-are-my-ancestors.md)
- [Wrap Things In An Array, Even Hashes](ruby/wrap-things-in-an-array-even-hashes.md)
- [Zero Padding](ruby/zero-padding.md)

### sed

- [Apply Multiple Substitutions To The Input](sed/apply-multiple-substitutions-to-the-input.md)
- [Equivalence Classes Of Repetition MetaChars](sed/equivalence-classes-of-repetition-metachars.md)
- [Extract Value From Command Output With Sed](sed/extract-value-from-command-output-with-sed.md)
- [Grab All The Method Names Defined In A Ruby File](sed/grab-all-the-method-names-defined-in-a-ruby-file.md)
- [Grab The First Line Of A File](sed/grab-the-first-line-of-a-file.md)
- [OSX sed Does Regex A Bit Different](sed/osx-sed-does-regex-a-bit-different.md)
- [Output Only Lines Involved In A Substitution](sed/output-only-lines-involved-in-a-substitution.md)
- [Reference A Capture In The Regex](sed/reference-a-capture-in-the-regex.md)
- [Reference The Full Match In The Replacement](sed/reference-the-full-match-in-the-replacement.md)
- [Use An Alternative Delimiter In A Substitution](sed/use-an-alternative-delimiter-in-a-substitution.md)

### Shell

- [Check If The First Argument Is Given](shell/check-if-the-first-argument-is-given.md)
- [Format And Print The Current Date And Time](shell/format-and-print-the-current-date-and-time.md)

### SQLite

- [Display Results In Readable Column Format](sqlite/display-results-in-readable-column-format.md)
- [Explore The Database Schema](sqlite/explore-the-database-schema.md)

### Streaming

- [Monitor An Audio Input Device In OBS](streaming/monitor-an-audio-input-device-in-obs.md)

### Tailwind CSS

- [Apply Tailwind Classes To Existing CSS Class](tailwind/apply-tailwind-classes-to-existing-css-class.md)
- [Base Styles For Text Link](tailwind/base-styles-for-text-link.md)
- [Disable And Enable A Button](tailwind/disable-and-enable-a-button.md)
- [Specify Paths For Purging Unused CSS](tailwind/specify-paths-for-purging-unused-css.md)
- [Use Tailwind Typography Prose In Dark Mode](tailwind/use-tailwind-typography-prose-in-dark-mode.md)

### Taskfile

- [Create Interactive Picker For Set Of Subtasks](taskfile/create-interactive-picker-for-set-of-subtasks.md)
- [Run A Task If It Meets Criteria](taskfile/run-a-task-if-it-meets-criteria.md)

### tmux

- [Access Past Copy Buffer History](tmux/access-past-copy-buffer-history.md)
- [Add Bindings To Split Panes To Current Directory](tmux/add-bindings-to-split-panes-to-current-directory.md)
- [Adjusting Window Pane Size](tmux/adjusting-window-pane-size.md)
- [Break Current Pane Out To Separate Window](tmux/break-current-pane-out-to-separate-window.md)
- [Change Base Directory Of Existing Session](tmux/change-base-directory-of-existing-session.md)
- [Change Base Directory Without Detaching](tmux/change-base-directory-without-detaching.md)
- [Change The Default Prefix Key](tmux/change-the-default-prefix-key.md)
- [Create A Named tmux Session](tmux/create-a-named-tmux-session.md)
- [Create A New Session In A New Server](tmux/create-a-new-session-in-a-new-server.md)
- [Cycle Through Layouts](tmux/cycle-through-layouts.md)
- [Display Titles For Each Pane In A Window](tmux/display-titles-for-each-pane-in-a-window.md)
- [Enabling Vi Mode](tmux/enabling-vi-mode.md)
- [Get Mouse Copy/Paste Working In Kitty](tmux/get-mouse-copy-paste-working-in-kitty.md)
- [Hiding The Status Bar](tmux/hiding-the-status-bar.md)
- [Jumping Between Sessions](tmux/jumping-between-sessions.md)
- [Kill All Your tmux Sessions](tmux/kill-all-your-tmux-sessions.md)
- [Kill Other Connections To A Session](tmux/kill-other-connections-to-a-session.md)
- [Kill The Current Session](tmux/kill-the-current-session.md)
- [List All Key Bindings](tmux/list-all-key-bindings.md)
- [List Processes Running Across All Session](tmux/list-processes-running-across-all-sessions.md)
- [List Sessions](tmux/list-sessions.md)
- [Open New Splits To The Current Directory](tmux/open-new-splits-to-the-current-directory.md)
- [Open New Window With A Specific Directory](tmux/open-new-window-with-a-specific-directory.md)
- [Organizing Windows](tmux/organizing-windows.md)
- [Paging Up And Down](tmux/paging-up-and-down.md)
- [Pane Killer](tmux/pane-killer.md)
- [Reclaiming The Entire Window](tmux/reclaiming-the-entire-window.md)
- [Remove The Delay On The Escape Key](tmux/remove-the-delay-on-the-escape-key.md)
- [Rename The Current Session](tmux/rename-the-current-session.md)
- [Reset An Option Back To Its Default Value](tmux/reset-an-option-back-to-its-default-value.md)
- [Set Environment Variables When Creating Session](tmux/set-environment-variables-when-creating-session.md)
- [Set Session Specific Environment Variables](tmux/set-session-specific-environment-variables.md)
- [Set Up Forwarding Prefix For Nested Session](tmux/set-up-forwarding-prefix-for-nested-session.md)
- [Show The Current Value For An Option](tmux/show-the-current-value-for-an-option.md)
- [Swap Split Panes](tmux/swap-split-panes.md)
- [Switch To A Specific Session And Window](tmux/switch-to-a-specific-session-and-window.md)
- [tmux in your tmux](tmux/tmux-in-your-tmux.md)
- [Toggle Between Two Common Sessions](tmux/toggle-between-two-common-sessions.md)

### TypeScript

- [Add Generic Typing To An Anonymous Function](typescript/add-generic-typing-to-an-anonymous-function.md)
- [Add Types To An Object Destructuring](typescript/add-types-to-an-object-destructuring.md)
- [Compiler Checks For Unused Params And Variables](typescript/compiler-checks-for-unused-params-and-variables.md)
- [Create A Non-Empty Array Type](typescript/create-a-non-empty-array-type.md)
- [Create A Union Type From An Array](typescript/create-a-union-type-from-an-array.md)
- [Create Union Type From Constants](typescript/create-union-type-from-constants.md)
- [Extract Object Type Keys Into A Union Type](typescript/extract-object-type-keys-into-a-union-type.md)
- [Extract Object Type Values Into A Union Type](typescript/extract-object-type-values-into-a-union-type.md)
- [Generate An Initial tsconfig File](typescript/generate-an-initial-tsconfig-file.md)
- [Generate Inferred Type From Zod Schema](typescript/generate-inferred-type-from-zod-schema.md)
- [Get The Return Type Of An Async Function](typescript/get-the-return-type-of-an-async-function.md)
- [Ignore All Errors In A TypeScript File](typescript/ignore-all-errors-in-a-typescript-file.md)
- [Interfaces With The Same Name Are Merged](typescript/interfaces-with-the-same-name-are-merged.md)
- [Narrow The Type Of An Array To Its Values](typescript/narrow-the-type-of-an-array-to-its-values.md)
- [Re-Export An Imported Type](typescript/re-export-an-imported-type.md)
- [Set Path Alias For Cleaner Imports](typescript/set-path-alias-for-cleaner-imports.md)
- [Type Narrowing With Const VS Let Strings](typescript/type-narrowing-with-const-vs-let-strings.md)
- [Type Narrowing With Similarly Shaped Objects](typescript/type-narrowing-with-similarly-shaped-objects.md)
- [Type Promise Results With The Awaited Type](typescript/type-promise-results-with-the-awaited-type.md)
- [Use An Array Check For Type Narrowing](typescript/use-an-array-check-for-type-narrowing.md)
- [Zero-Config Environments For Trying Out Types](typescript/zero-config-environments-for-trying-out-types.md)

### Unix

- [All The Environment Variables](unix/all-the-environment-variables.md)
- [Apply Successive Filters To Lines In Less](unix/apply-successive-filters-to-lines-in-less.md)
- [Authorize A cURL Request](unix/authorize-a-curl-request.md)
- [Cat A File With Line Numbers](unix/cat-a-file-with-line-numbers.md)
- [Cat Files With Color Using Bat](unix/cat-files-with-color-using-bat.md)
- [Change Default Shell For A User](unix/change-default-shell-for-a-user.md)
- [Change To That New Directory](unix/change-to-that-new-directory.md)
- [Check Connected Stripe Account Name](unix/check-connected-stripe-account-name.md)
- [Check If A Port Is In Use](unix/check-if-a-port-is-in-use.md)
- [Check If Command Is Executable Before Using](unix/check-if-command-is-executable-before-using.md)
- [Check SSH Key Fingerprints Of Known Hosts](unix/check-ssh-key-fingerprints-of-known-hosts.md)
- [Check The Current Working Directory](unix/check-the-current-working-directory.md)
- [Check The Installed OpenSSL Version](unix/check-the-installed-openssl-version.md)
- [Clear The Screen](unix/clear-the-screen.md)
- [Combine All My TILs Into A Single File](unix/combine-all-my-tils-into-a-single-file.md)
- [Command Line Length Limitations](unix/command-line-length-limitations.md)
- [Compare Two Variables In A Bash Script](unix/compare-two-variables-in-a-bash-script.md)
- [Configure cd To Behave Like pushd In Zsh](unix/configure-cd-to-behave-like-pushd-in-zsh.md)
- [Convert JPEG To PNG With ffmpeg](unix/convert-jpeg-to-png-with-ffmpeg.md)
- [Convert SVG To Favicon](unix/convert-svg-to-favicon.md)
- [Copying File Contents To System Paste Buffer](unix/copying-file-contents-to-system-paste-buffer.md)
- [Copying Nested Directories With Ditto](unix/copying-nested-directories-with-ditto.md)
- [Count The Lines In A CSV Where A Column Is Empty](unix/count-the-lines-in-a-csv-where-a-column-is-empty.md)
- [Count The Number Of Matches In A Grep](unix/count-the-number-of-matches-in-a-grep.md)
- [Count The Number Of ripgrep Pattern Matches](unix/count-the-number-of-ripgrep-pattern-matches.md)
- [Count The Number Of Words On A Webpage](unix/count-the-number-of-words-on-a-webpage.md)
- [Create A File Descriptor with Process Substitution](unix/create-a-file-descriptor-with-process-substitution.md)
- [Create A Filename With The Current Date](unix/create-a-filename-with-the-current-date.md)
- [Create A Sequence Of Values With A Step](unix/create-a-sequence-of-values-with-a-step.md)
- [Curl With Cookies](unix/curl-with-cookies.md)
- [Curling For Headers](unix/curling-for-headers.md)
- [Curling With Basic Auth Credentials](unix/curling-with-basic-auth-credentials.md)
- [Determine ipv4 And ipv6 Public IP Addresses](unix/determine-ipv4-and-ipv6-public-ip-addresses.md)
- [Diff Two Files In Unified Format](unix/diff-two-files-in-unified-format.md)
- [Different Ways To Generate A v4 UUID](unix/different-ways-to-generate-a-v4-uuid.md)
- [Display All The Terminal Colors](unix/display-all-the-terminal-colors.md)
- [Display Free Disk Space](unix/display-free-disk-space.md)
- [Display Line Numbers While Using Less](unix/display-line-numbers-while-using-less.md)
- [Display The Contents Of A Directory As A Tree](unix/display-the-contents-of-a-directory-as-a-tree.md)
- [Do A Dry Run Of An rsync](unix/do-a-dry-run-of-an-rsync.md)
- [Do Not Overwrite Existing Files](unix/do-not-overwrite-existing-files.md)
- [Download A File With Curl](unix/download-a-file-with-curl.md)
- [Enable Multi-Select Of Results With fzf](unix/enable-multi-select-of-results-with-fzf.md)
- [Exclude A Command From The ZSH History File](unix/exclude-a-command-from-the-zsh-history-file.md)
- [Exclude A Directory With Find](unix/exclude-a-directory-with-find.md)
- [Exclude A Specific File From fd Results](unix/exclude-a-specific-file-from-fd-results.md)
- [Exclude Certain Files From An rsync Run](unix/exclude-certain-files-from-an-rsync-run.md)
- [Figure Out The Week Of The Year From The Terminal](unix/figure-out-the-week-of-the-year-from-the-terminal.md)
- [File Type Info With File](unix/file-type-info-with-file.md)
- [Find All Files Matching A Name With fd](unix/find-all-files-matching-a-name-with-fd.md)
- [Find All Files With A Specific Extension With fd](unix/find-all-files-with-a-specific-extension-with-fd.md)
- [Find All Tool Version Files Containing Postgres](unix/find-all-tool-version-files-containing-postgres.md)
- [Find And Copy A Value From Large JSON Output](unix/find-and-copy-a-value-from-large-json-output.md)
- [Find Any Dotfiles That Modify Path Env Var](unix/find-any-dotfiles-that-modify-path-env-var.md)
- [Find A File Installed By Brew](unix/find-a-file-installed-by-brew.md)
- [Find Duplicate Lines In A File](unix/find-duplicate-lines-in-a-file.md)
- [Find Files With fd](unix/find-files-with-fd.md)
- [Find Newer Files](unix/find-newer-files.md)
- [Find Occurrences Of Multiple Values With Ripgrep](unix/find-occurrences-of-multiple-values-with-ripgrep.md)
- [Find Top-Level Directories Matching A Pattern](unix/find-top-level-directories-matching-a-pattern.md)
- [Fix Previous Command With fc](unix/fix-previous-command-with-fc.md)
- [Fix Shim Path After asdf Upgrade](unix/fix-shim-path-after-asdf-upgrade.md)
- [Fix Unlinked Node Binaries With asdf](unix/fix-unlinked-node-binaries-with-asdf.md)
- [Format And Display Small Amounts Of Columnar Data](unix/format-and-display-small-amounts-of-columnar-data.md)
- [Forward Multiple Ports Over SSH](unix/forward-multiple-ports-over-ssh.md)
- [Generate A SAML Key And Certificate Pair](unix/generate-a-saml-key-and-certificate-pair.md)
- [Generate A Sequence Of Numbered Items](unix/generate-a-sequence-of-numbered-items.md)
- [Generate Base64 Encoding Without Newlines](unix/generate-base64-encoding-without-newlines.md)
- [Generate Random 20-Character Hex String](unix/generate-random-20-character-hex-string.md)
- [Get A List Of Locales On Your System](unix/get-a-list-of-locales-on-your-system.md)
- [Get Matching Filenames As Output From Grep](unix/get-matching-filenames-as-output-from-grep.md)
- [Get The SHA256 Hash For A File](unix/get-the-sha256-hash-for-a-file.md)
- [Get The Unix Timestamp](unix/get-the-unix-timestamp.md)
- [Get Word Count For All Files In Git Repo](unix/get-word-count-for-all-files-in-git-repo.md)
- [Global Substitution On The Previous Command](unix/global-substitution-on-the-previous-command.md)
- [Globbing For All Directories In Zsh](unix/globbing-for-all-directories-in-zsh.md)
- [Globbing For Filenames In Zsh](unix/globbing-for-filenames-in-zsh.md)
- [Gracefully Exit A Script With Trap](unix/gracefully-exit-a-script-with-trap.md)
- [Grep For Files Without A Match](unix/grep-for-files-without-a-match.md)
- [Grep For Files With Multiple Matches](unix/grep-for-files-with-multiple-matches.md)
- [Grep For Multiple Patterns](unix/grep-for-multiple-patterns.md)
- [Have Script ShellCheck Itself When Executing](unix/have-script-shellcheck-itself-when-executing.md)
- [Hexdump A Compiled File](unix/hexdump-a-compiled-file.md)
- [Ignore A Directory During ripgrep Search](unix/ignore-a-directory-during-ripgrep-search.md)
- [Ignore The Alias When Running A Command](unix/ignore-the-alias-when-running-a-command.md)
- [Include Ignore Files In Ripgrep Search](unix/include-ignore-files-in-ripgrep-search.md)
- [Inspect EXIF Data For An Image File](unix/inspect-exif-data-for-an-image-file.md)
- [Interactively Browse Available Node Versions](unix/interactively-browse-availabile-node-versions.md)
- [Interactively Switch asdf Package Versions](unix/interactively-switch-asdf-package-versions.md)
- [Interpret Cron Schedule From The CLI](unix/interpret-cron-schedule-from-the-cli.md)
- [Jump To The Ends Of Your Shell History](unix/jump-to-the-ends-of-your-shell-history.md)
- [Kill Everything Running On A Certain Port](unix/kill-everything-running-on-a-certain-port.md)
- [Killing A Frozen SSH Session](unix/killing-a-frozen-ssh-session.md)
- [Last Argument Of The Last Command](unix/last-argument-of-the-last-command.md)
- [Less With Style](unix/less-with-style.md)
- [Limit Protocols Used In A cURL Command](unix/limit-protocols-used-in-a-curl-command.md)
- [List All Fonts On Your Machine](unix/list-all-fonts-on-your-machine.md)
- [List All The Enabled ZSH Options](unix/list-all-the-enabled-zsh-options.md)
- [List All Users](unix/list-all-users.md)
- [List Files In A Single Column](unix/list-files-in-a-single-column.md)
- [List Files Ordered By Modification Date](unix/list-files-ordered-by-modification-date.md)
- [List Names Of Files With Matches](unix/list-names-of-files-with-matches.md)
- [List Of Sessions To A Machine](unix/list-of-sessions-to-a-machine.md)
- [List Parent pid With ps](unix/list-parent-pid-with-ps.md)
- [List Stats For A File](unix/list-stats-for-a-file.md)
- [List The Available JDKs](unix/list-the-available-jdks.md)
- [List The PID And Name Of Current Shell Process](unix/list-the-pid-and-name-of-current-shell-process.md)
- [List The Stack Of Remembered Directories](unix/list-the-stack-of-remembered-directories.md)
- [List TXT DNS Records For A Domain](unix/list-txt-dns-records-for-a-domain.md)
- [Load Env Vars In Bash Script](unix/load-env-vars-in-bash-script.md)
- [Look Through All Files That Have Been Git Stashed](unix/look-through-all-files-that-have-been-git-stashed.md)
- [Make Direnv Less Noisy](unix/make-direnv-less-noisy.md)
- [Make Neovim The Default Way To View Man Pages](unix/make-neovim-the-default-way-to-view-man-pages.md)
- [Manually Pass Two Git Files To Delta](unix/manually-pass-two-git-files-to-delta.md)
- [Map A Domain To localhost](unix/map-a-domain-to-localhost.md)
- [Negative Look-Ahead Search With ripgrep](unix/negative-look-ahead-search-with-ripgrep.md)
- [Occupy A Local Port With Netcat](unix/occupy-a-local-port-with-netcat.md)
- [Only Show The Matches](unix/only-show-the-matches.md)
- [Open The Current Command In An Editor](unix/open-the-current-command-in-an-editor.md)
- [Output The Last N Bytes Of A Large File](unix/output-the-last-n-bytes-of-a-large-file.md)
- [Partial String Matching In Bash Scripts](unix/partial-string-matching-in-bash-scripts.md)
- [PID Of The Current Shell](unix/pid-of-the-current-shell.md)
- [Print A Range Of Lines For A File With Bat](unix/print-a-range-of-lines-for-a-file-with-bat.md)
- [Print DateTime Represented By Unix Timestamp](unix/print-datetime-represented-by-unix-timestamp.md)
- [Print Milliseconds In Human-Readable Format](unix/print-milliseconds-in-human-readable-format.md)
- [Print Out Files In Reverse](unix/print-out-files-in-reverse.md)
- [Print The Current Date In Human-Readable Format](unix/print-the-current-date-in-human-readable-format.md)
- [Produce A Lowercase V4 UUID](unix/produce-a-lowercase-v4-uuid.md)
- [Provide A Fallback Value For Unset Parameter](unix/provide-a-fallback-value-for-unset-parameter.md)
- [Remove A Directory Called `-p`](unix/remove-a-directory-called-dash-p.md)
- [Rename A Bunch Of Files By Constructing mv Commands](unix/rename-a-bunch-of-files-by-constructing-mv-commands.md)
- [Repeat Yourself](unix/repeat-yourself.md)
- [Replace Pattern Across Many Files In A Project](unix/replace-pattern-across-many-files-in-a-project.md)
- [Run A Command Repeatedly Several Times](unix/run-a-command-repeatedly-several-times.md)
- [Run A cURL Command Without The Progress Meter](unix/run-a-curl-command-without-the-progress-meter.md)
- [Safely Edit The Sudoers File With Vim](unix/safely-edit-the-sudoers-file-with-vim.md)
- [Saying Yes](unix/saying-yes.md)
- [Search Files Specific To A Language](unix/search-files-specific-to-a-language.md)
- [Search For Homebrew Packages To Install](unix/search-for-homebrew-packages-to-install.md)
- [Search History](unix/search-history.md)
- [Search Man Page Descriptions](unix/search-man-page-descriptions.md)
- [Securely Remove Files](unix/securely-remove-files.md)
- [See Where asdf Gets Current Tool Version](unix/see-where-asdf-gets-current-tool-version.md)
- [Set The asdf Package Version For A Single Shell](unix/set-the-asdf-package-version-for-a-single-shell.md)
- [Shorten SSH Commands With Aliases](unix/shorten-ssh-commands-with-aliases.md)
- [Show A File Preview When Searching With FZF](unix/show-a-file-preview-when-searching-with-fzf.md)
- [Show Disk Usage For The Current Directory](unix/show-disk-usage-for-the-current-directory.md)
- [Show The Size Of Everything In A Directory](unix/show-the-size-of-everything-in-a-directory.md)
- [Show Tree View Of Processes And Subprocesses](unix/show-tree-view-of-processes-and-subprocesses.md)
- [Skip Paging If Output Fits On Screen With Less](unix/skip-paging-if-output-fits-on-screen-with-less.md)
- [SSH Escape Sequences](unix/ssh-escape-sequences.md)
- [SSH With Port Forwarding](unix/ssh-with-port-forwarding.md)
- [Specify The Language For A File With Bat](unix/specify-the-language-for-a-file-with-bat.md)
- [Sort In Numerical Order](unix/sort-in-numerical-order.md)
- [Switch Versions of a Brew Formula](unix/switch-versions-of-a-brew-formula.md)
- [Tell direnv To Load The Env File](unix/tell-direnv-to-load-the-env-file.md)
- [Touch Access And Modify Times Individually](unix/touch-access-and-modify-times-individually.md)
- [Transform Text To Lowercase](unix/transform-text-to-lowercase.md)
- [Type Fewer Paths With Brace Expansion](unix/type-fewer-paths-with-brace-expansion.md)
- [Undo Changes Made To Current Terminal Prompt](unix/undo-changes-made-to-current-terminal-prompt.md)
- [Undo Some Command Line Editing](unix/undo-some-command-line-editing.md)
- [Unrestrict Where ripgrep Searches](unix/unrestrict-where-ripgrep-searches.md)
- [Update Package Versions Known By asdf Plugin](unix/update-package-versions-known-by-asdf-plugin.md)
- [Use fzf To Change Directories](unix/use-fzf-to-change-directories.md)
- [Use Negative Lookbehind Matching With ripgrep](unix/use-negative-lookbehind-matching-with-ripgrep.md)
- [Use Regex Pattern Matching With Grep](unix/use-regex-pattern-matching-with-grep.md)
- [View A Web Page In The Terminal](unix/view-a-web-page-in-the-terminal.md)
- [View The Source For A Brew Formula](unix/view-the-source-for-a-brew-formula.md)
- [Watch The Difference](unix/watch-the-difference.md)
- [Watch This Run Repeatedly](unix/watch-this-run-repeatedly.md)
- [Where Are The Binaries?](unix/where-are-the-binaries.md)
- [xargs Default Command Is echo](unix/xargs-default-command-is-echo.md)
- [xargs Ignores Alias Substitution By Default](unix/xargs-ignores-alias-substitution-by-default.md)

### Vercel

- [Add Web Server Layer Redirects](vercel/add-web-server-layer-redirects.md)
- [Deploy An App Without Pushing An Empty Commit](vercel/deploy-an-app-without-pushing-an-empty-commit.md)
- [Naming Of The Vercel Config File](vercel/naming-of-the-vercel-config-file.md)
- [Pin Specific pnpm Version For Builds](vercel/pin-specific-pnpm-version-for-builds.md)
- [Share Development Environment Variables Via CLI](vercel/share-development-environment-variables-via-cli.md)

### Vim

- [Aborting Git Commits And Rebases](vim/aborting-git-commits-and-rebases.md)
- [Absolute And Relative Line Numbers](vim/absolute-and-relative-line-numbers.md)
- [Add A File Without Loading It](vim/add-a-file-without-loading-it.md)
- [Add Custom Dictionary Words](vim/add-custom-dictionary-words.md)
- [All The Ways To Write And Quit In Vim](vim/all-the-ways-to-write-and-quit-in-vim.md)
- [Almost The End Of The Line](vim/almost-the-end-of-the-line.md)
- [Alternate Files With vim-rails](vim/alternate-files-with-vim-rails.md)
- [Always Keep The Gutter Open](vim/always-keep-the-gutter-open.md)
- [Amend Commits With Fugitive](vim/amend-commits-with-fugitive.md)
- [Backspace Options](vim/backspace-options.md)
- [Beginning And End Of Previous Change](vim/beginning-and-end-of-previous-change.md)
- [The Black Hole Register](vim/the-black-hole-register.md)
- [Blank Lines Above And Below](vim/blank-lines-above-and-below.md)
- [Breaking The Undo Sequence](vim/breaking-the-undo-sequence.md)
- [Buffer Time Travel](vim/buffer-time-travel.md)
- [Build And Install A Go Program](vim/build-and-install-a-go-program.md)
- [Bypass On-Save Tooling When Writing File](vim/bypass-on-save-tooling-when-writing-file.md)
- [Case-Aware Substitution With vim-abolish](vim/case-aware-substitution-with-vim-abolish.md)
- [Case-Insensitive Substitution](vim/case-insensitive-substitution.md)
- [Center The Cursor](vim/center-the-cursor.md)
- [Check For An Executable](vim/check-for-an-executable.md)
- [Check Your Current Color Scheme](vim/check-your-current-color-scheme.md)
- [Clear Out The Jump List](vim/clear-out-the-jump-list.md)
- [Close All Other Splits](vim/close-all-other-splits.md)
- [Close All Other Windows](vim/close-all-other-windows.md)
- [Close the Current Buffer](vim/close-the-current-buffer.md)
- [Coerce The Current Filetype](vim/coerce-the-current-filetype.md)
- [Coercing Casing With vim-abolish](vim/coercing-casing-with-vim-abolish.md)
- [Configure FZF To Use fd For File Finding](vim/configure-fzf-to-use-fd-for-file-finding.md)
- [Count the Number of Matches](vim/count-the-number-of-matches.md)
- [Create A New Directory In netrw](vim/create-a-new-directory-in-netrw.md)
- [Create A New File In A New Directory](vim/create-a-new-file-in-a-new-directory.md)
- [Creating Non-Existent Directories](vim/creating-non-existent-directories.md)
- [Default netrw To Tree Liststyle](vim/default-netrw-to-tree-liststyle.md)
- [Delete Every Other Line](vim/delete-every-other-line.md)
- [Delete Lines That Match A Pattern](vim/delete-lines-that-match-a-pattern.md)
- [Delete To The End Of The Line](vim/delete-to-the-end-of-the-line.md)
- [Deleting Buffers In BufExplorer](vim/deleting-buffers-in-bufexplorer.md)
- [Deleting Directories Of Files From netrw](vim/deleting-directories-of-files-from-netrw.md)
- [Detect If You Are On A Mac](vim/detect-if-you-are-on-a-mac.md)
- [Difference Between :wq and :x](vim/difference-between-wq-and-x.md)
- [Display Word Count Stats](vim/display-word-count-stats.md)
- [Edges Of The Selection](vim/edges-of-the-selection.md)
- [Edit A File At A Specific Line Number](vim/edit-a-file-at-a-specific-line-number.md)
- [Edit A File Starting On The Last Line](vim/edit-a-file-starting-on-the-last-line.md)
- [End Of The Word](vim/end-of-the-word.md)
- [Escaping Terminal-Mode In An Nvim Terminal](vim/escaping-terminal-mode-in-an-nvim-terminal.md)
- [Filter Lines Through An External Program](vim/filter-lines-through-an-external-program.md)
- [Find The Nth Character Position In A File](vim/find-the-nth-character-position-in-a-file.md)
- [Fix The Spelling Of A Word](vim/fix-the-spelling-of-a-word.md)
- [Fold A Visual Selection And Expand It Back](vim/fold-a-visual-selection-and-expand-it-back.md)
- [For When That Escape Key Is Hard To Reach](vim/for-when-that-escape-key-is-hard-to-reach.md)
- [Format Long Lines To Text Width](vim/format-long-lines-to-text-width.md)
- [From Ruby Variables To JavaScript Variables](vim/from-ruby-variables-to-javascript-variables.md)
- [Generate and Edit Rails Migration](vim/generate-and-edit-rails-migration.md)
- [Get The pid Of The Session](vim/get-the-pid-of-the-session.md)
- [Go Back To The Previous Window](vim/go-back-to-the-previous-window.md)
- [Go To Beginning And End Of Line](vim/go-to-beginning-and-end-of-line.md)
- [Go To File With Line Number](vim/go-to-file-with-line-number.md)
- [Grepping Through The Vim Help Files](vim/grepping-through-the-vim-help-files.md)
- [Head of File Name](vim/head-of-file-name.md)
- [Help For Non-Normal Mode Features](vim/help-for-non-normal-mode-features.md)
- [Highlighting Search Matches](vim/highlighting-search-matches.md)
- [Horizontal to Vertical and Back Again](vim/horizontal-to-vertical-and-back-again.md)
- [Increment All The Numbers](vim/increment-all-the-numbers.md)
- [Incremental Searching](vim/incremental-searching.md)
- [Interact With The Alternate File](vim/interact-with-the-alternate-file.md)
- [Interactive Buffer List](vim/interactive-buffer-list.md)
- [Joining Lines Together](vim/joining-lines-together.md)
- [Jump Back To The Latest Jump Position](vim/jump-back-to-the-latest-jump-position.md)
- [Jump Between And Stage Git Hunks With Fugitive](vim/jump-between-and-stage-git-hunks-with-fugitive.md)
- [Jump To Matching Pair](vim/jump-to-matching-pair.md)
- [Jump To The Next Misspelling](vim/jump-to-the-next-misspelling.md)
- [List All Buffers](vim/list-all-buffers.md)
- [List autocmds Configured For The Current Buffer](vim/list-autocmds-configured-for-the-current-buffer.md)
- [List Of Plugins](vim/list-of-plugins.md)
- [Load A Directory Of Files Into The Buffer List](vim/load-a-directory-of-files-into-the-buffer-list.md)
- [Make Directories For The Current File](vim/make-directories-for-the-current-file.md)
- [Marks Across Vim Sessions](vim/marks-across-vim-sessions.md)
- [Match The Beginning And End Of Words](vim/match-the-beginning-and-end-of-words.md)
- [Moving To A Specific Line](vim/moving-to-a-specific-line.md)
- [Navigate To The Nth Column On A Line](vim/navigate-to-the-nth-column-on-a-line.md)
- [Navigating By Blank Lines](vim/navigating-by-blank-lines.md)
- [NETRW Listing Styles](vim/netrw-listing-styles.md)
- [Next Modified Buffer](vim/next-modified-buffer.md)
- [Normal Node Binding To Just Quit](vim/normal-mode-binding-to-just-quit.md)
- [Open A Tag In A Split Window](vim/open-a-tag-in-a-split-window.md)
- [Open an Unnamed Buffer](vim/open-an-unnamed-buffer.md)
- [Open FZF Result In A Split](vim/open-fzf-result-in-a-split.md)
- [Open Routes File With vim-rails](vim/open-routes-file-with-vim-rails.md)
- [Open The Directory Of The Current File](vim/open-the-directory-of-the-current-file.md)
- [Open The Fugitive Git Summary Window](vim/open-the-fugitive-git-summary-window.md)
- [Open The Gemfile](vim/open-the-gemfile.md)
- [Open The Latest Rails Migration](vim/open-the-latest-rails-migration.md)
- [Open The Selected Lines In GitHub With Gbrowse](vim/open-the-selected-lines-in-github-with-gbrowse.md)
- [Open Vim To A Tag Definition](vim/open-vim-to-a-tag-definition.md)
- [Opening a URL](vim/opening-a-url.md)
- [Opening Man Pages In Vim](vim/opening-man-pages-in-vim.md)
- [Paste A Register From Insert Mode](vim/paste-a-register-from-insert-mode.md)
- [Preventing Typos with Abbreviations](vim/preventing-typos-with-abbreviations.md)
- [Previous Buffer](vim/previous-buffer.md)
- [Previous Visual Selection](vim/previous-visual-selection.md)
- [Print The Relative Path Of The Current File](vim/print-the-relative-path-of-the-current-file.md)
- [Print Version Information](vim/print-version-information.md)
- [Quick File Info](vim/quick-file-info.md)
- [Quick Man Pages](vim/quick-man-pages.md)
- [Quick Quickfix List Navigation](vim/quick-quickfix-list-navigation.md)
- [Quickly Fix A Misspelled Word](vim/quickly-fix-a-misspelled-word.md)
- [Quickly Switch To A Buffer By Number](vim/quickly-switch-to-a-buffer-by-number.md)
- [Quit When There Is An Argument List](vim/quit-when-there-is-an-argument-list.md)
- [Re-indenting Your Code](vim/reindenting-your-code.md)
- [Read In The Contents Of A Rails File](vim/read-in-the-contents-of-a-rails-file.md)
- [Rename A File Through netrw](vim/rename-a-file-through-netrw.md)
- [Rename Current File](vim/rename-current-file.md)
- [Repeat The Previous Change](vim/repeat-the-previous-change.md)
- [Repeating Characters](vim/repeating-characters.md)
- [Replace A Character](vim/replace-a-character.md)
- [Reset Target tslime Pane](vim/reset-target-tslime-pane.md)
- [Reverse A Group Of Lines](vim/reverse-a-group-of-lines.md)
- [Reword A Commit Message With Fugitive](vim/reword-a-commit-message-with-fugitive.md)
- [Rotate Everything By 13 Letters](vim/rotate-everything-by-13-letters.md)
- [Rotate The Orientation Of Split Windows](vim/rotate-the-orientation-of-split-windows.md)
- [Running Bundle With vim-bundler](vim/running-bundle-with-vim-bundler.md)
- [Scrolling Relative to the Cursor](vim/scrolling-relative-to-the-cursor.md)
- [Search Backward Through A File](vim/search-backward-through-a-file.md)
- [Searching For Hex Digits](vim/searching-for-hex-digits.md)
- [Select Several Results From An FZF Search](vim/select-several-results-from-an-fzf-search.md)
- [Set End Of Line Markers](vim/set-end-of-line-markers.md)
- [Set Your Color Scheme](vim/set-your-color-scheme.md)
- [Setting Filetype With Modelines](vim/setting-filetype-with-modelines.md)
- [Show All Syntax Highlighting Rules](vim/show-all-syntax-highlighting-rules.md)
- [Show Matching Entries For Help](vim/show-matching-entries-for-help.md)
- [Specify The Line Height Of The Quick Fix Window](vim/specify-the-line-height-of-the-quick-fix-window.md)
- [Split Different](vim/split-different.md)
- [Split The Current Window](vim/split-the-current-window.md)
- [Splitting For New Files](vim/splitting-for-new-files.md)
- [Source Original vimrc When Using Neovim](vim/source-original-vimrc-when-using-neovim.md)
- [Sum A Bunch Of Numbers In The Current File](vim/sum-a-bunch-of-numbers-in-the-current-file.md)
- [Swap Occurrences Of Two Words](vim/swap-occurrences-of-two-words.md)
- [Swapping Split Windows](vim/swapping-split-windows.md)
- [Swap The Position Of Two Split Windows](vim/swap-the-position-of-two-split-windows.md)
- [Switch Moving End Of Visual Selection](vim/switch-moving-end-of-visual-selection.md)
- [Tabs To Spaces](vim/tabs-to-spaces.md)
- [The Vim Info File](vim/the-vim-info-file.md)
- [Toggle Absolute And Relative Paths In BufExplorer](vim/toggle-absolute-and-relative-paths-in-bufexplorer.md)
- [Toggling Syntax Highlighting](vim/toggling-syntax-highlighting.md)
- [Turning Off Search Highlighting](vim/turning-off-search-highlighting.md)
- [Unloading A Buffer](vim/unloading-a-buffer.md)
- [Use Active Window With BufExplorer](vim/use-active-window-with-bufexplorer.md)
- [Use The Terminal Inside A Vim Session](vim/use-the-terminal-inside-a-vim-session.md)
- [Using vim-surround With A Visual Selection](vim/using-vim-surround-with-a-visual-selection.md)
- [Verbose Commits With Fugitive](vim/verbose-commits-with-fugitive.md)
- [View Commit History of a File](vim/view-commit-history-of-a-file.md)
- [View The Current File In GitHub](vim/view-the-current-file-in-github.md)
- [Viewing Man Pages with man.vim](vim/viewing-man-pages-with-man-vim.md)
- [Vim Without The Extras](vim/vim-without-the-extras.md)
- [What Is On The Runtime Path?](vim/what-is-on-the-runtime-path.md)
- [Whole Line Auto-Completion](vim/whole-line-auto-completion.md)
- [Wrap With Some Room](vim/wrap-with-some-room.md)

### VSCode

- [Add The VSCode CLI To Your Path](vscode/add-the-vscode-cli-to-your-path.md)
- [Advance Through Search Results](vscode/advance-through-search-results.md)
- [Enable Breadcrumbs For Version 1.26 Release](vscode/enable-breadcrumbs-for-version-126-release.md)
- [Find The Location Of User Settings JSON File](vscode/find-the-location-of-user-settings-json-file.md)
- [Jump To Problems In The Current File](vscode/jump-to-problems-in-the-current-file.md)
- [Open An Integrated Terminal Window](vscode/open-an-integrated-terminal-window.md)
- [Open File On Remote Like GitHub](vscode/open-file-on-remote-like-github.md)
- [Pop Open The Quick Fix Window](vscode/pop-open-the-quick-fix-window.md)
- [Step Through Project-Wide Search Results](vscode/step-through-project-wide-search-results.md)
- [Synchronize Vim Clipboard With System Clipboard](vscode/synchronize-vim-clipboard-with-system-clipboard.md)
- [Toggle Between Terminals](vscode/toggle-between-terminals.md)
- [Turn Off Display Of Tabs For Files](vscode/turn-off-display-of-tabs-for-files.md)

### Webpack

- [Better Module Imports With Aliases](webpack/better-module-imports-with-aliases.md)
- [Debugging With Full Source Maps](webpack/debugging-with-full-source-maps.md)
- [Run ESLint As A Preloader](webpack/run-eslint-as-a-preloader.md)
- [Specify Port Of CRA's Webpack Dev Server](webpack/specify-port-of-cra-webpack-dev-server.md)
- [Use A Specific Config File](webpack/use-a-specific-config-file.md)

### Workflow

- [Add Hotkeys For Specific Raycast Extensions](workflow/add-hotkeys-for-specific-raycast-extensions.md)
- [Add Subscriber To Kit Form Via API](workflow/add-subscriber-to-kit-form-via-api.md)
- [Add Subtitles To Existing Mux Video Asset](workflow/add-subtitles-to-existing-mux-video-asset.md)
- [Access 1Password Credential From CLI](workflow/access-1password-credential-from-cli.md)
- [Allow Key-Repeating With Cursor](workflow/allow-key-repeating-with-cursor.md)
- [Break Justfile Into Separate Hidden Steps](workflow/break-justfile-into-separate-hidden-steps.md)
- [Change Window Name In iTerm](workflow/change-window-name-in-iterm.md)
- [Configure Email Redirect With Cloudflare](workflow/configure-email-redirect-with-cloudflare.md)
- [Control Media With Drop Keyboard](workflow/control-media-with-drop-keyboard.md)
- [Convert An ePub Document To PDF On Mac](workflow/convert-an-epub-document-to-pdf-on-mac.md)
- [Create A Local Sanity Dataset Backup](workflow/create-a-local-sanity-dataset-backup.md)
- [Create A Public URL For A Local Server](workflow/create-a-public-url-for-a-local-server.md)
- [Create Todo Items In Logseq](workflow/create-todo-items-in-logseq.md)
- [Do Project Time Tracking From The CLI](workflow/do-project-time-tracking-from-the-cli.md)
- [Enable Dev Tools For Safari](workflow/enable-dev-tools-for-safari.md)
- [Forward Stripe Events To Local Server](workflow/forward-stripe-events-to-local-server.md)
- [Get URL For GitHub User Profile Photo](workflow/get-url-for-github-user-profile-photo.md)
- [Get Your Public IP Address](workflow/get-your-public-ip-address.md)
- [Import A Github Project Into CodeSandbox](workflow/import-a-github-project-into-codesandbox.md)
- [Interactively Kill A Process With fkill](workflow/interactively-kill-a-process-with-fkill.md)
- [Open Slack's Keyboard Shortcuts Reference Panel](workflow/open-slacks-keyboard-shortcuts-reference-panel.md)
- [Pop Videos Out As Picture-in-Picture](workflow/pop-videos-out-as-picture-in-picture.md)
- [Prune The Excess From node_modules](workflow/prune-the-excess-from-node-modules.md)
- [Rotate An Image To Be Oriented Upright](workflow/rotate-an-image-to-be-oriented-upright.md)
- [See Overlaps For A Set Of Time Zones](workflow/see-overlaps-for-a-set-of-time-zones.md)
- [Send A Message To A Discord Channel](workflow/send-a-message-to-a-discord-channel.md)
- [Send A PDF To Your Kindle](workflow/send-a-pdf-to-your-kindle.md)
- [Set Recurring Reminders In Slack](workflow/set-recurring-reminders-in-slack.md)
- [Show Linting Errors In Zed](workflow/show-linting-errors-in-zed.md)
- [Temporarily Hide CleanShot X Capture Previews](workflow/temporarily-hide-cleanshot-x-capture-previews.md)
- [Toggle Between Stories In Storybook](workflow/toggle-between-stories-in-storybook.md)
- [Update asdf Plugins With Latest Package Versions](workflow/update-asdf-plugins-with-latest-package-versions.md)
- [View A Nicely-Formatted CSV In Terminal](workflow/view-a-nicely-formatted-csv-in-terminal.md)
- [View The PR For The Current GitHub Branch](workflow/view-the-pr-for-the-current-github-branch.md)

### XState

- [Always Use Inline Functions With Assign](xstate/always-use-inline-functions-with-assign.md)
- [Custom Jest Matcher For XState Machine States](xstate/custom-jest-matcher-for-xstate-machine-states.md)
- [Define Event That Does Internal Self Transition](xstate/define-event-that-does-internal-self-transition.md)
- [Events Stop Propagating Once Handled](xstate/events-stop-propagating-once-handled.md)
- [Inline Actions vs Actions In Machine Options](xstate/inline-actions-vs-actions-in-machine-options.md)
- [Make Immediate And Delayed Transitions](xstate/make-immediate-and-delayed-transitions.md)
- [Simple States And Composite States](xstate/simple-states-and-composite-states.md)
- [Start A Machine In A Specific State](xstate/start-a-machine-in-a-specific-state.md)
- [Use An XState Machine With React](xstate/use-an-xstate-machine-with-react.md)

### YAML

- [Create Multi-Line Strings Without The Line Breaks](yaml/create-multi-line-strings-without-the-line-breaks.md)
- [YAML Is A Superset Of JSON](yaml/yaml-is-a-superset-of-json.md)

### Zod

- [Check If An Object Is Empty With Zod](zod/check-if-an-object-is-empty-with-zod.md)
- [Create A Schema That Matches On Any Object](zod/create-a-schema-that-matches-on-any-object.md)
- [Create Union Type Of Nearly Identical Objects](zod/create-union-type-of-nearly-identical-objects.md)
- [Get Readable Errors From Schema Parse](zod/get-readable-errors-from-schema-parse.md)
- [Incorporate Existing Type Into Zod Schema](zod/incorporate-existing-type-into-zod-schema.md)
- [Set Custom Error Message For Nonempty Array](zod/set-custom-error-message-for-nonempty-array.md)

### Zsh

- [A Better Way To Reload ZSH Configuration](zsh/a-better-way-to-reload-zsh-configuration.md)
- [Add To The Path Via Path Array](zsh/add-to-the-path-via-path-array.md)
- [Create And Jump Into A Directory](zsh/create-and-jump-into-a-directory.md)
- [Link A Scalar To An Array](zsh/link-a-scalar-to-an-array.md)
- [Use A Space To Exclude Command From History](zsh/use-a-space-to-exclude-command-from-history.md)

## Usage

The `.vimrc` file for this project contains a function `CountTILs` that can
be invoked with `<leader>c`. This will do a substitution count of the
current number of TILs and display the result in the command tray.

## About

I've written more about how this repo came to be in [How I Built a Learning
Machine](https://dev.to/jbranchaud/how-i-built-a-learning-machine-45k9) and [A
Decade of TILs](https://www.visualmode.dev/a-decade-of-tils).

I shamelessly stole this idea from
[thoughtbot/til](https://github.com/thoughtbot/til).

## Other TIL Collections

* [Today I Learned by Hashrocket](https://til.hashrocket.com)
* [jwworth/til](https://github.com/jwworth/til)
* [til.simonwillison.net](https://til.simonwillison.net/)

## License

&copy; 2015-2026 Josh Branchaud

This repository is licensed under the MIT license. See `LICENSE` for
details.


================================================
FILE: Taskfile.yml
================================================
version: '3'

vars:
  NOTES_DIR: notes
  NOTES_FILE: '{{.NOTES_DIR}}/NOTES.md'
  EDITOR: '{{.EDITOR | default "nvim"}}'

tasks:
  default:
    desc: Show available commands
    cmds:
      - task --list

  notes:
    desc: Interactive picker for notes tasks
    cmds:
      - |
        TASK=$(task --list | grep "^\* notes:" | sed 's/^\* notes://' | sed 's/\s\+/ - /' | fzf --prompt="Select notes task: " --height=40% --reverse) || true
        if [ -n "$TASK" ]; then
          TASK_NAME=$(echo "$TASK" | awk '{print $1}' | sed 's/:$//')
          task notes:$TASK_NAME
        fi
    interactive: true
    silent: true

  notes:edit:
    desc: All-in-one edit, commit, and push notes
    cmds:
      - task notes:open
      - task notes:push

  notes:sync:
    desc: Sync latest changes from the notes submodule
    cmds:
      - cd {{.NOTES_DIR}} && git checkout main && git pull
    silent: false

  notes:open:
    desc: Opens NOTES.md (syncs latest changes first) in default editor
    deps: [notes:sync]
    cmds:
      - $EDITOR {{.NOTES_FILE}}
    interactive: true

  notes:push:
    desc: Commit and push changes to notes submodule
    dir: '{{.NOTES_DIR}}'
    cmds:
      - git add NOTES.md
      - git commit -m "Update notes - $(date '+%Y-%m-%d %H:%M')"
      - git pull --rebase
      - git push
    status:
      - git diff --exit-code NOTES.md
    silent: false

  notes:status:
    desc: Check status of notes submodule
    dir: '{{.NOTES_DIR}}'
    cmds:
      - git status

  notes:diff:
    desc: Show uncommitted changes in notes
    dir: '{{.NOTES_DIR}}'
    cmds:
      - git diff NOTES.md

  notes:log:
    desc: Show recent commit history for notes
    dir: '{{.NOTES_DIR}}'
    cmds:
      - git log --oneline -10


================================================
FILE: ack/ack-bar.md
================================================
# ack --bar

The [`ack`](https://beyondgrep.com/) utility has a fun Easter egg that dumps
a Star Wars meme to the command line. Give it a try.

```bash
$ ack --bar
```

See `man ack` for more details.


================================================
FILE: ack/case-insensitive-search.md
================================================
# Case-Insensitive Search

Use the `-i` flag to perform a case-insensitive search with `ack`.

```bash
$ ack -i easter

ack/ack-bar.md
3:The [`ack`](https://beyondgrep.com/) utility has a fun Easter egg that dumps

postgres/configure-the-timezone.md
18:Eastern time.
```

If you are a Vim user, you may be familiar with `smart-case`. The
`--smart-case` option is a related Ack feature worth checking out.

See `man ack` for more details.


================================================
FILE: ack/list-available-file-types.md
================================================
# List Available File Types

The `ack` utility allows you to filter the searched files based on file
type. If you'd like to know all of the file types available, you can use the
`--help-types` flag. This will include file types you've specified in your
`.ackrc` file.

Here is a sample of some of the output.

```
$ ack --help-types
    ...
    --[no]css          .css .less .scss
    --[no]dart         .dart
    --[no]delphi       .pas .int .dfm .nfm .dof .dpk .dproj .groupproj .bdsgroup .bdsproj
    --[no]elisp        .el
    --[no]elixir       .ex .exs
    --[no]erlang       .erl .hrl
    --[no]fortran      .f .f77 .f90 .f95 .f03 .for .ftn .fpp
    --[no]go           .go
    --[no]groovy       .groovy .gtmpl .gpp .grunit .gradle
    --[no]haskell      .hs .lhs
    --[no]hh           .h
    --[no]html         .html .mustache .handlebars .tmpl
    --[no]jade         .jade
    --[no]java         .java .properties
    --[no]js           .js
    ...
```

See `man ack` for more details.


================================================
FILE: ansible/loop-over-a-list-of-dictionaries.md
================================================
# Loop Over A List Of Dictionaries

Ansible's `loop` can iterate over a list of dictionaries in a task. That task
will be evaluated for each `item` in that list. Since each `item` is a
dictonary, we can access the fields on the `item` directory with dot notation —
`item.name`.

Here is what this would look like for a task that is setting up authorized SSH
keys.

```yaml
---
- hosts: all
  vars:
    dev_users:
      - name: alice
        ssh_key_url: https://github.com/dev1.keys
      - name: bob
        ssh_key_url: https://github.com/dev2.keys
  tasks:
    - name: Set authorized keys taken from url
      ansible.posix.authorized_key:
        user: "{{ item.name }}"
        state: present
        key: "{{ item.ssh_key_url }}"
      loop: "{{ dev_users }}"
```

Notice the `loop` over the `dev_users` variable gives us access to an `item` in
the task. Because each `item` has a `name` and an `ssh_key_url`, we can access
those fields in the task.

[source](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_loops.html#standard-loops)


================================================
FILE: astro/generate-types-for-a-content-collection.md
================================================
# Generate Types For A Content Collection

Let's say I'm using Astro to publish posts via markdown. One of the best ways
to do that is as a _Content Collection_. The posts will live in `src/content`
probably under a `posts` directory. Plus a config file will define the
collection and specify validations for the frontmatter.

```typescript
// src/content/config.ts
import { defineCollection, z } from 'astro:content';

const postsCollection = defineCollection({
  schema: z.object({
    title: z.string(),
    description: z.string(),
    tags: z.array(z.string())
  })
});

export const collections = {
  'posts': postsCollection,
};
```

When I first add this to my project and get the collection, it won't know what
the types are.

```astro
---
import { getCollection } from "astro:content";

export async function getStaticPaths() {
  const blogEntries = await getCollection("posts");
  //    ^^^ any

  return blogEntries.map((entry) => ({
    params: { slug: entry.slug },
    props: { entry },
  }));
}
---
```

I can tell Astro to generate a fresh set of types for things like content
collections by running the [`astro sync`
command](https://docs.astro.build/en/reference/cli-reference/#astro-sync).

```bash
$ npm run astro sync
```

This updates auto-generated files under the `.astro` directory which get pulled
in to your project's `env.d.ts` file.

All of these types will also be synced anytime I run `astro dev`, `astro
build`, or `astro check`.


================================================
FILE: astro/markdown-files-are-of-type-markdown-instance.md
================================================
# Markdown Files Are Of Type MarkdownInstance

One of the things Astro excels at is rendering markdown files as HTML pages in
your site. And at some point we'll want to access a listing of those markdown
files in order to do something like display a list of them on an index page.
For that, we'll use
[`Astro.glob()`](https://docs.astro.build/en/reference/api-reference/#astroglob).

```typescript
---
const allPosts = await Astro.glob("../posts/*.md");
---

<ul>
  {allPosts.map(post => {
    return <Post title={post.frontmatter.title} slug={post.frontmatter.slug} />
  })}
</ul>
```

This looks great, but we'll run into a type error on that first line:
`'allPosts' implicitly has type 'any'`. We need to declare the type
of these post instances that are being read-in by Astro.

These are of [type
`MarkdownInstance`](https://docs.astro.build/en/reference/api-reference/#markdown-files).
That's a generic though, so we need to tell it a bit more about the shape of a
post.

```typescript
import type { MarkdownInstance } from "astro";

export type BarePost = {
  layout: string;
  title: string;
  slug: string;
  tags: string[];
};

export type Post = MarkdownInstance<BarePost>;
```

We can then update that first line:

```typescript
const allPosts: Post[] = await Astro.glob("../posts/*.md");
```

Alternatively, you can specify the generic on `glob`:

```typescript
const allPosts = await Astro.glob<BarePost>("../posts/*.md");
```


================================================
FILE: aws/aws-cli-requires-groff-executable.md
================================================
# AWS CLI Requires Groff Executable

I have the AWS CLI installed on this machine, but when I went to run certain
commands like `aws logs tail my_log_group` or even `aws logs tail help`, I'd
get the following error:

```
$ aws logs tail help

Could not find executable named 'groff'
```

This may only be an issue on MacOS Ventura for older versions of the CLI, per
[this PR](https://github.com/aws/aws-cli/pull/7413):

> The CLI's help commands are currently broken on macOS Ventura because Ventura has replaced groff with mandoc. This PR fixes the issue by falling back on mandoc if groff doesn't exist in the path.

There are two ways of dealing with this. One would be to install the missing
dependency, [`groff`](https://www.gnu.org/software/groff/):

```bash
$ brew install groff
```

The other is to update the AWS CLI to one that falls back to `mandoc`.
Depending on how you originally installed the AWS CLI, you can either [follow
their official install/upgrade
instructions](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html),
`pip install --upgrade awscli`, or upgrade view homebrew (`brew upgrade
awscli`).


================================================
FILE: aws/find-and-follow-server-logs.md
================================================
# Find And Follow Server Logs

Let's say you are authenticated with the AWS CLI and have the appropriate
CloudWatch permissions. You have a few services running in production with
associated logs. One of those is a Rails server.

We want to run `aws logs tail`, but first we check how that command works.

```bash
$ aws logs tail help
```

We see a bunch of options, but the only required one is `group_name` ("The name
of the CloudWatch Logs group."). We may also notice the `--follow` flag which
we'll want to use as well to keep incoming logs flowing.

We need to determine the log group name for the Rails server. We can do that
from the CLI as well (no need to dig into the web UI).

```bash
$ aws logs describe-log-groups

{
    "logGroups": [
        {
            "logGroupName": "/aws/codebuild/fc-rails-app-abcefg-123456",
            "creationTime": 1739476650823,
            "metricFilterCount": 0,
            "arn": "arn:aws:logs:us-east-2:123456789:log-group:/aws/codebuild/fc-rails-app-abcefg-123456:*",
            "storedBytes": 65617,
            "logGroupClass": "STANDARD",
            "logGroupArn": "arn:aws:logs:us-east-2:123456789:log-group:/aws/codebuild/fc-rails-app-abcefg-123456"
        },
        ...
    ]
}
```

Because the group name is descriptive enough, we can find the log group we are
interested in: `/aws/codebuild/fc-rails-app-abcefg-123456`.

Now we know what we want to `tail`.

```bash
$ aws logs tail /aws/codebuild/fc-rails-app-abcefg-123456 --follow
```


================================================
FILE: aws/list-rds-snapshots-with-matching-identifier-prefix.md
================================================
# List RDS Snapshots With Matching Identifier Prefix

I'm working on a script that manually creates a snapshot which it will then
restore to a temporary database that I can scrub and dump. The snapshots that
this script takes are _manual_ and they are named with identifiers that have a
defining prefix (`dev-snapshot-`). Besides the few snapshots created by this
script, there are tons of automated snapshots that RDS creates for
backup/recovery purposes.

I want to list any snapshots that have been created by the script. I can do
this with the `describe-db-snapshots` command and some filters.

```bash
$ aws rds describe-db-snapshots \
  --snapshot-type manual \
  --query "DBSnapshots[?starts_with(DBSnapshotIdentifier, 'dev-snapshot-')].DBSnapshotIdentifier" \
  --no-cli-pager

[
    "dev-snapshot-20250327-155355"
]
```

There are two key pieces. The `--snapshot-type manual` filter excludes all
those automated snapshots. The `--query` both filters to any snapshots whose
identifier `?starts_with` the prefix `dev-snapshot-` and then refines the
output to just the `DBSnapshotIdentifier` instead of the entire JSON object.

[source](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshots.html)


================================================
FILE: aws/output-cli-results-in-different-formats.md
================================================
# Output CLI Results In Different Formats

The AWS CLI can output the results of commands in three different formats.

- Text
- JSON
- Table

The _default_ output format for my AWS CLI is currently configured to `json`.

```bash
$ aws configure get output
json
```

I can either accept the default or I can override it with the `--output` flag.

```bash
$ aws rds describe-db-instances \
  --query 'DBInstances[*].Endpoint' \
  --no-cli-pager
[
    {
        "Address": "fc-database-abcefg-ab1c23de.asdfgh4zxcvb.us-east-2.rds.amazonaws.com",
        "Port": 5432,
        "HostedZoneId": "A1BCDE2FG345H6"
    }
]

$ aws rds describe-db-instances \
  --query 'DBInstances[*].Endpoint' \
  --no-cli-pager \
  --output table
----------------------------------------------------------------------------------------------------
|                                        DescribeDBInstances                                       |
+-----------------------------------------------------------------------+-----------------+--------+
|                                Address                                |  HostedZoneId   | Port   |
+-----------------------------------------------------------------------+-----------------+--------+
|  fc-database-abcefg-ab1c23de.asdfgh4zxcvb.us-east-2.rds.amazonaws.com |  A1BCDE2FG345H6 |  5432  |
+-----------------------------------------------------------------------+-----------------+--------+

$ aws rds describe-db-instances \
  --query 'DBInstances[*].Endpoint' \
  --no-cli-pager \
  --output text
fc-database-abcefg-ab1c23de.asdfgh4zxcvb.us-east-2.rds.amazonaws.com    A1BCDE2FG345H6  5432
```

[source](https://docs.aws.amazon.com/cli/v1/userguide/cli-usage-output-format.html)


================================================
FILE: aws/sign-up-user-with-email-and-password.md
================================================
# Sign Up User With Email And Password

[AWS Amplify](https://aws.amazon.com/amplify/)
[Auth](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js) offers
both federated and username/password based authentication. Though the docs
aren't clear, the required `username` parameter can be used as the email field
with the [`signUp`
API](https://aws-amplify.github.io/amplify-js/api/classes/authclass.html#signup).

```javascript
import { Auth } from 'aws-amplify';

async function signUp({ email, password }) {
  try {
    const user = await Auth.signUp({
      username: email,
      password,
      attributes: {},
    });
    console.log({ user });
  } catch (error) {
    console.log('error signing up:', error);
  }
}
```

Once the user has entered an email and password into the Sign Up form, those
values can be passed to this `signUp` function. The `email` value is passed as
the `username` and the `password` goes in as is.

Amplify Auth will interpret the `username` as an email and register it as the
contact email for this user.


================================================
FILE: aws/ssh-into-an-ecs-container.md
================================================
# SSH Into An ECS Container

In [Connect To Production Rails Console on AWS /
Flightcontrol](https://www.visualmode.dev/connect-to-production-rails-console-aws-flightcontrol),
I went into full detail about how to access `rails console` for a production
Rails app running in an ECS container.

A big part of that process was establishing an SSH connection to the ECS container.

To do that, I need to know my region, container ID, and task ID. I can get the
first two by listing my clusters and finding the cluster/container that houses
the Rails app.

```bash
$ aws ecs list-clusters
{
    "clusterArns": [
        "arn:aws:ecs:us-east-2:123:cluster/rails-app-abc123"
    ]
}
```

The region then is `us-east-2` and the container ID is `rails-app-abc123`.

I can use that to find the task ID:

```bash
$ aws ecs list-tasks --region us-east-2 --cluster rails-app-abc123
{
    "taskArns": [
        "arn:aws:ecs:us-east-2:123:task/rails-app-abc123/8526b3191d103bb1ff90c65a655ad004"
    ]
}
```

The task ID is the final portion of the URL:
`8526b3191d103bb1ff90c65a655ad004`.

Putting this all together I can SSH into the ECS container with a bash profile
like so:

```bash
$ aws ecs execute-command \
  --region us-east-2 \
  --cluster rails-app-abc123 \
  --container rails-app-abc123 \
  --task 8526b3191d103bb1ff90c65a655ad004 \
  --interactive \
  --command "/bin/bash"
```


================================================
FILE: aws/turn-off-output-pager-for-a-command.md
================================================
# Turn Off Output Pager For A Command

It is not uncommon for an AWS CLI command to return a ton of output. When that
happens, it is nice that the results end up in pager program (like `less`)
where you can search and review them, copy a value of interest, and then exit.
The pager prevents that wall of output from cluttering your terminal history.

However, sometimes I am running a command that I know is going to return a
small result. I'd rather have the results go to stdout where I can see them in
the terminal history rather than to an ephemeral pager.

For that situation I can tack on the `--no-cli-pager` flag.

```bash
$ aws rds describe-db-instances \
  --query 'DBInstances[*].EngineVersion' \
  --output json \
  --no-cli-pager

[
    "13.15",
    "16.8"
]
```

Here I've asked the AWS CLI to tell me the engine versions of all my RDS
Postgres databases. Because I know the results are only going to include a
couple results for my couple of DBs, I'd like to skip the pager —
`--no-cli-pager`.

Though I think it is better to do this on a case by case basis, it is also
possible to turn off the pager via the CLI configuration file.

```bash
$ aws configure set cli_pager ""
```

[source](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-pagination.html#cli-usage-pagination-clientside)


================================================
FILE: aws/use-specific-aws-profile-with-cli.md
================================================
# Use Specific AWS Profile With CLI

I have multiple AWS profiles authenticated with the AWS CLI. For some projects
I need to use the `default` one and for others I need to use the other.

First, I can list the available profiles like so:

```bash
$ aws configure list-profiles
default
dev-my-app
```

For one-off commands I can specify the profile for any AWS CLI command using
the `--profile` flag.

```bash
$ aws ecs list-clusters --profile josh-visualmode
```

However, I don't want to have to specify that flag every time when I'm working
on a specific project. Instead I can specify the profile with an environment
variable. The [`direnv`](https://direnv.net/) tool is a great way to do this on
a per-project / per-directory basis.

I can create or update the `.envrc` file (assuming I have `direnv` installed)
adding the following line (and re-allowing the changed file):

```
# .envrc
export AWS_PROFILE=dev-my-app
```

Now, any AWS command I issue from that directory or its subdirectories will use
that profile by default.

[source](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html#cli-configure-files-using-profiles)


================================================
FILE: bash/edit-the-current-command-prompt.md
================================================
# Edit The Current Command Prompt

A neat feature of `bash` is the ability to open whatever the current state of
the command prompt is into your default editor.

Let's say we have a really long command that we've just tried to run, but it
failed and we need to make a small change somewhere in the middle. Instead of
holding the left arrow key for 30 seconds, we can instead hit `CTRL-X CTRL-E`.

This pops us into our `EDITOR` (or maybe `VISUAL`, not sure which). In my case,
that is `nvim`. I now have access to all the features I'm used to in `nvim` for
quickly navigating to and editing, searching and replacing, or whatever.

Once I've got the command how I like it, I can save and exit (`:wq`) and the
updated command will be executed.

This is similar to [the `fc` builtin](unix/fix-previous-command-with-fc.md),
which also happens to be available for `zsh`.


================================================
FILE: brew/clean-up-your-brew-installations.md
================================================
# Clean Up Your Brew Installations

Over time as you upgrade brew-installed programs and make changes to your
`Brewfile`, your machine will have artifacts left behind that you no longer
need.

Periodically, it is good to clean things up.

First, you can get a summary of stale and outdated files that brew has
installed. Use the `--dry-run` flag.

```bash
$ brew cleanup --dry-run
```

If you feel good about what you see in the output, then give things a clean.

```bash
$ brew cleanup
```

Second, if you are using a `Brewfile` to manage what `brew` installs, then you
can instruct `brew` to uninstall any dependencies that aren't specified in that
file.

By default it operates as a dry run and the `--force` flag will be needed to
actually do the cleanup. And specify the filename if it doesn't match the
default of `Brewfile`.

```bash
$ brew bundle cleanup --file=Brewfile.personal
```

If the output looks good, then force the cleanup:

```bash
$ brew bundle cleanup --force --file=Brewfile.personal
```

See `brew cleanup --help` and `brew bundle --help` for more details.


================================================
FILE: brew/configure-brew-environment-variables.md
================================================
# Configure Brew Environment Variables

The `brew` CLI can be configured with a ton of different environment variables.
A full listing of those can be found in the [Environment section of their
docs](https://docs.brew.sh/Manpage#environment).

If you want to change the defaults of any of those values, you can either set
them directly in your environment:

```bash
$ set HOMEBREW_BAT=1
```

Or you can set them in a more dedicated place like one of Homebrew's
environment files. There are a couple possible locations for these files. I
prefer to use `$HOME/.homebrew/brew.env` (i.e. `~/.homebrew/brew.env`).

```
HOMEBREW_BAT=1
```

This file and directly likely don't exist, so you may have to set them up the
first time:

```
$ mkdir $HOME/.homebrew
$ touch $HOME/.homebrew/brew.env
```


================================================
FILE: brew/export-list-of-everything-installed-by-brew.md
================================================
# Export List Of Everything Installed By Brew

If you're on a Mac using Homebrew to install various tools and utilities, there
may come a time when you want a listing of what is installed.

Run this command:

```bash
$ brew bundle dump
```

It may take 10 or so seconds. When it is done, you'll have a `Brewfile` in your
current directory.

Open it up and you'll see a bunch of lines like the following:

```
tap "heroku/brew"
tap "homebrew/bundle"
tap "homebrew/services"
tap "mongodb/brew"
tap "planetscale/tap"
tap "stripe/stripe-cli"
brew "asdf"
brew "bat"
brew "direnv"
brew "entr"
brew "exa"
brew "fd"
brew "ffmpeg"
brew "fx"
brew "fzf"
brew "gcc"
brew "gh"
brew "planetscale/tap/pscale"
brew "stripe/stripe-cli/stripe"
cask "1password-cli"
vscode "ms-playwright.playwright"
vscode "ms-vsliveshare.vsliveshare"
vscode "prisma.prisma"
```

Notice there are `tap`, `brew`, `cask`, and even `vscode` directives.

This is a file you could export and then run on a 'new' machine to install all
the programs you're used to having available on your current machine.

[source](https://danmunoz.com/setting-up-a-new-computer-with-homebrew/)


================================================
FILE: brew/install-from-nonstandard-brewfile.md
================================================
# Install From Nonstandard Brewfile

When you want to install the packages listed in the `Brewfile` for your current
project (or dotfiles), you can run:

```bash
$ brew bundle
```

And `brew` knows to look for and use the `Brewfile` in the current directory.

If, however, you are trying to run `brew bundle` for a `Brewfile` located
somewhere besides the current directory *OR* you want to target a file with a
non-standard name (like
[`Brewfile.personal`](https://github.com/jbranchaud/dotfiles/blob/main/Brewfile.personal)),
then you can use the `--file` flag.

```bash
$ brew bundle --file Brewfile.personal
```

This is what I do [here in my `dotfiles`
repo](https://github.com/jbranchaud/dotfiles/blob/b053f6251cae7ed52f698fc2a2c40ba82c5881b0/installer/mac-setup.sh#L42-L48).

See `man brew` and find the section on `brew bundle` for more details.


================================================
FILE: brew/install-go-packages-in-brewfile.md
================================================
# Install Go Packages In Brewfile

Typically my `Brewfile` is only full of `brew` and `cask` directives. That's
starting to change now that `brew` supports installing Go packages listed in the
`Brewfile`.

Use the `go` directive and the URL to the hosted Go package.

Here is an example of a `Brewfile` that includes a `cask`, `brew`, and `go`
directive.

```
# screen resolution tool
cask "betterdisplay"

# Mac keychain management, gpg key
brew "pinentry-mac"

# Sanitized production Postgres dumps
go "github.com/jackc/pg_partialcopy"
```

I've recently added the exact package from above to my [`dotfiles`
repo](https://github.com/jbranchaud/dotfiles/commit/e83e9d19504f0e2f95eba33123f907f999bf865e).

Here is the [PR to `brew`](https://github.com/Homebrew/brew/pull/20798) where
this functionality was added back in October of 2025.


================================================
FILE: brew/list-all-services-managed-by-brew.md
================================================
# List All Services Managed By Brew

Daemonized services, such as PostgreSQL, can be installed and managed with
Homebrew. Under the hood `brew` uses `launchctl` on Mac to manage these
services — i.e. starting, restarting, and stopping them.

Assuming you've already installed some services, you can run `brew services
list` to see what services there are and what their current status is.

```bash
$ brew services list
Name          Status  User       File
mailhog       none
mysql         none
postgresql@11 started jbranchaud ~/Library/LaunchAgents/homebrew.mxcl.postgresql@11.plist
postgresql@13 none
postgresql@16 none
unbound       none
```

This is the default behavior if you just run `brew services` without a subcommand.

This is helpful if you are, for instance, trying to see which PostgreSQL server
version you are currently running and which other ones are available to run. I
might then issue a `stop` to `postgresql@11` so that I can then `start` the
`postgresql@16` service.

See `brew services --help` for more details.


================================================
FILE: chrome/access-a-value-logged-to-the-console.md
================================================
# Access A Value Logged To The Console

Did your app just log an object to the dev tools console and you'd like to
interact with that object? It's not straightforward, but you can do it.

Assuming you already have dev tools opened to the _console_ tab, right click
on the value that has been logged to the console. Select the _Store as
Global Variable_ option. This will re-log the value assigning it to the
`temp1` variable.

You can now reference that object as `temp1` accessing its values and
calling functions.

You can even do this with multiple logged values, each subsequent one will
be assigned incrementing variable names: `temp2`, `temp3`, etc.

[source](https://stackoverflow.com/questions/15895579/access-last-logged-value-in-chrome-console)


================================================
FILE: chrome/chrome-supports-many-unix-keyboard-shortcuts.md
================================================
# Chrome Supports Many Unix Keyboard Shortcuts

In a Unix environment, you can use keyboard shortcuts to do a variety of things
more efficiently. For instance, hitting `ctrl-a` moves the cursor to the
beginning of the line. Conversely, `ctrl-e` moves the cursor to the end of the
line. Another fun one is `ctrl-u` which erases from the cursor to the beginning
of the line.

Learning these doesn't only have value when you are logged into some remote
server. There are many apps that support a variety of these shortcuts. Chrome
is one of them.

![examples of unix shortcuts in chrome text area](https://i.imgur.com/7MfNe6c.gif)


================================================
FILE: chrome/copy-some-data-from-the-console.md
================================================
# Copy Some Data From The Console

Sometimes you have some data that you are playing around with in the
console, something you logged from an API response. You then want to share
it, so you try to copy the whole thing into your system copy buffer. There
are a couple hacky ways of doing this, but Chrome supports a really smooth
way.

Use the `copy` function.

```javascript
characters
> (8) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
copy(characters[1])
```

My system copy buffer now contains the entire object that makes up the
second entry in that list. I can then paste it into Slack or wherever.

[source](https://twitter.com/addyosmani/status/1092686766375616517)


================================================
FILE: chrome/duplicate-the-current-tab.md
================================================
# Duplicate The Current Tab

Sometimes when viewing a page, you realize you want to keep that page open
but also go back to the previous page to view something else. An easy way of
achieving this is to duplicate the current tab and then go back.

To duplicate the current tab hit `Cmd+Enter` while the focus is on the URL
bar.

If the URL bar is not in focus, then first hit `Cmd+L` to focus followed by
`Cmd+Enter`.


================================================
FILE: chrome/easier-access-to-network-throttling-controls.md
================================================
# Easier Access To Network Throttling Controls

In [Simulating Various Network Connection
Speeds](https://github.com/jbranchaud/til/blob/master/chrome/simulating-various-connection-speeds.md),
I showed how to change between various simulated connection speeds from the
_Network_ tab in Chrome devtools. Unfortunately, the Connection Speed
dropdown is crowded out by a number of other controls in the _Network_ tab.
As a result, unless that tab is expanded pretty wide, you won't be able to
get at it. I've found myself sliding the devtools wider and narrower over
and over while testing things with throttling.

There is another, easier place to access throttling.

![](https://i.imgur.com/fHN8F28.gif)

The console drawer gives us access to a number of additional tabs of
controls. Add the _Network connections_ tab for easier access.


================================================
FILE: chrome/keybinding-to-focus-the-address-bar.md
================================================
# Keybinding To Focus The Address Bar

The address bar (URL bar) in Chrome is versatile. You can enter both URLs and
search terms into it. If I want to enter a new search term, I generally have to
reach for my mouse, double click in the address bar, and then type in that
term.

Chrome has a keybinding that sends focus to the address bar, which cuts some of
those steps.

Hit `Cmd-L`.

You'll see that the address bar gets focus with the entire address highlighted.
You can begin typing your new search term immediately.

[source](https://etc.usf.edu/techease/4all/input-devices/google-chrome-keyboard-shortcuts/)


================================================
FILE: chrome/navigate-the-browser-history-with-vimium.md
================================================
# Navigate The Browser History With Vimium

The [Vimium](https://vimium.github.io/) Chrome extension is great for moving
around the current page you are on. It can also be used to navigate back and
forth through your browser history.

You can go back to the previous page with `H` (`Shift-h`).

You can go forward to a page you went back from with `L` (`Shift-l`).


================================================
FILE: chrome/open-current-tab-in-new-window-with-vimium.md
================================================
# Open Current Tab In New Window With Vimium

Sometime I have a busy Chrome window going with a bunch of tabs open for
various lines of work as well as a number of tabs that I've neglected to close.
I then open a new tab, find something useful, and realize I'm at a "branching
point". I'm about to start in on a specific chunk of work that will probably
involve opening several more tabs and switch back and forth between some
dashboards. I want to start all of this from a fresh slate -- or at least from
a fresh Chrome window.

With [Vimium](https://github.com/philc/vimium), I can hit `W` (`Shift-w`) to
have the current tab move from the current window to a new window. The original
window, minus that one tab, will be left as is so that I can go back to it as
needed.


================================================
FILE: chrome/pause-javascript-from-the-source-devtools-panel.md
================================================
# Pause JavaScript From The Source DevTools Panel

You know that moment when you accidentally introduce an infinite loop in some
JavaScript code. You've just refreshed the page in the browser and everything
seems to both hang and loop. And the browser slows to a crawl.

If you're trying to get to the bottom of things, you may be `console.log`'ing
some data points. However, because of the infinite loop, the logs are flying by
in the console. It would be great if you could bring things to a halt.

I assume you already have devtools open, since you're looking at the logs. If
not, hit `F12`.

Then go to the _Sources_ tab which is where the JavaScript debug tools are
located. From here, you can find and click the pause button. It should be the
first in the panel of debug controls. Alternatively, as long as you have the
_Source_ tab in focus, you can simply hit `F8`.

Once you've paused that infinite loop, you can go back to the console and have
a look around.


================================================
FILE: chrome/pretty-print-tabular-data.md
================================================
# Pretty Print Tabular Data

Looking at a bunch of data in the Chrome dev tools console isn't great. It
can be a bit difficult to read because of the way it is displayed.
Fortunately, the Chrome dev tools come with a handy way of displaying
tabular data, `console.table()`. If you give `console.table` an array of
objects or array of arrays, it will format it in a table like so:

![](http://i.imgur.com/LPgBpRB.png)

```js
console.table([{one: 1, two: 2, three: 3}])
```


================================================
FILE: chrome/reference-the-selected-node.md
================================================
# Reference The Selected Node

In the Chrome dev tools, if you've selected (highlighted) a node in the DOM,
you can reference that node from the console with `$0`. This is handy if you
are debugging or exploring certain parts of a page and need to run commands
against that node. For instance, if you were to select the `<html>` node in
the DOM, you could then programmatically check the `lang` attribute from the
console like so:

```
> $0.lang
// "en-US"
```

If there is `jQuery` on the page and you've selected the node that contains
all of the page's content, you can do something like the following:

```
> $($0).html('<h1>Hello, World!</h1>')
```


================================================
FILE: chrome/search-tabs-with-the-vimium-vomnibar.md
================================================
# Search Tabs With The Vimium Vomnibar

If you use Chrome like I do, then you eventually end up with several windows
with dozens if not 100+ tabs open. It can start to get tedius with that many
tabs to find and navigate to a given tab. Someone might suggest closing a few
dozen tabs as a solution to this predicament. However, Vimium offers a solution
that doesn't require I [_kill my
darlings_](https://en.wiktionary.org/wiki/kill_one%27s_darlings).

The Vomnibar, a Vimium-powered search bar, can be summoned with `T` to only
search through open tabs.

When I hit `T`, I see a text area (for refining the search) and then a bunch of
entries populate below that which I immediately recognize as many of those tabs
that I'm going to get back to one of these days.

To narrow down to the specific thing I'm looking for, I type something into the
input. Then I arrow to the result I'm looking for and hit enter. And I'm
transported to that tab.

If I don't like where I ended up, I can also go back to the tab I had been on
with `^`.


================================================
FILE: chrome/selecting-dom-elements-faster-than-ever.md
================================================
# Selecting DOM Elements Faster Than Ever

Selecting and inspecting DOM elements: you've done it many times before.
Whether you right click the element and select _Inspect_ (which isn't always
all that accurate) or you use the DevTools' inspect tool with
highlight-assist, it takes a couple clicks to get there.

There is a faster way.

Hit `Cmd-Shift-C`.

Chrome DevTools will be expanded open if it isn't already and your mouse
pointer will be put in inspect mode with the highlight-assist. Find your DOM
element, give it a click, and start inspecting!


================================================
FILE: chrome/simulating-various-connection-speeds.md
================================================
# Simulating Various Connection Speeds

I spend everyday building web apps from a machine that has a wired
connection to the internet. Though I spend a lot of time loading various
pages and experiencing the app like a user might, I end up having a pretty
narrow perspective. What will this app be like for people on various
qualities of mobile connections?

Chrome has a feature built in to its devtools that makes it easy to throttle
your connection to simulate various speeds. Open up devtools with
`Cmd+Opt+J`, navigate to the _Network_ tab, and then open the throttling
drop down.

![](http://i.imgur.com/EI3H9Oe.png)

From here we can select the connection speed we want to simulate. If we then
reload the page, we will not only experience the page load at that speed, we
will also see the numbers in that _Network_ tab.


================================================
FILE: chrome/toggle-device-mode.md
================================================
# Toggle Device Mode

Working on some styles? Want to make sure those minor tweaks look good on
both desktop and mobile? Your probably moving back and forth between the
desktop mode and one of the smaller device modes.

There is a keybinding for this -- `Cmd-Shift-M`

The chrome devtools panel will need to be open and in focus for this to
work.


================================================
FILE: chrome/toggle-open-the-console-drawer.md
================================================
# Toggle Open The Console Drawer

With Chrome devtools open and in focus, hit `<Esc>`. The console drawer will
be toggled open. Hit `<Esc>` again and it will be toggle closed.


================================================
FILE: chrome/trigger-commands-from-the-devtools-command-palette.md
================================================
# Trigger Commands From The Devtools Command Palette

There are a ton of tabs, drop downs, and nested menus in Chrome's devtools. If
I know what I am looking for, that is great, I can navigate to it without much
trouble. But for other features and commands, I'm stumped and can end up
spending minutes looking around.

For example, where is the option to 'Disable JavaScript'?

I don't know. And I don't need to know.

Instead of searching around for it, I can pop open the devtools _command
palette_ with `cmd+shift+p`. This is a modal menu that prompts me to search for
a command to run. I start typing `disab` and already `Disable JavaScript`
appears as one of the top options. I can select that option and JavaScript will
be disabled.

When I'm ready to turn it back on. I can hit `cmd+shift+p` again and search for
`enab`. The `Enable JavaScript` option appears and I can select it to turn it
back on.

Note: you'll need to have the devtools panel open and your focus will need to
be on it for the keybinding to be picked up.

[source](https://developer.chrome.com/docs/devtools/command-menu)


================================================
FILE: chrome/view-network-traffic-for-new-tabs.md
================================================
# View Network Traffic For New Tabs

Generally when you open a new tab and pop open the Network panel in the chrome
devtools, you won't immediately see any traffic. This is because the initial
network requests to load the site happened before you accessed the Network
panel.

If you'd like to view the Network traffic immediately without having to refresh
the new tab, you'll have to make the devtools panel open automatically with new
tabs.

1. Click the _triple dot_ icon from the top of the devtools panel
2. Click 'Settings'
3. Find the 'DevTools' section
4. Check the box for 'Auto-open DevTools for popups'

Now, whenever you open a new tab, Chrome devtools will be open and the initial
network traffic will be recorded.

[source](https://stackoverflow.com/questions/16210468/chrome-dev-tools-how-to-trace-network-for-a-link-that-opens-a-new-tab)


================================================
FILE: claude-code/allow-edits-from-the-start.md
================================================
# Allow Edits From The Start

A common pattern for me when using Claude Code is that I start it up in a
project, I prompt it with a question or feature spec, it either comes up with a
plan or just starts working, and as soon as it is ready to make its first edits
to a file, it prompts me something like:

```
 Do you want to make this edit to Taskfile.yml?
 ❯ 1. Yes
   2. Yes, allow all edits during this session (shift+tab)
   3. Type here to tell Claude what to do differently
```

That's a nice default so that I don't get surprised by Claude Code editing a
bunch of files.

However, if I'm in a git-backed project and I'm 
Download .txt
gitextract_4xrtz725/

├── .gitmodules
├── .vimrc
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── Taskfile.yml
├── ack/
│   ├── ack-bar.md
│   ├── case-insensitive-search.md
│   └── list-available-file-types.md
├── ansible/
│   └── loop-over-a-list-of-dictionaries.md
├── astro/
│   ├── generate-types-for-a-content-collection.md
│   └── markdown-files-are-of-type-markdown-instance.md
├── aws/
│   ├── aws-cli-requires-groff-executable.md
│   ├── find-and-follow-server-logs.md
│   ├── list-rds-snapshots-with-matching-identifier-prefix.md
│   ├── output-cli-results-in-different-formats.md
│   ├── sign-up-user-with-email-and-password.md
│   ├── ssh-into-an-ecs-container.md
│   ├── turn-off-output-pager-for-a-command.md
│   └── use-specific-aws-profile-with-cli.md
├── bash/
│   └── edit-the-current-command-prompt.md
├── brew/
│   ├── clean-up-your-brew-installations.md
│   ├── configure-brew-environment-variables.md
│   ├── export-list-of-everything-installed-by-brew.md
│   ├── install-from-nonstandard-brewfile.md
│   ├── install-go-packages-in-brewfile.md
│   └── list-all-services-managed-by-brew.md
├── chrome/
│   ├── access-a-value-logged-to-the-console.md
│   ├── chrome-supports-many-unix-keyboard-shortcuts.md
│   ├── copy-some-data-from-the-console.md
│   ├── duplicate-the-current-tab.md
│   ├── easier-access-to-network-throttling-controls.md
│   ├── keybinding-to-focus-the-address-bar.md
│   ├── navigate-the-browser-history-with-vimium.md
│   ├── open-current-tab-in-new-window-with-vimium.md
│   ├── pause-javascript-from-the-source-devtools-panel.md
│   ├── pretty-print-tabular-data.md
│   ├── reference-the-selected-node.md
│   ├── search-tabs-with-the-vimium-vomnibar.md
│   ├── selecting-dom-elements-faster-than-ever.md
│   ├── simulating-various-connection-speeds.md
│   ├── toggle-device-mode.md
│   ├── toggle-open-the-console-drawer.md
│   ├── trigger-commands-from-the-devtools-command-palette.md
│   └── view-network-traffic-for-new-tabs.md
├── claude-code/
│   ├── allow-edits-from-the-start.md
│   ├── monitor-usage-limits-from-cli.md
│   ├── open-current-prompt-in-default-editor.md
│   └── resume-specific-session.md
├── clojure/
│   ├── aggregation-using-merge-with.md
│   ├── argument-requirements-for-a-function.md
│   ├── combinations-of-items-from-a-sequence.md
│   ├── define-something-only-once.md
│   ├── evaluate-one-liners-with-lein-exec.md
│   ├── expanding-macros.md
│   ├── get-the-value-of-an-environment-variable.md
│   ├── list-functions-for-a-namespace.md
│   ├── load-a-file-into-the-repl.md
│   ├── mapping-with-an-index.md
│   ├── open-javadocs.md
│   ├── pretty-print-the-last-thing.md
│   ├── quick-clojure-docs.md
│   ├── reductions.md
│   ├── set-max-heap-size.md
│   ├── specify-the-directory-of-a-shell-command.md
│   ├── splitting-on-whitespace.md
│   ├── swap-two-items-in-a-vector.md
│   ├── try-a-clojure-project-in-the-repl.md
│   ├── type-of-anything.md
│   └── when-overflow-is-desired.md
├── css/
│   ├── add-fab-icons-to-your-site-with-fontawesome-5.md
│   ├── add-line-numbers-to-a-code-block-with-counter.md
│   ├── animate-smoothly-between-two-background-colors.md
│   ├── apply-multiple-box-shadows-to-single-element.md
│   ├── apply-styles-based-on-dark-mode-preferences.md
│   ├── apply-styles-to-the-last-child-of-a-specific-type.md
│   ├── change-the-orientation-of-an-image.md
│   ├── circular-icons-with-a-massive-border-radius.md
│   ├── clean-up-repetition-with-is-pseudo-class.md
│   ├── conditional-styling-for-unsupported-css-features.md
│   ├── create-a-pulsing-background-with-css-animation.md
│   ├── define-css-custom-properties-with-scss-variables.md
│   ├── define-hsl-colors-with-alpha-values.md
│   ├── display-responsive-iframe-maintaining-aspect-ratio.md
│   ├── dry-up-scss-with-mixins.md
│   ├── filter-blur-requires-expensive-calculation.md
│   ├── give-elements-the-same-width-with-flexbox.md
│   ├── let-pointer-events-pass-through-an-element.md
│   ├── lighten-and-darken-with-css-brightness-filter.md
│   ├── lighten-and-darken-with-scss.md
│   ├── make-a-block-of-text-respect-new-lines.md
│   ├── parameterized-scss-mixins.md
│   ├── prevent-invisible-elements-from-being-clicked.md
│   ├── root-has-higher-specificity-than-html.md
│   ├── style-a-background-with-a-linear-gradient.md
│   └── using-maps-in-scss.md
├── cursor/
│   └── allow-cursor-to-be-launched-from-cli.md
├── deno/
│   └── read-in-the-contents-of-a-file.md
├── devops/
│   ├── aliasing-an-ansible-host.md
│   ├── allow-cross-origin-requests-to-include-cookies.md
│   ├── allow-https-through-your-ufw-firewall.md
│   ├── check-for-cached-site-association-file-for-ios.md
│   ├── check-the-status-of-all-services.md
│   ├── check-the-syntax-of-nginx-files.md
│   ├── connect-to-an-rds-postgresql-database.md
│   ├── default-rails-deploy-script-on-hatchbox.md
│   ├── determine-the-ip-address-of-a-domain.md
│   ├── hatchbox-exports-env-vars-with-asdf.md
│   ├── path-of-the-packets.md
│   ├── push-non-master-branch-to-heroku.md
│   ├── reload-the-nginx-configuration.md
│   ├── resolve-the-public-ip-of-a-url.md
│   ├── running-out-of-inode-space.md
│   ├── set-get-and-unset-env-vars-with-dokku.md
│   ├── set-up-domain-for-hatchbox-rails-app.md
│   ├── ssh-into-a-docker-container.md
│   ├── ssl-certificates-can-cover-multiple-domains.md
│   └── wipe-a-heroku-postgres-database.md
├── docker/
│   ├── check-postgres-version-running-in-docker-container.md
│   ├── configure-different-host-and-container-ports.md
│   ├── list-running-docker-containers.md
│   ├── prevent-containers-from-running-on-startup.md
│   ├── run-a-basic-postgresql-server-in-docker.md
│   └── run-sql-script-against-postgres-container.md
├── dprint.json
├── drizzle/
│   ├── create-bigint-identity-column-for-primary-key.md
│   ├── drizzle-tracks-migrations-in-a-log-table.md
│   └── get-fields-for-inserted-row.md
├── elixir/
│   ├── all-values-for-a-key-in-a-keyword-list.md
│   ├── append-to-a-keyword-list.md
│   ├── assert-an-exception-is-raised.md
│   ├── binary-representation-of-a-string.md
│   ├── check-for-a-substring-match.md
│   ├── check-list-membership.md
│   ├── comparing-datetime-structs.md
│   ├── compute-intermediate-values-in-a-with-construct.md
│   ├── compute-md5-digest-of-a-string.md
│   ├── counting-records-with-ecto.md
│   ├── create-a-date-with-the-date-sigil.md
│   ├── create-a-list-of-atoms.md
│   ├── creating-a-pid.md
│   ├── creating-indexes-with-ecto.md
│   ├── defining-multiple-clauses-in-an-anonymous-function.md
│   ├── determine-the-latest-release-of-a-hex-package.md
│   ├── do-you-have-the-time-part-2.md
│   ├── do-you-have-the-time.md
│   ├── documentation-lookup-with-vim-and-alchemist.md
│   ├── dynamically-generating-atoms.md
│   ├── execute-raw-sql-in-an-ecto-migration.md
│   ├── expose-internal-representation.md
│   ├── include-captures-with-string-split.md
│   ├── inspecting-the-process-message-queue.md
│   ├── list-functions-for-a-module.md
│   ├── listing-files-in-iex.md
│   ├── match-on-a-map-in-a-with-construct.md
│   ├── passing-around-and-using-modules.md
│   ├── pattern-matching-in-anonymous-functions.md
│   ├── pipe-into-a-case-statement.md
│   ├── quitting-iex.md
│   ├── range-into-list-using-comprehensions.md
│   ├── refer-to-a-module-within-itself.md
│   ├── referencing-values-in-iexs-history.md
│   ├── remove-one-list-from-another.md
│   ├── replace-duplicates-in-a-keyword-list.md
│   ├── requiring-keys-for-structs.md
│   ├── reversing-a-list-part-2.md
│   ├── reversing-a-list.md
│   ├── root-directory-of-a-project.md
│   ├── round-floats-to-integers.md
│   ├── run-exunit-tests-in-a-deterministic-order.md
│   ├── run-the-test-at-a-specific-line-number.md
│   ├── same-functions-should-be-grouped-together.md
│   ├── skip-a-specific-test.md
│   ├── string-interpolation-with-just-about-anything.md
│   ├── unique-indexes-with-ecto.md
│   ├── updating-values-in-a-map.md
│   ├── using-when-clauses-in-a-with-construct.md
│   ├── virtual-fields-with-ecto-schemas.md
│   ├── when-things-dont-match-the-with-statements.md
│   └── word-lists-for-atoms.md
├── gatsby/
│   └── add-javascript-to-body-of-the-document.md
├── git/
│   ├── accessing-a-lost-commit.md
│   ├── add-a-range-of-filenames-to-gitignore.md
│   ├── add-only-tracked-files-from-a-directory.md
│   ├── amend-author-of-previous-commit.md
│   ├── auto-squash-those-fixup-commits.md
│   ├── better-diffs-with-delta.md
│   ├── caching-credentials.md
│   ├── change-the-start-point-of-a-branch.md
│   ├── check-how-a-file-is-being-ignored.md
│   ├── check-if-a-file-has-changed-in-a-script.md
│   ├── check-if-a-file-is-under-version-control.md
│   ├── checking-commit-ancestry.md
│   ├── checkout-old-version-of-a-file.md
│   ├── checkout-previous-branch.md
│   ├── cherry-pick-a-range-of-commits.md
│   ├── cherry-pick-multiple-commits-at-once.md
│   ├── clean-out-all-local-branches.md
│   ├── clean-out-working-copy-with-patched-restore.md
│   ├── clean-up-old-remote-tracking-references.md
│   ├── clear-entries-from-git-stash.md
│   ├── clone-a-repo-just-for-the-files-without-history.md
│   ├── clone-a-repo-locally-from-git.md
│   ├── configure-global-gitignore-file.md
│   ├── configuring-the-pager.md
│   ├── copy-a-file-from-another-branch.md
│   ├── count-all-files-of-specific-type-tracked-by-git.md
│   ├── count-number-of-commits-on-a-branch.md
│   ├── create-a-new-branch-with-git-switch.md
│   ├── delete-all-untracked-files.md
│   ├── determine-absolute-path-of-top-level-project-directory.md
│   ├── determine-the-hash-id-for-a-blob.md
│   ├── diffing-with-patience.md
│   ├── dropping-commits-with-git-rebase.md
│   ├── dry-runs-in-git.md
│   ├── exclude-a-directory-during-a-command.md
│   ├── exclude-a-file-from-a-diff-output.md
│   ├── excluding-files-locally.md
│   ├── extend-git-with-custom-commands.md
│   ├── files-with-local-changes-cannot-be-removed.md
│   ├── find-and-remove-files-that-match-a-name.md
│   ├── find-the-date-that-a-file-was-added-to-the-repo.md
│   ├── find-the-initial-commit.md
│   ├── fix-whitespace-errors-throughout-branch-commits.md
│   ├── get-latest-commit-timestamp-for-a-file.md
│   ├── get-the-name-of-the-current-branch.md
│   ├── get-the-short-version-of-the-latest-commit.md
│   ├── grab-a-single-file-from-a-stash.md
│   ├── grep-for-a-pattern-on-another-branch.md
│   ├── grep-over-commit-messages.md
│   ├── highlight-extra-whitespace-in-diff-output.md
│   ├── highlight-small-change-on-single-line.md
│   ├── ignore-changes-to-a-tracked-file.md
│   ├── ignore-files-specific-to-your-workflow.md
│   ├── include-a-message-with-your-stashed-changes.md
│   ├── include-or-exclude-remaining-patch-changes.md
│   ├── include-some-stats-in-your-git-log.md
│   ├── intent-to-add.md
│   ├── interactively-checkout-specific-files-from-a-stash.md
│   ├── interactively-unstage-changes.md
│   ├── keep-file-locally-with-git-rm.md
│   ├── last-commit-a-file-appeared-in.md
│   ├── list-all-files-added-during-span-of-time.md
│   ├── list-all-files-changed-between-two-branches.md
│   ├── list-all-git-aliases-from-gitconfig.md
│   ├── list-branches-that-contain-a-commit.md
│   ├── list-commits-on-a-branch.md
│   ├── list-different-commits-between-two-branches.md
│   ├── list-filenames-without-the-diffs.md
│   ├── list-just-the-files-involved-in-a-commit.md
│   ├── list-most-git-commands.md
│   ├── list-untracked-files-for-scripting.md
│   ├── list-untracked-files.md
│   ├── move-the-latest-commit-to-a-new-branch.md
│   ├── override-the-global-git-ignore-file.md
│   ├── pick-specific-changes-to-stash.md
│   ├── pulling-in-changes-during-an-interactive-rebase.md
│   ├── push-to-a-branch-on-another-remote.md
│   ├── quicker-commit-fixes-with-the-fixup-flag.md
│   ├── rebase-commits-with-an-arbitrary-command.md
│   ├── reference-a-commit-via-commit-message-pattern-matching.md
│   ├── reference-commits-earlier-than-reflog-remembers.md
│   ├── remove-untracked-files-from-a-directory.md
│   ├── rename-a-remote.md
│   ├── renaming-a-branch.md
│   ├── resetting-a-reset.md
│   ├── resolve-a-merge-conflict-from-stash-pop.md
│   ├── restore-file-from-one-branch-to-the-current.md
│   ├── review-commits-from-before-a-certain-date.md
│   ├── run-a-git-command-from-outside-the-repo.md
│   ├── set-a-custom-pager-for-a-specific-command.md
│   ├── set-default-branch-name-for-new-repos.md
│   ├── set-up-gpg-signing-key.md
│   ├── shorthand-to-force-push-a-branch.md
│   ├── show-all-commits-for-a-file-beyond-renaming.md
│   ├── show-changes-for-files-that-match-a-pattern.md
│   ├── show-changes-in-the-compose-commit-message-view.md
│   ├── show-file-diffs-when-viewing-git-log.md
│   ├── show-list-of-most-recently-committed-branches.md
│   ├── show-only-commits-that-touch-specific-lines.md
│   ├── show-summary-stats-for-current-branch.md
│   ├── show-the-diffstat-summary-of-a-commit.md
│   ├── show-the-good-and-the-bad-with-git-bisect.md
│   ├── show-what-is-in-a-stash.md
│   ├── single-key-presses-in-interactive-mode.md
│   ├── skip-a-bad-commit-when-bisecting.md
│   ├── skip-git-hooks-as-needed.md
│   ├── skip-pre-commit-hooks.md
│   ├── staging-changes-within-vim.md
│   ├── staging-stashes-interactively.md
│   ├── stash-a-single-untracked-file.md
│   ├── stash-everything.md
│   ├── stashing-only-unstaged-changes.md
│   ├── stashing-untracked-files.md
│   ├── switch-to-a-recent-branch-with-fzf.md
│   ├── transition-a-branch-from-one-base-to-another.md
│   ├── turn-off-the-output-pager-for-one-command.md
│   ├── two-kinds-of-dotted-range-notation.md
│   ├── undo-latest-changes-committed-to-specific-file.md
│   ├── unstage-changes-with-git-restore.md
│   ├── untrack-a-directory-of-files-without-deleting.md
│   ├── untrack-a-file-without-deleting-it.md
│   ├── update-the-url-of-a-remote.md
│   ├── use-external-diff-tool-like-difftastic.md
│   ├── using-commands-with-a-relative-date-format.md
│   ├── verbose-commit-message.md
│   ├── viewing-a-file-on-another-branch.md
│   ├── what-changed.md
│   ├── what-is-the-current-branch.md
│   └── whitespace-warnings.md
├── github/
│   ├── access-your-github-profile-photo.md
│   ├── open-a-pr-to-an-unforked-repo.md
│   ├── target-another-repo-when-creating-a-pr.md
│   └── tell-gh-what-the-default-repo-is.md
├── github-actions/
│   ├── cache-playwright-dependencies-across-workflows.md
│   ├── capture-an-output-value-for-use-in-a-later-step.md
│   ├── disable-a-workflow-with-the-gh-cli.md
│   ├── reference-an-encrypted-secret-in-an-action.md
│   ├── trigger-a-workflow-via-an-api-call.md
│   └── use-labels-to-block-pr-merge.md
├── go/
│   ├── access-go-docs-offline.md
│   ├── add-a-method-to-a-struct.md
│   ├── basic-delve-debugging-session.md
│   ├── build-for-a-specific-os-and-architecture.md
│   ├── check-if-cobra-flag-was-set.md
│   ├── combine-two-slices.md
│   ├── configure-max-string-print-length-for-delve.md
│   ├── connect-to-a-sqlite-database.md
│   ├── create-a-slice-from-an-array.md
│   ├── detect-if-stdin-comes-from-a-redirect.md
│   ├── deterministically-seed-a-random-number-generator.md
│   ├── difference-between-slice-and-pointer-to-slice.md
│   ├── do-something-n-times.md
│   ├── find-executables-installed-by-go.md
│   ├── format-date-and-time-with-time-constants.md
│   ├── not-so-random.md
│   ├── parse-a-string-into-individual-fields.md
│   ├── parse-flags-from-cli-arguments.md
│   ├── pass-a-struct-to-a-function.md
│   ├── produce-the-zero-value-of-a-generic-type.md
│   ├── redirect-file-to-stdin-during-delve-debug.md
│   ├── replace-the-current-process-with-an-external-command.md
│   ├── sleep-for-a-duration.md
│   ├── sort-slice-in-ascending-or-descending-order.md
│   ├── upgrading-from-an-older-version-on-mac.md
│   └── write-a-custom-scan-function-for-file-io.md
├── groq/
│   ├── grab-multiple-values-from-a-reference.md
│   ├── grab-values-from-an-array-of-references.md
│   ├── include-attributes-when-conditional-check-passes.md
│   └── include-type-of-operation-in-webhook-response.md
├── heroku/
│   ├── check-ruby-version-for-production-app.md
│   ├── connect-to-a-database-by-color.md
│   ├── deploy-a-review-app-to-a-different-stack.md
│   ├── diagnose-problems-in-a-heroku-postgres-database.md
│   ├── open-dashboard-for-specific-add-on.md
│   ├── run-sql-against-remote-postgres-database.md
│   ├── set-and-show-heroku-env-variables.md
│   ├── specify-default-team-and-app-for-project.md
│   └── ssh-into-heroku-server-hosting-app.md
├── html/
│   ├── adding-alt-text-to-an-image.md
│   ├── allow-number-input-to-accept-decimal-values.md
│   ├── determine-which-button-submitted-the-form.md
│   ├── disable-auto-completion-for-a-form-input.md
│   ├── disclose-additional-details.md
│   ├── make-elements-non-interactive-with-inert.md
│   ├── prevent-search-engines-from-indexing-a-page.md
│   ├── render-text-as-superscript.md
│   └── submit-a-form-with-a-button-outside-the-form.md
├── http/
│   └── what-counts-as-cross-origin-with-cors.md
├── inngest/
│   ├── ensure-lookup-can-be-retried.md
│   └── exit-function-early-without-retries.md
├── internet/
│   ├── add-emoji-to-github-repository-description.md
│   ├── add-styled-alerts-to-github-markdown-documents.md
│   ├── analyze-your-website-performance.md
│   ├── check-your-public-ip-address.md
│   ├── digraph-unicode-characters-have-a-titlecase.md
│   ├── download-a-google-doc-as-specific-format.md
│   ├── enable-keyboard-shortcuts-in-gmail.md
│   ├── exclude-ai-overview-from-google-search.md
│   ├── exclude-whitespace-changes-from-github-diffs.md
│   ├── figure-out-your-public-ip-address.md
│   ├── focus-the-url-bar.md
│   ├── get-random-images-from-unsplash.md
│   ├── grab-the-rss-feed-for-a-substack-blog.md
│   ├── hide-overflowing-text-for-google-sheets-column.md
│   ├── search-tweets-by-author.md
│   ├── show-all-pivotal-stories-with-blockers.md
│   └── verify-site-ownership-with-dns-record.md
├── java/
│   ├── ensure-resources-always-get-closed.md
│   ├── install-java-on-mac-with-brew.md
│   └── run-a-hello-world-program-in-eclipse.md
├── javascript/
│   ├── accessing-arguments-to-a-function.md
│   ├── add-item-to-an-array-of-references-in-sanity.md
│   ├── basic-date-formatting-without-a-library.md
│   ├── character-codes-from-keyboard-listeners.md
│   ├── check-classes-on-a-dom-element.md
│   ├── check-if-a-number-is-positive-or-negative.md
│   ├── check-if-file-exists-before-reading-it.md
│   ├── check-if-something-is-an-array.md
│   ├── check-media-queries-from-javascript.md
│   ├── check-the-password-confirmation-with-yup.md
│   ├── compare-the-equality-of-two-date-objects.md
│   ├── computed-property-names-in-es6.md
│   ├── conditionally-include-pairs-in-an-object.md
│   ├── configure-jest-to-run-a-test-setup-file.md
│   ├── convert-seconds-to-date-object.md
│   ├── create-a-cancelable-promise-with-pcancelable.md
│   ├── create-an-array-containing-1-to-n.md
│   ├── create-an-object-with-no-properties.md
│   ├── create-bootstrapped-apps-with-yarn.md
│   ├── create-future-and-past-dates-from-today.md
│   ├── custom-type-checking-error-messages-with-yup.md
│   ├── default-and-named-exports-from-the-same-module.md
│   ├── define-a-custom-jest-matcher.md
│   ├── destructure-with-access-to-nested-value-and-parent-value.md
│   ├── destructuring-the-rest-of-an-array.md
│   ├── easy-date-comparison-with-dayjs.md
│   ├── enable-es7-transforms-with-react-rails.md
│   ├── ensure-shell-can-find-global-npm-binaries.md
│   ├── expand-emojis-with-the-spread-operator.md
│   ├── fill-an-input-with-a-ton-of-text.md
│   ├── find-the-version-of-an-installed-dependency.md
│   ├── find-where-yarn-is-installing-binaries.md
│   ├── for-in-iterates-over-object-properties.md
│   ├── format-a-decimal-to-a-fixed-number-of-digits.md
│   ├── format-a-list-of-items-by-locale.md
│   ├── format-time-zone-identifier.md
│   ├── formatting-values-with-units-for-display.md
│   ├── freeze-an-object-sorta.md
│   ├── generate-a-v4-uuid-in-the-browser.md
│   ├── generate-random-integers.md
│   ├── get-the-location-and-size-of-an-element.md
│   ├── get-the-response-status-from-an-axios-error.md
│   ├── get-the-time-components-of-a-date.md
│   ├── get-the-time-zone-of-the-client-computer.md
│   ├── globally-install-a-package-with-yarn.md
│   ├── globally-install-specific-version-of-pnpm.md
│   ├── immutable-remove-with-the-spread-operator.md
│   ├── initialize-a-new-javascript-project-with-yarn.md
│   ├── install-the-latest-version-of-node-with-nvm.md
│   ├── interpolate-a-string-into-a-regex.md
│   ├── iso-8601-formatted-dates-are-interpreted-as-utc.md
│   ├── link-a-javascript-package-locally.md
│   ├── list-top-level-npm-dependencies.md
│   ├── load-and-use-env-var-in-node-script.md
│   ├── make-the-browser-editable-with-design-mode.md
│   ├── make-truly-deep-clone-with-structured-clone.md
│   ├── matching-a-computed-property-in-function-args.md
│   ├── matching-multiple-values-in-a-switch-statement.md
│   ├── mock-a-function-with-return-values-using-jest.md
│   ├── new-dates-can-take-out-of-bounds-values.md
│   ├── numbers-are-empty.md
│   ├── object-initialization-with-shorthand-property-names.md
│   ├── obtain-undefined-value-with-the-void-operator.md
│   ├── open-global-npm-config-file.md
│   ├── parse-a-date-from-a-timestamp.md
│   ├── pre-and-post-hooks-for-yarn-scripts.md
│   ├── prevent-hidden-element-from-flickering-on-load.md
│   ├── purge-null-and-undefined-values-from-object.md
│   ├── random-cannot-be-seeded.md
│   ├── reach-into-an-object-for-nested-data-with-get.md
│   ├── render-an-array-of-elements-with-react-16.md
│   ├── resolve-and-pass-multiple-values-from-a-then.md
│   ├── run-a-bash-script-from-a-node-script.md
│   ├── run-multiple-node-scripts-concurrently.md
│   ├── running-es6-specs-with-mocha.md
│   ├── scoping-variables-with-a-block-statement.md
│   ├── short-circuit-concurrently-when-process-fails.md
│   ├── show-description-of-all-npm-config-options.md
│   ├── sleep-for-a-bit-in-async-code.md
│   ├── sorting-arrays-of-objects-with-lodash.md
│   ├── splat-arguments-to-a-function.md
│   ├── spread-merging-objects-includes-nil-values.md
│   ├── spread-the-rest-with-es6.md
│   ├── start-node-process-in-specific-timezone.md
│   ├── string-interpolation-with-template-literals.md
│   ├── support-nested-matching-in-custom-jest-matchers.md
│   ├── tell-jest-to-focus-on-running-only-one-test.md
│   ├── tell-node-to-treat-js-files-as-esm.md
│   ├── tell-prettier-to-not-format-a-statement.md
│   ├── test-coverage-stats-with-jest.md
│   ├── test-timing-based-code-with-jest-fake-timers.md
│   ├── the-comma-operator.md
│   ├── throttling-a-function-call.md
│   ├── timing-processes.md
│   ├── transforming-es6-and-jsx-with-babel-6.md
│   ├── truthiness-of-integer-arrays.md
│   ├── turn-an-html-collection-into-an-array.md
│   ├── turn-off-console-error-messages-in-a-test.md
│   ├── turn-off-npm-funding-message.md
│   ├── waiting-on-multiple-promises.md
│   ├── who-am-i-npm-edition.md
│   ├── write-a-javascript-object-to-a-json-file.md
│   ├── yarn-commands-without-the-emojis.md
│   └── yup-schemas-are-validated-asynchronously.md
├── jj/
│   ├── colocate-jj-and-git-directories-for-project.md
│   ├── describe-current-changes-and-create-new-change.md
│   ├── find-system-wide-config-file-for-user.md
│   └── squash-changes-into-parent-commit-interactively.md
├── jq/
│   ├── combine-an-array-of-objects-into-a-single-object.md
│   ├── count-each-collection-in-a-json-object.md
│   ├── count-the-number-of-things-in-a-json-file.md
│   ├── extract-a-list-of-values.md
│   ├── filter-out-results-based-on-list-of-values.md
│   ├── find-all-objects-in-an-array-where-key-is-set.md
│   ├── find-all-objects-with-a-matching-key-value-pair.md
│   ├── get-a-slice-of-the-ends-of-an-array.md
│   ├── get-the-first-item-for-every-top-level-key.md
│   ├── get-the-last-item-from-an-array.md
│   ├── reduce-object-to-just-entries-of-a-specific-type.md
│   ├── turn-a-list-from-a-command-into-json.md
│   └── zip-two-json-files-together-based-on-shared-id.md
├── kitty/
│   ├── set-the-title-of-a-window.md
│   └── use-the-built-in-emoji-picker.md
├── linux/
│   ├── check-ubuntu-version.md
│   ├── configure-your-server-timezone.md
│   ├── list-the-statuses-of-all-upstart-jobs.md
│   ├── show-current-system-time-and-settings.md
│   ├── show-used-and-available-system-memory.md
│   └── upgrading-ubuntu.md
├── llm/
│   ├── send-curl-to-claude-text-completion-api.md
│   └── use-the-llm-cli-with-claude-models.md
├── mac/
│   ├── access-all-screen-and-video-capture-options.md
│   ├── access-system-information-on-osx.md
│   ├── access-unsupported-screen-resolutions-with-rdm.md
│   ├── add-a-bunch-of-cli-utilities-with-coreutils.md
│   ├── capture-screenshot-to-clipboard-from-cli.md
│   ├── check-network-quality-stats-from-the-command-line.md
│   ├── clean-up-old-homebrew-files.md
│   ├── control-which-monitor-app-switcher-appears-on.md
│   ├── convert-an-heic-image-file-to-jpg.md
│   ├── default-screenshot-location.md
│   ├── detect-how-long-a-user-has-been-idle.md
│   ├── disable-swipe-navigation-for-a-specific-app.md
│   ├── display-a-message-with-alfred.md
│   ├── find-the-process-using-a-specific-port.md
│   ├── gesture-for-viewing-all-windows-of-current-app.md
│   ├── insert-a-non-breaking-space-character.md
│   ├── inspect-assertions-preventing-sleep.md
│   ├── keyboard-shortcuts-for-interacting-with-text-areas.md
│   ├── launch-some-confetti.md
│   ├── list-all-the-say-voices.md
│   ├── open-finder-app-to-specific-directory.md
│   ├── prevent-sleep-with-the-caffeinate-command.md
│   ├── quickly-type-en-dashes-and-em-dashes.md
│   ├── require-additional-js-libraries-in-postman.md
│   ├── resize-app-windows-with-applescript.md
│   ├── resizing-both-corners-of-a-window.md
│   ├── reveal-location-of-file-in-finder-app.md
│   ├── run-a-hardware-check.md
│   ├── run-applescript-commands-inline-in-the-terminal.md
│   ├── set-a-window-to-its-default-zoom-level.md
│   ├── specify-app-when-opening-from-command-line.md
│   ├── start-amphetamine-session-with-applescript.md
│   ├── uninstall-logitech-g-hub-from-mac.md
│   ├── use-a-different-font-with-iterm2.md
│   ├── use-default-screenshot-shortcuts-with-cleanshot-x.md
│   ├── view-all-windows-of-the-current-app.md
│   └── write-system-clipboard-to-a-file.md
├── mise/
│   ├── create-umbrella-task-for-all-test-tasks.md
│   ├── list-the-files-being-loaded-by-mise.md
│   ├── look-in-ruby-version-dotfile.md
│   ├── override-your-project-mise-file.md
│   ├── pick-from-tasks-using-interactive-picker.md
│   ├── preserve-color-output-for-task-command.md
│   ├── read-existing-dot-env-file-into-env-vars.md
│   ├── run-a-command-with-specific-tool-version.md
│   └── search-through-bin-paths-for-tool-locations.md
├── mongodb/
│   ├── determine-the-database-version.md
│   ├── dump-a-remote-database.md
│   ├── dump-and-restore-with-a-single-gzip-file.md
│   ├── get-size-stats-for-a-collection.md
│   └── list-size-stats-for-all-collections.md
├── mysql/
│   ├── change-existing-column-to-not-null.md
│   ├── connect-to-a-database-in-safe-update-mode.md
│   ├── default-username-and-password-for-new-instance.md
│   ├── display-output-in-a-vertical-format.md
│   ├── doing-date-math.md
│   ├── dump-a-database-to-a-file.md
│   ├── echo-a-message-from-a-sql-file.md
│   ├── get-idea-of-what-is-in-a-json-column.md
│   ├── ignore-duplicates-when-inserting-records.md
│   ├── list-databases-and-tables.md
│   ├── run-statements-in-a-transaction.md
│   ├── select-rows-after-an-offset.md
│   ├── set-value-on-null-json-column.md
│   ├── show-create-statement-for-a-table.md
│   ├── show-indexes-for-a-table.md
│   └── show-tables-that-match-a-pattern.md
├── neovim/
│   ├── allow-neovim-to-copy-paste-with-system-clipboard.md
│   ├── create-user-command-to-open-init-config.md
│   ├── jump-between-changes-in-current-file.md
│   ├── run-a-lua-statement-from-the-command-prompt.md
│   ├── run-nvim-with-factory-defaults.md
│   └── set-up-vim-plug-with-neovim.md
├── netlify/
│   └── override-the-default-yarn-version.md
├── next-auth/
│   └── adjust-the-shape-of-the-user-type.md
├── nextjs/
│   ├── avoid-conflicting-files.md
│   ├── create-files-and-directories-for-dynamic-routes.md
│   ├── define-url-redirects-in-the-next-config.md
│   ├── fetch-does-not-work-in-api-serverless-function.md
│   ├── make-environment-variable-publicly-available.md
│   ├── match-middleware-on-groups-of-paths.md
│   ├── organize-pages-in-route-groups.md
│   ├── precedence-of-dot-env-files.md
│   ├── push-a-route-with-a-url-object.md
│   ├── redirect-an-unauthorized-user.md
│   ├── remove-a-query-param-from-the-url.md
│   └── ship-public-assets-with-a-nextjs-app.md
├── phoenix/
│   ├── bypass-template-rendering.md
│   ├── check-the-installed-version.md
│   ├── generate-new-app-without-brunch.md
│   ├── render-a-template-to-a-string.md
│   ├── serve-static-assets-from-custom-directory.md
│   ├── specifying-the-digest-directory.md
│   └── specifying-the-server-port.md
├── planetscale/
│   ├── see-what-databases-you-have-access-to.md
│   └── seed-production-data-into-another-branch.md
├── pnpm/
│   ├── execute-a-command-from-the-workspace-root.md
│   ├── install-command-runs-for-entire-workspace.md
│   └── list-the-installed-version-of-a-specific-package.md
├── postgres/
│   ├── a-better-null-display-character.md
│   ├── add-foreign-key-constraint-without-a-full-lock.md
│   ├── add-on-delete-cascade-to-foreign-key-constraint.md
│   ├── add-unique-constraint-using-existing-index.md
│   ├── adding-composite-uniqueness-constraints.md
│   ├── aggregate-a-column-into-an-array.md
│   ├── assumed-radius-of-the-earth.md
│   ├── auto-expanded-display.md
│   ├── between-symmetric.md
│   ├── capitalize-all-the-words.md
│   ├── change-the-current-directory-for-psql.md
│   ├── change-the-owner-of-a-sequence.md
│   ├── check-if-clusters-are-upgrade-compatible.md
│   ├── check-if-the-local-server-is-running.md
│   ├── check-if-user-role-exists-for-database.md
│   ├── check-table-for-any-orphaned-records.md
│   ├── check-the-size-of-databases-in-a-cluster.md
│   ├── checking-inequality.md
│   ├── checking-the-type-of-a-value.md
│   ├── clear-the-screen-in-psql-2.md
│   ├── clear-the-screen-in-psql.md
│   ├── compute-hashes-with-pgcrypto.md
│   ├── compute-median-instead-of-average.md
│   ├── compute-the-levenshtein-distance-of-two-strings.md
│   ├── compute-the-md5-hash-of-a-string.md
│   ├── concatenate-strings-with-a-separator.md
│   ├── configure-the-timezone.md
│   ├── constructing-a-range-of-dates.md
│   ├── convert-a-string-to-a-timestamp.md
│   ├── count-how-many-records-there-are-of-each-type.md
│   ├── count-records-by-type.md
│   ├── count-the-number-of-items-in-an-array.md
│   ├── count-the-number-of-trues-in-an-aggregate-query.md
│   ├── create-a-cluster-in-a-specific-data-directory.md
│   ├── create-a-composite-primary-key.md
│   ├── create-a-table-from-the-structure-of-another.md
│   ├── create-an-index-across-two-columns.md
│   ├── create-an-index-without-locking-the-table.md
│   ├── create-and-execute-sql-statements-with-gexec.md
│   ├── create-database-uses-template1.md
│   ├── create-hstore-from-two-arrays.md
│   ├── create-table-adds-a-data-type.md
│   ├── creating-conditional-constraints.md
│   ├── creating-custom-types.md
│   ├── day-of-week-by-name-for-a-date.md
│   ├── day-of-week-for-a-date.md
│   ├── default-schema.md
│   ├── defining-arrays.md
│   ├── determine-types-of-jsonb-records.md
│   ├── determining-the-age-of-things.md
│   ├── difference-between-explain-and-explain-analyze.md
│   ├── different-ways-to-define-an-interval.md
│   ├── dump-all-databases-to-a-sql-file.md
│   ├── dump-and-restore-a-database.md
│   ├── dump-the-sql-needed-recreate-a-table.md
│   ├── duplicate-a-local-database.md
│   ├── edit-existing-functions.md
│   ├── enable-logging-of-database-activity.md
│   ├── enforce-uniqueness-on-column-expression.md
│   ├── escaping-a-quote-in-a-string.md
│   ├── escaping-string-literals-with-dollar-quoting.md
│   ├── export-query-results-to-a-csv.md
│   ├── extracting-nested-json-data.md
│   ├── fetch-data-from-an-endpoint-in-sql.md
│   ├── fetch-specific-number-of-results.md
│   ├── find-duplicate-records-in-table-without-unique-id.md
│   ├── find-records-that-contain-duplicate-values.md
│   ├── find-records-that-have-multiple-associated-records.md
│   ├── find-the-data-directory.md
│   ├── find-the-location-of-postgres-config-files.md
│   ├── fizzbuzz-with-common-table-expressions.md
│   ├── force-ssl-when-making-a-psql-connection.md
│   ├── generate-a-uuid.md
│   ├── generate-modern-primary-key-columns.md
│   ├── generate-random-alphanumeric-identifier.md
│   ├── generate-random-uuids-without-an-extension.md
│   ├── generate-series-of-numbers.md
│   ├── generating-uuids-with-pgcrypto.md
│   ├── get-a-quick-approximate-count-of-a-table.md
│   ├── get-row-count-for-most-recent-query.md
│   ├── get-the-size-of-a-database.md
│   ├── get-the-size-of-a-table.md
│   ├── get-the-size-of-an-index.md
│   ├── get-the-size-on-disk-of-an-index.md
│   ├── getting-a-slice-of-an-array.md
│   ├── group-by-the-result-of-a-function-call.md
│   ├── idempotent-inserts.md
│   ├── include-all-queries-in-the-log-file.md
│   ├── include-columns-in-a-covering-index.md
│   ├── include-multiple-tables-in-a-pg-dump.md
│   ├── insert-a-bunch-of-records-with-generate-series.md
│   ├── insert-just-the-defaults.md
│   ├── inspect-progress-of-long-running-create-index.md
│   ├── install-postgres-with-uuid-ossp-using-asdf.md
│   ├── integers-in-postgres.md
│   ├── intervals-of-time-by-week.md
│   ├── is-it-null-or-not-null.md
│   ├── label-dollar-quoted-strings-with-a-tag.md
│   ├── limit-execution-time-of-statements.md
│   ├── list-all-columns-of-a-specific-type.md
│   ├── list-all-rows-in-a-table.md
│   ├── list-all-the-databases.md
│   ├── list-all-versions-of-a-function.md
│   ├── list-available-schemas.md
│   ├── list-connections-to-a-database.md
│   ├── list-database-objects-with-disk-usage.md
│   ├── list-database-users.md
│   ├── list-databases-available-for-connecting.md
│   ├── list-various-kinds-of-objects.md
│   ├── lower-is-faster-than-ilike.md
│   ├── manage-major-versions-with-brew-and-direnv.md
│   ├── max-identifier-length-is-63-bytes.md
│   ├── open-heroku-database-in-postico-from-terminal.md
│   ├── output-explain-query-plan-in-different-formats.md
│   ├── pg-prefix-is-reserved-for-system-schemas.md
│   ├── postgres-does-not-support-unsigned-integers.md
│   ├── prepare-execute-and-deallocate-statements.md
│   ├── pretty-print-data-sizes.md
│   ├── pretty-printing-jsonb-rows.md
│   ├── prevent-a-query-from-running-too-long.md
│   ├── print-the-query-buffer-in-psql.md
│   ├── put-unique-constraint-on-generated-column.md
│   ├── references-target-primary-key-by-default.md
│   ├── remove-not-null-constraint-from-a-column.md
│   ├── renaming-a-sequence.md
│   ├── renaming-a-table.md
│   ├── restart-a-sequence.md
│   ├── restarting-sequences-when-truncating-tables.md
│   ├── salt-and-hash-a-password-with-pgcrypto.md
│   ├── send-a-command-to-psql.md
│   ├── set-a-seed-for-the-random-number-generator.md
│   ├── set-a-statement-timeout-threshold-for-a-session.md
│   ├── set-inclusion-with-hstore.md
│   ├── set-up-a-project-local-cluster-with-postgres-app.md
│   ├── sets-with-the-values-command.md
│   ├── shorthand-absolute-value-operator.md
│   ├── show-all-versions-of-an-operator.md
│   ├── show-reconstructed-constraints-for-a-table.md
│   ├── show-the-hidden-queries-behind-backslash-commands.md
│   ├── sleeping.md
│   ├── special-math-operators.md
│   ├── storing-emails-with-citext.md
│   ├── string-contains-another-string.md
│   ├── survey-of-user-defined-ordering-of-records.md
│   ├── switch-non-castable-column-type-with-using-clause.md
│   ├── switch-the-running-postgres-server-version.md
│   ├── table-names-are-treated-as-lower-case-by-default.md
│   ├── temporarily-disable-triggers.md
│   ├── temporary-tables.md
│   ├── terminating-a-connection.md
│   ├── the-nullif-function.md
│   ├── timestamp-functions.md
│   ├── toggling-the-pager-in-psql.md
│   ├── track-psql-history-separately-per-database.md
│   ├── trim-leading-and-trailing-space-from-string.md
│   ├── truncate-all-rows.md
│   ├── truncate-tables-with-dependents.md
│   ├── turn-timing-on.md
│   ├── two-ways-to-compute-factorial.md
│   ├── two-ways-to-escape-a-quote-in-a-string.md
│   ├── types-by-category.md
│   ├── unable-to-infer-data-type-in-production.md
│   ├── union-all-rows-including-duplicates.md
│   ├── use-a-psqlrc-file-for-common-settings.md
│   ├── use-a-trigger-to-mirror-inserts-to-another-table.md
│   ├── use-argument-indexes.md
│   ├── use-not-valid-to-immediately-enforce-a-constraint.md
│   ├── use-rename-to-hot-swap-two-tables.md
│   ├── use-variables-in-an-anonymous-function.md
│   ├── using-expressions-in-indexes.md
│   ├── using-intervals-to-offset-time.md
│   ├── who-is-the-current-user.md
│   ├── word-count-for-a-column.md
│   └── write-a-query-result-to-file.md
├── prisma/
│   ├── apply-separate-formatting-with-a-blank-line.md
│   ├── batch-insert-records-with-create-many.md
│   ├── check-if-database-and-schema-are-not-in-sync.md
│   ├── configure-client-to-log-sql-queries.md
│   ├── execute-a-raw-sql-query.md
│   ├── grab-a-limited-set-of-records.md
│   ├── open-connections-to-multiple-databases.md
│   ├── override-table-name-for-prisma-model.md
│   └── specify-alternate-location-for-prisma-schema.md
├── python/
│   ├── access-instance-variables.md
│   ├── access-most-recent-return-value-in-repl.md
│   ├── break-debugger-on-first-line-of-program.md
│   ├── check-if-package-is-installed-with-pip.md
│   ├── control-passing-of-time-in-tests.md
│   ├── create-a-dummy-dataframe-in-pandas.md
│   ├── create-a-range-of-descending-values.md
│   ├── dunder-methods.md
│   ├── easy-key-value-aggregates-with-defaultdict.md
│   ├── install-with-pip-for-specific-interpreter.md
│   ├── iterate-first-n-items-from-enumerable.md
│   ├── iterate-over-a-dictionary.md
│   ├── keep-a-tally-with-collections-counter.md
│   ├── load-a-file-into-the-python-repl.md
│   ├── look-inside-pytest-tmp-path.md
│   ├── override-the-boolean-context-of-a-class.md
│   ├── parse-relative-time-to-datetime-object.md
│   ├── store-and-access-immutable-data-in-a-tuple.md
│   ├── test-a-function-with-pytest.md
│   ├── use-pipx-to-install-end-user-apps.md
│   └── use-verbose-flag-to-get-more-diff.md
├── rails/
│   ├── access-secrets-in-a-rails-5-2-app.md
│   ├── active-record-query-for-this-or-that.md
│   ├── add-a-check-constraint-to-a-table.md
│   ├── add-a-database-index-if-it-does-not-already-exist.md
│   ├── add-a-foreign-key-reference-to-a-table.md
│   ├── add-a-generated-column-to-a-postgresql-table.md
│   ├── add-a-reference-column-with-an-index.md
│   ├── add-activerecord-error-not-tied-to-any-attribute.md
│   ├── add-color-to-the-irb-console-prompt.md
│   ├── add-react-with-webpacker-to-a-new-rails-app.md
│   ├── add-timestamptz-columns-with-the-migration-dsl.md
│   ├── adjust-the-production-log-level.md
│   ├── advance-the-date.md
│   ├── all-or-nothing-database-transactions.md
│   ├── allow-associations-to-be-optional.md
│   ├── allow-list-params-anywhere-with-strong-params.md
│   ├── alphabetize-schema-columns-to-keep-them-consistent.md
│   ├── alter-the-rails-setup-script.md
│   ├── apply-basic-html-formatting-to-block-of-text.md
│   ├── assert-two-arrays-have-the-same-items-with-rspec.md
│   ├── attach-a-file-with-capybara.md
│   ├── attribute-getter-without-the-recursion.md
│   ├── attribute-was.md
│   ├── autosave-false-on-activerecord-associations.md
│   ├── bind-parameters-to-activerecord-sql-query.md
│   ├── build-a-hash-of-model-attributes.md
│   ├── capture-development-emails-with-mailhog.md
│   ├── capybara-page-status-code.md
│   ├── cast-common-boolean-like-values-to-booleans.md
│   ├── change-the-nullability-of-a-column.md
│   ├── change-the-time-zone-offset-of-a-datetime-object.md
│   ├── check-how-database-is-configured.md
│   ├── check-if-activerecord-update-fails.md
│   ├── check-if-any-records-have-a-null-value.md
│   ├── check-specific-attributes-on-activerecord-array.md
│   ├── check-the-current-named-log-level.md
│   ├── clean-up-memory-hungry-rails-console-processes.md
│   ├── code-statistics-for-an-application.md
│   ├── columns-with-default-values-are-nil-on-create.md
│   ├── comparing-datetimes-down-to-second-precision.md
│   ├── conditional-class-selectors-in-haml.md
│   ├── convert-a-symbol-to-a-constant.md
│   ├── convert-json-field-to-hash-with-indifferent-access.md
│   ├── count-the-number-of-records-by-attribute.md
│   ├── create-a-custom-named-references-column.md
│   ├── create-a-join-table-with-the-migration-dsl.md
│   ├── create-table-with-bigint-id-as-primary-key.md
│   ├── creating-records-of-has-one-associations.md
│   ├── custom-validation-message.md
│   ├── customize-paths-and-helpers-for-devise-routes.md
│   ├── customize-template-for-new-schema-migration.md
│   ├── customize-the-path-of-a-resource-route.md
│   ├── define-the-root-path-for-the-app.md
│   ├── delete-paranoid-records.md
│   ├── demodulize-a-class-name.md
│   ├── determine-the-configured-primary-key-type.md
│   ├── different-ways-to-add-a-foreign-key-reference.md
│   ├── disambiguate-where-in-a-joined-relation.md
│   ├── empty-find-by-returns-first-record.md
│   ├── enforce-locals-passed-to-a-partial.md
│   ├── ensure-a-rake-task-cannot-write-data.md
│   ├── ensure-migrations-use-the-latest-schema.md
│   ├── ensure-record-saved-with-after-commit-callback.md
│   ├── filter-active-model-validation-errors.md
│   ├── filter-active-storage-blobs-to-only-images.md
│   ├── find-or-create-a-record-with-factory-bot.md
│   ├── find-records-with-multiple-associated-records.md
│   ├── force-all-users-to-sign-out.md
│   ├── format-datetime-with-builtin-formats.md
│   ├── format-specific-html-erb-template-files.md
│   ├── generate-a-model.md
│   ├── generate-a-rails-app-from-the-main-branch.md
│   ├── generating-and-executing-sql.md
│   ├── get-a-quick-approximate-count-of-a-large-table.md
│   ├── get-active-record-attribute-directly-from-database.md
│   ├── get-an-array-of-values-from-the-database.md
│   ├── get-an-empty-activerecord-relation.md
│   ├── get-formatted-utc-offset-value.md
│   ├── get-help-with-a-rails-app-update.md
│   ├── get-the-column-names-for-a-model.md
│   ├── get-the-current-time.md
│   ├── grab-a-random-record-from-the-database.md
│   ├── handle-named-arguments-in-a-rake-task.md
│   ├── hash-slicing.md
│   ├── ignore-poltergeist-javascript-errors.md
│   ├── include-devise-helpers-in-your-controller-tests.md
│   ├── inspect-configuration-of-database-connection.md
│   ├── inspect-previous-changes-to-activerecord-object.md
│   ├── link-to-the-current-page-with-query-params.md
│   ├── list-all-installable-rails-versions.md
│   ├── list-the-enqueued-jobs.md
│   ├── load-a-file-when-starting-rails-console.md
│   ├── load-records-in-batches-with-find-each.md
│   ├── log-sql-queries-executed-by-activerecord.md
│   ├── look-up-time-zone-info-for-identifier.md
│   ├── make-a-string-attribute-easy-to-inquire-about.md
│   ├── make-action-mailer-synchronous-in-test.md
│   ├── make-remove-column-migration-reversible.md
│   ├── manage-timestamps-with-upsert.md
│   ├── manually-run-a-migration-from-rails-console.md
│   ├── mark-a-migration-as-irreversible.md
│   ├── mark-for-destruction.md
│   ├── mask-an-activerecord-attribute.md
│   ├── merge-a-scope-into-an-activerecord-query.md
│   ├── migrating-up-down-up.md
│   ├── mock-rails-environment-with-an-inquiry-instance.md
│   ├── order-matters-for-rescue-from-blocks.md
│   ├── override-text-displayed-by-form-label.md
│   ├── parameterize-a-string-with-underscores.md
│   ├── params-includes-submission-button-info.md
│   ├── params-is-a-hash-with-indifferent-access.md
│   ├── parse-query-params-from-a-url.md
│   ├── parse-request-params-in-rack-attack-block.md
│   ├── perform-sql-explain-with-activerecord.md
│   ├── polymorphic-path-helpers.md
│   ├── prefer-select-all-over-execute-for-read-queries.md
│   ├── pretend-generations.md
│   ├── prevent-mailer-previews-from-cluttering-database.md
│   ├── prevent-writes-with-a-sandboxed-rails-console.md
│   ├── provide-fake-form-helper-to-controllers.md
│   ├── query-a-single-value-from-the-database.md
│   ├── read-in-environment-specific-config-values.md
│   ├── read-only-models.md
│   ├── rebuild-tailwind-bundle-for-dev-server.md
│   ├── remove-a-database-column-from-a-table.md
│   ├── remove-the-default-value-on-a-column.md
│   ├── render-an-alternative-action-mailer-template.md
│   ├── render-the-response-body-in-controller-specs.md
│   ├── replace-an-index-with-a-unique-index.md
│   ├── rescue-from-with-a-separate-method.md
│   ├── rescue-from.md
│   ├── respond-with-json-regardless-of-content-type.md
│   ├── restart-puma-server-by-touching-restart-file.md
│   ├── retrieve-an-object-if-it-exists.md
│   ├── rollback-a-couple-migrations.md
│   ├── rollback-a-specific-migration-out-of-order.md
│   ├── rounding-numbers-with-precision.md
│   ├── run-a-rake-task-programmatically.md
│   ├── run-commands-with-specific-rails-version.md
│   ├── run-dev-processes-with-overmind-instead-of-foreman.md
│   ├── run-rails-console-with-remote-dokku-app.md
│   ├── run-some-code-whenever-rails-console-starts.md
│   ├── scaffold-auth-functionality-with-rails-8-generator.md
│   ├── schedule-sidekiq-jobs-out-into-the-future.md
│   ├── scope-records-to-a-lower-or-upper-bound.md
│   ├── secure-passwords-with-rails-and-bcrypt.md
│   ├── select-a-select-by-selector.md
│   ├── select-a-specific-rails-version-to-install.md
│   ├── select-value-for-sql-counts.md
│   ├── serialize-with-fast-jsonapi-in-a-rails-app.md
│   ├── set-a-timestamp-field-to-the-current-time.md
│   ├── set-datetime-to-include-time-zone-in-migrations.md
│   ├── set-default-as-sql-function-in-migration.md
│   ├── set-default-url-options-for-entire-application.md
│   ├── set-meta-tags-in-erb-views.md
│   ├── set-schema-search-path.md
│   ├── set-statement-timeout-for-all-postgres-connections.md
│   ├── set-the-default-development-port.md
│   ├── show-pending-migrations.md
│   ├── show-rails-models-with-pry.md
│   ├── show-rails-routes-with-pry.md
│   ├── skip-validations-when-creating-a-record.md
│   ├── specify-new-attributes-for-find-or-create-by.md
│   ├── temporarily-disable-strong-params.md
│   ├── temporarily-turn-off-pending-migrations-error.md
│   ├── test-for-a-subset-of-attributes-on-a-model.md
│   ├── test-if-an-instance-variable-was-assigned.md
│   ├── test-if-deliver-later-is-called-for-a-mailer.md
│   ├── test-out-url-and-path-helpers-in-the-console.md
│   ├── truncate-almost-all-tables.md
│   ├── update-column-versus-update-attribute.md
│   ├── upgrading-your-manifest-for-sprockets-4.md
│   ├── use-irb-and-ruby-flags-with-rails-console.md
│   ├── use-ruby-extension-for-template-file.md
│   ├── useful-active-support-constants-for-durations.md
│   ├── validate-column-data-with-check-constraints.md
│   ├── verify-and-read-a-signed-cookie-value.md
│   ├── where-am-i-in-the-partial-iteration.md
│   ├── why-redirect-and-return-in-controllers.md
│   ├── wipe-out-all-precompiled-assets.md
│   ├── write-reversible-migration-to-set-default.md
│   └── write-safer-where-clauses-with-placeholders.md
├── react/
│   ├── a-component-is-just-a-bag-of-data.md
│   ├── access-the-latest-lifecycle-methods-in-an-old-app.md
│   ├── accessing-env-vars-in-create-react-app.md
│   ├── accessing-location-within-reach-router.md
│   ├── allow-md-as-an-extension-with-gatsby-mdx.md
│   ├── alter-the-display-name-of-a-component.md
│   ├── building-a-react-app-in-the-browser.md
│   ├── check-the-type-of-a-child-component.md
│   ├── conditionally-including-event-handler-functions.md
│   ├── create-a-snowpack-bundled-react-app.md
│   ├── create-dynamically-named-custom-react-components.md
│   ├── create-react-app-comes-with-lodash.md
│   ├── create-react-app-has-a-default-test-setup-file.md
│   ├── css-important-is-not-supported-by-inline-styles.md
│   ├── debug-jest-tests-in-create-react-app.md
│   ├── defining-state-in-a-simple-class-component.md
│   ├── destructure-variables-as-props-to-a-component.md
│   ├── details-tags-are-a-controllable-component.md
│   ├── dispatch-anywhere-with-redux.md
│   ├── dynamically-add-props-to-a-child-component.md
│   ├── dynamically-create-html-elements.md
│   ├── enforce-specific-values-with-proptypes.md
│   ├── focus-an-input-with-useref-hook.md
│   ├── force-a-component-to-only-have-one-child.md
│   ├── forcing-a-child-remount-with-the-key-prop.md
│   ├── formik-connected-components.md
│   ├── formiks-validation-schema-as-a-function.md
│   ├── inactive-and-active-component-styles-with-radium.md
│   ├── inline-style-attributes-should-be-camel-cased.md
│   ├── manage-state-in-a-functional-component.md
│   ├── mapping-over-one-or-many-children.md
│   ├── mock-a-function-that-a-component-imports.md
│   ├── navigate-with-state-via-reach-router.md
│   ├── pairing-a-callback-with-a-usestate-hook.md
│   ├── pass-a-function-to-a-usestate-updater.md
│   ├── passing-props-down-to-react-router-route.md
│   ├── prevent-reach-router-redirect-error-screen-in-dev.md
│   ├── proxy-to-an-api-server-in-development-with-cra.md
│   ├── quickly-search-for-a-component-with-react-devtools.md
│   ├── reach-router-renders-to-a-div.md
│   ├── read-only-input-elements.md
│   ├── rendering-multiple-nodes-with-fragments.md
│   ├── set-the-type-for-a-usestate-hook.md
│   ├── specifying-dependencies-of-a-useeffect-hook.md
│   ├── spelunking-through-components-with-enzymes-dive.md
│   ├── sync-your-react-router-state-with-redux.md
│   ├── test-files-in-create-react-app.md
│   ├── test-that-element-does-not-render-in-the-component.md
│   ├── trigger-effect-only-when-the-component-mounts.md
│   ├── update-formik-initial-values-when-props-change.md
│   ├── upgrading-to-the-latest-react-in-codesandbox.md
│   ├── use-a-ref-to-autofocus-an-input.md
│   ├── use-react-16-with-gatsby.md
│   ├── use-withrouter-to-pass-down-react-router-history.md
│   ├── visually-select-a-react-element-for-inspection.md
│   ├── who-is-your-favorite-child.md
│   └── wrap-the-root-of-a-gatsby-app-in-a-component.md
├── react-testing-library/
│   ├── check-that-a-component-renders-as-null.md
│   ├── find-by-queries-have-async-built-in.md
│   ├── pretty-print-some-dom-to-debug-a-test.md
│   └── test-a-component-that-uses-react-portals.md
├── react_native/
│   └── avoid-the-notch-with-safeareaview.md
├── reason/
│   ├── break-out-of-a-while-loop.md
│   ├── compile-reason-to-native-with-dune.md
│   ├── compile-reason-with-an-ocaml-package-using-dune.md
│   ├── create-a-map-of-strings.md
│   ├── create-a-stream-from-an-array.md
│   ├── creating-a-2d-array.md
│   ├── data-structures-with-self-referential-types.md
│   ├── defining-variants-with-constructor-arguments.md
│   ├── dynamically-create-a-printf-string-format.md
│   ├── exhaustive-pattern-matching-of-list-variants.md
│   ├── format-the-current-file-within-vim.md
│   ├── generate-a-native-reasonml-project-with-pesy.md
│   ├── generate-starter-reason-projects.md
│   ├── helping-the-compiler-help-us-with-variants.md
│   ├── inline-component-styles-with-reason-react.md
│   ├── is-this-a-directory-or-a-file.md
│   ├── making-things-mutable.md
│   ├── modifying-a-string-with-blit-string.md
│   ├── multi-argument-functions-as-syntactic-sugar.md
│   ├── pattern-match-on-exceptions.md
│   ├── quickly-bootstrap-a-react-app-using-reason.md
│   ├── seeding-and-generating-random-integers.md
│   ├── stream-a-file-line-by-line.md
│   ├── string-interpolation-with-integers-and-sprintf.md
│   ├── string-interpolation-with-quoted-strings.md
│   ├── trying-out-reasonml-in-codesandbox.md
│   ├── two-ways-to-find-an-item-in-a-list.md
│   ├── using-optional-labeled-function-arguments.md
│   └── wrapping-a-component-for-use-in-javascript.md
├── remix/
│   ├── get-query-params-from-the-request-url.md
│   ├── markdown-and-mdx-files-are-rendered-to-routes.md
│   ├── relative-and-absolute-paths-in-links.md
│   ├── run-the-development-server-from-another-port.md
│   └── set-the-title-of-a-page.md
├── rspec/
│   ├── avoid-accidentally-disabling-pry.md
│   ├── check-specific-arguments-to-received-method.md
│   ├── configure-tests-to-run-in-random-order.md
│   ├── find-minimal-set-of-tests-causing-a-flicker.md
│   ├── format-test-results-as-a-json-file.md
│   ├── run-tests-with-documentation-formatting.md
│   └── use-specific-cache-store-in-a-single-test.md
├── ruby/
│   ├── a-basic-case-statement.md
│   ├── a-shorthand-for-rerunning-failed-tests-with-rspec.md
│   ├── add-comments-to-regex-with-free-spacing.md
│   ├── add-linux-as-a-bundler-platform.md
│   ├── add-progress-reporting-to-long-running-script.md
│   ├── are-they-all-true.md
│   ├── assert-about-an-objects-attributes-with-rspec.md
│   ├── assoc-for-hashes.md
│   ├── audit-your-ruby-project-for-any-cves.md
│   ├── avoid-double-negation-with-minitest-refute.md
│   ├── block-comments.md
│   ├── block-syntaxes-have-different-precedence.md
│   ├── build-http-and-https-urls.md
│   ├── chaining-multiple-rspec-change-matchers.md
│   ├── check-for-any-overlaps-in-list-of-ranges.md
│   ├── check-if-a-url-resolves-to-200.md
│   ├── check-if-an-object-includes-a-module.md
│   ├── check-return-status-of-running-a-shell-command.md
│   ├── clamp-to-an-endless-range.md
│   ├── click-on-text-with-capybara.md
│   ├── colorful-output-with-minitest.md
│   ├── comparing-arrays-in-rspec.md
│   ├── comparing-class-hierarchy-relationships.md
│   ├── construct-a-constant-from-a-string.md
│   ├── convert-a-unix-epoch-timestamp-to-a-time-object.md
│   ├── create-a-csv-table-object.md
│   ├── create-a-hash-from-an-array-of-arrays.md
│   ├── create-a-module-of-utility-functions.md
│   ├── create-an-array-of-stringed-numbers.md
│   ├── create-listing-of-all-middleman-pages.md
│   ├── create-mock-class-that-can-be-overridden.md
│   ├── create-named-structs-with-struct-new.md
│   ├── create-thumbnail-image-for-a-pdf.md
│   ├── decompose-unicode-character-with-diacritic-mark.md
│   ├── defaulting-to-frozen-string-literals.md
│   ├── define-a-custom-rspec-matcher.md
│   ├── define-a-method-on-a-struct.md
│   ├── define-multiline-strings-with-heredocs.md
│   ├── destructure-the-first-item-from-an-array.md
│   ├── destructuring-arrays-in-blocks.md
│   ├── disable-interpolation-for-a-heredoc-string.md
│   ├── disassemble-some-codes.md
│   ├── double-splat-to-merge-hashes.md
│   ├── edit-previous-parts-of-the-pry-buffer-history.md
│   ├── editing-code-in-pry.md
│   ├── encode-a-string-as-url-safe-base64.md
│   ├── enumerate-a-pairing-of-every-two-sequential-items.md
│   ├── evaluating-one-off-commands.md
│   ├── exclude-values-from-an-array.md
│   ├── execute-several-commands-with-backtick-heredoc.md
│   ├── exit-a-process-with-an-error-message.md
│   ├── expect-a-method-to-be-called-and-actually-call-it.md
│   ├── extract-a-column-of-data-from-a-csv-file.md
│   ├── extract-capture-group-matches-with-string-slices.md
│   ├── factory-girl-sequences.md
│   ├── fail.md
│   ├── fetch-warns-about-superseding-block-argument.md
│   ├── filter-by-type.md
│   ├── find-the-min-and-max-with-a-single-call.md
│   ├── finding-the-source-of-ruby-methods.md
│   ├── format-a-hash-into-a-string-template.md
│   ├── forward-all-arguments-to-another-method.md
│   ├── gather-positional-arguments-in-method-definition.md
│   ├── generate-a-signed-jwt-token.md
│   ├── generate-ruby-version-and-gemset-files-with-rvm.md
│   ├── get-info-about-your-ruby-gems-environment.md
│   ├── get-specific-values-from-hashes-and-arrays.md
│   ├── get-the-names-of-the-month.md
│   ├── get-the-output-of-running-a-system-program.md
│   ├── get-utc-offset-for-different-time-zones.md
│   ├── identify-outdated-gems.md
│   ├── if-you-detect-none.md
│   ├── include-extra-context-in-a-honeybadger-notify.md
│   ├── ins-and-outs-of-pry.md
│   ├── install-and-require-gems-inline-without-gemfile.md
│   ├── install-latest-version-of-ruby-with-asdf.md
│   ├── invoking-rake-tasks-multiple-times.md
│   ├── irb-has-built-in-benchmarking-with-ruby-3.md
│   ├── iterate-with-an-offset-index.md
│   ├── join-uri-path-parts.md
│   ├── jump-out-of-a-nested-context-with-throw-catch.md
│   ├── last-raised-exception-in-the-call-stack.md
│   ├── limit-split.md
│   ├── list-the-running-ruby-version.md
│   ├── listing-local-variables.md
│   ├── load-a-module-and-execute-a-statement.md
│   ├── make-a-long-string-of-text-readable.md
│   ├── make-an-executable-ruby-script.md
│   ├── make-structs-easier-to-use-with-keyword-initialization.md
│   ├── map-with-index-over-an-array.md
│   ├── mock-method-chain-calls-with-rspec.md
│   ├── mocking-requests-with-partial-uris-using-regex.md
│   ├── multi-line-comments.md
│   ├── named-regex-captures-are-assigned-to-variables.md
│   ├── navigate-back-in-the-browser-with-capybara.md
│   ├── next-and-previous-floats.md
│   ├── open-struct-has-bad-performance-characteristics.md
│   ├── or-operator-precedence.md
│   ├── output-bytecode-for-a-ruby-program.md
│   ├── override-the-initial-sequence-value.md
│   ├── parallel-bundle-install.md
│   ├── parse-json-into-an-open-struct.md
│   ├── parsing-a-csv-with-quotes-in-the-data.md
│   ├── pass-a-block-to-count.md
│   ├── passing-arbitrary-methods-as-blocks.md
│   ├── passing-arguments-to-a-rake-task.md
│   ├── pattern-match-values-from-a-hash.md
│   ├── percent-notation.md
│   ├── precedence-of-logical-operators.md
│   ├── prevent-erb-lint-from-removing-opening-tags.md
│   ├── print-data-to-formatted-table.md
│   ├── question-mark-operator.md
│   ├── rake-only-lists-tasks-with-descriptions.md
│   ├── read-the-first-line-from-a-file.md
│   ├── refer-to-implicit-block-argument-with-it.md
│   ├── reference-hash-key-with-safe-navigation.md
│   ├── regenerate-lock-file-with-newer-bundler.md
│   ├── rendering-erb.md
│   ├── replace-the-current-process-with-an-external-command.md
│   ├── require-entire-gemfile-in-pry-session.md
│   ├── rerun-only-failures-with-rspec.md
│   ├── retry-a-block-after-an-exception.md
│   ├── return-the-thing-being-printed.md
│   ├── returning-with-sequel.md
│   ├── rexml-is-a-bundled-gem-as-of-ruby-3-0-0.md
│   ├── run-an-older-version-of-bundler.md
│   ├── running-a-single-minitest-example.md
│   ├── safe-navigation-operator.md
│   ├── scripting-with-rvm.md
│   ├── scroll-to-top-of-page-with-capybara.md
│   ├── search-for-gem-versions-available-to-install.md
│   ├── set-default-tasks-for-rake-to-run.md
│   ├── set-rvm-default-ruby.md
│   ├── shift-the-month-on-a-date-object.md
│   ├── show-public-methods-with-pry.md
│   ├── show-the-bundler-location-of-an-installed-gem.md
│   ├── silence-the-output-of-a-ruby-statement-in-pry.md
│   ├── single-and-double-quoted-string-notation.md
│   ├── skip-specific-cves-when-auditing-your-bundle.md
│   ├── skip-the-front-of-an-array-with-drop.md
│   ├── specify-default-for-data-definition.md
│   ├── specify-dependencies-for-a-rake-task.md
│   ├── specify-how-random-array-sample-is.md
│   ├── split-a-float-into-its-integer-and-decimal.md
│   ├── squeeze-out-the-extra-space.md
│   ├── stack-heredocs-in-a-method-call.md
│   ├── string-interpolation-with-instance-variables.md
│   ├── summing-collections.md
│   ├── triple-equals-the-case-equality-operator.md
│   ├── turn-key-and-values-arrays-into-a-hash.md
│   ├── turning-any-class-into-an-enumerator.md
│   ├── turning-things-into-hashes.md
│   ├── uncaught-exceptions-in-pry.md
│   ├── undef-method-and-the-inheritance-hierarchy.md
│   ├── uninstall-specific-version-of-a-ruby-gem.md
│   ├── unpacking-strings-into-binary.md
│   ├── up-and-down-with-integers.md
│   ├── update-the-gemfile-bundled-with-version.md
│   ├── use-a-case-statement-as-a-cond-statement.md
│   ├── use-dotenv-in-a-non-rails-project.md
│   ├── use-tap-for-better-test-data-setup.md
│   ├── using-bcrypt-to-create-and-check-hashed-passwords.md
│   ├── what-to-do-when-you-dont-rescue.md
│   ├── who-are-my-ancestors.md
│   ├── wrap-things-in-an-array-even-hashes.md
│   └── zero-padding.md
├── sed/
│   ├── apply-multiple-substitutions-to-the-input.md
│   ├── equivalence-classes-of-repetition-metachars.md
│   ├── extract-value-from-command-output-with-sed.md
│   ├── grab-all-the-method-names-defined-in-a-ruby-file.md
│   ├── grab-the-first-line-of-a-file.md
│   ├── osx-sed-does-regex-a-bit-different.md
│   ├── output-only-lines-involved-in-a-substitution.md
│   ├── reference-a-capture-in-the-regex.md
│   ├── reference-the-full-match-in-the-replacement.md
│   └── use-an-alternative-delimiter-in-a-substitution.md
├── shell/
│   ├── check-if-the-first-argument-is-given.md
│   └── format-and-print-the-current-date-and-time.md
├── sqlite/
│   ├── display-results-in-readable-column-format.md
│   └── explore-the-database-schema.md
├── streaming/
│   └── monitor-an-audio-input-device-in-obs.md
├── tailwind/
│   ├── apply-tailwind-classes-to-existing-css-class.md
│   ├── base-styles-for-text-link.md
│   ├── disable-and-enable-a-button.md
│   ├── specify-paths-for-purging-unused-css.md
│   └── use-tailwind-typography-prose-in-dark-mode.md
├── taskfile/
│   ├── create-interactive-picker-for-set-of-subtasks.md
│   └── run-a-task-if-it-meets-criteria.md
├── tmux/
│   ├── access-past-copy-buffer-history.md
│   ├── add-bindings-to-split-panes-to-current-directory.md
│   ├── adjusting-window-pane-size.md
│   ├── break-current-pane-out-to-separate-window.md
│   ├── change-base-directory-of-existing-session.md
│   ├── change-base-directory-without-detaching.md
│   ├── change-the-default-prefix-key.md
│   ├── create-a-named-tmux-session.md
│   ├── create-a-new-session-in-a-new-server.md
│   ├── cycle-through-layouts.md
│   ├── display-titles-for-each-pane-in-a-window.md
│   ├── enabling-vi-mode.md
│   ├── get-mouse-copy-paste-working-in-kitty.md
│   ├── hiding-the-status-bar.md
│   ├── jumping-between-sessions.md
│   ├── kill-all-your-tmux-sessions.md
│   ├── kill-other-connections-to-a-session.md
│   ├── kill-the-current-session.md
│   ├── list-all-key-bindings.md
│   ├── list-processes-running-across-all-sessions.md
│   ├── list-sessions.md
│   ├── open-new-splits-to-the-current-directory.md
│   ├── open-new-window-with-a-specific-directory.md
│   ├── organizing-windows.md
│   ├── paging-up-and-down.md
│   ├── pane-killer.md
│   ├── reclaiming-the-entire-window.md
│   ├── remove-the-delay-on-the-escape-key.md
│   ├── rename-the-current-session.md
│   ├── reset-an-option-back-to-its-default-value.md
│   ├── set-environment-variables-when-creating-session.md
│   ├── set-session-specific-environment-variables.md
│   ├── set-up-forwarding-prefix-for-nested-session.md
│   ├── show-the-current-value-for-an-option.md
│   ├── swap-split-panes.md
│   ├── switch-to-a-specific-session-and-window.md
│   ├── tmux-in-your-tmux.md
│   └── toggle-between-two-common-sessions.md
├── typescript/
│   ├── add-generic-typing-to-an-anonymous-function.md
│   ├── add-types-to-an-object-destructuring.md
│   ├── compiler-checks-for-unused-params-and-variables.md
│   ├── create-a-non-empty-array-type.md
│   ├── create-a-union-type-from-an-array.md
│   ├── create-union-type-from-constants.md
│   ├── extract-object-type-keys-into-a-union-type.md
│   ├── extract-object-type-values-into-a-union-type.md
│   ├── generate-an-initial-tsconfig-file.md
│   ├── generate-inferred-type-from-zod-schema.md
│   ├── get-the-return-type-of-an-async-function.md
│   ├── ignore-all-errors-in-a-typescript-file.md
│   ├── interfaces-with-the-same-name-are-merged.md
│   ├── narrow-the-type-of-an-array-to-its-values.md
│   ├── re-export-an-imported-type.md
│   ├── set-path-alias-for-cleaner-imports.md
│   ├── type-narrowing-with-const-vs-let-strings.md
│   ├── type-narrowing-with-similarly-shaped-objects.md
│   ├── type-promise-results-with-the-awaited-type.md
│   ├── use-an-array-check-for-type-narrowing.md
│   └── zero-config-environments-for-trying-out-types.md
├── unix/
│   ├── all-the-environment-variables.md
│   ├── apply-successive-filters-to-lines-in-less.md
│   ├── authorize-a-curl-request.md
│   ├── cat-a-file-with-line-numbers.md
│   ├── cat-files-with-color-using-bat.md
│   ├── change-default-shell-for-a-user.md
│   ├── change-to-that-new-directory.md
│   ├── check-connected-stripe-account-name.md
│   ├── check-if-a-port-is-in-use.md
│   ├── check-if-command-is-executable-before-using.md
│   ├── check-ssh-key-fingerprints-of-known-hosts.md
│   ├── check-the-current-working-directory.md
│   ├── check-the-installed-openssl-version.md
│   ├── clear-the-screen.md
│   ├── combine-all-my-tils-into-a-single-file.md
│   ├── command-line-length-limitations.md
│   ├── compare-two-variables-in-a-bash-script.md
│   ├── configure-cd-to-behave-like-pushd-in-zsh.md
│   ├── convert-jpeg-to-png-with-ffmpeg.md
│   ├── convert-svg-to-favicon.md
│   ├── copying-file-contents-to-system-paste-buffer.md
│   ├── copying-nested-directories-with-ditto.md
│   ├── count-the-lines-in-a-csv-where-a-column-is-empty.md
│   ├── count-the-number-of-matches-in-a-grep.md
│   ├── count-the-number-of-ripgrep-pattern-matches.md
│   ├── count-the-number-of-words-on-a-webpage.md
│   ├── create-a-file-descriptor-with-process-substitution.md
│   ├── create-a-filename-with-the-current-date.md
│   ├── create-a-sequence-of-values-with-a-step.md
│   ├── curl-with-cookies.md
│   ├── curling-for-headers.md
│   ├── curling-with-basic-auth-credentials.md
│   ├── determine-ipv4-and-ipv6-public-ip-addresses.md
│   ├── diff-two-files-in-unified-format.md
│   ├── different-ways-to-generate-a-v4-uuid.md
│   ├── display-all-the-terminal-colors.md
│   ├── display-free-disk-space.md
│   ├── display-line-numbers-while-using-less.md
│   ├── display-the-contents-of-a-directory-as-a-tree.md
│   ├── do-a-dry-run-of-an-rsync.md
│   ├── do-not-overwrite-existing-files.md
│   ├── download-a-file-with-curl.md
│   ├── enable-multi-select-of-results-with-fzf.md
│   ├── exclude-a-command-from-the-zsh-history-file.md
│   ├── exclude-a-directory-with-find.md
│   ├── exclude-a-specific-file-from-fd-results.md
│   ├── exclude-certain-files-from-an-rsync-run.md
│   ├── figure-out-the-week-of-the-year-from-the-terminal.md
│   ├── file-type-info-with-file.md
│   ├── find-a-file-installed-by-brew.md
│   ├── find-all-files-matching-a-name-with-fd.md
│   ├── find-all-files-with-a-specific-extension-with-fd.md
│   ├── find-all-tool-version-files-containing-postgres.md
│   ├── find-and-copy-a-value-from-large-json-output.md
│   ├── find-any-dotfiles-that-modify-path-env-var.md
│   ├── find-duplicate-lines-in-a-file.md
│   ├── find-files-with-fd.md
│   ├── find-newer-files.md
│   ├── find-occurrences-of-multiple-values-with-ripgrep.md
│   ├── find-top-level-directories-matching-a-pattern.md
│   ├── fix-previous-command-with-fc.md
│   ├── fix-shim-path-after-asdf-upgrade.md
│   ├── fix-unlinked-node-binaries-with-asdf.md
│   ├── format-and-display-small-amounts-of-columnar-data.md
│   ├── forward-multiple-ports-over-ssh.md
│   ├── generate-a-saml-key-and-certificate-pair.md
│   ├── generate-a-sequence-of-numbered-items.md
│   ├── generate-base64-encoding-without-newlines.md
│   ├── generate-random-20-character-hex-string.md
│   ├── get-a-list-of-locales-on-your-system.md
│   ├── get-matching-filenames-as-output-from-grep.md
│   ├── get-the-sha256-hash-for-a-file.md
│   ├── get-the-unix-timestamp.md
│   ├── get-word-count-for-all-files-in-git-repo.md
│   ├── global-substitution-on-the-previous-command.md
│   ├── globbing-for-all-directories-in-zsh.md
│   ├── globbing-for-filenames-in-zsh.md
│   ├── gracefully-exit-a-script-with-trap.md
│   ├── grep-for-files-with-multiple-matches.md
│   ├── grep-for-files-without-a-match.md
│   ├── grep-for-multiple-patterns.md
│   ├── have-script-shellcheck-itself-when-executing.md
│   ├── hexdump-a-compiled-file.md
│   ├── ignore-a-directory-during-ripgrep-search.md
│   ├── ignore-the-alias-when-running-a-command.md
│   ├── include-ignore-files-in-ripgrep-search.md
│   ├── inspect-exif-data-for-an-image-file.md
│   ├── interactively-browse-availabile-node-versions.md
│   ├── interactively-switch-asdf-package-versions.md
│   ├── interpret-cron-schedule-from-the-cli.md
│   ├── jump-to-the-ends-of-your-shell-history.md
│   ├── kill-everything-running-on-a-certain-port.md
│   ├── killing-a-frozen-ssh-session.md
│   ├── last-argument-of-the-last-command.md
│   ├── less-with-style.md
│   ├── limit-protocols-used-in-a-curl-command.md
│   ├── list-all-fonts-on-your-machine.md
│   ├── list-all-the-enabled-zsh-options.md
│   ├── list-all-users.md
│   ├── list-files-in-a-single-column.md
│   ├── list-files-ordered-by-modification-date.md
│   ├── list-names-of-files-with-matches.md
│   ├── list-of-sessions-to-a-machine.md
│   ├── list-parent-pid-with-ps.md
│   ├── list-stats-for-a-file.md
│   ├── list-the-available-jdks.md
│   ├── list-the-pid-and-name-of-current-shell-process.md
│   ├── list-the-stack-of-remembered-directories.md
│   ├── list-txt-dns-records-for-a-domain.md
│   ├── load-env-vars-in-bash-script.md
│   ├── look-through-all-files-that-have-been-git-stashed.md
│   ├── make-direnv-less-noisy.md
│   ├── make-neovim-the-default-way-to-view-man-pages.md
│   ├── manually-pass-two-git-files-to-delta.md
│   ├── map-a-domain-to-localhost.md
│   ├── negative-look-ahead-search-with-ripgrep.md
│   ├── occupy-a-local-port-with-netcat.md
│   ├── only-show-the-matches.md
│   ├── open-the-current-command-in-an-editor.md
│   ├── output-the-last-n-bytes-of-a-large-file.md
│   ├── partial-string-matching-in-bash-scripts.md
│   ├── pid-of-the-current-shell.md
│   ├── print-a-range-of-lines-for-a-file-with-bat.md
│   ├── print-datetime-represented-by-unix-timestamp.md
│   ├── print-milliseconds-in-human-readable-format.md
│   ├── print-out-files-in-reverse.md
│   ├── print-the-current-date-in-human-readable-format.md
│   ├── produce-a-lowercase-v4-uuid.md
│   ├── provide-a-fallback-value-for-unset-parameter.md
│   ├── remove-a-directory-called-dash-p.md
│   ├── rename-a-bunch-of-files-by-constructing-mv-commands.md
│   ├── repeat-yourself.md
│   ├── replace-pattern-across-many-files-in-a-project.md
│   ├── run-a-command-repeatedly-several-times.md
│   ├── run-a-curl-command-without-the-progress-meter.md
│   ├── safely-edit-the-sudoers-file-with-vim.md
│   ├── saying-yes.md
│   ├── search-files-specific-to-a-language.md
│   ├── search-for-homebrew-packages-to-install.md
│   ├── search-history.md
│   ├── search-man-page-descriptions.md
│   ├── securely-remove-files.md
│   ├── see-where-asdf-gets-current-tool-version.md
│   ├── set-the-asdf-package-version-for-a-single-shell.md
│   ├── shorten-ssh-commands-with-aliases.md
│   ├── show-a-file-preview-when-searching-with-fzf.md
│   ├── show-disk-usage-for-the-current-directory.md
│   ├── show-the-size-of-everything-in-a-directory.md
│   ├── show-tree-view-of-processes-and-subprocesses.md
│   ├── skip-paging-if-output-fits-on-screen-with-less.md
│   ├── sort-in-numerical-order.md
│   ├── specify-the-language-for-a-file-with-bat.md
│   ├── ssh-escape-sequences.md
│   ├── ssh-with-a-specific-key.md
│   ├── ssh-with-port-forwarding.md
│   ├── switch-versions-of-a-brew-formula.md
│   ├── tell-direnv-to-load-the-env-file.md
│   ├── touch-access-and-modify-times-individually.md
│   ├── transform-text-to-lowercase.md
│   ├── type-fewer-paths-with-brace-expansion.md
│   ├── undo-changes-made-to-current-terminal-prompt.md
│   ├── undo-some-command-line-editing.md
│   ├── unrestrict-where-ripgrep-searches.md
│   ├── update-package-versions-known-by-asdf-plugin.md
│   ├── use-fzf-to-change-directories.md
│   ├── use-negative-lookbehind-matching-with-ripgrep.md
│   ├── use-regex-pattern-matching-with-grep.md
│   ├── view-a-web-page-in-the-terminal.md
│   ├── view-the-source-for-a-brew-formula.md
│   ├── watch-the-difference.md
│   ├── watch-this-run-repeatedly.md
│   ├── where-are-the-binaries.md
│   ├── xargs-default-command-is-echo.md
│   └── xargs-ignores-alias-substitution-by-default.md
├── vercel/
│   ├── add-web-server-layer-redirects.md
│   ├── deploy-an-app-without-pushing-an-empty-commit.md
│   ├── naming-of-the-vercel-config-file.md
│   ├── pin-specific-pnpm-version-for-builds.md
│   └── share-development-environment-variables-via-cli.md
├── vim/
│   ├── aborting-git-commits-and-rebases.md
│   ├── absolute-and-relative-line-numbers.md
│   ├── add-a-file-without-loading-it.md
│   ├── add-custom-dictionary-words.md
│   ├── all-the-ways-to-write-and-quit-in-vim.md
│   ├── almost-the-end-of-the-line.md
│   ├── alternate-files-with-vim-rails.md
│   ├── always-keep-the-gutter-open.md
│   ├── amend-commits-with-fugitive.md
│   ├── backspace-options.md
│   ├── beginning-and-end-of-previous-change.md
│   ├── blank-lines-above-and-below.md
│   ├── breaking-the-undo-sequence.md
│   ├── buffer-time-travel.md
│   ├── build-and-install-a-go-program.md
│   ├── bypass-on-save-tooling-when-writing-file.md
│   ├── case-aware-substitution-with-vim-abolish.md
│   ├── case-insensitive-substitution.md
│   ├── center-the-cursor.md
│   ├── check-for-an-executable.md
│   ├── check-your-current-color-scheme.md
│   ├── clear-out-the-jump-list.md
│   ├── close-all-other-splits.md
│   ├── close-all-other-windows.md
│   ├── close-the-current-buffer.md
│   ├── coerce-the-current-filetype.md
│   ├── coercing-casing-with-vim-abolish.md
│   ├── configure-fzf-to-use-fd-for-file-finding.md
│   ├── count-the-number-of-matches.md
│   ├── create-a-new-directory-in-netrw.md
│   ├── create-a-new-file-in-a-new-directory.md
│   ├── creating-non-existent-directories.md
│   ├── default-netrw-to-tree-liststyle.md
│   ├── delete-every-other-line.md
│   ├── delete-lines-that-match-a-pattern.md
│   ├── delete-to-the-end-of-the-line.md
│   ├── deleting-buffers-in-bufexplorer.md
│   ├── deleting-directories-of-files-from-netrw.md
│   ├── detect-if-you-are-on-a-mac.md
│   ├── difference-between-wq-and-x.md
│   ├── display-word-count-stats.md
│   ├── edges-of-the-selection.md
│   ├── edit-a-file-at-a-specific-line-number.md
│   ├── edit-a-file-starting-on-the-last-line.md
│   ├── end-of-the-word.md
│   ├── escaping-terminal-mode-in-an-nvim-terminal.md
│   ├── filter-lines-through-an-external-program.md
│   ├── find-the-nth-character-position-in-a-file.md
│   ├── fix-the-spelling-of-a-word.md
│   ├── fold-a-visual-selection-and-expand-it-back.md
│   ├── for-when-that-escape-key-is-hard-to-reach.md
│   ├── format-long-lines-to-text-width.md
│   ├── from-ruby-variables-to-javascript-variables.md
│   ├── generate-and-edit-rails-migration.md
│   ├── get-the-pid-of-the-session.md
│   ├── go-back-to-the-previous-window.md
│   ├── go-to-beginning-and-end-of-line.md
│   ├── go-to-file-with-line-number.md
│   ├── grepping-through-the-vim-help-files.md
│   ├── head-of-file-name.md
│   ├── help-for-non-normal-mode-features.md
│   ├── highlighting-search-matches.md
│   ├── horizontal-to-vertical-and-back-again.md
│   ├── increment-all-the-numbers.md
│   ├── incremental-searching.md
│   ├── interact-with-the-alternate-file.md
│   ├── interactive-buffer-list.md
│   ├── joining-lines-together.md
│   ├── jump-back-to-the-latest-jump-position.md
│   ├── jump-between-and-stage-git-hunks-with-fugitive.md
│   ├── jump-to-matching-pair.md
│   ├── jump-to-the-next-misspelling.md
│   ├── list-all-buffers.md
│   ├── list-autocmds-configured-for-the-current-buffer.md
│   ├── list-of-plugins.md
│   ├── load-a-directory-of-files-into-the-buffer-list.md
│   ├── make-directories-for-the-current-file.md
│   ├── marks-across-vim-sessions.md
│   ├── match-the-beginning-and-end-of-words.md
│   ├── moving-to-a-specific-line.md
│   ├── navigate-to-the-nth-column-on-a-line.md
│   ├── navigating-by-blank-lines.md
│   ├── netrw-listing-styles.md
│   ├── next-modified-buffer.md
│   ├── normal-mode-binding-to-just-quit.md
│   ├── open-a-tag-in-a-split-window.md
│   ├── open-an-unnamed-buffer.md
│   ├── open-fzf-result-in-a-split.md
│   ├── open-routes-file-with-vim-rails.md
│   ├── open-the-directory-of-the-current-file.md
│   ├── open-the-fugitive-git-summary-window.md
│   ├── open-the-gemfile.md
│   ├── open-the-latest-rails-migration.md
│   ├── open-the-selected-lines-in-github-with-gbrowse.md
│   ├── open-vim-to-a-tag-definition.md
│   ├── opening-a-url.md
│   ├── opening-man-pages-in-vim.md
│   ├── paste-a-register-from-insert-mode.md
│   ├── preventing-typos-with-abbreviations.md
│   ├── previous-buffer.md
│   ├── previous-visual-selection.md
│   ├── print-the-relative-path-of-the-current-file.md
│   ├── print-version-information.md
│   ├── quick-file-info.md
│   ├── quick-man-pages.md
│   ├── quick-quickfix-list-navigation.md
│   ├── quickly-fix-a-misspelled-word.md
│   ├── quickly-switch-to-a-buffer-by-number.md
│   ├── quit-when-there-is-an-argument-list.md
│   ├── read-in-the-contents-of-a-rails-file.md
│   ├── reindenting-your-code.md
│   ├── rename-a-file-through-netrw.md
│   ├── rename-current-file.md
│   ├── repeat-the-previous-change.md
│   ├── repeating-characters.md
│   ├── replace-a-character.md
│   ├── reset-target-tslime-pane.md
│   ├── reverse-a-group-of-lines.md
│   ├── reword-a-commit-message-with-fugitive.md
│   ├── rotate-everything-by-13-letters.md
│   ├── rotate-the-orientation-of-split-windows.md
│   ├── running-bundle-with-vim-bundler.md
│   ├── scrolling-relative-to-the-cursor.md
│   ├── search-backward-through-a-file.md
│   ├── searching-for-hex-digits.md
│   ├── select-several-results-from-an-fzf-search.md
│   ├── set-end-of-line-markers.md
│   ├── set-your-color-scheme.md
│   ├── setting-filetype-with-modelines.md
│   ├── show-all-syntax-highlighting-rules.md
│   ├── show-matching-entries-for-help.md
│   ├── source-original-vimrc-when-using-neovim.md
│   ├── specify-the-line-height-of-the-quick-fix-window.md
│   ├── split-different.md
│   ├── split-the-current-window.md
│   ├── splitting-for-new-files.md
│   ├── sum-a-bunch-of-numbers-in-the-current-file.md
│   ├── swap-occurrences-of-two-words.md
│   ├── swap-the-position-of-two-split-windows.md
│   ├── swapping-split-windows.md
│   ├── switch-moving-end-of-visual-selection.md
│   ├── tabs-to-spaces.md
│   ├── the-black-hole-register.md
│   ├── the-vim-info-file.md
│   ├── toggle-absolute-and-relative-paths-in-bufexplorer.md
│   ├── toggling-syntax-highlighting.md
│   ├── turning-of-search-highlighting.md
│   ├── unloading-a-buffer.md
│   ├── use-active-window-with-bufexplorer.md
│   ├── use-the-terminal-inside-a-vim-session.md
│   ├── using-vim-surround-with-a-visual-selection.md
│   ├── verbose-commits-with-fugitive.md
│   ├── view-commit-history-of-a-file.md
│   ├── view-the-current-file-in-github.md
│   ├── viewing-man-pages-with-man-vim.md
│   ├── vim-without-the-extras.md
│   ├── what-is-on-the-runtime-path.md
│   ├── whole-line-auto-completion.md
│   └── wrap-with-some-room.md
├── vscode/
│   ├── add-the-vscode-cli-to-your-path.md
│   ├── advance-through-search-results.md
│   ├── enable-breadcrumbs-for-version-126-release.md
│   ├── find-the-location-of-user-settings-json-file.md
│   ├── jump-to-problems-in-the-current-file.md
│   ├── open-an-integrated-terminal-window.md
│   ├── open-file-on-remote-like-github.md
│   ├── pop-open-the-quick-fix-window.md
│   ├── step-through-project-wide-search-results.md
│   ├── synchronize-vim-clipboard-with-system-clipboard.md
│   ├── toggle-between-terminals.md
│   └── turn-off-display-of-tabs-for-files.md
├── webpack/
│   ├── better-module-imports-with-aliases.md
│   ├── debugging-with-full-source-maps.md
│   ├── run-eslint-as-a-preloader.md
│   ├── specify-port-of-cra-webpack-dev-server.md
│   └── use-a-specific-config-file.md
├── workflow/
│   ├── access-1password-credential-from-cli.md
│   ├── add-hotkeys-for-specific-raycast-extensions.md
│   ├── add-subscriber-to-kit-form-via-api.md
│   ├── add-subtitles-to-existing-mux-video-asset.md
│   ├── allow-key-repeating-with-cursor.md
│   ├── break-justfile-into-separate-hidden-steps.md
│   ├── change-window-name-in-iterm.md
│   ├── configure-email-redirect-with-cloudflare.md
│   ├── control-media-with-drop-keyboard.md
│   ├── convert-an-epub-document-to-pdf-on-mac.md
│   ├── create-a-local-sanity-dataset-backup.md
│   ├── create-a-public-url-for-a-local-server.md
│   ├── create-todo-items-in-logseq.md
│   ├── do-project-time-tracking-from-the-cli.md
│   ├── enable-dev-tools-for-safari.md
│   ├── forward-stripe-events-to-local-server.md
│   ├── get-url-for-github-user-profile-photo.md
│   ├── get-your-public-ip-address.md
│   ├── import-a-github-project-into-codesandbox.md
│   ├── interactively-kill-a-process-with-fkill.md
│   ├── open-slacks-keyboard-shortcuts-reference-panel.md
│   ├── pop-videos-out-as-picture-in-picture.md
│   ├── prune-the-excess-from-node-modules.md
│   ├── rotate-an-image-to-be-oriented-upright.md
│   ├── see-overlaps-for-a-set-of-time-zones.md
│   ├── send-a-message-to-a-discord-channel.md
│   ├── send-a-pdf-to-your-kindle.md
│   ├── set-recurring-reminders-in-slack.md
│   ├── show-linting-errors-in-zed.md
│   ├── temporarily-hide-cleanshot-x-capture-previews.md
│   ├── toggle-between-stories-in-storybook.md
│   ├── update-asdf-plugins-with-latest-package-versions.md
│   ├── view-a-nicely-formatted-csv-in-terminal.md
│   └── view-the-pr-for-the-current-github-branch.md
├── xstate/
│   ├── always-use-inline-functions-with-assign.md
│   ├── custom-jest-matcher-for-xstate-machine-states.md
│   ├── define-event-that-does-internal-self-transition.md
│   ├── events-stop-propagating-once-handled.md
│   ├── inline-actions-vs-actions-in-machine-options.md
│   ├── make-immediate-and-delayed-transitions.md
│   ├── simple-states-and-composite-states.md
│   ├── start-a-machine-in-a-specific-state.md
│   └── use-an-xstate-machine-with-react.md
├── yaml/
│   ├── create-multi-line-strings-without-the-line-breaks.md
│   └── yaml-is-a-superset-of-json.md
├── zod/
│   ├── check-if-an-object-is-empty-with-zod.md
│   ├── create-a-schema-that-matches-on-any-object.md
│   ├── create-union-type-of-nearly-identical-objects.md
│   ├── get-readable-errors-from-schema-parse.md
│   ├── incorporate-existing-type-into-zod-schema.md
│   └── set-custom-error-message-for-nonempty-array.md
└── zsh/
    ├── a-better-way-to-reload-zsh-configuration.md
    ├── add-to-the-path-via-path-array.md
    ├── create-and-jump-into-a-directory.md
    ├── link-a-scalar-to-an-array.md
    └── use-a-space-to-exclude-command-from-history.md
Condensed preview — 1768 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,984K chars).
[
  {
    "path": ".gitmodules",
    "chars": 118,
    "preview": "[submodule \"notes\"]\n\tpath = notes\n\turl = git@github.com:jbranchaud/til-notes-private.git\n\tbranch = main\n\tignore = all\n"
  },
  {
    "path": ".vimrc",
    "chars": 701,
    "preview": "\" vimrc for til\n\n\" In order for this file to be loaded by Vim, the main `.vimrc` file must\n\" contain `set exrc` and opti"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 628,
    "preview": "# Contributing\n\nThanks for wanting to contribute to my TIL repository!\n\nI welcome submissions that fix typos and correct"
  },
  {
    "path": "LICENSE",
    "chars": 1058,
    "preview": "Copyright (c) 2015 Josh Branchaud\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis "
  },
  {
    "path": "README.md",
    "chars": 153718,
    "preview": "# TIL\n\n> Today I Learned\n\nA collection of concise write-ups on small things I learn day to day across a\nvariety of langu"
  },
  {
    "path": "Taskfile.yml",
    "chars": 1742,
    "preview": "version: '3'\n\nvars:\n  NOTES_DIR: notes\n  NOTES_FILE: '{{.NOTES_DIR}}/NOTES.md'\n  EDITOR: '{{.EDITOR | default \"nvim\"}}'\n"
  },
  {
    "path": "ack/ack-bar.md",
    "chars": 201,
    "preview": "# ack --bar\n\nThe [`ack`](https://beyondgrep.com/) utility has a fun Easter egg that dumps\na Star Wars meme to the comman"
  },
  {
    "path": "ack/case-insensitive-search.md",
    "chars": 438,
    "preview": "# Case-Insensitive Search\n\nUse the `-i` flag to perform a case-insensitive search with `ack`.\n\n```bash\n$ ack -i easter\n\n"
  },
  {
    "path": "ack/list-available-file-types.md",
    "chars": 996,
    "preview": "# List Available File Types\n\nThe `ack` utility allows you to filter the searched files based on file\ntype. If you'd like"
  },
  {
    "path": "ansible/loop-over-a-list-of-dictionaries.md",
    "chars": 1058,
    "preview": "# Loop Over A List Of Dictionaries\n\nAnsible's `loop` can iterate over a list of dictionaries in a task. That task\nwill b"
  },
  {
    "path": "astro/generate-types-for-a-content-collection.md",
    "chars": 1463,
    "preview": "# Generate Types For A Content Collection\n\nLet's say I'm using Astro to publish posts via markdown. One of the best ways"
  },
  {
    "path": "astro/markdown-files-are-of-type-markdown-instance.md",
    "chars": 1441,
    "preview": "# Markdown Files Are Of Type MarkdownInstance\n\nOne of the things Astro excels at is rendering markdown files as HTML pag"
  },
  {
    "path": "aws/aws-cli-requires-groff-executable.md",
    "chars": 1147,
    "preview": "# AWS CLI Requires Groff Executable\n\nI have the AWS CLI installed on this machine, but when I went to run certain\ncomman"
  },
  {
    "path": "aws/find-and-follow-server-logs.md",
    "chars": 1502,
    "preview": "# Find And Follow Server Logs\n\nLet's say you are authenticated with the AWS CLI and have the appropriate\nCloudWatch perm"
  },
  {
    "path": "aws/list-rds-snapshots-with-matching-identifier-prefix.md",
    "chars": 1224,
    "preview": "# List RDS Snapshots With Matching Identifier Prefix\n\nI'm working on a script that manually creates a snapshot which it "
  },
  {
    "path": "aws/output-cli-results-in-different-formats.md",
    "chars": 1719,
    "preview": "# Output CLI Results In Different Formats\n\nThe AWS CLI can output the results of commands in three different formats.\n\n-"
  },
  {
    "path": "aws/sign-up-user-with-email-and-password.md",
    "chars": 1048,
    "preview": "# Sign Up User With Email And Password\n\n[AWS Amplify](https://aws.amazon.com/amplify/)\n[Auth](https://docs.amplify.aws/l"
  },
  {
    "path": "aws/ssh-into-an-ecs-container.md",
    "chars": 1377,
    "preview": "# SSH Into An ECS Container\n\nIn [Connect To Production Rails Console on AWS /\nFlightcontrol](https://www.visualmode.dev/"
  },
  {
    "path": "aws/turn-off-output-pager-for-a-command.md",
    "chars": 1312,
    "preview": "# Turn Off Output Pager For A Command\n\nIt is not uncommon for an AWS CLI command to return a ton of output. When that\nha"
  },
  {
    "path": "aws/use-specific-aws-profile-with-cli.md",
    "chars": 1149,
    "preview": "# Use Specific AWS Profile With CLI\n\nI have multiple AWS profiles authenticated with the AWS CLI. For some projects\nI ne"
  },
  {
    "path": "bash/edit-the-current-command-prompt.md",
    "chars": 866,
    "preview": "# Edit The Current Command Prompt\n\nA neat feature of `bash` is the ability to open whatever the current state of\nthe com"
  },
  {
    "path": "brew/clean-up-your-brew-installations.md",
    "chars": 1081,
    "preview": "# Clean Up Your Brew Installations\n\nOver time as you upgrade brew-installed programs and make changes to your\n`Brewfile`"
  },
  {
    "path": "brew/configure-brew-environment-variables.md",
    "chars": 790,
    "preview": "# Configure Brew Environment Variables\n\nThe `brew` CLI can be configured with a ton of different environment variables.\n"
  },
  {
    "path": "brew/export-list-of-everything-installed-by-brew.md",
    "chars": 1138,
    "preview": "# Export List Of Everything Installed By Brew\n\nIf you're on a Mac using Homebrew to install various tools and utilities,"
  },
  {
    "path": "brew/install-from-nonstandard-brewfile.md",
    "chars": 854,
    "preview": "# Install From Nonstandard Brewfile\n\nWhen you want to install the packages listed in the `Brewfile` for your current\npro"
  },
  {
    "path": "brew/install-go-packages-in-brewfile.md",
    "chars": 838,
    "preview": "# Install Go Packages In Brewfile\n\nTypically my `Brewfile` is only full of `brew` and `cask` directives. That's\nstarting"
  },
  {
    "path": "brew/list-all-services-managed-by-brew.md",
    "chars": 1037,
    "preview": "# List All Services Managed By Brew\n\nDaemonized services, such as PostgreSQL, can be installed and managed with\nHomebrew"
  },
  {
    "path": "chrome/access-a-value-logged-to-the-console.md",
    "chars": 755,
    "preview": "# Access A Value Logged To The Console\n\nDid your app just log an object to the dev tools console and you'd like to\ninter"
  },
  {
    "path": "chrome/chrome-supports-many-unix-keyboard-shortcuts.md",
    "chars": 628,
    "preview": "# Chrome Supports Many Unix Keyboard Shortcuts\n\nIn a Unix environment, you can use keyboard shortcuts to do a variety of"
  },
  {
    "path": "chrome/copy-some-data-from-the-console.md",
    "chars": 669,
    "preview": "# Copy Some Data From The Console\n\nSometimes you have some data that you are playing around with in the\nconsole, somethi"
  },
  {
    "path": "chrome/duplicate-the-current-tab.md",
    "chars": 417,
    "preview": "# Duplicate The Current Tab\n\nSometimes when viewing a page, you realize you want to keep that page open\nbut also go back"
  },
  {
    "path": "chrome/easier-access-to-network-throttling-controls.md",
    "chars": 836,
    "preview": "# Easier Access To Network Throttling Controls\n\nIn [Simulating Various Network Connection\nSpeeds](https://github.com/jbr"
  },
  {
    "path": "chrome/keybinding-to-focus-the-address-bar.md",
    "chars": 615,
    "preview": "# Keybinding To Focus The Address Bar\n\nThe address bar (URL bar) in Chrome is versatile. You can enter both URLs and\nsea"
  },
  {
    "path": "chrome/navigate-the-browser-history-with-vimium.md",
    "chars": 365,
    "preview": "# Navigate The Browser History With Vimium\n\nThe [Vimium](https://vimium.github.io/) Chrome extension is great for moving"
  },
  {
    "path": "chrome/open-current-tab-in-new-window-with-vimium.md",
    "chars": 773,
    "preview": "# Open Current Tab In New Window With Vimium\n\nSometime I have a busy Chrome window going with a bunch of tabs open for\nv"
  },
  {
    "path": "chrome/pause-javascript-from-the-source-devtools-panel.md",
    "chars": 969,
    "preview": "# Pause JavaScript From The Source DevTools Panel\n\nYou know that moment when you accidentally introduce an infinite loop"
  },
  {
    "path": "chrome/pretty-print-tabular-data.md",
    "chars": 472,
    "preview": "# Pretty Print Tabular Data\n\nLooking at a bunch of data in the Chrome dev tools console isn't great. It\ncan be a bit dif"
  },
  {
    "path": "chrome/reference-the-selected-node.md",
    "chars": 654,
    "preview": "# Reference The Selected Node\n\nIn the Chrome dev tools, if you've selected (highlighted) a node in the DOM,\nyou can refe"
  },
  {
    "path": "chrome/search-tabs-with-the-vimium-vomnibar.md",
    "chars": 1032,
    "preview": "# Search Tabs With The Vimium Vomnibar\n\nIf you use Chrome like I do, then you eventually end up with several windows\nwit"
  },
  {
    "path": "chrome/selecting-dom-elements-faster-than-ever.md",
    "chars": 555,
    "preview": "# Selecting DOM Elements Faster Than Ever\n\nSelecting and inspecting DOM elements: you've done it many times before.\nWhet"
  },
  {
    "path": "chrome/simulating-various-connection-speeds.md",
    "chars": 826,
    "preview": "# Simulating Various Connection Speeds\n\nI spend everyday building web apps from a machine that has a wired\nconnection to"
  },
  {
    "path": "chrome/toggle-device-mode.md",
    "chars": 347,
    "preview": "# Toggle Device Mode\n\nWorking on some styles? Want to make sure those minor tweaks look good on\nboth desktop and mobile?"
  },
  {
    "path": "chrome/toggle-open-the-console-drawer.md",
    "chars": 176,
    "preview": "# Toggle Open The Console Drawer\n\nWith Chrome devtools open and in focus, hit `<Esc>`. The console drawer will\nbe toggle"
  },
  {
    "path": "chrome/trigger-commands-from-the-devtools-command-palette.md",
    "chars": 1098,
    "preview": "# Trigger Commands From The Devtools Command Palette\n\nThere are a ton of tabs, drop downs, and nested menus in Chrome's "
  },
  {
    "path": "chrome/view-network-traffic-for-new-tabs.md",
    "chars": 853,
    "preview": "# View Network Traffic For New Tabs\n\nGenerally when you open a new tab and pop open the Network panel in the chrome\ndevt"
  },
  {
    "path": "claude-code/allow-edits-from-the-start.md",
    "chars": 1167,
    "preview": "# Allow Edits From The Start\n\nA common pattern for me when using Claude Code is that I start it up in a\nproject, I promp"
  },
  {
    "path": "claude-code/monitor-usage-limits-from-cli.md",
    "chars": 825,
    "preview": "# Monitor Usage Limits From CLI\n\nWhen I first started using Claude Code enough to push the usage limits, I would\nperiodi"
  },
  {
    "path": "claude-code/open-current-prompt-in-default-editor.md",
    "chars": 786,
    "preview": "# Open Current Prompt In Default Editor\n\n[Claude Code](https://www.claude.com/product/claude-code) gives you a single\nli"
  },
  {
    "path": "claude-code/resume-specific-session.md",
    "chars": 902,
    "preview": "# Resume Specific Session\n\nThere are a few different ways to resume a [Claude\nCode](https://code.claude.com/docs/en/over"
  },
  {
    "path": "clojure/aggregation-using-merge-with.md",
    "chars": 829,
    "preview": "# Aggregation Using merge-with\n\nClojure provides the `merge-with` function as a way of conjoining a series\nof maps. You "
  },
  {
    "path": "clojure/argument-requirements-for-a-function.md",
    "chars": 547,
    "preview": "# Argument Requirements For A Function\n\nWhen defining a function, you must declare one or more function definitions,\neac"
  },
  {
    "path": "clojure/combinations-of-items-from-a-sequence.md",
    "chars": 920,
    "preview": "# Combinations Of Items From A Sequence\n\nSometimes we want all combinations of items from a list. For instance, we\nmay h"
  },
  {
    "path": "clojure/define-something-only-once.md",
    "chars": 520,
    "preview": "# Define Something Only Once\n\nClojure provides [`defonce`](https://clojuredocs.org/clojure.core/defonce)\nwhich is a macr"
  },
  {
    "path": "clojure/evaluate-one-liners-with-lein-exec.md",
    "chars": 257,
    "preview": "# Evaluate One Liners With lein-exec\n\nYou can install the [`lein-exec`](https://github.com/kumarshantanu/lein-exec)\nplug"
  },
  {
    "path": "clojure/expanding-macros.md",
    "chars": 732,
    "preview": "# Expanding Macros\n\nMacros are an important part of Clojure's syntax. They allow you to write\ncleaner, terser, more expr"
  },
  {
    "path": "clojure/get-the-value-of-an-environment-variable.md",
    "chars": 365,
    "preview": "# Get The Value Of An Environment Variable\n\nYou can get the value of an environment variable on your system using the\n`S"
  },
  {
    "path": "clojure/list-functions-for-a-namespace.md",
    "chars": 1120,
    "preview": "# List Functions For A Namespace\n\nYou know that `clojure.string` has a function for uppercasing a string, but\nyou can't "
  },
  {
    "path": "clojure/load-a-file-into-the-repl.md",
    "chars": 381,
    "preview": "# Load A File Into The REPL\n\nYou can quickly load a file into a REPL session using the `load-file`\nfunction. You can spe"
  },
  {
    "path": "clojure/mapping-with-an-index.md",
    "chars": 732,
    "preview": "# Mapping With An Index\n\nIf you're mapping over a collection and you need an index for each item, you\ncan reach for `map"
  },
  {
    "path": "clojure/open-javadocs.md",
    "chars": 464,
    "preview": "# Open JavaDocs\n\nClojure has all kinds of Java interop including a fancy function called\n`javadoc`. The `javadoc` functi"
  },
  {
    "path": "clojure/pretty-print-the-last-thing.md",
    "chars": 594,
    "preview": "# Pretty Print The Last Thing\n\nClojure provides `pp` as a convenience macro for pretty printing the last\nthing that was "
  },
  {
    "path": "clojure/quick-clojure-docs.md",
    "chars": 461,
    "preview": "# Quick Clojure Docs\n\nAssuming you already have the\n[`fireplace.vim`](https://github.com/tpope/vim-fireplace) plugin ins"
  },
  {
    "path": "clojure/reductions.md",
    "chars": 675,
    "preview": "# Reductions\n\nOne of the core functions in Clojure is\n[`reduce`](https://clojuredocs.org/clojure.core/reduce). It allows"
  },
  {
    "path": "clojure/set-max-heap-size.md",
    "chars": 305,
    "preview": "# Set Max Heap Size\n\nFor `lein`-based projects, the maximum heap size can be set by including the\n`-Xmx` option in the `"
  },
  {
    "path": "clojure/specify-the-directory-of-a-shell-command.md",
    "chars": 803,
    "preview": "# Specify the Directory of a Shell Command\n\nClojure gives us access to Java's shell capabilities through\n`clojure.java.s"
  },
  {
    "path": "clojure/splitting-on-whitespace.md",
    "chars": 914,
    "preview": "# Splitting On Whitespace\n\nIf you have a string with spaces and you want to split the string into a\nvector of strings (d"
  },
  {
    "path": "clojure/swap-two-items-in-a-vector.md",
    "chars": 798,
    "preview": "# Swap Two Items in a Vector\n\nIf you want to replace the value at an index in a vector, you can use the\n`assoc` function"
  },
  {
    "path": "clojure/try-a-clojure-project-in-the-repl.md",
    "chars": 717,
    "preview": "# Try A Clojure Project In The REPL\n\nThe `lein-try` plugin is a tool that makes it easy to quickly try out a\nclojure pro"
  },
  {
    "path": "clojure/type-of-anything.md",
    "chars": 581,
    "preview": "# Type of Anything\n\nYou can get the type of anything with the `type` function. Because Clojure\nis built on Java, many of"
  },
  {
    "path": "clojure/when-overflow-is-desired.md",
    "chars": 475,
    "preview": "# When Overflow Is Desired\n\nIf you try to add two `MAX_VALUE` Longs, Clojure is kind enough to warn you.\n\n```clojure\n> ("
  },
  {
    "path": "css/add-fab-icons-to-your-site-with-fontawesome-5.md",
    "chars": 590,
    "preview": "# Add Fab Icons To Your Site With FontAwesome 5\n\nCheck out the latest version of [FontAwesome](https://fontawesome.com/)"
  },
  {
    "path": "css/add-line-numbers-to-a-code-block-with-counter.md",
    "chars": 1662,
    "preview": "# Add Line Numbers To A Code Block With Counter\n\nThe\n[`counter`](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_co"
  },
  {
    "path": "css/animate-smoothly-between-two-background-colors.md",
    "chars": 915,
    "preview": "# Animate Smoothly Between Two Background Colors\n\nCSS animations allow you to set up simple rules that the rendering eng"
  },
  {
    "path": "css/apply-multiple-box-shadows-to-single-element.md",
    "chars": 911,
    "preview": "# Apply Multiple Box Shadows To Single Element\n\nMultiple box-shadows can be applied to the same DOM element. The `box-sh"
  },
  {
    "path": "css/apply-styles-based-on-dark-mode-preferences.md",
    "chars": 768,
    "preview": "# Apply Styles Based On Dark-Mode Preferences\n\nThere is a CSS media query for whether a user prefers a Dark-Mode or Ligh"
  },
  {
    "path": "css/apply-styles-to-the-last-child-of-a-specific-type.md",
    "chars": 901,
    "preview": "# Apply Styles To The Last Child Of A Specific Type\n\nThe\n[`:last-child`](https://developer.mozilla.org/en-US/docs/Web/CS"
  },
  {
    "path": "css/change-the-orientation-of-an-image.md",
    "chars": 548,
    "preview": "# Change The Orientation Of An Image\n\nA single-line CSS transform is all it takes to change the orientation of an\nimage "
  },
  {
    "path": "css/circular-icons-with-a-massive-border-radius.md",
    "chars": 358,
    "preview": "# Circular Icons With A Massive Border Radius\n\nElements by nature are rectangular. By adding some `border-radius`, you c"
  },
  {
    "path": "css/clean-up-repetition-with-is-pseudo-class.md",
    "chars": 834,
    "preview": "# Clean Up Repetition With :is() Pseudo-Class\n\nYou can use the [`:is()`](https://developer.mozilla.org/en-US/docs/Web/CS"
  },
  {
    "path": "css/conditional-styling-for-unsupported-css-features.md",
    "chars": 873,
    "preview": "# Conditional Styling For Unsupported CSS Features\n\nAs much as possible, you should aim to use CSS features that have br"
  },
  {
    "path": "css/create-a-pulsing-background-with-css-animation.md",
    "chars": 883,
    "preview": "# Create A Pulsing Background With CSS Animation\n\nYou can create a smoothly pulsing background effect with CSS animation"
  },
  {
    "path": "css/define-css-custom-properties-with-scss-variables.md",
    "chars": 900,
    "preview": "# Define CSS Custom Properties With SCSS Variables\n\nIt doesn't work to directly declare a CSS custom property using SCSS"
  },
  {
    "path": "css/define-hsl-colors-with-alpha-values.md",
    "chars": 1331,
    "preview": "# Define HSL Colors With Alpha Values\n\nHSL is a more intuitive option for defining colors in CSS.\n\nIt is an acronym whic"
  },
  {
    "path": "css/display-responsive-iframe-maintaining-aspect-ratio.md",
    "chars": 926,
    "preview": "# Display Responsive iframe Maintaining Aspect Ratio\n\nGenerally when rendering an iframe, you'll specify the `width` and"
  },
  {
    "path": "css/dry-up-scss-with-mixins.md",
    "chars": 1007,
    "preview": "# Dry Up SCSS With Mixins\n\nIf you have a similar chunk of styling that is being duplicated across your\nCSS, you'd probab"
  },
  {
    "path": "css/filter-blur-requires-expensive-calculation.md",
    "chars": 1394,
    "preview": "# Filter Blur Requires Expensive Calculation\n\nI had [a\npage](https://www.visualmode.dev/connect-to-production-rails-cons"
  },
  {
    "path": "css/give-elements-the-same-width-with-flexbox.md",
    "chars": 830,
    "preview": "# Give Elements The Same Width With Flexbox\n\nBy default, a row of elements in a basic flex container are going to have\nd"
  },
  {
    "path": "css/let-pointer-events-pass-through-an-element.md",
    "chars": 812,
    "preview": "# Let Pointer Events Pass Through An Element\n\nA graphical element can absorb a click event preventing your preferred tar"
  },
  {
    "path": "css/lighten-and-darken-with-css-brightness-filter.md",
    "chars": 760,
    "preview": "# Lighten And Darken With CSS Brightness Filter\n\nCSS has a `filter` property that can be used with a variety of filter\nf"
  },
  {
    "path": "css/lighten-and-darken-with-scss.md",
    "chars": 849,
    "preview": "# Lighten And Darken With SCSS\n\nWith SCSS, a color can be lightened or darkened by a certain percentage\nusing the\n[`ligh"
  },
  {
    "path": "css/make-a-block-of-text-respect-new-lines.md",
    "chars": 800,
    "preview": "# Make A Block Of Text Respect New Lines\n\nGenerally when we fill a `div` tag full of text, it will display it one long\ns"
  },
  {
    "path": "css/parameterized-scss-mixins.md",
    "chars": 730,
    "preview": "# Parameterized SCSS Mixins\n\nA mixin can be made to be much more versatile by parameterizing it. If you\nneed variations "
  },
  {
    "path": "css/prevent-invisible-elements-from-being-clicked.md",
    "chars": 1282,
    "preview": "# Prevent Invisible Elements From Being Clicked\n\nI have a nav element that when clicked reveals a custom drop-down menu."
  },
  {
    "path": "css/root-has-higher-specificity-than-html.md",
    "chars": 486,
    "preview": "# :root Has Higher Specificity Than html\n\nThe `:root` CSS pseudo-selector and `html` will target the same element --\n`<h"
  },
  {
    "path": "css/style-a-background-with-a-linear-gradient.md",
    "chars": 770,
    "preview": "# Style A Background With A Linear Gradient\n\nThe\n[`linear-gradient`](https://developer.mozilla.org/en-US/docs/Web/CSS/li"
  },
  {
    "path": "css/using-maps-in-scss.md",
    "chars": 647,
    "preview": "# Using Maps In SCSS\n\nYou can collect a set of like values into a\n[map](https://sass-lang.com/documentation/values/maps)"
  },
  {
    "path": "cursor/allow-cursor-to-be-launched-from-cli.md",
    "chars": 780,
    "preview": "# Allow Cursor To Be Launched From CLI\n\nIt is nice to be able to open Cursor for a specific project directly from the\nte"
  },
  {
    "path": "deno/read-in-the-contents-of-a-file.md",
    "chars": 695,
    "preview": "# Read In The Contents Of A File\n\nDeno offers some nice utilities out of the box like reading in the contents of\na file "
  },
  {
    "path": "devops/aliasing-an-ansible-host.md",
    "chars": 654,
    "preview": "# Aliasing An Ansible Host\n\nWhen specifying the hosts that Ansible can interact with in the\n`/etc/ansible/hosts` file, y"
  },
  {
    "path": "devops/allow-cross-origin-requests-to-include-cookies.md",
    "chars": 1358,
    "preview": "# Allow Cross-Origin Requests To Include Cookies\n\nWhen making a cross-origin fetch request from a client (e.g. browser) "
  },
  {
    "path": "devops/allow-https-through-your-ufw-firewall.md",
    "chars": 1101,
    "preview": "# Allow HTTPS Through Your UFW Firewall\n\nUFW -- Uncomplicated Firewall -- is just what is sounds like. I have it\nrunning"
  },
  {
    "path": "devops/check-for-cached-site-association-file-for-ios.md",
    "chars": 874,
    "preview": "# Check For Cached Site Assocation File For iOS\n\nApple caches your [AASA (Apple App Site\nAssociation)](https://developer"
  },
  {
    "path": "devops/check-the-status-of-all-services.md",
    "chars": 523,
    "preview": "# Check The Status Of All Services\n\nIn a Linux environment, you can quickly check the status of a number of\ndifferent se"
  },
  {
    "path": "devops/check-the-syntax-of-nginx-files.md",
    "chars": 722,
    "preview": "# Check The Syntax Of nginx Files\n\nThe syntax of [`nginx`](https://www.nginx.com/) configuration files can be a\nbit fini"
  },
  {
    "path": "devops/connect-to-an-rds-postgresql-database.md",
    "chars": 1172,
    "preview": "# Connect To An RDS PostgreSQL Database\n\nYou can connect to an RDS PostgreSQL database remotely via `psql`. First,\nyou n"
  },
  {
    "path": "devops/default-rails-deploy-script-on-hatchbox.md",
    "chars": 1172,
    "preview": "# Default Rails Deploy Script On Hatchbox\n\nI deployed a Rails app to [Hatchbox](https://hatchbox.io) recently. When\nfoll"
  },
  {
    "path": "devops/determine-the-ip-address-of-a-domain.md",
    "chars": 877,
    "preview": "# Determine The IP Address Of A Domain\n\nThe `dig` (domain information grouper) command can be used to get more\ninformati"
  },
  {
    "path": "devops/hatchbox-exports-env-vars-with-asdf.md",
    "chars": 1251,
    "preview": "# Hatchbox Exports Env Vars With asdf\n\nWhen you add env vars through the [Hatchbox](https://hatchbox.io/) UI, they get\ne"
  },
  {
    "path": "devops/path-of-the-packets.md",
    "chars": 1176,
    "preview": "# Path Of The Packets\n\nYou can use `traceroute` to determine the network path packets follow from\nyour machine to some h"
  },
  {
    "path": "devops/push-non-master-branch-to-heroku.md",
    "chars": 755,
    "preview": "# Push Non-master Branch To Heroku\n\nWhen using git to deploy your app to Heroku, it is expected that you push\nto the `ma"
  },
  {
    "path": "devops/reload-the-nginx-configuration.md",
    "chars": 656,
    "preview": "# Reload The nginx Configuration\n\nIf you've modified or replaced the configuration file, nginx will not\nimmediately star"
  },
  {
    "path": "devops/resolve-the-public-ip-of-a-url.md",
    "chars": 996,
    "preview": "# Resolve The Public IP Of A URL\n\nThe `dig` command is a utility for doing DNS lookups. You can run it with a\nURL argume"
  },
  {
    "path": "devops/running-out-of-inode-space.md",
    "chars": 1007,
    "preview": "# Running Out Of inode Space\n\nUnix systems have two types of storage limitations. The first, and more\ncommon, is a limit"
  },
  {
    "path": "devops/set-get-and-unset-env-vars-with-dokku.md",
    "chars": 812,
    "preview": "# Set, Get, And Unset Env Vars With Dokku\n\nThe `dokku` CLI provides `config` subcommands for managing environment variab"
  },
  {
    "path": "devops/set-up-domain-for-hatchbox-rails-app.md",
    "chars": 1151,
    "preview": "# Set Up Domain For Hatchbox Rails App\n\nWhen we deploy a Rails app with [Hatchbox](https://hatchbox.io), we are given\nan"
  },
  {
    "path": "devops/ssh-into-a-docker-container.md",
    "chars": 720,
    "preview": "# SSH Into A Docker Container\n\nBefore you can SSH into a Docker container, you need to know the name of the\ncontainer.\n\n"
  },
  {
    "path": "devops/ssl-certificates-can-cover-multiple-domains.md",
    "chars": 502,
    "preview": "# SSL Certificates Can Cover Multiple Domains\n\nWhen registering an SSL certificate, you can list multiple domains to be\n"
  },
  {
    "path": "devops/wipe-a-heroku-postgres-database.md",
    "chars": 697,
    "preview": "# Wipe A Heroku Postgres Database\n\nIf you have some sort of non-production version of an application running on\nHeroku, "
  },
  {
    "path": "docker/check-postgres-version-running-in-docker-container.md",
    "chars": 1109,
    "preview": "# Check Postgres Version Running In Docker Container\n\nI have a docker container that I'm using to run a PostgreSQL devel"
  },
  {
    "path": "docker/configure-different-host-and-container-ports.md",
    "chars": 1117,
    "preview": "# Configure Different Host And Container Ports\n\nA `docker-compose.yml` file that sets up something like a PostgreSQL ser"
  },
  {
    "path": "docker/list-running-docker-containers.md",
    "chars": 1049,
    "preview": "# List Running Docker Containers\n\nThe `docker` CLI has a `ps` command that will list all running container by\ndefault.\n\n"
  },
  {
    "path": "docker/prevent-containers-from-running-on-startup.md",
    "chars": 2204,
    "preview": "# Prevent Containers From Running On Startup\n\nI have a bunch of docker containers managed by Docker Desktop. Some are re"
  },
  {
    "path": "docker/run-a-basic-postgresql-server-in-docker.md",
    "chars": 1098,
    "preview": "# Run A Basic PostgreSQL Server In Docker\n\nHere is a basic `docker-compose.yml` file for spinning up a Docker container\n"
  },
  {
    "path": "docker/run-sql-script-against-postgres-container.md",
    "chars": 1505,
    "preview": "# Run SQL Script Against Postgres Container\n\nI've been using dockerized Postgres for local development with several proj"
  },
  {
    "path": "dprint.json",
    "chars": 98,
    "preview": "{\n  \"excludes\": [\"README.md\"],\n  \"plugins\": [\"https://plugins.dprint.dev/markdown-0.16.0.wasm\"]\n}\n"
  },
  {
    "path": "drizzle/create-bigint-identity-column-for-primary-key.md",
    "chars": 1603,
    "preview": "# Create bigint Identity Column For Primary Key\n\nUsing the Drizzle ORM with Postgres, here is how we can create a table "
  },
  {
    "path": "drizzle/drizzle-tracks-migrations-in-a-log-table.md",
    "chars": 1941,
    "preview": "# Drizzle Tracks Migrations In A Log Table\n\nWhen I generate (`npx drizzle-kit generate`) and apply (`npx drizzle-kit\nmig"
  },
  {
    "path": "drizzle/get-fields-for-inserted-row.md",
    "chars": 1459,
    "preview": "# Get Fields For Inserted Row\n\nWith Drizzle, we can insert a row with a set of values like so:\n\n```typescript\nawait db\n "
  },
  {
    "path": "elixir/all-values-for-a-key-in-a-keyword-list.md",
    "chars": 429,
    "preview": "# All Values For A Key In A Keyword List\n\nA keyword list in Elixir can contain the same key multiple times.\n\n```elixir\nk"
  },
  {
    "path": "elixir/append-to-a-keyword-list.md",
    "chars": 855,
    "preview": "# Append To A Keyword List\n\nIf you have two keyword lists, you can append them like so:\n\n```elixir\n> a = [a: 1]\n[a: 1]\n>"
  },
  {
    "path": "elixir/assert-an-exception-is-raised.md",
    "chars": 877,
    "preview": "# Assert An Exception Is Raised\n\nElixir's [`ExUnit`](http://elixir-lang.org/docs.html) comes with a number of\ndifferent "
  },
  {
    "path": "elixir/binary-representation-of-a-string.md",
    "chars": 471,
    "preview": "# Binary Representation Of A String\n\n> A common trick in Elixir is to concatenate the null byte <<0>> to a string\n> to s"
  },
  {
    "path": "elixir/check-for-a-substring-match.md",
    "chars": 633,
    "preview": "# Check For A Substring Match\n\nUsing Erlang's `:binary.match` function, you can easily check if a string\nhas a matching "
  },
  {
    "path": "elixir/check-list-membership.md",
    "chars": 713,
    "preview": "# Check List Membership\n\nYou can use the [`in` operator](https://hexdocs.pm/elixir/operators.html) to\ncheck if something"
  },
  {
    "path": "elixir/comparing-datetime-structs.md",
    "chars": 861,
    "preview": "# Comparing DateTime Structs\n\n> Remember, comparisons in Elixir using ==/2, >/2, </2 and friends are\n> structural and ba"
  },
  {
    "path": "elixir/compute-intermediate-values-in-a-with-construct.md",
    "chars": 719,
    "preview": "# Compute Intermediate Values In A With Construct\n\nThe expressions you use in a `with` construct do not have to contain "
  },
  {
    "path": "elixir/compute-md5-digest-of-a-string.md",
    "chars": 650,
    "preview": "# Compute md5 Digest Of A String\n\nTo compute the md5 digest of a string, we can use Erlang's top-level `md5`\nfunction.\n\n"
  },
  {
    "path": "elixir/counting-records-with-ecto.md",
    "chars": 1075,
    "preview": "# Counting Records With Ecto\n\nSometimes you want to know how many records there are in a table. Ecto gives\nus a couple w"
  },
  {
    "path": "elixir/create-a-date-with-the-date-sigil.md",
    "chars": 387,
    "preview": "# Create A Date With The Date Sigil\n\nElixir 1.3 introduced a new sigil for creating dates, `~D`. It works in the\nsame wa"
  },
  {
    "path": "elixir/create-a-list-of-atoms.md",
    "chars": 512,
    "preview": "# Create A List Of Atoms\n\nThe `~w` sigil makes it easy to create a word list -- a list of strings --\nwhere each word is "
  },
  {
    "path": "elixir/creating-a-pid.md",
    "chars": 890,
    "preview": "# Creating A PID\n\nOften times, when invoking a function that spawns a process, the PID of the\nspawned process is returne"
  },
  {
    "path": "elixir/creating-indexes-with-ecto.md",
    "chars": 471,
    "preview": "# Creating Indexes With Ecto\n\nUsing indexes in the right places within relational databases is a great way\nto speed up q"
  },
  {
    "path": "elixir/defining-multiple-clauses-in-an-anonymous-function.md",
    "chars": 888,
    "preview": "# Defining Multiple Clauses In An Anonymous Function\n\nAnonymous functions often take the approach of doing a single thin"
  },
  {
    "path": "elixir/determine-the-latest-release-of-a-hex-package.md",
    "chars": 970,
    "preview": "# Determine The Latest Release Of A Hex Package\n\nI will often pop open the browser and do a Google search in order to fi"
  },
  {
    "path": "elixir/do-you-have-the-time-part-2.md",
    "chars": 657,
    "preview": "# Do You Have The Time? - Part 2\n\nIn [_Do You Have The\nTime?_](https://github.com/jbranchaud/til/blob/master/elixir/do-y"
  },
  {
    "path": "elixir/do-you-have-the-time.md",
    "chars": 513,
    "preview": "# Do You Have The Time?\n\nElixir doesn't come with any standard ways of getting at or working with\ntime. There are packag"
  },
  {
    "path": "elixir/documentation-lookup-with-vim-and-alchemist.md",
    "chars": 680,
    "preview": "# Documentation Lookup With Vim And Alchemist\n\n_Which argument position is the accumulator for `Enum.reduce/3`?_\n\n_How d"
  },
  {
    "path": "elixir/dynamically-generating-atoms.md",
    "chars": 500,
    "preview": "# Dynamically Generating Atoms\n\n> Atoms are constants where their name is their own value.\n\nThe use of atoms like `:ok` "
  },
  {
    "path": "elixir/execute-raw-sql-in-an-ecto-migration.md",
    "chars": 1150,
    "preview": "# Execute Raw SQL In An Ecto Migration\n\nIf you are performing a database migration with\n[Ecto](https://hexdocs.pm/ecto/E"
  },
  {
    "path": "elixir/expose-internal-representation.md",
    "chars": 585,
    "preview": "# Expose Internal Representation\n\nElixir is a language that has strong support for metaprogramming. It\nprovides easy acc"
  },
  {
    "path": "elixir/include-captures-with-string-split.md",
    "chars": 1020,
    "preview": "# Include Captures With String.split\n\nThe\n[`String.split/3`](http://elixir-lang.org/docs/stable/elixir/String.html#split"
  },
  {
    "path": "elixir/inspecting-the-process-message-queue.md",
    "chars": 1081,
    "preview": "# Inspecting The Process Message Queue\n\nA core tenant of Elixir is message passing between processes. So, if a\nprocess i"
  },
  {
    "path": "elixir/list-functions-for-a-module.md",
    "chars": 1018,
    "preview": "# List Functions For A Module\n\nDuring an `iex` session, I can do a little introspection on modules using\neither the\n[`__"
  },
  {
    "path": "elixir/listing-files-in-iex.md",
    "chars": 717,
    "preview": "# Listing Files In IEx\n\nWhen you start an IEx session, you do so in the context of some directory --\nthe current working"
  },
  {
    "path": "elixir/match-on-a-map-in-a-with-construct.md",
    "chars": 687,
    "preview": "# Match On A Map In A With Construct\n\nMany usage example of the\n[`with`](https://hexdocs.pm/elixir/Kernel.SpecialForms.h"
  },
  {
    "path": "elixir/passing-around-and-using-modules.md",
    "chars": 822,
    "preview": "# Passing Around And Using Modules\n\nA module is a bag of functions. When we define a module, we are tying it to\nan atom."
  },
  {
    "path": "elixir/pattern-matching-in-anonymous-functions.md",
    "chars": 742,
    "preview": "# Pattern Matching In Anonymous Functions\n\nPattern matching shows up everywhere in Elixir, even where you may not be\nexp"
  },
  {
    "path": "elixir/pipe-into-a-case-statement.md",
    "chars": 881,
    "preview": "# Pipe Into A Case Statement\n\nThe standard use of a case statement looks something like this:\n\n```elixir\ncase HTTPoison."
  },
  {
    "path": "elixir/quitting-iex.md",
    "chars": 610,
    "preview": "# Quitting IEx\n\nThere are two ways to quit out of an Interactive Elixir shell. The standard\nway is with `Ctrl-c`. This g"
  },
  {
    "path": "elixir/range-into-list-using-comprehensions.md",
    "chars": 361,
    "preview": "# Range Into List Using Comprehensions\n\nUsing an _identity_ comprehension and the `:into` option, we can easily\nconvert "
  },
  {
    "path": "elixir/refer-to-a-module-within-itself.md",
    "chars": 559,
    "preview": "# Refer To A Module Within Itself\n\nElixir comes with the `__MODULE__` reserve word for referencing a module\nwithin itsel"
  },
  {
    "path": "elixir/referencing-values-in-iexs-history.md",
    "chars": 937,
    "preview": "# Referencing Values In IEx's History\n\nEach time we execute a statement in an `iex` session, the counter is\nincremented."
  },
  {
    "path": "elixir/remove-one-list-from-another.md",
    "chars": 803,
    "preview": "# Remove One List From Another\n\nThe `--/2` operator allows you to subtract two lists, that is, remove all\nelements in th"
  },
  {
    "path": "elixir/replace-duplicates-in-a-keyword-list.md",
    "chars": 579,
    "preview": "# Replace Duplicates In A Keyword List\n\nUse the\n[`Keyword.put`](http://elixir-lang.org/docs/stable/elixir/Keyword.html#p"
  },
  {
    "path": "elixir/requiring-keys-for-structs.md",
    "chars": 1186,
    "preview": "# Requiring Keys For Structs\n\nWhen defining a\n[`struct`](http://elixir-lang.org/getting-started/structs.html) in Elixir,"
  },
  {
    "path": "elixir/reversing-a-list-part-2.md",
    "chars": 413,
    "preview": "# Reversing A List - Part 2\n\nIn [Reversing A List](reversing-a-list.md), I showed how Erlang's\n`:lists.reverse()` functi"
  },
  {
    "path": "elixir/reversing-a-list.md",
    "chars": 612,
    "preview": "# Reversing A List\n\nTo efficiently work with and _transform_ lists in Elixir, you will likely\nneed utilize a list revers"
  },
  {
    "path": "elixir/root-directory-of-a-project.md",
    "chars": 422,
    "preview": "# Root Directory Of A Project\n\nDo you need the root directory of an elixir project? The\n[`File.cwd!/0`](http://elixir-la"
  },
  {
    "path": "elixir/round-floats-to-integers.md",
    "chars": 659,
    "preview": "# Round Floats To Integers\n\nThe\n[`Float.round/2`](http://elixir-lang.org/docs/stable/elixir/Float.html#round/2)\nfunction"
  },
  {
    "path": "elixir/run-exunit-tests-in-a-deterministic-order.md",
    "chars": 749,
    "preview": "# Run ExUnit Tests In A Deterministic Order\n\nWhen running a file of\n[`ExUnit`](http://elixir-lang.org/docs/stable/ex_uni"
  },
  {
    "path": "elixir/run-the-test-at-a-specific-line-number.md",
    "chars": 683,
    "preview": "# Run The Test At A Specific Line Number\n\nYou can tell `mix test` to only run tests that appear in a specific file by\nna"
  },
  {
    "path": "elixir/same-functions-should-be-grouped-together.md",
    "chars": 1047,
    "preview": "# Same Functions Should Be Grouped Together\n\nA favorite feature of Elixir is the function clauses that can be defined in"
  },
  {
    "path": "elixir/skip-a-specific-test.md",
    "chars": 530,
    "preview": "# Skip A Specific Test\n\nElixir's `ExUnit` supports all kinds of tags for customizing the behavior of\nyour test suite. Th"
  },
  {
    "path": "elixir/string-interpolation-with-just-about-anything.md",
    "chars": 933,
    "preview": "# String Interpolation With Just About Anything\n\nComing to Elixir from Ruby, I am used to being able to interpolate lite"
  },
  {
    "path": "elixir/unique-indexes-with-ecto.md",
    "chars": 748,
    "preview": "# Unique Indexes With Ecto\n\nYou can create a unique index in a migration for one or more columns using\nthe\n[`unique_inde"
  },
  {
    "path": "elixir/updating-values-in-a-map.md",
    "chars": 1369,
    "preview": "# Updating Values In A Map\n\nWhen working with maps in any language, you often need a way to update\nkey-value pairs. Furt"
  },
  {
    "path": "elixir/using-when-clauses-in-a-with-construct.md",
    "chars": 662,
    "preview": "# Using When Clauses In A With Construct\n\nBecause Elixir's `with` construct supports the full power of the language's\npa"
  },
  {
    "path": "elixir/virtual-fields-with-ecto-schemas.md",
    "chars": 1135,
    "preview": "# Virtual Fields With Ecto Schemas\n\nIf you'd like to include a particular key-value pair in an Ecto changeset,\nit needs "
  },
  {
    "path": "elixir/when-things-dont-match-the-with-statements.md",
    "chars": 971,
    "preview": "# When Things Don't Match The With Statements\n\nYou set up a series of match statements in a `with` construct as a way of"
  },
  {
    "path": "elixir/word-lists-for-atoms.md",
    "chars": 710,
    "preview": "# Word Lists For Atoms\n\nThe `~w` sigil works similarly to Ruby's `%w` (word array notation). It\nallows you to create a l"
  },
  {
    "path": "gatsby/add-javascript-to-body-of-the-document.md",
    "chars": 1059,
    "preview": "# Add JavaScript To Body Of The Document\n\nSometimes your JavaScript script tag needs to be placed in the body of the\ndoc"
  },
  {
    "path": "git/accessing-a-lost-commit.md",
    "chars": 483,
    "preview": "# Accessing A Lost Commit\n\nIf you have lost track of a recent commit (perhaps you did a reset), you\ncan generally still "
  },
  {
    "path": "git/add-a-range-of-filenames-to-gitignore.md",
    "chars": 1235,
    "preview": "# Add A Range Of Filenames To gitignore\n\nThe `.gitignore` file is a file where you can list files that should be ignored"
  },
  {
    "path": "git/add-only-tracked-files-from-a-directory.md",
    "chars": 1025,
    "preview": "# Add Only Tracked Files From A Directory\n\nThe two extremes of staging files in a git repo are to either selectively pic"
  },
  {
    "path": "git/amend-author-of-previous-commit.md",
    "chars": 287,
    "preview": "# Amend Author Of Previous Commit\n\nThe author of the previous commit can be amended with the following command\n\n```bash\n"
  },
  {
    "path": "git/auto-squash-those-fixup-commits.md",
    "chars": 967,
    "preview": "# Auto-Squash Those Fixup Commits\n\nAs a fan of [atomic commits](https://dev.to/jbranchaud/atomic-commits-4hk2), I\nsometi"
  },
  {
    "path": "git/better-diffs-with-delta.md",
    "chars": 1255,
    "preview": "# Better Diffs With Delta\n\nA `git diff` from the command line is relatively bare bones. It shows you\nremoved lines and a"
  },
  {
    "path": "git/caching-credentials.md",
    "chars": 737,
    "preview": "# Caching Credentials\n\nWhen public key authentication isn't an option, you may find yourself typing\nyour password over a"
  },
  {
    "path": "git/change-the-start-point-of-a-branch.md",
    "chars": 807,
    "preview": "# Change The Start Point Of A Branch\n\nMore than a few times I have checked out a new branch against, say, `develop`\nwhen"
  },
  {
    "path": "git/check-how-a-file-is-being-ignored.md",
    "chars": 990,
    "preview": "# Check How A File Is Being Ignored\n\nThere are a few places on your machine where you can specify the files that git\nsho"
  },
  {
    "path": "git/check-if-a-file-has-changed-in-a-script.md",
    "chars": 1462,
    "preview": "# Check If A File Has Changed In A Script\n\nIf I'm at the command line and I want to check if a file has changed, I can r"
  },
  {
    "path": "git/check-if-a-file-is-under-version-control.md",
    "chars": 1373,
    "preview": "# Check If A File Is Under Version Control\n\nThe `git ls-files` command can be used with the `--error-unmatch` flag to ch"
  },
  {
    "path": "git/checking-commit-ancestry.md",
    "chars": 1045,
    "preview": "# Checking Commit Ancestry\n\nI have two commit shas and I want to know if the first is an ancestor of the\nsecond. Put ano"
  },
  {
    "path": "git/checkout-old-version-of-a-file.md",
    "chars": 460,
    "preview": "# Checkout Old Version Of A File\n\nWhen you want to return to a past version of a file, you can reset to a past\ncommit. W"
  },
  {
    "path": "git/checkout-previous-branch.md",
    "chars": 432,
    "preview": "# Checkout Previous Branch\n\nGit makes it easy to checkout the last branch you were on.\n\n```bash\n$ git checkout -\n```\n\nTh"
  },
  {
    "path": "git/cherry-pick-a-range-of-commits.md",
    "chars": 590,
    "preview": "# Cherry Pick A Range Of Commits\n\nGit's `cherry-pick` command allows you to specify a range of commits to be\ncherry pick"
  },
  {
    "path": "git/cherry-pick-multiple-commits-at-once.md",
    "chars": 1387,
    "preview": "# Cherry Pick Multiple Commits At Once\n\nI've always thought of `git cherry-pick` as being a command that you can run\naga"
  },
  {
    "path": "git/clean-out-all-local-branches.md",
    "chars": 616,
    "preview": "# Clean Out All Local Branches\n\nSometimes a project can get to a point where there are so many local\nbranches that delet"
  },
  {
    "path": "git/clean-out-working-copy-with-patched-restore.md",
    "chars": 941,
    "preview": "# Clean Out Working Copy With Patched Restore\n\nI sometimes let the working copy of my projects get a little messy. The w"
  },
  {
    "path": "git/clean-up-old-remote-tracking-references.md",
    "chars": 624,
    "preview": "# Clean Up Old Remote Tracking References\n\nAfter working on a Git-versioned project for a while, you may find that\nthere"
  }
]

// ... and 1568 more files (download for full content)

About this extraction

This page contains the full source code of the jbranchaud/til GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1768 files (1.7 MB), approximately 521.5k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!