Learn. Every. Day.
This collection of Today I Learned snippets contains details of tools or techniques which are intended to save time, improve productivity, and help others.
527 TILs and counting...
- AWS
- Azure
- Blockchain
- DevOps
- Docker
- DotNet
- Gatsby
- Git
- Gradle
- Integration
- Java
- JavaScript
- Kafka
- Kubernetes
- Linux
- Mac
- MQTT
- Nginx
- Nodejs
- Office
- Postgres
- Python
- React Native
- React
- Redis
- Security
- Spring
- Swift
- Terraform
- TypeScript
- VS Code
- Web
- Windows
- Xcode
- Cloud Adoption Framework
- Cloud Migration Strategies
- CloudFront Origin Access Identity
- CloudFront Request Geo Restrictions
- Install AWS CLI On MacOS
- Install AWS CLI On Windows
- Create An ECR Repository
- Penetration Testing On AWS
- S3 Buckets And Directories
- S3 Bucket Naming Conventions
- S3 Configure Bucket Object Expiry
- S3 Deleting Buckets and Objects
- S3 Object Expiry
- S3 Storage Classes
- S3 Working With Buckets
- Well-Architected Framework
- What Is OpenSearch
- Activate An Azure PIM Group
- Assign Roles Using The Azure CLI
- Azure App Service Plans
- Azure Integration Services
- Azure Storage Types
- Change The Route Prefix For An Azure Function
- Create A Resource Group Using The Azure CLI
- Create an Azure APIM Subscription
- Delete Resources Using The Azure CLI
- Find Resources By Type Using The Azure CLI
- Enable CORS In Azure Static Web Apps
- Extract Values From Azure CLI Output
- Get Azure Tenant ID
- Install Azure CLI On MacOS
- Install Azure CLI On Windows
- List Azure Regions Using The Azure CLI
- List Resource Groups Using The Azure CLI
- List Role Assignments Using The Azure CLI
- List Role Definitions Using The Azure CLI
- List Service Principals Using The Azure CLI
- List Tags Using The Azure CLI
- Policies In Azure APIM
- Protect Azure Resources Using Locks
- Return JSON In An Azure Function
- Show App Service Linux Runtimes
- Switch To A Specific Azure Subscription
- What Is Azure App Service
- What Is Azure ExpressRoute
- What Is Azure Static Web Apps
- Ethereum Node Types
- Get An Ethereum Account Balance
- Get Current Ethereum Gas Price
- Setup An IPFS Node
- Solidity Function Modifiers
- The Blockchain Trilemma
- What Is Ganache
- What Is IPFS
- What Is The Account-Based Model
- What Is The UTXO Model
- What Is Web3js
- Add A Data Source To Grafana
- Connect To LocalStack Using The AWS CLI
- Deploy A React App To GitHub Pages
- Install And Start LocalStack
- Install Grafana Using Docker
- Install Prometheus Using Docker
- Show GitHub Workflow Status Using A Badge
- Container Network Configuration
- Container Will Not Start
- Create A Swarm
- Create An Image
- Delete Unused Containers
- Docker Desktop Licensing And Pricing
- Execute Commands In A Running Container
- Exposing Ports
- Find Container Vulnerabilities Using Docker Scout
- Generate A Software Bill of Materials
- Install Docker On Ubuntu
- Install Podman On MacOS
- Log In To Docker Hub From The Command Line
- Manage Sensitive Data With Secrets
- Pause And Unpause A Container
- Placement Constraints With Swarm
- Nginx Network Resolver
- Show Version For An Ubuntu Docker Image
- Start And Stop A Container
- Store Data With Volumes
- What Is A Docker Digest
- Change Favicon
- Create A Gatsby Site
- Deploy A Gatsby Site To Netlify
- Make Content Crawlable
- Search Engine Optimisation
- Set Nodejs Version On Netlify
- Track Outbound Links
- Track Usage With Google Analytics
- Using Custom Fonts
- Add An SSH Key To GitHub
- Change Default Init Branch Name
- Command Line Git Tutorial
- Configure Git Settings
- Create A Global Gitignore On MacOS
- Create A Global Gitignore On Windows
- Create Release Notes Using Git
- Delete The Last Commit
- Naming Branches
- Improve Productivity Using Aliases
- List Commits On A Branch
- Setup A Repository
- Unstage Files
- Working With Branches
- Undoing Changes
- Update GitHub RSA SSH Host Key
- Clear Gradle Cache
- Ensure All JUnit Tests Are Running
- Execute Multi-Project Builds
- Install Gradle On MacOS
- List Project Dependencies
- Skip Tests During Builds
- Generate Client Libraries From An OpenAPI Spec
- Generate REST API Documentation With Redoc
- Generate TypeScript Types From An OpenAPI Spec
- Topics Versus Queues
- What Is CloudEvents
- Add JAXB Dependencies
- Alternatives To The Oracle JDK
- Check If A String Value Is Numeric
- Decompile An APK File
- Execute Java Source Files As Scripts
- Flyway Migration Naming Conventions
- Import A Certificate Into The KeyStore
- Install Java On MacOS
- Java Licensing Policy
- JVM Thread Dumps On Linux
- JVM Thread Dumps On Windows
- List Certificates In The Keystore
- Override Field Names In JSON Payloads
- Reduce Boilerplate Code With Lombok
- Run Unit Tests Faster
- Validate A UUID String In Java
- What Are Virtual Threads
- What Is A Record
- What Is GraalVM
- Calculate Seconds Between Dates
- Encode Or Decode A Base64 String
- Filter A JSON Array
- Generate A UUID
- Get Index For A JSON Array Item
- Get Random Value From An Array
- Get Unique Values From A JSON Array
- Handle Key Press Events
- Immutability With Immer
- Iterate An Array
- Measure JavaScript Execution Time
- Container States In Kubernetes
- Control Plane Services
- Install MicroK8s on Linux
- Lifecycle Of A Kubernetes Pod
- List Kubernetes API Services
- Services That Run On A Kubernetes Node
- Show Installed Version Of Kubernetes
- Supported Kubernetes Container Runtimes
- What Is A Pod
- Windows Workloads In Kubernetes
- Benchmark Disk Write Performance On Linux
- Calculate SHA Hash From The Command Line
- Curl Showing HTTP Headers
- Disable GUI Desktop On Raspberry Pi OS
- Display Environment Variables
- Forward Traffic Over An SSH Tunnel
- Get The Time It Takes To Run A Command
- Get Weather Information From The Command Line
- Grep Find In Files
- Install A Root Certificate
- Install Raspberry Pi OS
- Install Snap On Linux
- Install Ubuntu Linux Updates
- Lock And Unlock User Accounts
- Password Maintenance
- Perform A DNS Lookup
- Print From The Command Line
- Query System Details
- Run A Command Every N Seconds
- Run Commands In The Background
- Schedule Jobs With Crontab
- Set Timezone
- Show CPU Load
- Show Disk Input Output
- Show Free Disk Space
- Show Timestamps In Bash History
- Terminate A User Session
- What Is Snap
- Automate Applications Using AppleScript
- Benchmark Disk Write Performance On MacOS
- Bind To Active Directory
- Bulk Convert Image Format And Size
- Bulk Rename Files
- Clear Safari Cache For A Specific Website
- Convert A Video To A GIF
- Convert HEIC Images To Another Format
- Copy To Your Clipboard From The Command Line
- Create A Bootable USB Installer For MacOS
- Determine File Type Or Encoding
- Encrypt A Zip File
- Encrypt Your Disk
- Excessive Xcode Disk Usage
- Extract Pages From A PDF
- Find Which Process Is Using A Port
- Follow Symbolic Links
- Format A USB Disk From The Command Line
- Get Battery Status From The Command Line
- Get Computer Name
- Get CPU Core Count Details
- Get CPU Temperature And Thermal Information
- Get Process ID By Name
- Install A PKG File Silently
- Install Command Line Tools
- Install Ruby Using RVM
- Jump To A Location In Finder
- Launch Applications From The Command Line
- Launch Finder From The Command Line
- Loop Through Photos
- MacBook Will Not Charge
- Manage Cluttered Desktops
- Mount An SD Card
- Password Protect A PDF
- Play Safari Videos Using Picture In Picture
- Prevent A Full Stop From Being Automatically Added
- Prevent Applications From Starting Automatically
- Print From The Command Line
- Remove The Background From An Image
- Reorder Menubar Items
- Reset User Defaults For An Application
- Responsive Design Mode In Safari
- Rotate An Image
- Run Unsigned Applications
- Reclaim Disk Space From Brew
- Send Message From The Command Line
- Show Hidden Display Resolutions
- Show Hidden Files In Finder
- Show Metadata Attributes For A File
- Show Recent Finder Locations
- Show Specific Columns In Top
- Sync The System Clock With An NTP Server
- Take A Screen Recording
- Take A Screenshot
- Update Brew Packages
- Update MacOS Software From The Command Line
- Use Emojis And Symbols
- Use Two Applications Side By Side
- What Are Library Container Directories
- Write IMG File To SD Card From The Command Line
- Enable HTTP Strict Transport Security
- Improve Website Performance Using GZIP
- Hide Version Information
- Monitor Nginx Service Status
- Validate Configuration
- Build For Production
- Check For Outdated Dependencies
- Clean Yarn Cache
- Compile To An Executable
- Convert Markdown To HTML
- Convert Markdown To PDF
- Create Custom Middleware For Express
- Create A Simple HTTP Server
- Create A Simple REST Server
- Find Package Usage With Yarn
- Install Packages Globally With Yarn
- Install PNPM
- Install Yarn
- Log HTTP Requests In Express Using Pino
- Optimise For Performance
- Perform A Vulnerability Audit
- Read A Text File Line By Line
- Run Multiple Commands Concurrently
- Sample Gitignore For A Nodejs Project
- Serve Static Web Content
- Set An NPM Registry For Packages
- Setup A Nodejs Project With TypeScript
- Specifying A Node Version
- Start Node On A Different Port
- Update Package Dependencies With PNPM
- Update Package Dependencies With Yarn
- Update Global Packages With Yarn
- Using Node Version Manager
- Add A Page Watermark In Word
- Automatically Record Teams Meetings
- Change Orientation For Selected Pages In Word
- Configure GPU Acceleration In New Teams
- Count Cells In Excel Matching A Value
- Delayed Sending Of Email Messages In Outlook
- End Meetings Early In Outlook
- Format Superscript Or Subscript Text In Word
- Keyboard Shortcuts For Teams
- New Teams Freezes And Locks Up
- Outlook Email Search Filters
- Password Protect An Excel Workbook
- View Message Headers For Emails In Outlook
- Backup A Database
- Connect To pgAdmin Over SSH
- Create A User Or Role
- Create An Index Without Blocking
- Determine Index Hit Rate
- Determine Table And Index Sizes
- Enable Row Level Security
- Export From A Table Or Query To CSV
- Grant Privileges To A User Or Role
- Hash Join Versus Merge Join
- Improve Query Planner Performance
- List Database Users
- List Databases And Tables Using PSQL
- List Postgres Schemas
- Log Long Running Queries
- Partial Indexes
- Query Across Different Databases
- Restore A Database
- Revoke Privileges From A User Or Role
- Row Level Security Considerations
- Set The Connected Application Name
- Set The Current User
- Show Config File Location
- Show Data Directory
- Show Installed Extensions
- Show The Connected Application Name
- Show The Current User
- Store Passwords Securely
- Terminate A Hanging Query
- Terminate All Queries For A User
- Use Expanded Display In PSQL
- UUIDs As Primary Keys
- Visualise A Postgres Database
- What Is Row Level Security
- Acccess A Flask Application Across A Network
- Count Words In A String
- Create A REST API Using Flask Restful
- Create A Virtual Environment
- Install Python Packages With A Requirements File
- Installing And Upgrading Packages
- Load Environment Variables From A File
- Python Imports Cannot Be Resolved In VSCode
- Add Custom Fonts To Styled Components
- Add Vitest To A React Project
- Add Polyfill Modules For Webpack
- Build For Production
- Change Page Title
- Conditional CSS In Styled Components
- Conditional Rendering In Components
- Create A React App
- Create A React App Using Vite
- Create A React Progressive Web App
- Create A Theme Using Styled Components
- Displaying Child List Elements
- Extending Styled Components
- Get Width Or Height Of Window
- Handle Side Effects In Recoil Atoms
- Listen For Keyboard Events
- Programatically Transfer Focus
- Render Markdown
- Render An SVG
- Render Unicode Characters
- Reset Recoil State
- Specify Supported Browsers
- State Management With Recoil
- Use Absolute Imports With React And TypeScript
- Using SetInterval In React
- Using Styled Components
- Application Crashes
- Application Will Not Start
- Create A React Native App
- Create A React Native For MacOS App
- Disable App Transport Security In iOS
- Enable Hermes On React Native For MacOS
- Functional Components
- Get Unique Device Identifier
- Get Width Or Height Of A Component
- Get Width Or Height Of Device Window
- Remove Launch Screen White Flash
- Render An SVG
- Request Device Permissions
- Run Bundler And Simulator In VSCode
- Toggle Simulator Between Light And Dark Mode
- Unable To Boot Device In Current State
- What Is Hermes
- Basic Pub Sub With Redis
- Configure Data Snapshotting
- Connect With Redis Auth
- Count Items Matching A Search Criteria
- Create An Index In RediSearch
- Expire A Key
- Get Server Info
- List Installed Redis Modules
- List Redis Users And Permissions
- Log Slow Redis Queries
- Measure Redis Latency
- Pattern Matching Pub Sub With Redis
- Working With Keys
- Add An SSH Key
- Check SSL Certificate Expiry Date
- Convert A PCKS12 File To PEM Format
- Detect Open Ports Using Nmap
- Display LDAP SSL Certificate Details
- Display SSL Certificate Details
- Enable Email Privacy Protection On iOS
- Enable Private Relay VPN On iOS
- Encrypt A File
- Generate An SSH Key
- Get MAC Address For Devices On A Network
- Get OpenID Connect Provider Configuration
- Ignore Invalid SSL Certificates With Curl
- List GPG Keys
- List SSH Keys
- OAuth 2.1 Grant Types
- Scan Networks Using Nmap
- Search An LDAP Server
- SSH Key Algorithms
- Three Principles Of Information Security
- Understanding CVSS Scores
- Verify A Checksum
- What is FIDO2
- What is OpenID Connect
- What is PKCE
- What is SCIM
- Add Custom Claims To A JWT
- Create A Spring Project From The Command Line
- Custom HTTP Response Headers
- Custom Servlet Filter
- Custom Spring Boot Startup Banner
- Enable CORS Support
- Generate A QR Code
- Listen For Authentication Events
- OAuth Permission Scopes
- OAuth Token Endpoints
- Spring Boot Application Profiles
- Spring Security OAuth2 Database Schema
- Upgrade From Web Security Configurer Adaptor
- Validating An OAuth Token
- Call Objective-C Code From Swift Code
- Call Swift Code From Objective-C Code
- Convert A Date To A String
- Create A Callback Function
- Customise Window Decoration
- Find Matching Item In An Array
- Format A Date String
- Generate A UUID
- Hide MacOS Storyboard Window On Start
- Open A Browser URL
- Set Badge Icon In The Dock
- Sort An Array
- Use SwiftUI With UIKit Or Cocoa
- Deploy Nginx Locally With Terraform
- Generate A Diagram Of A Terraform Plan
- Install Terraform On MacOS
- Pass Variables To Terraform
- Show Status Of Resources
- Basic Types
- Composing Types
- Constants In TypeScript
- Convert From A Type To String
- Custom Types
- Benefits Of Using TypeScript
- Install TypeScript Compiler Globally
- Linting In TypeScript
- Restrict Values For A String Type
- Create A Dev Containers Project
- Debug A Node Application
- Launch VS Code From The Command Line
- Python Imports Cannot Be Resolved In VS Code
- Use VS Code In A Browser
- Address Bar And Mobile Viewport Sizing
- Commonly Used HTTP Status Codes
- Communicate Between Browser Contexts
- Detect Dark Mode For A Browser
- Determine Browser Capabilities
- Edit Text In A Rendered Web Page
- Enable Experimental Browser Features
- Local Storage and Session Storage
- Numeric Font Weights
- Prevent ChatGPT From Indexing A Web Site
- Support Dark Mode With CSS Media Queries
- Using JSON Data With Local Storage
- View Browser Network Requests
- What Are Core Web Vitals
- What Is QUIC
- Airpods Volume Is Too Loud On Teams
- Convert JSON To CSV Using PowerShell
- Configure SSH Agent To Automatically Start
- Count Characters Lines and Words In A File
- Create An Empty File Using PowerShell
- Display Service Status Using PowerShell
- Enable Focus Assist
- Find Which Process Is Using A Port
- Forward Traffic Over Netsh
- Get The First N Lines Of A File
- Get Weather Information From The Command Line
- Install An MSI Package Silently
- Install OpenSSH On Windows
- Install WSL
- List Running Processes Using PowerShell
- Move A Window Or Dialog Using The Cursor
- Open An Elevated Command Prompt
- Resize An Image Using The Photos Application
- Send An HTTP Request Using PowerShell
- Shorten Display Time For On Screen Volume Control
- Show Command History In PowerShell
- Shutdown A WSL Instance
- SSH Into WSL From Another Machine
- Take A Screenshot
- Uninstall An MSI Package Silently
- Unlock Windows Using Facial Recognition
- Upgrade PowerShell
- Use An Apple Magic Mouse With Windows
- Ad Hoc iOS App Distribution
- Add A Simulator Device
- Change Region For A Simulator Device
- Connect A Menu Item To Code
- Create A Custom URL Scheme
- Change Refresh Key Mapping In iOS Simulator
- Hide An Application Dock Icon And Main Window
- Install Xcode Manually
- No Such Module XCTest
- Pass Arguments To Command Line Apps In Xcode
- Record iOS Simulator
- Setup MITMProxy For A Simulator Device
- Show The Simulator When Developing
- Show Web Inspector For A Simulator Device
- Xcode Updates Are Slow To Install
This collection was inspired by Josh Branchaud jbranchaud/til.
© 2020 - 2023 Greg Smith
This repository is licensed under the MIT license. See LICENSE
for details.