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™ and pairing with smart people at Hashrocket.
For a steady stream of TILs, sign up for my newsletter.
1289 TILs and counting...
- Ack
 - Amplify
 - Ansible
 - Chrome
 - Clojure
 - CSS
 - Deno
 - Devops
 - Elixir
 - Gatsby
 - Git
 - GitHub Actions
 - Go
 - GROQ
 - Heroku
 - HTML
 - HTTP
 - Internet
 - JavaScript
 - jq
 - Kitty
 - Linux
 - Mac
 - MongoDB
 - MySQL
 - Neovim
 - Netlify
 - Next.js
 - Phoenix
 - Planetscale
 - pnpm
 - PostgreSQL
 - Prisma
 - Python
 - Rails
 - React
 - React Native
 - React Testing Library
 - ReasonML
 - Remix
 - RSpec
 - Ruby
 - sed
 - Shell
 - Streaming
 - Tailwind CSS
 - tmux
 - TypeScript
 - Unix
 - Vercel
 - Vim
 - VSCode
 - Webpack
 - Workflow
 - XState
 - YAML
 - Zod
 
- Access A Value Logged To The Console
 - Chrome Supports Many Unix Keyboard Shortcuts
 - Copy Some Data From The Console
 - Duplicate The Current Tab
 - Easier Access To Network Throttling Controls
 - Keybinding To Focus The Address Bar
 - Pause JavaScript From The Source DevTools Panel
 - Navigate The Browser History With Vimium
 - Pretty Print Tabular Data
 - Reference The Selected Node
 - Selecting DOM Elements Faster Than Ever
 - Simulating Various Connection Speeds
 - Toggle Device Mode
 - Toggle Open The Console Drawer
 - View Network Traffic For New Tabs
 
- Aggregation Using merge-with
 - Argument Requirements For A Function
 - Combinations Of Items From A Sequence
 - Define Something Only Once
 - Evaluate One Liners With lein-exec
 - Expanding Macros
 - Get The Value Of An Environment Variable
 - List Functions For A Namespace
 - Load A File Into The REPL
 - Mapping With An Index
 - Open JavaDocs
 - Pretty Print The Last Thing
 - Quick Clojure Docs
 - Reductions
 - Set Max Heap Size
 - Specify the Directory of a Shell Command
 - Splitting On Whitespace
 - Swap Two Items in a Vector
 - Try A Clojure Project In The REPL
 - Type of Anything
 - When Overflow Is Desired
 
- Add Fab Icons To Your Site With FontAwesome 5
 - Animate Smoothly Between Two Background Colors
 - Apply Multiple Box Shadows To Single Element
 - Apply Styles Based On Dark-Mode Preferences
 - Apply Styles To The Last Child Of A Specific Type
 - Change The Orientation Of An Image
 - Circular Icons With A Massive Border Radius
 - Clean Up Repetition With :is() Pseudo-Class
 - Conditional Styling For Unsupported CSS Features
 - Create A Pulsing Background With CSS Animation
 - Define CSS Custom Properties With CSS Variables
 - Define HSL Colors With Alpha Values
 - Display Responsive iframe Maintaining Aspect Ratio
 - Dry Up SCSS With Mixins
 - Give Elements The Same Width With Flexbox
 - Let Pointer Events Pass Through An Element
 - Lighten And Darken With CSS Brightness Filter
 - Lighten And Darken With SCSS
 - Make A Block Of Text Respect New Lines
 - Parameterized SCSS Mixins
 - :root Has Higher Specificity Than html
 - Style A Background With A Linear Gradient
 - Using Maps In SCSS
 
- Aliasing An Ansible Host
 - Allow Cross-Origin Requests To Include Cookies
 - Allow HTTPS Through Your UFW Firewall
 - Check For Cached Site Assocation File For iOS
 - Check The Status of All Services
 - Check The Syntax Of nginx Files
 - Connect To An RDS PostgreSQL Database
 - Determine The IP Address Of A Domain
 - Path Of The Packets
 - Push Non-master Branch To Heroku
 - Reload The nginx Configuration
 - Resolve The Public IP Of A URL
 - Running Out Of inode Space
 - SSH Into A Docker Container
 - SSL Certificates Can Cover Multiple Domains
 - Wipe A Heroku Postgres Database
 
- All Values For A Key In A Keyword List
 - Append To A Keyword List
 - Assert An Exception Is Raised
 - Binary Representation Of A String
 - Check For A Substring Match
 - Check List Membership
 - Comparing DateTime Structs
 - Compute Intermediate Values In A With Construct
 - Compute md5 Digest Of A String
 - Counting Records With Ecto
 - Create A Date With The Date Sigil
 - Create A List Of Atoms
 - Creating A PID
 - Creating Indexes With Ecto
 - Defining Multiple Clauses In An Anonymous Function
 - Determine The Latest Release Of A Hex Package
 - Do You Have The Time?
 - Do You Have The Time? - Part 2
 - Documentation Lookup With Vim And Alchemist
 - Dynamically Generating Atoms
 - Execute Raw SQL In An Ecto Migration
 - Expose Internal Representation
 - Include Captures With String.split
 - Inspecting The Process Message Queue
 - List Functions For A Module
 - Listing Files In IEx
 - Match On A Map In A With Construct
 - Passing Around And Using Modules
 - Pattern Matching In Anonymous Functions
 - Pipe Into A Case Statement
 - Quitting IEx
 - Range Into List Using Comprehensions
 - Refer To A Module Within Itself
 - Referencing Values In IEx's History
 - Remove One List From Another
 - Replace Duplicates In A Keyword List
 - Requiring Keys For Structs
 - Reversing A List
 - Reversing A List - Part 2
 - Root Directory Of A Project
 - Round Floats To Integers
 - Run ExUnit Tests In A Deterministic Order
 - Run The Test At A Specific Line Number
 - Same Functions Should Be Grouped Together
 - Skip A Specific Test
 - String Interpolation With Just About Anything
 - Unique Indexes With Ecto
 - Updating Values In A Map
 - Using When Clauses In A With Construct
 - Virtual Fields With Ecto Schemas
 - When Things Don't Match The With Statements
 - Word Lists For Atoms
 
- Accessing a Lost Commit
 - Add A Range Of Filename To gitignore
 - Amend Author Of Previous Commit
 - Auto-Squash Those Fixup Commits
 - Caching Credentials
 - Change The Start Point Of A Branch
 - Checking Commit Ancestry
 - Checkout Old Version Of A File
 - Checkout Previous Branch
 - Cherry Pick A Range Of Commits
 - Clean Out All Local Branches
 - Clean Out Working Copy With Patched Restore
 - Clean Up Old Remote Tracking References
 - Clone A Repo Just For The Files, Without History
 - Clone A Repo Locally From .git
 - Configure Global gitignore File
 - Configuring The Pager
 - Copy A File From Another Branch
 - Create A New Branch With Git Switch
 - Delete All Untracked Files
 - Determine The Hash Id For A Blob
 - Diffing With Patience
 - Dropping Commits With Git Rebase
 - Dry Runs in Git
 - Exclude A File From A Diff Output
 - Excluding Files Locally
 - Find And Remove Files That Match A Name
 - Find The Date That A File Was Added To The Repo
 - Find The Initial Commit
 - Get The Name Of The Current Branch
 - Get The Short Version Of The Latest Commit
 - Grab A Single File From A Stash
 - Grep For A Pattern On Another Branch
 - Grep Over Commit Messages
 - Ignore Changes To A Tracked File
 - Ignore Files Specific To Your Workflow
 - Include A Message With Your Stashed Changes
 - Include Or Exclude Remaining Patch Changes
 - Include Some Stats In Your Git Log
 - Intent To Add
 - Interactively Unstage Changes
 - Last Commit A File Appeared In
 - List All Files Changed Between Two Branches
 - List Branches That Contain A Commit
 - List Commits On A Branch
 - List Different Commits Between Two Branches
 - List Filenames Without The Diffs
 - List Just The Files Involved In A Commit
 - List Most Git Commands
 - List Untracked Files
 - List Untracked Files For Scripting
 - Move The Latest Commit To A New Branch
 - Pick Specific Changes To Stash
 - Pulling In Changes During An Interactive Rebase
 - Push To A Branch On Another Remote
 - Quicker Commit Fixes With The Fixup Flag
 - Rebase Commits With An Arbitrary Command
 - Reference A Commit Via Commit Message Pattern Matching
 - Rename A Remote
 - Renaming A Branch
 - Resetting A Reset
 - Resolve A Merge Conflict From Stash Pop
 - Review Commits From Before A Certain Date
 - Run A Git Command From Outside The Repo
 - Set A Custom Pager For A Specific Command
 - Shorthand To Force Push A Branch
 - Show All Commits For A File Beyond Renaming
 - Show Changes For Files That Match A Pattern
 - Show Changes In The Compose Commit Message View
 - Show File Diffs When Viewing Git Log
 - Show List Of Most Recently Committed Branches
 - Show Only Commits That Touch Specific Lines
 - Show The diffstat Summary Of A Commit
 - Show The Good And The Bad With Git Bisect
 - Show What Is In A Stash
 - Single Key Presses in Interactive Mode
 - Skip A Bad Commit When Bisecting
 - Skip Pre-Commit Hooks
 - Staging Changes Within Vim
 - Staging Stashes Interactively
 - Stash A Single Untracked File
 - Stash Everything
 - Stashing Only Unstaged Changes
 - Stashing Untracked Files
 - Switch To A Recent Branch With FZF
 - Transition A Branch From One Base To Another
 - Turn Off The Output Pager For One Command
 - Two Kinds Of Dotted Range Notation
 - Unstage Changes Wih Git Restore
 - Untrack A Directory Of Files Without Deleting
 - Untrack A File Without Deleting It
 - Update The URL Of A Remote
 - Using Commands With A Relative Date Format
 - Verbose Commit Message
 - Viewing A File On Another Branch
 - What Changed?
 - What Is The Current Branch?
 - Whitespace Warnings
 
- Access Go Docs Offline
 - Build For A Specific OS And Architecture
 - Not So Random
 - Replace The Current Process With An External Command
 - Sleep For A Duration
 - Upgrading From An Older Version On Mac
 
- Grab Multiple Values From A Reference
 - Grab Values From An Array Of References
 - Include Attributes When Conditional Check Passes
 - Include Type Of Operation In Webhook Response
 
- Deploy A Review App To A Different Stack
 - Diagnose Problems In A Heroku Postgres Database
 - Set And Show Heroku Env Variables
 - SSH Into Heroku Server Hosting App
 
- Adding Alt Text To An Image
 - Determine Which Button Submitted The Form
 - Disable Auto-Completion For A Form Input
 - Prevent Search Engines From Indexing A Page
 - Render Text As Superscript
 - Submit A Form With A Button Outside The Form
 
- Add Emoji To GitHub Repository Description
 - Enable Keyboard Shortcuts In Gmail
 - Exclude Whitespace Changes From GitHub Diffs
 - Figure Out Your Public IP Address
 - Focus The URL Bar
 - Get Random Images From Unsplash
 - Search Tweets By Author
 - Show All Pivotal Stories With Blockers
 
- Accessing Arguments To A Function
 - Basic Date Formatting Without A Library
 - Character Codes from Keyboard Listeners
 - Check Classes On A DOM Element
 - Check If A Number Is Positive Or Negative
 - Check If File Exists Before Reading It
 - Check If Something Is An Array
 - Check The Password Confirmation With Yup
 - Compare The Equality Of Two Date Objects
 - Computed Property Names In ES6
 - Conditionally Include Pairs In An Object
 - Configure Jest To Run A Test Setup File
 - Create A Cancelable Promise With PCancelable
 - Create An Array Containing 1 To N
 - Create An Object With No Properties
 - Create Bootstrapped Apps With Yarn
 - Create Future And Past Dates From Today
 - Custom Type Checking Error Messages With Yup
 - Default And Named Exports From The Same Module
 - Define A Custom Jest Matcher
 - Destructure With Access To Nested Value And Parent Value;
 - Destructuring The Rest Of An Array
 - Enable ES7 Transforms With react-rails
 - Ensure Shell Can Find Global npm Binaries
 - Easy Date Comparison With DayJS
 - Expand Emojis With The Spread Operator
 - Fill An Input With A Ton Of Text
 - Find The Version Of An Installed Dependency
 - Find Where Yarn Is Installing Binaries
 - for...in Iterates Over Object Properties
 - Formatting Values With Units For Display
 - Freeze An Object, Sorta
 - Generate A V4 UUID In The Browser
 - Generate Random Integers
 - Get The Location And Size Of An Element
 - Get The Response Status From An Axios Error
 - Get The Time Zone Of The Client Computer
 - Globally Install A Package With Yarn
 - Globally Install Specific Version Of PNPM
 - Immutable Remove With The Spread Operator
 - Initialize A New JavaScript Project With Yarn
 - Install The Latest Version Of Node With Nvm
 - Interpolate A String Into A Regex
 - ISO-8601 Formatted Dates Are Interpreted As UTC
 - Link A JavaScript Package Locally
 - List Top-Level NPM Dependencies
 - Make The Browser Editable With Design Mode
 - Matching A Computed Property In Function Args
 - Matching Multiple Values In A Switch Statement
 - Mock A Function With Return Values Using Jest
 - New Dates Can Take Out Of Bounds Values
 - Numbers Are Empty
 - Object Initialization With Shorthand Property Names
 - Obtain Undefined Value With The Void Operator
 - Parse A Date From A Timestamp
 - Pre And Post Hooks For Yarn Scripts
 - Purge Null And Undefined Values From Object
 - Random Cannot Be Seeded
 - Reach Into An Object For Nested Data With Get
 - Render An Array Of Elements With React 16
 - Resolve And Pass Multiple Values From A Then
 - Running ES6 Specs With Mocha
 - Scoping Variables With A Block Statement
 - Sleep For A Bit In Async Code
 - Sorting Arrays Of Objects With Lodash
 - Splat Arguments To A Function
 - Spread Merging Objects Includes Nil Values
 - Spread The Rest With ES6
 - Start Node Process In Specific Timezone
 - String Interpolation With Template Literals
 - Support Nested Matching In Custom Jest Matchers
 - Tell Jest To Focus On Running Only One Test
 - Tell Prettier To Not Format A Statement
 - Test Coverage Stats With Jest
 - Test Timing-Based Code With Jest Fake Timers
 - The Comma Operator
 - Throttling A Function Call
 - Timing Processes
 - Transforming ES6 and JSX With Babel 6
 - Truthiness of Integer Arrays
 - Turn An HTMLCollection Into An Array
 - Turn Off Console Error Messages In A Test
 - Waiting On Multiple Promises
 - Who Am I: NPM Edition
 - Write A JavaScript Object To A JSON File
 - Yarn Commands Without The Emojis
 - Yup Schemas Are Validated Asynchronously
 
- Count Each Collection In A JSON Object
 - Count The Number Of Things In A JSON File
 - Extract A List Of Values
 - Find All Objects With A Matching Key Value Pair
 - Reduce Object To Just Entries Of A Specific Type
 
- Check Ubuntu Version
 - Configure Your Server Timezone
 - List The Statuses Of All Upstart Jobs
 - Show Current System Time And Settings
 - Upgrading Ubuntu
 
- Access All Screen And Video Capture Options
 - Access System Information On OS X
 - Access Unsupported Screen Resolutions With RDM
 - Clean Up Old Homebrew Files
 - Convert An HEIC Image File To JPG
 - Default Screenshot Location
 - Disable Swipe Navigation For A Specific App
 - Display A Message With Alfred
 - Find The Process Using A Specific Port
 - Gesture For Viewing All Windows Of Current App
 - Insert A Non-Breaking Space Character
 - List All The Say Voices
 - Open Finder.app To Specific Directory
 - Quickly Type En Dashes And Em Dashes
 - Require Additional JS Libraries In Postman
 - Resize App Windows With AppleScript
 - Resizing Both Corners Of A Window
 - Run A Hardware Check
 - Run AppleScript Commands Inline In The Terminal
 - Set A Window To Its Default Zoom Level
 - Specify App When Opening From Command Line
 - Use Default Screenshot Shortcuts With CleanShot X
 - View All Windows Of The Current App
 
- Determine The Database Version
 - Dump A Remote Database
 - Dump And Restore With A Single gzip File
 - Get Size Stats For A Collection
 - List Size Stats For All Collections
 
- Change Existing Column To Not Null
 - Default Username And Password For New Instance
 - Display Output In A Vertical Format
 - Doing Date Math
 - Dump A Database To A File
 - List Databases And Tables
 - Show Create Statement For A Table
 - Show Tables That Match A Pattern
 - Show Indexes For A Table
 
- Allow Neovim To Copy/Paste With System Clipboard
 - Create User Command To Open Init Config
 - Run A Lua Statement From The Command Prompt
 - Set Up Vim-Plug With Neovim
 
- Create Files And Directories For Dynamic Routes
 - Define URL Redirects In The Next Config
 - Make Environment Variable Publicly Available
 - Push A Route With A URL Object
 - Remove A Query Param From The URL
 - Ship Public Assets With A Next.js App
 
- Bypass Template Rendering
 - Check The Installed Version
 - Generate New App Without Brunch
 - Render A Template To A String
 - Serve Static Assets From Custom Directory
 - Specifying The Digest Directory
 - Specifying The Server Port
 
- A Better Null Display Character
 - Add Foreign Key Constraint Without A Full Lock
 - Add ON DELETE CASCADE To Foreign Key Constraint
 - Adding Composite Uniqueness Constraints
 - Aggregate A Column Into An Array
 - Assumed Radius Of The Earth
 - Auto Expanded Display
 - Between Symmetric
 - Capitalize All The Words
 - Change The Current Directory For psql
 - Check If The Local Server Is Running
 - Check If User Role Exists For Database
 - Check Table For Any Oprhaned Records
 - Checking Inequality
 - Checking The Type Of A Value
 - Clear The Screen In psql
 - Clear The Screen In psql (2)
 - Compute Hashes With pgcrypto
 - Compute The Levenshtein Distance Of Two Strings
 - Compute The md5 Hash Of A String
 - Configure The Timezone
 - Constructing A Range Of Dates
 - Convert A String To A Timestamp
 - Count How Many Records There Are Of Each Type
 - Count Records By Type
 - Count The Number Of Trues In An Aggregate Query
 - Create A Composite Primary Key
 - Create A Table From The Structure Of Another
 - Create An Index Without Locking The Table
 - Create Database Uses Template1
 - Create hstore From Two Arrays
 - Create Table Adds A Data Type
 - Creating Conditional Constraints
 - Creating Custom Types
 - Day Of Week By Name For A Date
 - Day Of Week For A Date
 - Default Schema
 - Defining Arrays
 - Determine Types Of JSONB Records
 - Determining The Age Of Things
 - Difference Between Explain And Explain Analyze
 - Dump All Databases To A SQL File
 - Dump And Restore A Database
 - Dump The SQL Needed To Recreate A Table
 - Duplicate A Local Database
 - Edit Existing Functions
 - Enable Logging Of Database Activity
 - Escaping A Quote In A String
 - Escaping String Literals With Dollar Quoting
 - Export Query Results To A CSV
 - Extracting Nested JSON Data
 - Find Duplicate Records In Table Without Unique Id
 - Find Records That Contain Duplicate Values
 - Find Records That Have Multiple Associated Records
 - Find The Data Directory
 - Find The Location Of Postgres Config Files
 - Fizzbuzz With Common Table Expressions
 - Force SSL When Making A psql Connection
 - Generate A UUID
 - Generate Random UUIDs Without An Extension
 - Generate Series Of Numbers
 - Generating UUIDs With pgcrypto
 - Get A Quick Approximate Count Of A Table
 - Get The Size On Disk of An Index
 - Get The Size Of A Database
 - Get The Size Of A Table
 - Get The Size Of An Index
 - Getting A Slice Of An Array
 - Group By The Result Of A Function Call
 - Idempotent Inserts
 - Include All Queries In The Log File
 - Include Multiple Tables In A pg_dump
 - Insert A Bunch Of Records With Generate Series
 - Insert Just The Defaults
 - Inspect Progress Of Long-Running Create Index
 - Install Postgres With uuid-ossp Using asdf
 - Integers In Postgres
 - Intervals Of Time By Week
 - Is It Null Or Not Null?
 - Label Dollar-Quoted Strings With A Tag
 - Limit Execution Time Of Statements
 - List All Columns Of A Specific Type
 - List All Rows In A Table
 - List All The Databases
 - List All Versions Of A Function
 - List Available Schemas
 - List Connections To A Database
 - List Databases Available For Connecting
 - List Database Objects With Disk Usage
 - List Database Users
 - List Various Kinds Of Objects
 - Lower Is Faster Than ilike
 - Max Identifier Length Is 63 Bytes
 - Open Heroku Database In Postico From Terminal
 - pg Prefix Is Reserved For System Schemas
 - Prepare, Execute, And Deallocate Statements
 - Pretty Print Data Sizes
 - Pretty Printing JSONB Rows
 - Prevent A Query From Running Too Long
 - Print The Query Buffer In psql
 - Remove Not Null Constraint From A Column
 - Renaming A Sequence
 - Renaming A Table
 - Restart A Sequence
 - Restarting Sequences When Truncating Tables
 - Salt And Hash A Password With pgcrypto
 - Send A Command To psql
 - Set Inclusion With hstore
 - Set A Seed For The Random Number Generator
 - Set A Statement Timeout Threshold For A Session
 - Sets With The Values Command
 - Shorthand Absolute Value Operator
 - Show All Versions Of An Operator
 - Show The Hidden Queries Behind Backslash Commands
 - Sleeping
 - Special Math Operators
 - Storing Emails With citext
 - String Contains Another String
 - Switch Non-Castable Column Type With Using Clause
 - Switch The Running Postgres Server Version
 - Temporarily Disable Triggers
 - Temporary Tables
 - Terminating A Connection
 - The nullif Function
 - Timestamp Functions
 - Toggling The Pager In PSQL
 - Track psql History Separately Per Database
 - Truncate All Rows
 - Truncate Tables With Dependents
 - Turning Timing On
 - Two Ways To Compute Factorial
 - Two Ways To Escape A Quote In A String
 - Types By Category
 - Union All Rows Including Duplicates
 - Use A psqlrc File For Common Settings
 - Use Argument Indexes
 - Use Not Valid To Immediately Enforce A Constraint
 - Use Rename To Hot Swap Two Tables
 - Using Expressions In Indexes
 - Using Intervals To Offset Time
 - Who Is The Current User
 - Word Count for a Column
 - Write A Query Result To File
 
- Apply Separate Formatting With A Blank Line
 - Execute A Raw SQL Query
 - Grab A Limited Set Of Records
 - Specify Alternate Location For Prisma Schema
 
- Add A Check Constraint To A Table
 - Add A Foreign Key Reference To A Table
 - Add A Reference Column With An Index
 - Add ActiveRecord Error Not Tied To Any Attribute
 - Add React With Webpacker To A New Rails App
 - Add timestamptz Columns With The Migration DSL
 - Access Secrets In A Rails 5.2 App
 - ActiveRecord Query For This Or That
 - Advance The Date
 - Allow List Params Anywhere With Strong Params
 - All or Nothing Database Transactions
 - Alphabetize Schema Columns To Keep Them Consistent
 - Assert Two Arrays Have The Same Items With RSpec
 - Attach A File With Capybara
 - Attribute Getter without the Recursion
 - Attribute Was
 - Autosave False On ActiveRecord Associations
 - Bind Parameters To ActiveRecord SQL Query
 - Build A Hash Of Model Attributes
 - Capture Development Emails With Mailhog
 - Capybara Page Status Code
 - Cast Common Boolean-Like Values To Booleans
 - Change The Nullability Of A Column
 - Change The Time Zone Offset Of A DateTime Object
 - Check If ActiveRecord Update Fails
 - Check If Any Records Have A Null Value
 - Check Specific Attributes On ActiveRecord Array
 - Code Statistics For An Application
 - Columns With Default Values Are Nil On Create
 - Comparing DateTimes Down To Second Precision
 - Conditional Class Selectors in Haml
 - Convert A Symbol To A Constant
 - Count The Number Of Records By Attribute
 - Create A Custom Named References Column
 - Create A Join Table With The Migration DSL
 - Creating Records of Has_One Associations
 - Custom Validation Message
 - Customize Paths And Helpers For Devise Routes
 - Customize The Path Of A Resource Route
 - Delete Paranoid Records
 - Demodulize A Class Name
 - Different Ways To Add A Foreign Key Reference
 - Disambiguate Where In A Joined Relation
 - Ensure A Rake Task Cannot Write Data
 - Ensure Migrations Use The Latest Schema
 - Find Or Create A Record With FactoryBot
 - Find Records With Multiple Associated Records
 - Force All Users To Sign Out
 - Generating And Executing SQL
 - Get A Quick Approximate Count Of A Large Table
 - Get ActiveRecord Attribute Directly From Database
 - Get An Array Of Values From The Database
 - Get An Empty ActiveRecord Relation
 - Get Help With A Rails App Update
 - Get The Column Names For A Model
 - Get The Current Time
 - Grab A Random Record From The Database
 - Handle Named Arguments In A Rake Task
 - Hash Slicing
 - Ignore Poltergeist JavaScript Errors
 - Include Devise Helpers In Your Controller Tests
 - Inspect Previous Changes To ActiveRecord Object
 - Link To The Current Page With Query Params
 - List All Installable Rails Versions
 - List The Enqueued Jobs
 - Load A File When Starting Rails Console
 - Load Records In Batches With find_each
 - Log SQL Queries Executed By ActiveRecord
 - Mark A Migration As Irreversible
 - Make ActionMailer Synchronous In Test
 - Make Remove Column Migration Reversible
 - Manually Run A Migration From Rails Console
 - Mark For Destruction
 - Mask An ActiveRecord Attribute
 - Merge A Scope Into An ActiveRecord Query
 - Migrating Up Down Up
 - Order Matters For 
rescue_fromBlocks - Params Includes Submission Button Info
 - Parse Query Params From A URL
 - Perform SQL Explain With ActiveRecord
 - Polymorphic Path Helpers
 - Pretend Generations
 - Prevent Writes With A Sandboxed Rails Console
 - Query A Single Value From The Database
 - Read In Environment-Specific Config Values
 - Read-Only Models
 - Remove A Database Column From A Table
 - Remove The Default Value On A Column
 - Render An Alternative ActionMailer Template
 - Render The Response Body In Controller Specs
 - Replace An Index With A Unique Index
 - Rescue From
 - Rescue From With A Separate Method
 - Respond With JSON Regardless of Content Type
 - Retrieve An Object If It Exists
 - Rollback A Specific Migration Out Of Order
 - Rounding Numbers With Precision
 - Run A Rake Task Programmatically
 - Run Some Code Whenever Rails Console Starts
 - Schedule Sidekiq Jobs Out Into The Future
 - Secure Passwords With Rails And Bcrypt
 - Select A Select By Selector
 - Select Value For SQL Counts
 - Serialize With fast_jsonapi In A Rails App
 - Set A Timestamp Field To The Current Time
 - Set default_url_options For Entire Application
 - Set Schema Search Path
 - Set Statement Timeout For All Postgres Connections
 - Set The Default Development Port
 - Show Pending Migrations
 - Show Rails Models With Pry
 - Show Rails Routes With Pry
 - Skip Validations When Creating A Record
 - Specify New Attributes For #find_or_create_by
 - Temporarily Disable strong_params
 - Test For A Subset Of Attributes On A Model
 - Test If An Instance Variable Was Assigned
 - Test If deliver_later Is Called For A Mailer
 - Test Out URL And Path Helpers In The Console
 - Truncate Almost All Tables
 - Update Column Versus Update Attribute
 - Upgrading Your Manifest For Sprocket's 4
 - Use IRB And Ruby Flags With Rails Console
 - Verify And Read A Signed Cookie Value
 - Where Am I In The Partial Iteration?
 - Why Redirect And Return In Controllers
 - Wipe Out All Precompiled Assets
 - Write Reversible Migration To Set Default
 - Write Safer Where Clauses With Placeholders
 
- A Component Is Just A Bag Of Data
 - Access The Latest Lifecycle Methods In An Old App
 - Accessing Env Vars In create-react-app
 - Accessing Location Within @reach/router
 - Allow md As An Extension With gatsby-mdx
 - Alter The Display Name Of A Component
 - Building A React App In The Browser
 - Check The Type Of A Child Component
 - Conditionally Including Event Handler Functions
 - Create A Snowpack-Bundled React App
 - Create Dynamically Named Custom React Components
 - create-react-app Comes With Lodash
 - create-react-app Has A Default Test Setup File
 - CSS !important Is Not Supported By Inline Styles
 - Debug Jest Tests In create-react-app
 - Defining State In A Simple Class Component
 - Destructure Variables As Props To A Component
 - Details Tags Are A Controllable Component
 - Dispatch Anywhere With Redux
 - Dynamically Add Props To A Child Component
 - Dynamically Create HTML Elements
 - Enforce Specific Values With PropTypes
 - Focus An Input With useRef Hook
 - Force A Component To Only Have One Child
 - Forcing A Child Remount With The Key Prop
 - Formik Connected Components
 - Formik's Validation Schema As A Function
 - Inactive And Active Component Styles With Radium
 - Inline Style Attributes Should Be Camel Cased
 - Manage State In A Functional Component
 - Mapping Over One Or Many Children
 - Mock A Function That A Component Imports
 - Navigate With State Via @reach/router
 - Pairing A Callback With A useState Hook
 - Pass A Function To A useState Updater
 - Passing Props Down To React-Router Route
 - Prevent reach/router Redirect Error Screen In Dev
 - Proxy To An API Server In Development With CRA
 - Quickly Search For A Component With React DevTools
 - @reach/router Renders To A Div
 - Read Only Input Elements
 - Rendering Multiple Nodes With Fragments
 - Set The Type For A useState Hook
 - Specifying Dependencies Of A useEffect Hook
 - Spelunking Through Components With Enzyme's Dive
 - Sync Your react-router State With Redux
 - Test Files In create-react-app
 - Test That Element Does Not Render In The Component
 - Trigger Effect Only When The Component Mounts
 - Update Formik Initial Values When Props Change
 - Upgrading To The Latest React In CodeSandbox
 - Use A Ref To Autofocus An Input
 - Use React 16 With Gatsby
 - Use withRouter To Pass Down React-Router History
 - Visually Select A React Element For Inspection
 - Who Is Your Favorite Child?
 - Wrap The Root Of A Gatsby App In A Component
 
- Check That A Component Renders As Null
 - findBy* Queries Have Async Built In
 - Pretty Print Some DOM To Debug A Test
 - Test A Component That Uses React Portals
 
- Break Out Of A While Loop
 - Compile Reason To Native With Dune
 - Compile Reason With An OCaml Package Using Dune
 - Create A Map Of Strings
 - Create A Stream From An Array
 - Creating A 2D Array
 - Data Structures With Self-Referential Types
 - Defining Variants With Constructor Arguments
 - Dynamically Create A Printf String Format
 - Exhaustive Pattern Matching Of List Variants
 - Format The Current File Within Vim
 - Generate A Native ReasonML Project With Pesy
 - Generate Starter Reason Projects
 - Helping The Compiler Help Us With Variants
 - Inline Component Styles With Reason React
 - Is This A Directory Or A File?
 - Making Things Mutable
 - Modifying A String With blit_string
 - Multi-Argument Functions As Syntactic Sugar
 - Pattern Match On Exceptions
 - Quickly Bootstrap A React App Using Reason
 - Seeding And Generating Random Integers
 - Stream A File Line By Line
 - String Interpolation With Integers And Sprintf
 - String Interpolation With Quoted Strings
 - Trying Out ReasonML In CodeSandbox
 - Two Ways To Find An Item In A List
 - Using Optional Labeled Function Arguments
 - Wrapping A Component For Use In JavaScript
 
- Get Query Params From The Request URL
 - Markdown And MDX Files Are Rendered To Routes
 - Relative And Absolute Paths In Links
 - Run The Development Server From Another Port
 - Set The Title Of A Page
 
- Check Specific Arguments To Received Method
 - Find Minimal Set Of Tests Causing A Flicker
 - Run Tests With Documentation Formatting
 - Use Specific Cache Store In A Single Test
 
- A Basic Case Statement
 - A Shorthand For Rerunning Failed Tests With RSpec
 - Add Comments To Regex With Free-Spacing
 - Add Linux As A Bundler Platform
 - Are They All True?
 - Assert About An Object's Attributes With RSpec
 - Assoc For Hashes
 - Block Comments
 - Build HTTP And HTTPS URLs
 - Chaining Multiple RSpec Change Matchers
 - Check For Any Overlaps In List Of Ranges
 - Check If An Object Includes A Module
 - Check Return Status Of Running A Shell Command
 - Click On Text With Capybara
 - Colorful Output With MiniTest
 - Comparing Class Hierarchy Relationships
 - Comparing Arrays In RSpec
 - Construct A Constant From A String
 - Convert A Unix Epoch Timestamp To A Time Object
 - Create an Array of Stringed Numbers
 - Create a CSV::Table Object
 - Create A Hash From An Array Of Arrays
 - Create Listing Of All Middleman Pages
 - Create Named Structs With Struct.new
 - Create Thumbnail Image For A PDF
 - Defaulting To Frozen String Literals
 - Define A Custom RSpec Matcher
 - Define A Method On A Struct
 - Destructure The First Item From An Array
 - Destructuring Arrays In Blocks
 - Disassemble Some Codes
 - Double Splat To Merge Hashes
 - Edit Previous Parts Of The Pry Buffer History
 - Editing Code In Pry
 - Encode A String As URL-Safe Base64
 - Enumerate A Pairing Of Every Two Sequential Items
 - Evaluating One-Off Commands
 - Exclude Values From An Array
 - Exit A Process With An Error Message
 - Expect A Method To Be Called And Actually Call It
 - Extract A Column Of Data From A CSV File
 - FactoryGirl Sequences
 - Fail
 - Fetch Warns About Superseding Block Argument
 - Find The Min And Max With A Single Call
 - Finding The Source of Ruby Methods
 - Generate A Signed JWT Token
 - Generate Ruby Version And Gemset Files With RVM
 - Get Info About Your RubyGems Environment
 - Get The Output Of Running A System Program
 - Identify Outdated Gems
 - If You Detect None
 - Iterate With An Offset Index
 - Include Extra Context In A Honeybadger Notify
 - Ins And Outs Of Pry
 - Invoking Rake Tasks Multiple Times
 - IRB Has Built-In Benchmarking With Ruby 3
 - Jump Out Of A Nested Context With Throw/Catch
 - Last Raised Exception In The Call Stack
 - Limit Split
 - List The Running Ruby Version
 - Listing Local Variables
 - Make An Executable Ruby Script
 - Map With Index Over An Array
 - Mock Method Chain Calls With RSpec
 - Mocking Requests With Partial URIs Using Regex
 - Named Regex Captures Are Assigned To Variables
 - Navigate Back In The Browser With Capybara
 - Next And Previous Floats
 - Or Operator Precedence
 - Override The Initial Sequence Value
 - Parallel Bundle Install
 - Parse JSON Into An OpenStruct
 - Parsing A CSV With Quotes In The Data
 - Pass A Block To Count
 - Passing Arbitrary Methods As Blocks
 - Passing Arguments To A Rake Task
 - Pattern Match Values From A Hash
 - Percent Notation
 - Precedence Of Logical Operators
 - Question Mark Operator
 - Rake Only Lists Tasks With Descriptions
 - Read The First Line From A File
 - Rendering ERB
 - Replace The Current Process With An External Command
 - Require Entire Gemfile In Pry Session
 - Rerun Only Failures With RSpec
 - Retry A Block After An Exception
 - Returning With Sequel
 - rexml Is A Bundled Gem As Of Ruby 3.0.0
 - Run An Older Version Of Bundler
 - Running A Single MiniTest Example
 - Safe Navigation Operator
 - Scripting With RVM
 - Scroll To Top Of Page With Capybara
 - Set RVM Default Ruby
 - Show Public Methods With Pry
 - Silence The Output Of A Ruby Statement In Pry
 - Single And Double Quoted String Notation
 - Skip Specific CVEs When Auditing Your Bundle
 - Specify Dependencies For A Rake Task
 - Split A Float Into Its Integer And Decimal
 - Squeeze Out The Extra Space
 - String Interpolation With Instance Variables
 - Summing Collections
 - Triple Equals: The Case Equality Operator
 - Turn Key And Value Arrays Into A Hash
 - Turning Any Class Into An Enumerator
 - Turning Things Into Hashes
 - Uncaught Exceptions In Pry
 undef_methodAnd The Inheritance Hierarchy- Uninstall Specific Version Of A Ruby Gem
 - Unpacking Strings Into Binary
 - Up And Down With Integers
 - Update The Gemfile Bundled With Version
 - Use A Case Statement As A Cond Statement
 - Use dotenv In A Non-Rails Project
 - Use Tap For Better Test Data Setup
 - Using BCrypt To Create And Check Hashed Passwords
 - What To Do When You Don't Rescue
 - Who Are My Ancestors?
 - Wrap Things In An Array, Even Hashes
 - Zero Padding
 
- Apply Multiple Substitutions To The Input
 - Equivalence Classes Of Repetition MetaChars
 - Extract Value From Command Output With Sed
 - Grab All The Method Names Defined In A Ruby File
 - Grab The First Line Of A File
 - OSX sed Does Regex A Bit Different
 - Output Only Lines Involved In A Substitution
 - Reference A Capture In The Regex
 - Use An Alternative Delimiter In A Substitution
 
- Base Styles For Text Link
 - Specify Paths For Purging Unused CSS
 - Use Tailwind Typography Prose In Dark Mode
 
- Access Past Copy Buffer History
 - Adjusting Window Pane Size
 - Break Current Pane Out To Separate Window
 - Change Base Directory Of Existing Session
 - Change The Default Prefix Key
 - Create A Named tmux Session
 - Create A New Session In A New Server
 - Cycle Through Layouts
 - Display Titles For Each Pane In A Window
 - Enabling Vi Mode
 - Get Mouse Copy/Paste Working In Kitty
 - Hiding The Status Bar
 - Jumping Between Sessions
 - Kill All Your tmux Sessions
 - Kill Other Connections To A Session
 - Kill The Current Session
 - List All Key Bindings
 - List Sessions
 - Open New Window With A Specific Directory
 - Organizing Windows
 - Paging Up And Down
 - Pane Killer
 - Reclaiming The Entire Window
 - Remove The Delay On The Escape Key
 - Rename The Current Session
 - Reset An Option Back To Its Default Value
 - Set Environment Variables When Creating Session
 - Set Session Specific Environment Variables
 - Show The Current Value For An Option
 - Swap Split Panes
 - Switch To A Specific Session And Window
 - tmux in your tmux
 - Toggle Between Two Common Sessions
 
- Add Types To An Object Destructuring
 - Compiler Checks For Unused Params And Variables
 - Create A Non-Empty Array Type
 - Create A Union Type From An Array
 - Create Union Type From Constants
 - Extract Object Type Keys Into A Union Type
 - Extract Object Type Values Into A Union Type
 - Generate Inferred Type From Zod Schema
 - Get The Return Type Of An Async Function
 - Interfaces With The Same Name Are Merged
 - Narrow The Type Of An Array To Its Values
 - Re-Export An Imported Type
 - Type Narrowing With Const VS Let Strings
 - Type Narrowing With Similarly Shaped Objects
 - Type Promise Results With The Awaited Type
 - Use An Array Check For Type Narrowing
 - Zero-Config Environments For Trying Out Types
 
- All The Environment Variables
 - Cat A File With Line Numbers
 - Cat Files With Color Using Bat
 - Change Default Shell For A User
 - Change To That New Directory
 - Check If A Port Is In Use
 - Check If Command Is Executable Before Using
 - Check The Current Working Directory
 - Clear The Screen
 - Command Line Length Limitations
 - Compare Two Variables In A Bash Script
 - Configure cd To Behave Like pushd In Zsh
 - Copying File Contents To System Paste Buffer
 - Copying Nested Directories With Ditto
 - Count The Number Of Matches In A Grep
 - Create A File Descriptor with Process Substitution
 - Create A Sequence Of Values With A Step
 - Curl With Cookies
 - Curling For Headers
 - Curling With Basic Auth Credentials
 - Different Ways To Generate A v4 UUID
 - Display All The Terminal Colors
 - Display Free Disk Space
 - Display The Contents Of A Directory As A Tree
 - Do A Dry Run Of An rsync
 - Do Not Overwrite Existing Files
 - Enable Multi-Select Of Results With fzf
 - Exclude A Command From The ZSH History File
 - Exclude A Directory With Find
 - Exclude Certain Files From An rsync Run
 - Figure Out The Week Of The Year From The Terminal
 - File Type Info With File
 - Find All Files Matching A Name With fd
 - Find A File Installed By Brew
 - Find Files With fd
 - Find Newer Files
 - Fix Unlinked Node Binaries With asdf
 - Forward Multiple Ports Over SSH
 - Generate A SAML Key And Certificate Pair
 - Get Matching Filenames As Output From Grep
 - Get The Unix Timestamp
 - Global Substitution On The Previous Command
 - Globbing For All Directories In Zsh
 - Globbing For Filenames In Zsh
 - Grep For Files Without A Match
 - Grep For Files With Multiple Matches
 - Grep For Multiple Patterns
 - Hexdump A Compiled File
 - Ignore A Directory During ripgrep Search
 - Ignore The Alias When Running A Command
 - Interactively Browse Available Node Versions
 - Jump To The Ends Of Your Shell History
 - Kill Everything Running On A Certain Port
 - Killing A Frozen SSH Session
 - Last Argument Of The Last Command
 - Less With Style
 - List All The Enabled ZSH Options
 - List All Users
 - List Files Ordered By Modification Date
 - List Names Of Files With Matches
 - List Of Sessions To A Machine
 - List Parent pid With ps
 - List Stats For A File
 - List The Available JDKs
 - List The Stack Of Remembered Directories
 - Map A Domain To localhost
 - Occupy A Local Port With Netcat
 - Only Show The Matches
 - Open The Current Command In An Editor
 - Partial String Matching In Bash Scripts
 - PID Of The Current Shell
 - Print A Range Of Lines For A File With Bat
 - Print Out Files In Reverse
 - Provide A Fallback Value For Unset Parameter
 - Remove A Directory Called 
-p - Repeat Yourself
 - Safely Edit The Sudoers File With Vim
 - Saying Yes
 - Search Files Specific To A Language
 - Search History
 - Search Man Page Descriptions
 - Securely Remove Files
 - Set The asdf Package Version For A Single Shell
 - Show A File Preview When Searching With FZF
 - Show Disk Usage For The Current Directory
 - Show The Size Of Everything In A Directory
 - Skip Paging If Output Fits On Screen With Less
 - SSH Escape Sequences
 - SSH With Port Forwarding
 - Specify The Language For A File With Bat
 - Sort In Numerical Order
 - Switch Versions of a Brew Formula
 - Touch Access And Modify Times Individually
 - Undo Some Command Line Editing
 - Update Package Versions Known By asdf Plugin
 - Use fzf To Change Directories
 - Use Regex Pattern Matching With Grep
 - View A Web Page In The Terminal
 - Watch The Difference
 - Watch This Run Repeatedly
 - Where Are The Binaries?
 
- Add Web Server Layer Redirects
 - Deploy An App Without Pushing An Empty Commit
 - Naming Of The Vercel Config File
 - Pin Specific pnpm Version For Builds
 - Share Development Environment Variables Via CLI
 
- Aborting Git Commits And Rebases
 - Absolute And Relative Line Numbers
 - Add A File Without Loading It
 - Add Custom Dictionary Words
 - All The Ways To Write And Quit In Vim
 - Almost The End Of The Line
 - Alternate Files With vim-rails
 - Always Keep The Gutter Open
 - Amend Commits With Fugitive
 - Backspace Options
 - Beginning And End Of Previous Change
 - The Black Hole Register
 - Blank Lines Above And Below
 - Breaking The Undo Sequence
 - Buffer Time Travel
 - Build And Install A Go Program
 - Case-Aware Substitution With vim-abolish
 - Case-Insensitive Substitution
 - Center The Cursor
 - Check For An Executable
 - Check Your Current Color Scheme
 - Clear Out The Jump List
 - Close All Other Splits
 - Close All Other Windows
 - Close the Current Buffer
 - Coerce The Current Filetype
 - Coercing Casing With vim-abolish
 - Configure FZF To Use fd For File Finding
 - Count the Number of Matches
 - Create A New Directory In netrw
 - Create A New File In A New Directory
 - Creating Non-Existent Directories
 - Default netrw To Tree Liststyle
 - Delete Every Other Line
 - Delete Lines That Match A Pattern
 - Delete To The End Of The Line
 - Deleting Buffers In BufExplorer
 - Deleting Directories Of Files From netrw
 - Detect If You Are On A Mac
 - Difference Between :wq and :x
 - Display Word Count Stats
 - Edges Of The Selection
 - Edit A File At A Specific Line Number
 - Edit A File Starting On The Last Line
 - End Of The Word
 - Escaping Terminal-Mode In An Nvim Terminal
 - Filter Lines Through An External Program
 - Find The Nth Character Position In A File
 - Fix The Spelling Of A Word
 - Fold A Visual Selection And Expand It Back
 - For When That Escape Key Is Hard To Reach
 - Format Long Lines To Text Width
 - From Ruby Variables To JavaScript Variables
 - Generate and Edit Rails Migration
 - Get The pid Of The Session
 - Go Back To The Previous Window
 - Go To File With Line Number
 - Grepping Through The Vim Help Files
 - Head of File Name
 - Help For Non-Normal Mode Features
 - Highlighting Search Matches
 - Horizontal to Vertical and Back Again
 - Increment All The Numbers
 - Incremental Searching
 - Interact With The Alternate File
 - Interactive Buffer List
 - Joining Lines Together
 - Jump Back To The Latest Jump Position
 - Jump Between And Stage Git Hunks With Fugitive
 - Jump To Matching Pair
 - Jump To The Next Misspelling
 - List All Buffers
 - List autocmds Configured For The Current Buffer
 - List Of Plugins
 - Load A Directory Of Files Into The Buffer List
 - Make Directories For The Current File
 - Marks Across Vim Sessions
 - Match The Beginning And End Of Words
 - Moving To A Specific Line
 - Navigate To The Nth Column On A Line
 - Navigating By Blank Lines
 - NETRW Listing Styles
 - Next Modified Buffer
 - Normal Node Binding To Just Quit
 - Open A Tag In A Split Window
 - Open an Unnamed Buffer
 - Open FZF Result In A Split
 - Open Routes File With vim-rails
 - Open The Directory Of The Current File
 - Open The Fugitive Git Summary Window
 - Open The Gemfile
 - Open The Latest Rails Migration
 - Open The Selected Lines In GitHub With Gbrowse
 - Open Vim To A Tag Definition
 - Opening a URL
 - Opening Man Pages In Vim
 - Paste A Register From Insert Mode
 - Preventing Typos with Abbreviations
 - Previous Buffer
 - Previous Visual Selection
 - Print The Relative Path Of The Current File
 - Print Version Information
 - Quick File Info
 - Quick Man Pages
 - Quick Quickfix List Navigation
 - Quickly Fix A Misspelled Word
 - Quickly Switch To A Buffer By Number
 - Quit When There Is An Argument List
 - Re-indenting Your Code
 - Read In The Contents Of A Rails File
 - Rename A File Through netrw
 - Rename Current File
 - Repeat The Previous Change
 - Repeating Characters
 - Replace A Character
 - Reset Target tslime Pane
 - Reverse A Group Of Lines
 - Rotate Everything By 13 Letters
 - Rotate The Orientation Of Split Windows
 - Running Bundle With vim-bundler
 - Scrolling Relative to the Cursor
 - Search Backward Through A File
 - Searching For Hex Digits
 - Select Several Results From An FZF Search
 - Set End Of Line Markers
 - Set Your Color Scheme
 - Setting Filetype With Modelines
 - Show All Syntax Highlighting Rules
 - Show Matching Entries For Help
 - Specify The Line Height Of The Quick Fix Window
 - Split Different
 - Split The Current Window
 - Splitting For New Files
 - Source Original vimrc When Using Neovim
 - Swap Occurrences Of Two Words
 - Swapping Split Windows
 - Swap The Position Of Two Split Windows
 - Tabs To Spaces
 - The Vim Info File
 - Toggle Absolute And Relative Paths In BufExplorer
 - Toggling Syntax Highlighting
 - Turning Off Search Highlighting
 - Unloading A Buffer
 - Use Active Window With BufExplorer
 - Use The Terminal Inside A Vim Session
 - Using vim-surround With A Visual Selection
 - Verbose Commits With Fugitive
 - View Commit History of a File
 - View The Current File In GitHub
 - Viewing Man Pages with man.vim
 - Vim Without The Extras
 - What Is On The Runtime Path?
 - Whole Line Auto-Completion
 - Wrap With Some Room
 
- Add The VSCode CLI To Your Path
 - Advance Through Search Results
 - Enable Breadcrumbs For Version 1.26 Release
 - Open An Integrated Terminal Window
 - Toggle Between Terminals
 
- Better Module Imports With Aliases
 - Debugging With Full Source Maps
 - Run ESLint As A Preloader
 - Specify Port Of CRA's Webpack Dev Server
 - Use A Specific Config File
 
- Change Window Name In iTerm
 - Convert An ePub Document To PDF On Mac
 - Create A Public URL For A Local Server
 - Enable Dev Tools For Safari
 - Forward Stripe Events To Local Server
 - Get Your Public IP Address
 - Import A Github Project Into CodeSandbox
 - Interactively Kill A Process With fkill
 - Open Slack's Keyboard Shortcuts Reference Panel
 - Prune The Excess From node_modules
 - Rotate An Image To Be Oriented Upright
 - Set Recurring Reminders In Slack
 - Toggle Between Stories In Storybook
 - Update asdf Plugins With Latest Package Versions
 - View The PR For The Current GitHub Branch
 
- Always Use Inline Functions With Assign
 - Custom Jest Matcher For XState Machine States
 - Define Event That Does Internal Self Transition
 - Events Stop Propagating Once Handled
 - Inline Actions vs Actions In Machine Options
 - Make Immediate And Delayed Transitions
 - Simple States And Composite States
 - Start A Machine In A Specific State
 - Use An XState Machine With React
 
- Check If An Object Is Empty With Zod
 - Create A Schema That Matches On Any Object
 - Create Union Type Of Nearly Identical Objects
 - Incorporate Existing Type Into Zod Schema
 
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.
I shamelessly stole this idea from thoughtbot/til.
© 2015-2022 Josh Branchaud
This repository is licensed under the MIT license. See LICENSE for
details.