Top Related Projects
🖥 📊 🕹 🛠 A curated list of command line apps
:link: Some useful websites for programmers.
Master the command line, in one page
A collection of inspiring lists, manuals, cheatsheets, blogs, hacks, one-liners, cli/web tools and more.
Cheatsheets for web development - devhints.io
📚 Collaborative cheatsheets for console commands
Quick Overview
TIL (Today I Learned) is a GitHub repository created by Josh Branchaud to document short, concise write-ups on small things he learns day to day across a variety of languages and technologies. It serves as a knowledge base and quick reference for various programming topics, tools, and techniques.
Pros
- Diverse range of topics covering multiple programming languages and technologies
- Concise and easy-to-understand explanations
- Regularly updated with new content
- Searchable and well-organized structure
Cons
- Some entries may become outdated over time
- Depth of explanations can vary, with some topics covered more thoroughly than others
- Personal nature of the content means it may not cover all aspects of a given topic
- No formal peer review process for accuracy
Getting Started
As this is not a code library but a collection of markdown files, there's no need for installation or setup. To use the TIL repository:
- Visit the GitHub repository: https://github.com/jbranchaud/til
- Browse the folders to find topics of interest
- Click on individual markdown files to read the content
- Use the search function to find specific topics
- Consider starring or forking the repository to keep track of updates
You can also clone the repository locally for offline access:
git clone https://github.com/jbranchaud/til.git
cd til
To contribute your own TILs, you can fork the repository, add your content, and submit a pull request to the original repository.
Competitor Comparisons
🖥 📊 🕹 🛠 A curated list of command line apps
Pros of awesome-cli-apps
- Comprehensive collection of CLI applications across various categories
- Well-organized with clear categorization and descriptions
- Regularly updated with new additions and community contributions
Cons of awesome-cli-apps
- Lacks personal insights or experiences with the listed applications
- No detailed explanations or tutorials on how to use the apps
- May be overwhelming for beginners due to the large number of options
Code comparison
Not applicable, as both repositories are primarily curated lists without significant code samples.
Key differences
til:
- Personal collection of daily learnings
- Focused on various programming topics and technologies
- Provides brief explanations and code snippets for each learning
awesome-cli-apps:
- Curated list of command-line applications
- Covers a wide range of categories (productivity, development, system, etc.)
- Includes links to the applications' repositories or websites
Use cases
til:
- Quick reference for programming concepts and techniques
- Inspiration for continuous learning and knowledge sharing
- Useful for developers looking to expand their skills incrementally
awesome-cli-apps:
- Resource for discovering new command-line tools
- Helpful for developers and power users seeking to enhance their workflow
- Reference for comparing different CLI applications within specific categories
:link: Some useful websites for programmers.
Pros of Best-websites-a-programmer-should-visit
- Comprehensive collection of resources covering various programming topics
- Well-organized into categories, making it easy to find specific information
- Regularly updated with new and relevant websites
Cons of Best-websites-a-programmer-should-visit
- Less focused on specific programming tips and tricks
- May be overwhelming for beginners due to the large number of resources
- Requires external browsing to access the actual content
Code Comparison
While both repositories primarily focus on curating information rather than providing code examples, they differ in their approach to organizing content:
Best-websites-a-programmer-should-visit:
## Index
- [When you get stuck](#when-you-get-stuck)
- [News](#news)
- [Coding practice for beginners](#coding-practice-for-beginners)
til:
# 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.
The Best-websites-a-programmer-should-visit repository uses a table of contents with categories, while til organizes content as individual markdown files for each topic learned.
Both repositories serve as valuable resources for programmers, with Best-websites-a-programmer-should-visit offering a broader range of external resources and til providing more focused, bite-sized pieces of information directly within the repository.
Master the command line, in one page
Pros of the-art-of-command-line
- Comprehensive guide focused specifically on command-line mastery
- Well-organized structure with clear sections for different skill levels
- Includes advanced topics like system debugging and one-liners
Cons of the-art-of-command-line
- Less frequently updated compared to til
- Narrower scope, focusing only on command-line topics
- May be overwhelming for beginners due to its depth
Code Comparison
til:
# Python
- [Convert String to Datetime](python/convert-string-to-datetime.md)
- [Create a Directory If It Does Not Exist](python/create-directory-if-not-exists.md)
- [Encode Query Parameters](python/encode-query-parameters.md)
the-art-of-command-line:
# Print all commands executed in a bash script
bash -x ./my_script.sh
# Find files that have been modified in the last day
find . -mtime -1 -type f -print
The til repository offers a broader range of topics with concise, focused entries, while the-art-of-command-line provides in-depth command-line expertise. til is more frequently updated and easier for beginners to digest, whereas the-art-of-command-line offers a comprehensive resource for mastering command-line skills.
A collection of inspiring lists, manuals, cheatsheets, blogs, hacks, one-liners, cli/web tools and more.
Pros of the-book-of-secret-knowledge
- Comprehensive collection of various tools, techniques, and resources
- Well-organized with clear categories and subcategories
- Includes a wide range of topics beyond just programming
Cons of the-book-of-secret-knowledge
- Less frequent updates compared to til
- May be overwhelming for beginners due to the vast amount of information
- Lacks personal insights or explanations for each entry
Code Comparison
While both repositories primarily focus on knowledge sharing rather than code, til occasionally includes code snippets. For example:
til:
[1, 2, 3].sum # => 6
[1, 2, 3].sum { |n| n * 2 } # => 12
the-book-of-secret-knowledge doesn't typically include code snippets, instead focusing on tool recommendations and command-line examples:
nmap -p- -sV -sS -T4 target
Both repositories serve as valuable resources for developers and IT professionals, but with different approaches. til offers bite-sized, daily learning experiences, while the-book-of-secret-knowledge provides a comprehensive collection of tools and knowledge across various domains.
Cheatsheets for web development - devhints.io
Pros of cheatsheets
- More comprehensive and organized content, covering a wider range of topics
- Better visual presentation with formatted tables and syntax highlighting
- Regularly updated with contributions from multiple users
Cons of cheatsheets
- May be overwhelming for beginners due to the sheer amount of information
- Less focused on personal learning experiences compared to TIL format
- Requires more time to navigate and find specific information
Code comparison
til:
# Git
- [Undo a Git Merge](git/undo-a-git-merge.md)
- [View a File from Another Branch](git/view-a-file-from-another-branch.md)
- [Stage Hunks of Changes](git/stage-hunks-of-changes.md)
cheatsheets:
## Git
### Branches
| Command | Description |
| ------------------------- | -------------------------------------------------------- |
| `git branch` | List all local branches |
| `git branch -r` | List all remote branches |
| `git branch [branch-name]`| Create a new branch |
The code comparison shows that til uses a simple list format for organizing content, while cheatsheets employs formatted tables for better readability and organization of commands and descriptions.
📚 Collaborative cheatsheets for console commands
Pros of tldr
- Larger community-driven project with more contributors and wider coverage of commands
- Structured format for consistent presentation of command examples
- Available in multiple languages, improving accessibility for non-English speakers
Cons of tldr
- Focused solely on command-line tools, limiting the scope of topics covered
- Less personal and potentially less in-depth explanations compared to individual TIL entries
- Stricter contribution guidelines may discourage casual contributors
Code Comparison
tldr example (simplified):
# ls
List directory contents.
- List files one per line:
ls -1
- List all files, including hidden files:
ls -a
- Long format list (permissions, ownership, size, and modification date) of all files:
ls -la
TIL example:
# Use ls to list only directories
To list only directories in the current folder:
ls -d */
This uses the `-d` flag to list directories themselves, not their contents,
and the `*/` pattern to match only directories.
Summary
While tldr focuses on providing concise command-line examples with a structured format and broad language support, TIL offers a more diverse range of topics with personal insights. tldr benefits from a larger community but may lack the depth found in individual TIL entries. The choice between them depends on whether you prefer standardized command references or a variety of programming and technology tips.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
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⢠and pairing with smart people at Hashrocket.
For a steady stream of TILs, sign up for my newsletter.
1541 TILs and counting...
Categories
- Ack
- Amplify
- Ansible
- Astro
- Brew
- Chrome
- Clojure
- CSS
- Deno
- Devops
- Docker
- Drizzle
- Elixir
- Gatsby
- Git
- GitHub Actions
- Go
- GROQ
- Heroku
- HTML
- HTTP
- Inngest
- Internet
- Java
- JavaScript
- jj
- jq
- Kitty
- Linux
- LLM
- Mac
- MongoDB
- MySQL
- Neovim
- Netlify
- NextAuth.js
- Next.js
- Phoenix
- Planetscale
- pnpm
- PostgreSQL
- Prisma
- Python
- Rails
- React
- React Native
- React Testing Library
- ReasonML
- Remix
- RSpec
- Ruby
- sed
- Shell
- SQLite
- Streaming
- Tailwind CSS
- tmux
- TypeScript
- Unix
- Vercel
- Vim
- VSCode
- Webpack
- Workflow
- XState
- YAML
- Zod
- Zsh
Ack
Amplify
Ansible
Astro
Brew
- Configure Brew Environment Variables
- Export List Of Everything Installed By Brew
- List All Services Managed By Brew
Chrome
- 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
- Trigger Commands From The Devtools Command Palette
- View Network Traffic For New Tabs
Clojure
- 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
CSS
- Add Fab Icons To Your Site With FontAwesome 5
- Add Line Numbers To A Code Block With Counter
- 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
Deno
Devops
- 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
Docker
- Configure Different Host And Container Ports
- List Running Docker Containers
- Run A Basic PostgreSQL Server In Docker
Drizzle
- Create bigint Identity Column For Primary Key
- Drizzle Tracks Migrations In A Log Table
- Get Fields For Inserted Row
Elixir
- 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
Gatsby
Git
- Accessing a Lost Commit
- Add A Range Of Filename To gitignore
- Add Only Tracked Files From A Directory
- Amend Author Of Previous Commit
- Auto-Squash Those Fixup Commits
- Better Diffs With Delta
- Caching Credentials
- Change The Start Point Of A Branch
- Check How A File Is Being Ignored
- 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
- Count All Files Of Specific Type Tracked By Git
- 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
- Extend Git With Custom Commands
- Find And Remove Files That Match A Name
- Find The Date That A File Was Added To The Repo
- Find The Initial Commit
- Fix Whitespace Errors Throughout Branch Commits
- Get Latest Commit Timestamp For A File
- 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
- Highlight Extra Whitespace In Diff Output
- 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 Checkout Specific Files From A Stash
- Interactively Unstage Changes
- Keep File Locally With
git rm
- 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
- Override The Global Git Ignore File
- 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
- Remove Untracked Files From A Directory
- 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
- Set Default Branch Name For New Repos
- 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
GitHub Actions
- Cache Playwright Dependencies Across Workflows
- Capture An Output Value For Use In A Later Step
- Disable A Workflow With The gh CLI
- Reference An Encrypted Secret In An Action
- Trigger A Workflow Via An API Call
Go
- Access Go Docs Offline
- Add A Method To A Struct
- Build For A Specific OS And Architecture
- Check If Cobra Flag Was Set
- Combine Two Slices
- Do Something N Times
- Find Executables Installed By Go
- Format Date And Time With Time Constants
- Not So Random
- Parse A String Into Individual Fields
- Parse Flags From CLI Arguments
- Redirect File To Stdin During Delve Debug
- Replace The Current Process With An External Command
- Sleep For A Duration
- Sort Slice In Ascending Or Descending Order
- Upgrading From An Older Version On Mac
GROQ
- 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
Heroku
- Connect To A Database By Color
- Deploy A Review App To A Different Stack
- Diagnose Problems In A Heroku Postgres Database
- Open Dashboard For Specific Add-On
- Run SQL Against Remote Postgres Database
- Set And Show Heroku Env Variables
- SSH Into Heroku Server Hosting App
HTML
- Adding Alt Text To An Image
- Determine Which Button Submitted The Form
- Disable Auto-Completion For A Form Input
- Make Elements Non-Interactive With Inert
- Prevent Search Engines From Indexing A Page
- Render Text As Superscript
- Submit A Form With A Button Outside The Form
HTTP
Inngest
Internet
- Add Emoji To GitHub Repository Description
- Add Styled Alerts To GitHub Markdown Documents
- Analyze Your Website Performance
- Check Your Public IP Address
- Digraph Unicode Characters Have A Titlecase
- Enable Keyboard Shortcuts In Gmail
- Exclude AI Overview From Google Search
- 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
- Verify Site Ownership With DNS Record
Java
- Ensure Resources Always Get Closed
- Install Java On Mac With Brew
- Run A Hello World Program In Eclipse
JavaScript
- Accessing Arguments To A Function
- Add Item To An Array Of References In Sanity
- 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 Media Queries From JavaScript
- 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
- Convert Seconds To Date Object
- 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
- Format A Decimal To A Fixed Number Of Digits
- Format Time Zone Identifier
- 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 Components Of A Date
- 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
- Load And Use Env Var In Node Script
- Make The Browser Editable With Design Mode
- Make Truly Deep Clone With Structured Clone
- 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
- Open Global npm Config File
- Parse A Date From A Timestamp
- Pre And Post Hooks For Yarn Scripts
- Prevent Hidden Element From Flickering On Load
- 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
- Run A Bash Script From A Node Script
- Run Multiple Node Scripts Concurrently
- Running ES6 Specs With Mocha
- Scoping Variables With A Block Statement
- Short Circuit Concurrently When Process Fails
- Show Description Of All npm Config Options
- 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 Node To Treat JS Files As ESM
- 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
- Turn Off npm Funding Message
- 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
jj
jq
- Combine An Array Of Objects Into A Single Object
- Count Each Collection In A JSON Object
- Count The Number Of Things In A JSON File
- Extract A List Of Values
- Filter Out Results Based On List Of Values
- Find All Objects In An Array Where Key Is Set
- Find All Objects With A Matching Key Value Pair
- Get A Slice Of The Ends Of An Array
- Get The First Item For Every Top-Level Key
- Get The Last Item From An Array
- Reduce Object To Just Entries Of A Specific Type
- Turn A List From A Command Into JSON
- Zip Two JSON Files Together Based On Shared ID
Kitty
Linux
- Check Ubuntu Version
- Configure Your Server Timezone
- List The Statuses Of All Upstart Jobs
- Show Current System Time And Settings
- Show Used And Available System Memory
- Upgrading Ubuntu
LLM
Mac
- Access All Screen And Video Capture Options
- Access System Information On OS X
- Access Unsupported Screen Resolutions With RDM
- Check Network Quality Stats From The Command Line
- 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
- Keyboard Shortcuts For Interesting With Text Areas
- 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
- Write System Clipboard To A File
MongoDB
- 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
MySQL
- Change Existing Column To Not Null
- Connect To A Database In Safe Update Mode
- Default Username And Password For New Instance
- Display Output In A Vertical Format
- Doing Date Math
- Dump A Database To A File
- Echo A Message From A SQL File
- Ignore Duplicates When Inserting Records
- List Databases And Tables
- Run Statements In A Transaction
- Select Rows After An Offset
- Set Value On Null JSON Column
- Show Create Statement For A Table
- Show Tables That Match A Pattern
- Show Indexes For A Table
Neovim
- 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
Netlify
NextAuth.js
Next.js
- Avoid Conflicting Files
- Create Files And Directories For Dynamic Routes
- Define URL Redirects In The Next Config
- Fetch Does Not Work In API Serverless Function
- Make Environment Variable Publicly Available
- Match Middleware On Groups Of Paths
- Organize Pages In Route Groups
- Precedence Of Dot Env Files
- Push A Route With A URL Object
- Redirect An Unauthorized User
- Remove A Query Param From The URL
- Ship Public Assets With A Next.js App
Phoenix
- 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
Planetscale
pnpm
- Execute A Command From The Workspace Root
- Install Command Runs For Entire Workspace
- List The Installed Version Of A Specific Package
PostgreSQL
- A Better Null Display Character
- Add Foreign Key Constraint Without A Full Lock
- Add ON DELETE CASCADE To Foreign Key Constraint
- Add Unique Constraint Using Existing Index
- 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
- Change The Owner Of A Sequence
- Check If Clusters Are Upgrade Compatible
- 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
- Concatenate Strings With A Separator
- 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 Cluster In A Specific Data Directory
- Create A Composite Primary Key
- Create A Table From The Structure Of Another
- Create An Index Across Two Columns
- 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
- Different Ways To Define An Interval
- 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
- Enforce Uniqueness On Column Expression
- Escaping A Quote In A String
- Escaping String Literals With Dollar Quoting
- Export Query Results To A CSV
- Extracting Nested JSON Data
- Fetch Specific Number Of Results
- 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 Modern Primary Key Columns
- Generate Random Alphanumeric Identifier
- Generate Random UUIDs Without An Extension
- Generate Series Of Numbers
- Generating UUIDs With pgcrypto
- Get A Quick Approximate Count Of A Table
- Get Row Count For Most Recent Query
- 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 Columns In A Covering Index
- 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
- Manage Major Versions With Brew And Direnv
- Max Identifier Length Is 63 Bytes
- Open Heroku Database In Postico From Terminal
- Output Explain Query Plan In Different Formats
- pg Prefix Is Reserved For System Schemas
- Postgres Does Not Support Unsigned Integers
- 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
- Put Unique Constraint On Generated Column
- 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
- Survey Of User-Defined Ordering Of Records
- Switch Non-Castable Column Type With Using Clause
- Switch The Running Postgres Server Version
- Table Names Are Treated As Lower-Case By Default
- 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 A Trigger To Mirror Inserts To Another Table
- Use Argument Indexes
- Use Not Valid To Immediately Enforce A Constraint
- Use Rename To Hot Swap Two Tables
- Use Variables In An Anonymous Function
- 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
Prisma
- Apply Separate Formatting With A Blank Line
- Batch Insert Records With createMany
- Check If Database And Schema Are Not In Sync
- Configure Client To Log SQL Queries
- Execute A Raw SQL Query
- Grab A Limited Set Of Records
- Open Connections To Multiple Databases
- Override Table Name For Prisma Model
- Specify Alternate Location For Prisma Schema
Python
- Access Instance Variables
- Create A Dummy DataFrame In Pandas
- Dunder Methods
- Override The Boolean Context Of A Class
- Store And Access Immutable Data In A Tuple
- Test A Function With Pytest
- Use pipx To Install End User Apps
Rails
- Add A Check Constraint To A Table
- Add A Database Index If It Does Not Already Exist
- 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 Associations To Be Optional
- Allow List Params Anywhere With Strong Params
- All or Nothing Database Transactions
- Alphabetize Schema Columns To Keep Them Consistent
- Alter The Rails Setup Script
- 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
- Create Table With bigint Id As Primary Key
- Creating Records of Has_One Associations
- Custom Validation Message
- Customize Paths And Helpers For Devise Routes
- Customize The Path Of A Resource Route
- Define The Root Path For The App
- Delete Paranoid Records
- Demodulize A Class Name
- Different Ways To Add A Foreign Key Reference
- Disambiguate Where In A Joined Relation
- Empty find_by Returns First Record
- Ensure A Rake Task Cannot Write Data
- Ensure Migrations Use The Latest Schema
- Ensure Record Saved With after_commit Callback
- Find Or Create A Record With FactoryBot
- Find Records With Multiple Associated Records
- Force All Users To Sign Out
- Generate A Model
- Generate A Rails App From The Main Branch
- 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 Formatted UTC Offset Value
- 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
- Look Up Time Zone Info For Identifier
- Mark A Migration As Irreversible
- Make A String Attribute Easy To Inquire About
- 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
- Mock Rails Environment With An Inquiry Instance
- Order Matters For
rescue_from
Blocks - Params Includes Submission Button Info
- Params Is A Hash With Indifferent Access
- Parse Query Params From A URL
- Parse Request Params In Rack::Attack Block
- Perform SQL Explain With ActiveRecord
- Polymorphic Path Helpers
- Prefer select_all Over execute For Read Queries
- 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 Couple Migrations
- Rollback A Specific Migration Out Of Order
- Rounding Numbers With Precision
- Run A Rake Task Programmatically
- Run Commands With Specific Rails Version
- 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 A Specific Rails Version To Install
- Select Value For SQL Counts
- Serialize With fast_jsonapi In A Rails App
- Set A Timestamp Field To The Current Time
- Set DateTime To Include Time Zone In Migrations
- Set Default As SQL Function In Migration
- 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
- Temporarily Turn Off Pending Migrations Error
- 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
- Useful ActiveSupport Constants For Durations
- Validate Column Data With Check Constraints
- 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
React
- 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
React Native
React Testing Library
- 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
ReasonML
- 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
Remix
- 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
RSpec
- Avoid Accidentally Disabling Pry
- Check Specific Arguments To Received Method
- Configure Tests To Run In Random Order
- Find Minimal Set Of Tests Causing A Flicker
- Format Test Results As A JSON File
- Run Tests With Documentation Formatting
- Use Specific Cache Store In A Single Test
Ruby
- 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
- Add Progress Reporting To Long-Running Script
- Are They All True?
- Assert About An Object's Attributes With RSpec
- Audit Your Ruby Project For Any CVEs
- Assoc For Hashes
- Block Comments
- Block Syntaxes Have Different Precedence
- Build HTTP And HTTPS URLs
- Chaining Multiple RSpec Change Matchers
- Check For Any Overlaps In List Of Ranges
- Check If A URL Resolves To 200
- 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
- Define Multiline Strings With Heredocs
- Destructure The First Item From An Array
- Destructuring Arrays In Blocks
- Disable Interpolation For A Heredoc String
- 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
- Execute Several Commands With Backtick Heredoc
- 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
- Format A Hash Into A String Template
- Forward All Arguments To Another Method
- Gather Positional Arguments In Method Definition
- 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
- Get UTC Offset For Different Time Zones
- 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
- Multi-Line Comments
- Named Regex Captures Are Assigned To Variables
- Navigate Back In The Browser With Capybara
- Next And Previous Floats
- Or Operator Precedence
- Output Bytecode For A Ruby Program
- 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
- Prevent erb_lint From Removing Opening Tags
- Print Data To Formatted Table
- 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
- Return The Thing Being Printed
- 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
- Search For Gem Versions Available To Install
- Set RVM Default Ruby
- Shift The Month On A Date Object
- 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
- Skip The Front Of An Array With Drop
- Specify Dependencies For A Rake Task
- Specify How Random Array#sample Is
- Split A Float Into Its Integer And Decimal
- Squeeze Out The Extra Space
- Stack Heredocs In A Method Call
- 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_method
And 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
sed
- 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
Shell
SQLite
Streaming
Tailwind CSS
- Apply Tailwind Classes To Existing CSS Class
- Base Styles For Text Link
- Specify Paths For Purging Unused CSS
- Use Tailwind Typography Prose In Dark Mode
tmux
- Access Past Copy Buffer History
- Adjusting Window Pane Size
- Break Current Pane Out To Separate Window
- Change Base Directory Of Existing Session
- Change Base Directory Without Detaching
- 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 Splits To The Current Directory
- 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
TypeScript
- Add Generic Typing To An Anonymous Function
- 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 An Initial tsconfig File
- Generate Inferred Type From Zod Schema
- Get The Return Type Of An Async Function
- Ignore All Errors In A TypeScript File
- Interfaces With The Same Name Are Merged
- Narrow The Type Of An Array To Its Values
- Re-Export An Imported Type
- Set Path Alias For Cleaner Imports
- 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
Unix
- 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 Connected Stripe Account Name
- Check If A Port Is In Use
- Check If Command Is Executable Before Using
- Check SSH Key Fingerprints Of Known Hosts
- Check The Current Working Directory
- Check The Installed OpenSSL Version
- Clear The Screen
- Command Line Length Limitations
- Compare Two Variables In A Bash Script
- Configure cd To Behave Like pushd In Zsh
- Convert JPEG To PNG With ffmpeg
- Convert SVG To Favicon
- Copying File Contents To System Paste Buffer
- Copying Nested Directories With Ditto
- Count The Lines In A CSV Where A Column Is Empty
- Count The Number Of Matches In A Grep
- Count The Number Of ripgrep Pattern Matches
- 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
- Download A File With Curl
- 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 All Files With A Specific Extension With fd
- Find Any Dotfiles That Modify Path Env Var
- Find A File Installed By Brew
- Find Duplicate Lines In A File
- Find Files With fd
- Find Newer Files
- Find Occurrences Of Multiple Values With Ripgrep
- Find Top-Level Directories Matching A Pattern
- Fix Unlinked Node Binaries With asdf
- Forward Multiple Ports Over SSH
- Generate A SAML Key And Certificate Pair
- Generate Base64 Encoding Without Newlines
- Generate Random 20-Character Hex String
- Get A List Of Locales On Your System
- Get Matching Filenames As Output From Grep
- Get The SHA256 Hash For A File
- Get The Unix Timestamp
- Global Substitution On The Previous Command
- Globbing For All Directories In Zsh
- Globbing For Filenames In Zsh
- Gracefully Exit A Script With Trap
- 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
- Include Ignore Files In Ripgrep Search
- Interactively Browse Available Node Versions
- Interactively Switch asdf Package 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 In A Single Column
- 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
- List TXT DNS Records For A Domain
- Load Env Vars In Bash Script
- Look Through All Files That Have Been Git Stashed
- Make Direnv Less Noisy
- Map A Domain To localhost
- Negative Look-Ahead Search With ripgrep
- Occupy A Local Port With Netcat
- Only Show The Matches
- Open The Current Command In An Editor
- Output The Last N Bytes Of A Large File
- Partial String Matching In Bash Scripts
- PID Of The Current Shell
- Print A Range Of Lines For A File With Bat
- Print DateTime Represented By Unix Timestamp
- Print Milliseconds In Human-Readable Format
- Print Out Files In Reverse
- Print The Current Date In Human-Readable Format
- Produce A Lowercase V4 UUID
- Provide A Fallback Value For Unset Parameter
- Remove A Directory Called
-p
- Repeat Yourself
- Replace Pattern Across Many Files In A Project
- Run A Command Repeatedly Several Times
- Run A cURL Command Without The Progress Meter
- Safely Edit The Sudoers File With Vim
- Saying Yes
- Search Files Specific To A Language
- Search For Homebrew Packages To Install
- 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
- Tell direnv To Load The Env File
- Touch Access And Modify Times Individually
- Type Fewer Paths With Brace Expansion
- Undo Changes Made To Current Terminal Prompt
- Undo Some Command Line Editing
- Unrestrict Where ripgrep Searches
- 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
- View The Source For A Brew Formula
- Watch The Difference
- Watch This Run Repeatedly
- Where Are The Binaries?
- xargs Default Command Is echo
- xargs Ignores Alias Substitution By Default
Vercel
- 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
Vim
- 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
- Sum A Bunch Of Numbers In The Current File
- Swap Occurrences Of Two Words
- Swapping Split Windows
- Swap The Position Of Two Split Windows
- Switch Moving End Of Visual Selection
- 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
VSCode
- Add The VSCode CLI To Your Path
- Advance Through Search Results
- Enable Breadcrumbs For Version 1.26 Release
- Find The Location Of User Settings JSON File
- Jump To Problems In The Current File
- Open An Integrated Terminal Window
- Pop Open The Quick Fix Window
- Step Through Project-Wide Search Results
- Synchronize Vim Clipboard With System Clipboard
- Toggle Between Terminals
- Turn Off Display Of Tabs For Files
Webpack
- 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
Workflow
- Add Hotkeys For Specific Raycast Extensions
- Add Subscriber To Kit Form Via API
- Add Subtitles To Existing Mux Video Asset
- Access 1Password Credential From CLI
- Allow Key-Repeating With Cursor
- Change Window Name In iTerm
- Configure Email Redirect With Cloudflare
- Convert An ePub Document To PDF On Mac
- Create A Local Sanity Dataset Backup
- Create A Public URL For A Local Server
- Enable Dev Tools For Safari
- Forward Stripe Events To Local Server
- Get URL For GitHub User Profile Photo
- 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
- See Overlaps For A Set Of Time Zones
- Send A Message To A Discord Channel
- 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
XState
- 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
YAML
Zod
- Check If An Object Is Empty With Zod
- Create A Schema That Matches On Any Object
- Create Union Type Of Nearly Identical Objects
- Get Readable Errors From Schema Parse
- Incorporate Existing Type Into Zod Schema
- Set Custom Error Message For Nonempty Array
Zsh
- Add To The Path Via Path Array
- Link A Scalar To An Array
- Use A Space To Exclude Command From History
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 shamelessly stole this idea from thoughtbot/til.
Other TIL Collections
License
© 2015-2022 Josh Branchaud
This repository is licensed under the MIT license. See LICENSE
for
details.
Top Related Projects
🖥 📊 🕹 🛠 A curated list of command line apps
:link: Some useful websites for programmers.
Master the command line, in one page
A collection of inspiring lists, manuals, cheatsheets, blogs, hacks, one-liners, cli/web tools and more.
Cheatsheets for web development - devhints.io
📚 Collaborative cheatsheets for console commands
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot