Notes
Bookmarks, post drafts and topic notes (sorted by last modified date and filterable by tag)
-
Async Awaits: Mastering Asynchronous Python in FastAPI (Bojan Miletic)
•
-
Goodbye, useState (David Khourshid)
•
-
PEP 636 – Structural Pattern Matching Tutorial (PEPs)
•
-
✍️
Toggle vim options
•
-
Tackling Complexity in the Heart of Software (Eric Evans)
•
-
Every Event, Everywhere, All at Once (Jacqui Read)
•
-
What is DDD (Eric Evans)
•
-
Not Just Events: Developing Asynchronous Microservices (Chris Richardson)
•
-
How to improve python unit-tests thanks to Hypothesis (Emilio De Sousa)
•
-
Mistakes made adopting event sourcing (and how we recovered) (Nat Pryce)
•
-
The Little Mocker (Robert C. Martin)
•
-
The Open Closed Principle (Robert C. Martin)
•
-
Thorns Around the Gold (Robert C. Martin)
•
-
Clean Micro-service Architecture (Robert C. Martin)
•
-
State Space Explosion: The Reason We Can Never Test Software to Perfection (Alex Weisberger)
•
-
python: what is assert? (anthonywritescode)
•
-
You’re Doing Exceptions Wrong (Matt Burke)
•
-
DDD, event sourcing and CQRS – theory and practice (Golo Roden)
•
-
📖
CQRS Documents (Greg Young)
•
-
How Obsidian Fixes Note-Taking's Biggest Problem (JayTheDevGuy)
•
-
A Decade of DDD, CQRS, Event Sourcing (Greg Young)
•
-
Stop Over-Engineering (Greg Young)
•
-
Event Sourcing & CQRS (Greg Young)
•
-
Event Sourcing and Stream Processing at Scale (Martin Kleppmann)
•
-
4 Key Types of Event-Driven Architectures (Adam Bellemare)
•
-
Shift left to write data once, read as tables or streams (Adam Bellemare)
•
-
Event-Driven Architecture (EDA) vs Request/Response (RR) (Adam Bellemare)
•
-
Event-Driven Versus Scheduled Data Pipelines (Jay Allen)
•
-
Event Sourcing (Greg Young)
•
-
Can Event-Driven Architecture make Software Design Easier? (Bobby Calderwood)
•
-
Functional Event Sourcing Decider (Jérémie Chassaing)
•
-
CloudEvents Specification Primer (CloudEvents)
•
-
📝
System Design
•
-
Functional Classes (Robert C. Martin)
•
-
OO vs FP (Robert C. Martin)
•
-
Test Contra-variance (Robert C. Martin)
•
-
Types vs Tests (Robert C. Martin)
•
-
What is clean code? (Robert C. Martin)
•
-
So You Want to Build An Event Driven System? (James Eastham)
•
-
Complexity is the Gotcha of Event-driven Architecture (David Boyne)
•
-
The Cycles of TDD (Robert C. Martin)
•
-
Functional Thinking (Neal Ford)
•
-
Rethinking Thinking: Models for Event-driven Programming (Cornelia Davis)
•
-
Agile is not now, nor was it ever, waterfall (Robert C. Martin)
•
-
A Little Architecture (Robert C. Martin)
•
-
Mutation Testing (Robert C. Martin)
•
-
The Right Way To Build REST APIs (Awesome)
•
-
The Lurn (Robert C. Martin)
•
-
The Dark Path (Robert C. Martin)
•
-
Testing Harms Architecture (Robert C. Martin)
•
-
Classes vs Data Structures (Robert C. Martin)
•
-
Pairing Guidelines (Robert C. Martin)
•
-
FP vs OO (Robert C. Martin)
•
-
The Clean Architecture (Robert C. Martin)
•
-
What would it mean to be done for the day? (Oliver Burkeman)
•
-
Demanding Professionalism in Software Development (Robert C. Martin)
•
-
No creative person I know has ever asked for a brainstorming session (Brian Collins)
•
-
Invert, always invert (Charlie Munger)
•
-
Obsidian.md: The Good Parts (No Boilerplate)
•
-
Refactoring to Immutability (Kevlin Henney)
•
-
A primer on functional architecture (Scott Wlaschin)
•
-
TDD on the Shoulders of Giants (Jared Norman)
•
-
Capability vs. Suitability (Gary Bernhardt)
•
-
Functional Core, Imperative Shell (Gary Bernhardt)
•
-
Boundaries (Gary Bernhardt)
•
-
FP vs OO: Choose Two (Brian Goetz)
•
-
Object-Oriented vs. Functional Programming With C# and F# (Urs Enzler)
•
-
Modern SQLite: STRICT tables (Anton Zhiyanov)
•
-
Nushell: A new type of shell! (Dispatch)
•
-
Making a plan (Thorsten Ball)
•
-
Testing in Production — Building Observable Distributed Systems (Kevin Sookocheff)
•
-
A Principled Approach to Architecture (Kevin Sookocheff)
•
-
Overcoming Optimism with a Premortem (Kevin Sookocheff)
•
-
Design by Coding (Allen Holub)
•
-
the system design interview (anthonywritescode)
•
-
The Ultimate Metric (Arty Starr)
•
-
Free speech, explained (Greg Lukianoff)
•
-
The Art and Science of Teaching Rust (Will Crichton)
•
-
The Secret About Big Software Companies (ThePrimeTime)
•
-
Kubernetes Roadmap - Complete Step-by-Step Learning Path (TechWorld with Nana)
•
-
Judging Code (Thorsten Ball)
•
-
Steve Jobs Insult Response (Steve Jobs)
•
-
A Decade of TILs (Josh Branchaud)
•
-
No Wrong Doors. (Will Larsen)
•
-
THIS is Why List Comprehension is SO Efficient! (b001)
•
-
The Log: What every software engineer should know about real-time data's unifying abstraction (Jay Kreps)
•
-
The Kubernetes Homelab That Prints Job Offers - 2025 (Mischa van den Burg)
•
-
Just Use Postgres for Everything (Stephan Schmidt)
•
-
Validate your environment variables with Zod (Lazar Nikolov)
•
-
RustConf 2023 - Using Rust and Battlesnake to never stop learning (Corey Alexander)
•
-
How leveraging events can simplify your app (Tom Delalande)
•
-
SQLite: How it works (Richard Hipp)
•
-
‘Tis But a Scratch: Shrinking Container Images using FROM scratch (Thomas Eckert)
•
-
You'll regret using natural keys (Mark Seemann)
•
-
A Productivity System To Remember Everything You Learn & Get Ahead In Life (Cal Newport)
•
-
Your company needs Junior devs (Doug Turnbull)
•
-
The End Of My Gatsby Journey (Juan Diego Rodríguez)
•
-
Can you earn money playing Blackjack? (The software engineer's approach) (Tech With Nikola)
•
-
The Perfect Dependency: SQLite Case Study (Tom Delalande)
•
-
State and time are the same thing (Hillel Wayne)
•
-
Write Change-Resilient Code With Domain Objects (Amy Fu)
•
-
Simple data validation and setting management with Pydantic (Teddy Crepineau)
•
-
Basic Things (matklad)
•
-
The Undeniable Utility of CSS :has (Josh W. Comeau)
•
-
Why Optimistic Merging Works Better (Pieter Hintjens)
•
-
The Impossibility of Making an Elite Engineer (Kent Beck)
•
-
The Configuration Complexity Clock (Mike Hadlow)
•
-
How to evaluate dependencies (Phil Booth)
•
-
Making progress on side projects with content-driven development (Nicole Tietz-Sokolsaya)
•
-
Good software development habits (Zarar)
•
-
Be Plainspoken (Andrew Bosworth)
•
-
Agile Architecture (Martin Fowler & Molly Dishman)
•
-
Explaining Agile (Martin Fowler & Neal Ford)
•
-
Scope Management 101 (Kent Beck)
•
-
Give it five minutes (Jason Fried)
•
-
Rich Programmer Food (Steve Yegge)
•
-
Tidy First? A Daily Exercise in Empirical Design (Kent Beck)
•
-
The Best Job Description For an Engineer Ever Written (Chad Fowler)
•
-
Why you should "design it twice"? (Eliran Turgeman)
•
-
Introduction to Container Queries (Coding in Public)
•
-
Never fear merge conflicts again - git merge/pull tutorial (Philomatics)
•
-
Drizzle relations are amazing: stop using manual joins (basarat)
•
-
OCaml for Fun & Profit: An Experience Report (Tim McGilchrist)
•
-
Story Points are Pointless, Measure Queues (Barry Jones)
•
-
Working Software Is Not The Primary Measure of Progress (Christopher Okhravi)
•
-
Agile Architecture (Allen Holub)
•
-
Astro Actions (First Look!) (Coding in Public)
•
-
Astro Actions: the missing server action library (Astro)
•
-
Implementing Health Checks and Auto-Restarts for FastAPI Applications using Docker (Jegadeesh N)
•
-
Mount Secure Build-Time Secrets with Docker and Docker Compose (Nick Janetakis)
•
-
📝
Artificial Intelligence
•
-
📝
Zig
•
-
You can't be agile when you're fighting your code (Allen Holub)
•
-
Using custom elements (MDN Web Docs)
•
-
Zig Language Reference (Zig)
•
-
Agile is Dead (Dave Thomas)
•
-
Astro Search Tutorial (Coding in Public)
•
-
Beyond Estimates (Allen Holub)
•
-
Change your diet, extend your life (Dr. Morgan Levine)
•
-
Custom Elements v1: Reusable Web Components (web.dev)
•
-
Does Resting Meat Matter? (America's Test Kitchen)
•
-
Intro to the Zig Programming Language (Andrew Kelley)
•
-
Obsidian's New Web Clipper: You'll Want to Try It (Stephan Miller)
•
-
One Rule to Rule Them All (Dave Thomas)
•
-
Projects Every Programmer Should Try (ThePrimeTime)
•
-
Ziglings (Chris Boesch)
•
-
Git Bisect Run: Bug Hunting On Steroids (Jesse Duffield)
•
-
Write about what you learn: it pushes you to understand topics better (Addy Osmani)
•
-
Why I recommend Renovate over any other dependency update tools (Jamie Tanna)
•
-
A faster way to manage version updates with Dependabot (Eric Tooley)
•
-
The biggest-ever global outage: lessons for software engineers (Gergely Orosz)
•
-
Commit a file if it changed (Simon Willison)
•
-
TIL (Julia Evans)
•
-
TIL (Manuel Matuzović)
•
-
TIL (Simon Willison)
•
-
Today I Learned (Josh Branchaud)
•
-
Best practices for prompt engineering with the OpenAI API (OpenAI)
•
-
Can AI Catch What Doctors Miss? (Eric Topol)
•
-
Reinforcement Learning at Facebook (Jason Gauci & Adam Gordon Bell)
•
-
#NoEstimates (Allen Holub)
•
-
Agile & Scrum Don't Work (Allen Holub & Dave Farley)
•
-
📝
Writing
•
-
Who vs. whom (Mike Crittenden)
•
-
📝
Workouts
•
-
No introductions, no conclusions (Mike Crittenden)
•
-
The Art of Note Making (Mischa van den Burg)
•
-
Write in the style you’d like to read (Mike Crittenden)
•
-
Assorted thoughts on zig (and rust) (Jamie Brandon)
•
-
Learning Resources (Zig)
•
-
Zig Exercises (Exercism)
•
-
Zig Master: Zig, ZLS, and Neovim Setup (Dude the Builder)
•
-
Zig in Depth (Dude the Builder)
•
-
Learning Zig (Karl Seguin)
•
-
Zig Guide (Zig)
•
-
Zig for Impatient Devs (Isaac Harris-Holt)
•
-
✍️
Jumping to an Obsidian note with Alfred
•
-
Decrusting the tokio crate (Jon Gjengset)
•
-
📝
APIs
•
-
📝
Algorithms
•
-
Data Structures and Algorithms in JavaScript (Kyle Shevlin)
•
-
Algorithms and Data Structures Interview (Deckly)
•
-
Learn Data Structures and Algorithms (Programiz)
•
-
Intro to Large Language Models (Andrej Karpathy)
•
-
Don’t Build AI Products The Way Everyone Else Is Doing It (Steve Sewell)
•
-
Fooocus: open source image generator (lllyasviel)
•
-
The death of Agile (Allen Holub)
•
-
✍️
Working in harmony with product managers as a software engineer
•
-
The Power of 10: Rules for Developing Safety-Critical Code (Wikipedia)
•
-
Cost of Delay (Black Swan Farming)
•
-
WIP is waste (Jared Turner)
•
-
26 Heuristics For Effective Software Development (Allen Holub)
•
-
Why You Should Get Rid of Estimates (Allen Holub)
•
-
Why software only moves forward (Swizec Teller)
•
-
📝
macOS Workflow
•
-
My honest advice to someone who wants financial freedom (Ali Abdaal)
•
-
The ONLY 3 Exercises You Need To Get Massive (FitnessFAQs)
•
-
How to exclude commits from git blame (Stefan Judis)
•
-
📝
JavaScript
•
-
✍️
Pull the latest changes to all your git submodules
•
-
📝
Software Architecture Patterns
•
-
📝
Astro
•
-
📝
Authentication & Authorization
•
-
📝
Career
•
-
📝
ChatGPT Coding Prompts
•
-
📝
ChatGPT Research Prompts
•
-
📝
ChatGPT Writing Prompts
•
-
📝
ChatGPT
•
-
📝
Cloudinary
•
-
📝
Code Style
•
-
📝
Content Management Systems
•
-
📝
Containers
•
-
📝
Computers
•
-
📝
Cooking
•
-
📝
GitHub Copilot
•
-
📝
CSS
•
-
📝
Data Science
•
-
📝
Data Structures
•
-
📝
Databases
•
-
📝
Debugging
•
-
📝
Deno
•
-
📝
Software Design Patterns
•
-
📝
Dev Ops
•
-
📝
Dev Tools
•
-
📝
Domain Name System (DNS)
•
-
📝
Docker
•
-
📝
Documenting software
•
-
📝
Ecommerce
•
-
📝
Fitness
•
-
📝
Freelancing
•
-
📝
Functional Programming
•
-
📝
games
•
-
📝
Gardening
•
-
📝
Git Better with Vim
•
-
📝
Git
•
-
📝
GitHub
•
-
📝
Eleventy
•
-
📝
Gleam
•
-
📝
Google Cloud
•
-
📝
Haskell
•
-
📝
Hexagonal Architecture (Ports & Adapters)
•
-
📝
Home
•
-
📝
HTML
•
-
📝
HTTP
•
-
📝
Hugo
•
-
📝
Insights
•
-
📝
Go
•
-
📝
Interviews
•
-
📝
iOS
•
-
📝
Testing JavaScript
•
-
📝
Jupyter
•
-
📝
Kubernetes
•
-
📝
Looker
•
-
📝
Learning
•
-
📝
New Mac Setup
•
-
📝
macOS
•
-
📝
Markdown
•
-
📝
Mojo
•
-
📝
Music
•
-
📝
Networking
•
-
📝
Next.js
•
-
📝
Node
•
-
📝
notetaking
•
-
📝
npm
•
-
📝
Observability
•
-
📝
Searching in Obsidian
•
-
📝
Obsidian
•
-
📝
OCaml
•
-
📝
Office
•
-
📝
Pandas
•
-
📝
Pdb
•
-
📝
Places
•
-
📝
PHP
•
-
📝
PostgreSQL
•
-
📝
Productivity
•
-
📝
Data Types
•
-
📝
Programming
•
-
📝
Debugging Python
•
-
📝
Python
•
-
📝
Quotes
•
-
📝
Qwik
•
-
📝
React
•
-
📝
Reading
•
-
📝
Redis
•
-
📝
Refactoring
•
-
📝
Regular Expressions
•
-
📝
Repetitive Strain Injury
•
-
📝
RSS
•
-
📝
Rust
•
-
📝
Screencasting
•
-
📝
SQL
•
-
📝
SQLite
•
-
📝
Storytelling
•
-
📝
SvelteKit
•
-
📝
Teamwork
•
-
📝
Terminal
•
-
📝
Terraform
•
-
📝
Testing
•
-
📝
Tmux
•
-
📝
TypeScript
•
-
📝
Vifm
•
-
📝
Configuring Vim
•
-
📝
Editing Text in Vim
•
-
📝
Navigating in Vim
•
-
📝
Searching in Vim
•
-
📝
Why use Vim?
•
-
📝
Vim
•
-
📝
Navigating VS Code With Your Keyboard
•
-
📝
VS Code
•
-
📝
Web Development
•
-
📝
Webmentions
•
-
Deno 2 • GOTO 2024 (Ryan Dahl)
•
-
Pagination vs. Incremental Page Loading For Search Engine Crawlability (Chris Berkley)
•
-
We're Good At Writing Software (Kent Beck & Beth Andres-Beck)
•
-
How to Make Emojis Accessible in HTML (Rachel Leggett)
•
-
Consider Slowing Down When Switching Password Managers (Ricky Mondello)
•
-
The Obsidian Web Clipper: A Game Changer for Research & Note-Taking (Sascha D. Kasper)
•
-
✍️
obsidian-web-clipper
•
-
Dynamic API Endpoints in Astro (Coding in Public)
•
-
How to work with data in Astro (Coding in Public)
•
-
A Beginner's Guide to Making Money with Online Courses (Ali Abdaal)
•
-
What I tell people new to on-call (nicole@web)
•
-
4 TypeScript tips: as const, typeof, keyof and template string types (Wes Bos)
•
-
Always be writing your self eval (Mike Crittenden)
•
-
An Engineer’s Checklist of Logging Best Practices (Rox Williams)
•
-
Astro’s BIG new feature (Coding in Public)
•
-
Astro Content Layer: A Deep Dive (Matt Kane)
•
-
Devs need this extension (Wes Bos)
•
-
One year of Rust in production (Dmitry Kudryavtsev)
•
-
Prefer Explicit Maps (Kyle Shevlin)
•
-
Software engineers training software engineers (Gergely Orosz)
•
-
The already-here future of prototyping (Brad Frost)
•
-
✍️
Automatically fix ESLint errors on save in Vim
•
-
✍️
Remap “:” to “,” to enter vim commands more quickly
•
-
✍️
Configuring Ruff in Neovim
•
-
✍️
Assigning default values to variables in Bash
•
-
✍️
Ignoring a file git previously tracked
•
-
✍️
Send a webhook when a repo event occurs
•
-
✍️
Auto join Zoom meetings when they start
•
-
✍️
How to use objects and arrays as React hook dependencies
•
-
✍️
obsidian-quick-capture-idea-on-ios
•
-
✍️
obsidian-quick-capture-idea-on-mac
•
-
✍️
obsidian-quick-capture-markdown-link-on-ios
•
-
✍️
grafana-logs-pod
•
-
✍️
javascript-object-check-if-empty
•
-
✍️
obsidian-quick-capture-markdown-link-on-mac
•
-
✍️
obsidian-quick-start-draft-on-ios
•
-
✍️
obsidian-quick-start-draft-on-mac
•
-
✍️
python-errors-prevent-vs-handle-style-lbyl-vs-eafp
•
-
✍️
python-input-validation
•
-
✍️
python-marshmallow-validates-schema-decorator
•
-
✍️
shortcuts-api-request-result
•
-
✍️
terminal-fkill
•
-
✍️
youtube-api-endpoint-video-details
•
-
✍️
api testing tools
•
-
✍️
apple-tv-hold-home-button-to-reveal-control-center
•
-
✍️
auth0-add-to-x-language-application
•
-
✍️
cloudinary-debug-failed-request
•
-
✍️
cloudinary-og-image-automatic
•
-
✍️
curl-add-headers
•
-
✍️
flask-error-handling
•
-
✍️
git-diff-all-the-things
•
-
✍️
github-repo-permissions
•
-
✍️
github-ssh-automate-configuration-with-github-keygen
•
-
✍️
google-calendar-multiple-timezones
•
-
✍️
grafana-logs-parse-json
•
-
✍️
google-cloud-logs-search-by-string
•
-
✍️
grafana-logs-search-by-string
•
-
✍️
homebrew-brewfile
•
-
✍️
k9s-inspect-a-deployment
•
-
✍️
k9s-secrets-view-synced-from-google-secret-manager
•
-
✍️
kubernetes-roll-back-deployment-asap
•
-
✍️
marshmallow-can-transform-the-incoming-data
•
-
✍️
neovim-config-as-plugin-for-easier-updating
•
-
✍️
obsidian-iOS-quick-capture
•
-
✍️
obsidian-tag-wrangler
•
-
✍️
obsidian-url-into-selection
•
-
✍️
programming-parse-incoming-data-instead-of-only-validating-it
•
-
✍️
python-dataclass-vs-pydantic-model
•
-
✍️
python-dataclass-vs-typeddict
•
-
✍️
python-dotenv
•
-
✍️
python-duck-typing
•
-
✍️
python-logging-better
•
-
✍️
python-lru-cache
•
-
✍️
python-module-split-into-multiple-files
•
-
✍️
python-protocols
•
-
✍️
python-pycontracts
•
-
✍️
python-string-check-if-convertible-to-a-number
•
-
✍️
python-wat
•
-
✍️
tailscale-vpn-on-demand
•
-
✍️
typescript-mutually-exclusive-xor-type
•
-
✍️
vim-ways-to-repeat-an-edit
•
-
✍️
vscode-typescript-explorer
•
-
✍️
An <hr> element's color comes from its border-color
•
-
✍️
Regex to find all symbols in a string
•
-
✍️
Using Git from Python with GitPython
•
-
✍️
python set environment variables
•
-
✍️
python sys executable
•
-
✍️
vscode jupyter notebooks outside app
•
-
✍️
python-unittest-patch-context-manager
•
-
✍️
hurl
•
-
✍️
kubernetes debug by deploying an earlier tag
•
-
✍️
gcloud download a folder
•
-
✍️
git move changed file to different branch
•
-
✍️
run shortcuts with alfred
•
-
✍️
docker delete cached images
•
-
✍️
Copy things from one Google Cloud bucket to another
•
-
✍️
middleware caller id analogy
•
-
✍️
Highlighting Code in Markdown with Rehype Pretty Code
•
-
✍️
Show, Don't Tell
•
-
✍️
Using SSH to log into a Mac remotely
•
-
✍️
Handy Terminal Aliases
•
-
✍️
On "The Hard Part in Becoming a Command Line Wizard"
•
-
✍️
Using tmux pop-ups as temporary terminal windows
•
-
✍️
Gradually migrating a JavaScript project to TypeScript
•
-
✍️
Conditional Return Types in TypeScript
•
-
✍️
Understanding “No overload matches this call” in TypeScript
•
-
✍️
Using Partial to make all properties of an object type optional
•
-
✍️
Using Git to Sync Your VS Code Settings
•
-
✍️
Sharing Project Settings in VS Code
•
-
✍️
Who owns code? Am I stealing it?
•
-
✍️
My Things 3 Workflow
•
-
✍️
How to Automate Setting Up a Mac for Web Development
•
-
✍️
Adding Missing Attributes to Markdown Images with Rehype
•
-
✍️
Fixing Security Vulnerabilities in NPM Packages
•
-
✍️
Life Lessons Poker Taught Me
•
-
✍️
Prioritizing what matters most (by skipping everything else)
•
-
✍️
Reusing API Response Data By Caching It In a File
•
-
✍️
The Power of Quitting
•
-
✍️
shortcuts-debug-show-result
•
-
✍️
Learn faster by looking at the answers
•
-
✍️
macos-defaults-automate-system-settings
•
-
✍️
How to do X using the command line, Vim and VS Code
•
-
✍️
Convert a string to title case in JavaScript
•
-
✍️
Fixing the tpm uninstall shortcut on a Mac
•
-
✍️
Filtering Pages From Your Astro Sitemap
•
-
✍️
Cleaner If Statements
•
-
✍️
Coding Adventure: Chess AI
•
-
✍️
Animating a CSS property to its default value
•
-
✍️
Turning off animations for users who prefer reduced motion
•
-
✍️
Automatic Dependency Updates with Dependabot
•
-
✍️
Using Git to Share Your Dotfiles
•
-
✍️
Using ESLint to automatically sort JS/TS imports
•
-
✍️
Moving git commits to a different branch
•
-
✍️
Adapting Your Git Config for Work
•
-
✍️
Scheduling Email Notifications with GitHub Actions
•
-
✍️
Accelerated Note-Taking with GitHub Copilot
•
-
✍️
Using GitHub Discussions as a Comments Backend with Giscus
•
-
✍️
Creating a Default Pull Request Template for All Your Repos
•
-
✍️
Routing GitHub notifications from work repos to your work email
•
-
✍️
Browsing the Web From Your Keyboard With SurfingKeys
•
-
✍️
Using an SSH key to access a remote Mac without a password
•
-
✍️
things-3-workflow-attempt-log
•
-
✍️
Automatic Git Commits on iOS with Working Copy
•
-
✍️
Lazygit
•
-
✍️
Rebuilding this site with Astro
•
-
✍️
How I Approach Building a Website
•
-
✍️
Private Blog Posts Using Git Submodules
•
-
✍️
Using GitHub Actions to Reduce Your Netlify Build Minutes
•
-
Don't forget `py.typed` for your typed Python package (whtsky)