This is a collection of short notes of the things I have learned on a daily basis while working on different technologies. I share these notes as I learn in public.
113 TILs and counting...
- 2024-01-28: Send analytics data using the Beacon API
- 2024-01-03: TypeScript: ElementRef for React.useRef
- 2024-01-02: Null is a billion-dollar mistake
- 2024-01-01: TypeScript: exactOptionalPropertyTypes
- 2023-12-27: Use Zod to validate File input
- 2023-12-21: Smart App Banners
- 2023-12-18: GPTBot is OpenAI’s web crawler
- 2023-12-10: GitHub Issue Forms
- 2023-12-07: SvelteKit Sync
- 2023-11-21: Recursively delete .DS_Store
- 2023-10-25: Emulate a focused page in DevTools
- 2023-10-11: JavaScript Barrel File
- 2023-09-18: Nginx Nested Locations
- 2023-07-20: Git: push --force-with-lease
- 2023-06-16: Automatically handle
updated_at
column - 2023-06-05: How to Stop All Docker Containers
- 2023-05-04: JavaScript: Tagged Template Literals
- 2023-04-13: EditorConfig Glob Expressions
- 2023-03-23: TypeScript Exact Types
- 2023-03-21: Overriding HTML Attributes in React TypeScript
- 2023-03-17: Show contents of Git stash
- 2023-03-14: Copy a function in JavaScript
- 2023-03-12: Add to previous Git commit
- 2023-03-06: The Mark Text element
- 2023-02-28: Git: Work with multiple accounts
- 2023-02-27: Fetch Response.statusText
- 2023-02-26: Signals
- 2023-02-25: Math.random() vs Crypto.getRandomValue()
- 2023-02-24: Next.js statically typed links
- 2023-02-23: Spread operator clones enumerables properties
- 2023-02-22: CSS.escape()
- 2023-02-21: JavaScript: scrollend event
- 2023-02-20: JavaScript Symbol.iterator
- 2023-02-19: Docker: Copy files from another image
- 2023-02-18: Module Federation
- 2023-02-17: Microfrontend using single-spa
- 2023-02-16: TypeScript narrow Array.includes()
- 2023-02-15: JavaScript Import Map
- 2023-02-14: TypeScript: Callable interface
- 2023-02-13: Show data about an npm package using npm view
- 2023-02-12: JSON.parse reviver parameter
- 2023-02-11: JavaScript WeapMap
- 2023-02-10: JavaScript Map
- 2023-02-09: Cypress cy.clock()
- 2023-02-08: Add custom config to Axios requests
- 2023-02-07: Implementing a custom RTK Query baseQuery
- 2023-02-06: Using Promise.race() to implement request timeout
- 2023-02-05: Remove React app from the DOM
- 2023-02-04: setTimeout(): Node.js vs Web
- 2023-02-03: Astro's image integration
- 2023-02-02: No browser cache with self-signed certificates
- 2023-02-01: import.meta
- 2023-01-31: Spaces vs tabs: It's an accessibility issue
- 2023-01-30: X-Robots-Tag
- 2023-01-29: npm disable audit in .npmrc
- 2023-01-28: npm using latest version of package
- 2023-01-27: CSS pseudo-classes and pseudo-elements
- 2023-01-26: CSS ::first-letter pseudo-element
- 2023-01-25: Make changes to a dependency using pnpm patch
- 2023-01-24: TypeScript: Satisfies operator
- 2023-01-23: Get current page URL in Astro
- 2023-01-22: TypeScript: Type-only imports and exports
- 2023-01-21: Use pnpm's shell-emulator to execute scripts on all platforms
- 2023-01-20: Deep clone object with structuredClone()
- 2023-01-19: Delete files by modified date
- 2023-01-18: Checkout previous branch in Git
- 2023-01-17: Remove debugger statements in Vite
- 2023-01-16: Add an object to existing JSON using jq
- 2023-01-15: TypeScript Assertion Functions
- 2023-01-14: CSS :is() pseudo-class
- 2023-01-13: Redirect stderr to stdout using 2>&1
- 2023-01-12: JavaScript: Negative Zero (-0)
- 2023-01-11: There are actually 50 CSS length units
- 2023-01-10: CSS :has() pseudo-class
- 2023-01-09: CSS property: font-variant-numeric
- 2023-01-08: There are 44 CSS length units
- 2023-01-07: Create a release in GitHub using API
- 2023-01-06: Delete lines in vi
- 2023-01-05: TypeScript Template Literal Types
- 2023-01-04: Push Docker image to self-hosted registry
- 2023-01-03: Rename an AWS Lightsail instance
- 2023-01-02: List the files with the most disk usage
- 2023-01-01: Restore a deleted file in Git
- 2022-12-22: User-defined type guard in TypeScript
- 2022-11-30: Using the
tar
command - 2022-11-05: Git Remove All Commits
- 2022-11-02: Using Nunjucks Macros in Eleventy
- 2022-11-01: Netlify Node.js Version
- 2022-10-29: Extending HTML Element Types in React 18
- 2022-10-16: Accessing stdin with file descriptor 0
- 2022-10-13: The Details disclosure element
- 2022-10-08: ESLint's
no-restricted-syntax
rule - 2022-09-29: TypeScript: Exhaustiveness checking in switch with union type
- 2022-09-22: Inferring the types from a Remix loader
- 2022-09-20: Today I Learned: PHP
- 2022-09-16: Array.prototype.reduce() can be typed in TypeScript
- 2022-09-06: Use same git commit message as previous commit
- 2022-08-16: JSON.stringify replacer parameter
- 2022-08-15: TypeScript: @ts-expect-error
- 2022-07-23: TypeScript Config: noUnCheckedIndexAccess
- 2022-07-07: Using Netlify Redirects to build a URL Shortener
- 2022-06-28: Proxying using Netlify Redirects
- 2022-06-23: Add color using FORCE_COLOR
- 2022-06-22: Get last modified date using GitHub GraphQL API
- 2022-06-01: Hex color notation have an alpha channel
- 2022-05-24: Logging variables in Chrome DevTools using logpoints
- 2022-05-07: Svelte components have file location meta data
- 2022-04-16: Using GitHub Actions to push changes
- 2022-02-16: Add features to your Netlify site with Snippet Injection
- 2022-02-12: Enable HTTP/2 in Vite's Dev Server by using HTTPS
- 2022-01-28: Buttons can have a value like input elements
- 2022-01-18: The Idiomatic Text element
- 2022-01-10: Type declarations for a Vite app