{"items":[{"name":"Review of 12 Days of OpenAI","description":"https://lannonbr.com/blog/12-days-of-openai-2024","value":"https://lannonbr.com/blog/12-days-of-openai-2024","date":"2024-12-21"},{"name":"Livestreaming on Twitch","description":"https://lannonbr.com/blog/2019-06-17-twitch","value":"https://lannonbr.com/blog/2019-06-17-twitch","date":"2019-06-17"},{"name":"How I abstracted a Gatsby Site to a Gatsby Theme","description":"https://lannonbr.com/blog/2019-07-05-site-to-gatsby-theme","value":"https://lannonbr.com/blog/2019-07-05-site-to-gatsby-theme","date":"2019-07-05"},{"name":"Building a PC live on Twitch","description":"https://lannonbr.com/blog/2019-07-15-live-pc-build","value":"https://lannonbr.com/blog/2019-07-15-live-pc-build","date":"2019-07-22"},{"name":"GitHub Actions: JS Actions","description":"https://lannonbr.com/blog/2019-08-17-gh-actions-js-actions","value":"https://lannonbr.com/blog/2019-08-17-gh-actions-js-actions","date":"2019-08-17"},{"name":"A pathway to learn GraphQL with Gatsby","description":"https://lannonbr.com/blog/2019-09-27-gatsby-learning-graphql","value":"https://lannonbr.com/blog/2019-09-27-gatsby-learning-graphql","date":"2019-09-27"},{"name":"Happy Hacktoberfest 2019","description":"https://lannonbr.com/blog/2019-10-01-hacktoberfest","value":"https://lannonbr.com/blog/2019-10-01-hacktoberfest","date":"2019-10-01"},{"name":"GitHub Actions: Small abstractions with massive scope","description":"https://lannonbr.com/blog/2019-10-15-gh-actions-at-large","value":"https://lannonbr.com/blog/2019-10-15-gh-actions-at-large","date":"2019-10-15"},{"name":"Granular staging with \"git add --patch\"","description":"https://lannonbr.com/blog/2019-10-26-git-add-patch","value":"https://lannonbr.com/blog/2019-10-26-git-add-patch","date":"2019-10-26"},{"name":"GitHub Actions Changelog Workflow","description":"https://lannonbr.com/blog/2019-11-04-github-actions-changelog-workflow","value":"https://lannonbr.com/blog/2019-11-04-github-actions-changelog-workflow","date":"2019-11-04"},{"name":"Creating Open Graph Images with React & Gatsby","description":"https://lannonbr.com/blog/2019-11-10-og-images","value":"https://lannonbr.com/blog/2019-11-10-og-images","date":"2019-11-10"},{"name":"Advent of Code 2019","description":"https://lannonbr.com/blog/2019-12-01-advent-of-code","value":"https://lannonbr.com/blog/2019-12-01-advent-of-code","date":"2019-12-01"},{"name":"Using git commit in GitHub Actions","description":"https://lannonbr.com/blog/2019-12-09-git-commit-in-actions","value":"https://lannonbr.com/blog/2019-12-09-git-commit-in-actions","date":"2019-12-09"},{"name":"2019 Year in Review","description":"https://lannonbr.com/blog/2019-12-31-year-in-review","value":"https://lannonbr.com/blog/2019-12-31-year-in-review","date":"2019-12-31"},{"name":"Getting started building WASM modules with Rust & wasm-pack","description":"https://lannonbr.com/blog/2020-01-07-rust-wasmpack","value":"https://lannonbr.com/blog/2020-01-07-rust-wasmpack","date":"2020-01-07"},{"name":"Array.shift optimizations in Firefox's JS Engine","description":"https://lannonbr.com/blog/2020-01-27-shift-optimizations","value":"https://lannonbr.com/blog/2020-01-27-shift-optimizations","date":"2020-01-27"},{"name":"Bundling a Rust library to WebAssembly with Webpack & wasm-pack","description":"https://lannonbr.com/blog/2020-02-17-wasm-pack-webpack-plugin","value":"https://lannonbr.com/blog/2020-02-17-wasm-pack-webpack-plugin","date":"2020-02-17"},{"name":"Bundling NPM modules for use in GitHub Actions","description":"https://lannonbr.com/blog/2020-02-23-github-actions-webpack","value":"https://lannonbr.com/blog/2020-02-23-github-actions-webpack","date":"2020-02-23"},{"name":"Creating a SMS bot to notify of upcoming events with GitHub Actions and Twilio","description":"https://lannonbr.com/blog/2020-02-24-twilio-upcoming-alerts","value":"https://lannonbr.com/blog/2020-02-24-twilio-upcoming-alerts","date":"2020-02-24"},{"name":"Creating a Twilio SMS Workflow for Follow-up Friday listings","description":"https://lannonbr.com/blog/2020-03-10-followup-friday-automation","value":"https://lannonbr.com/blog/2020-03-10-followup-friday-automation","date":"2020-03-10"},{"name":"Using OBS video output as a virtual webcam","description":"https://lannonbr.com/blog/2020-03-28-obs-virtual-cam","value":"https://lannonbr.com/blog/2020-03-28-obs-virtual-cam","date":"2020-03-28"},{"name":"Running Tests in GitHub Actions","description":"https://lannonbr.com/blog/2020-03-30-github-actions-ci-tests","value":"https://lannonbr.com/blog/2020-03-30-github-actions-ci-tests","date":"2020-03-30"},{"name":"Deploying a site to Netlify with GitHub Actions","description":"https://lannonbr.com/blog/2020-03-31-github-actions-deploy-to-netlify","value":"https://lannonbr.com/blog/2020-03-31-github-actions-deploy-to-netlify","date":"2020-03-31"},{"name":"Scheduled Workflows in GitHub Actions","description":"https://lannonbr.com/blog/2020-04-02-github-actions-scheduled-workflows","value":"https://lannonbr.com/blog/2020-04-02-github-actions-scheduled-workflows","date":"2020-04-02"},{"name":"Tackling dark mode with TailwindCSS","description":"https://lannonbr.com/blog/2020-04-05-tailwind-dark-mode","value":"https://lannonbr.com/blog/2020-04-05-tailwind-dark-mode","date":"2020-04-05"},{"name":"Gatsby & Tailwind: An Introduction","description":"https://lannonbr.com/blog/2020-04-05-tailwind-in-gatsby","value":"https://lannonbr.com/blog/2020-04-05-tailwind-in-gatsby","date":"2020-04-05"},{"name":"Adding PurgeCSS to a Gatsby site with Tailwind","description":"https://lannonbr.com/blog/2020-04-05-tailwind-purgecss","value":"https://lannonbr.com/blog/2020-04-05-tailwind-purgecss","date":"2020-04-05"},{"name":"My Streaming Setup","description":"https://lannonbr.com/blog/2020-04-12-stream-setup","value":"https://lannonbr.com/blog/2020-04-12-stream-setup","date":"2020-04-12"},{"name":"GitHub Actions Job Outputs","description":"https://lannonbr.com/blog/2020-04-16-gh-actions-job-outputs","value":"https://lannonbr.com/blog/2020-04-16-gh-actions-job-outputs","date":"2020-04-16"},{"name":"Controlling OBS Studio through physical hardware","description":"https://lannonbr.com/blog/2020-04-26-obs-midi-control","value":"https://lannonbr.com/blog/2020-04-26-obs-midi-control","date":"2020-04-26"},{"name":"2025 Software Development Wishlist","description":"https://lannonbr.com/blog/2025-software-development-wishlist","value":"https://lannonbr.com/blog/2025-software-development-wishlist","date":"2025-01-02"},{"name":"2025 Year in Review","description":"https://lannonbr.com/blog/2025-year-in-review","value":"https://lannonbr.com/blog/2025-year-in-review","date":"2025-12-31"},{"name":"My Theme for 2026: Agency","description":"https://lannonbr.com/blog/2026-theme-agency","value":"https://lannonbr.com/blog/2026-theme-agency","date":"2026-01-02\" # Was actually written 01/01/2026, but there is a bug that this is categorized as a 2025 post due to timezone"},{"name":"Advent of Code 2020 Timelapse Behind the Scenes","description":"https://lannonbr.com/blog/advent-of-code-timelapse-behind-the-scenes","value":"https://lannonbr.com/blog/advent-of-code-timelapse-behind-the-scenes","date":"2021-04-19"},{"name":"How I use Generative AI going into 2026","description":"https://lannonbr.com/blog/ai-use-jan-2026","value":"https://lannonbr.com/blog/ai-use-jan-2026","date":"2026-01-11"},{"name":"The True Killer Feature of Apple Intelligence: Personal and Contextual Knowledge","description":"https://lannonbr.com/blog/apple-intelligence-personal-context","value":"https://lannonbr.com/blog/apple-intelligence-personal-context","date":"2024-11-10"},{"name":"Software compatibility on Apple Silicon","description":"https://lannonbr.com/blog/apple-m1-software-compat","value":"https://lannonbr.com/blog/apple-m1-software-compat","date":"2021-05-30"},{"name":"Weeknotes #23 (April 12, 2025)","description":"https://lannonbr.com/blog/apr-12-2025-weeknotes","value":"https://lannonbr.com/blog/apr-12-2025-weeknotes","date":"2025-04-12"},{"name":"Weeknotes #24 (April 19, 2025)","description":"https://lannonbr.com/blog/apr-19-2025-weeknotes","value":"https://lannonbr.com/blog/apr-19-2025-weeknotes","date":"2025-04-19"},{"name":"Weeknotes #25 (April 26, 2025)","description":"https://lannonbr.com/blog/apr-26-2025-weeknotes","value":"https://lannonbr.com/blog/apr-26-2025-weeknotes","date":"2025-04-26"},{"name":"Weeknotes #22 (April 05, 2025)","description":"https://lannonbr.com/blog/apr-5-2025-weeknotes","value":"https://lannonbr.com/blog/apr-5-2025-weeknotes","date":"2025-04-05"},{"name":"Weeknotes #41 (August 16, 2025)","description":"https://lannonbr.com/blog/aug-16-2025-weeknotes","value":"https://lannonbr.com/blog/aug-16-2025-weeknotes","date":"2025-08-16"},{"name":"Weeknotes #39 (August 02, 2025)","description":"https://lannonbr.com/blog/aug-2-2025-weeknotes","value":"https://lannonbr.com/blog/aug-2-2025-weeknotes","date":"2025-08-02"},{"name":"Weeknotes #42 (August 23, 2025)","description":"https://lannonbr.com/blog/aug-23-2025-weeknotes","value":"https://lannonbr.com/blog/aug-23-2025-weeknotes","date":"2025-08-23"},{"name":"Weeknotes #43 (August 30, 2025)","description":"https://lannonbr.com/blog/aug-30-2025-weeknotes","value":"https://lannonbr.com/blog/aug-30-2025-weeknotes","date":"2025-08-30"},{"name":"Weeknotes #40 (August 09, 2025)","description":"https://lannonbr.com/blog/aug-9-2025-weeknotes","value":"https://lannonbr.com/blog/aug-9-2025-weeknotes","date":"2025-08-09"},{"name":"AWS CDK Examples","description":"https://lannonbr.com/blog/aws-cdk-examples","value":"https://lannonbr.com/blog/aws-cdk-examples","date":"2021-04-29"},{"name":"Least-priviledge access for AWS Resources using AWS CDK","description":"https://lannonbr.com/blog/aws-cdk-least-priviledge-access","value":"https://lannonbr.com/blog/aws-cdk-least-priviledge-access","date":"2021-05-24"},{"name":"Setting up OpenID Connect authentication for GitHub Actions with AWS CDK","description":"https://lannonbr.com/blog/aws-cdk-oidc-github-actions","value":"https://lannonbr.com/blog/aws-cdk-oidc-github-actions","date":"2021-11-28"},{"name":"List AWS Resources by Tags","description":"https://lannonbr.com/blog/aws-list-resources-by-tag","value":"https://lannonbr.com/blog/aws-list-resources-by-tag","date":"2023-02-27"},{"name":"AWS Services & Pricing Spectrums","description":"https://lannonbr.com/blog/aws-pricing-model-spectrum","value":"https://lannonbr.com/blog/aws-pricing-model-spectrum","date":"2023-02-15"},{"name":"What tools I use on AWS","description":"https://lannonbr.com/blog/aws-tooling","value":"https://lannonbr.com/blog/aws-tooling","date":"2022-08-14"},{"name":"Branching Out in 2025","description":"https://lannonbr.com/blog/branching-out","value":"https://lannonbr.com/blog/branching-out","date":"2024-11-21"},{"name":"Why is this homebrew package installed? brew uses command","description":"https://lannonbr.com/blog/brew-uses","value":"https://lannonbr.com/blog/brew-uses","date":"2025-12-20"},{"name":"Checking for unsupported Node.js AWS Lambda Functions","description":"https://lannonbr.com/blog/check-lambda-node-versions","value":"https://lannonbr.com/blog/check-lambda-node-versions","date":"2024-02-23"},{"name":"ChefBrent Stream Highlights","description":"https://lannonbr.com/blog/chefbrent-highlights","value":"https://lannonbr.com/blog/chefbrent-highlights","date":"2020-05-04"},{"name":"\"Co-Authored-By: Claude\" is fine","description":"https://lannonbr.com/blog/co-authored-by-claude","value":"https://lannonbr.com/blog/co-authored-by-claude","date":"2026-03-07"},{"name":"Edgecase for Cursor: Autocompleting an old API endpoint","description":"https://lannonbr.com/blog/cursor-autocomplete-todoist-edgecase","value":"https://lannonbr.com/blog/cursor-autocomplete-todoist-edgecase","date":"2025-12-27"},{"name":"Weeknotes #58 (December 13, 2025)","description":"https://lannonbr.com/blog/dec-13-2025-weeknotes","value":"https://lannonbr.com/blog/dec-13-2025-weeknotes","date":"2025-12-13"},{"name":"Weeknotes #6 (December 14, 2024)","description":"https://lannonbr.com/blog/dec-14-2024-weeknotes","value":"https://lannonbr.com/blog/dec-14-2024-weeknotes","date":"2024-12-14"},{"name":"Weeknotes #59 (December 20, 2025)","description":"https://lannonbr.com/blog/dec-20-2025-weeknotes","value":"https://lannonbr.com/blog/dec-20-2025-weeknotes","date":"2025-12-20"},{"name":"Weeknotes #7 (December 21, 2024)","description":"https://lannonbr.com/blog/dec-21-2024-weeknotes","value":"https://lannonbr.com/blog/dec-21-2024-weeknotes","date":"2024-12-21"},{"name":"Weeknotes #60 (December 27, 2025)","description":"https://lannonbr.com/blog/dec-27-2025-weeknotes","value":"https://lannonbr.com/blog/dec-27-2025-weeknotes","date":"2025-12-27"},{"name":"Weeknotes #8 (December 28, 2024)","description":"https://lannonbr.com/blog/dec-28-2024-weeknotes","value":"https://lannonbr.com/blog/dec-28-2024-weeknotes","date":"2024-12-28"},{"name":"Weeknotes #57 (December 06, 2025)","description":"https://lannonbr.com/blog/dec-6-2025-weeknotes","value":"https://lannonbr.com/blog/dec-6-2025-weeknotes","date":"2025-12-06"},{"name":"Weeknotes #5 (December 07, 2024)","description":"https://lannonbr.com/blog/dec-7-2024-weeknotes","value":"https://lannonbr.com/blog/dec-7-2024-weeknotes","date":"2024-12-07"},{"name":"Diun: Notification App for new Docker Images","description":"https://lannonbr.com/blog/diun-image-notifier","value":"https://lannonbr.com/blog/diun-image-notifier","date":"2024-08-04"},{"name":"Multi-arch docker builds on GitHub Actions","description":"https://lannonbr.com/blog/docker-multi-arch-github-actions","value":"https://lannonbr.com/blog/docker-multi-arch-github-actions","date":"2025-03-21"},{"name":"DynamoDB Cheatsheet","description":"https://lannonbr.com/blog/dynamo-cheatsheet","value":"https://lannonbr.com/blog/dynamo-cheatsheet","date":"2022-12-28"},{"name":"ESM Checker Post Mortem","description":"https://lannonbr.com/blog/esm-checker-postmortem","value":"https://lannonbr.com/blog/esm-checker-postmortem","date":"2023-03-11"},{"name":"Farewell, 2024","description":"https://lannonbr.com/blog/farewell-2024","value":"https://lannonbr.com/blog/farewell-2024","date":"2024-12-31"},{"name":"Weeknotes #13 (February 01, 2025)","description":"https://lannonbr.com/blog/feb-1-2025-weeknotes","value":"https://lannonbr.com/blog/feb-1-2025-weeknotes","date":"2025-02-01"},{"name":"Weeknotes #67 (February 14, 2026)","description":"https://lannonbr.com/blog/feb-14-2026-weeknotes","value":"https://lannonbr.com/blog/feb-14-2026-weeknotes","date":"2026-02-14"},{"name":"Weeknotes #15 (February 15, 2025)","description":"https://lannonbr.com/blog/feb-15-2025-weeknotes","value":"https://lannonbr.com/blog/feb-15-2025-weeknotes","date":"2025-02-15"},{"name":"Weeknotes #68 (February 21, 2026)","description":"https://lannonbr.com/blog/feb-21-2026-weeknotes","value":"https://lannonbr.com/blog/feb-21-2026-weeknotes","date":"2026-02-21"},{"name":"Weeknotes #16 (February 22, 2025)","description":"https://lannonbr.com/blog/feb-22-2025-weeknotes","value":"https://lannonbr.com/blog/feb-22-2025-weeknotes","date":"2025-02-22"},{"name":"Weeknotes #69 (February 28, 2026)","description":"https://lannonbr.com/blog/feb-28-2026-weeknotes","value":"https://lannonbr.com/blog/feb-28-2026-weeknotes","date":"2026-02-28"},{"name":"Weeknotes #66 (February 7, 2026)","description":"https://lannonbr.com/blog/feb-7-2026-weeknotes","value":"https://lannonbr.com/blog/feb-7-2026-weeknotes","date":"2026-02-07"},{"name":"Weeknotes #14 (February 08, 2025)","description":"https://lannonbr.com/blog/feb-8-2025-weeknotes","value":"https://lannonbr.com/blog/feb-8-2025-weeknotes","date":"2025-02-08"},{"name":"Things to Follow up on","description":"https://lannonbr.com/blog/followup","value":"https://lannonbr.com/blog/followup","date":"2020-05-04"},{"name":"Generative AI","description":"https://lannonbr.com/blog/gen-ai","value":"https://lannonbr.com/blog/gen-ai","date":"2025-09-14"},{"name":"Frequently Used GitHub Actions","description":"https://lannonbr.com/blog/gh-actions-frequently-used-actions","value":"https://lannonbr.com/blog/gh-actions-frequently-used-actions","date":"2020-05-04"},{"name":"Types of GitHub Actions","description":"https://lannonbr.com/blog/gh-actions-types-of-actions","value":"https://lannonbr.com/blog/gh-actions-types-of-actions","date":"2020-05-04"},{"name":"GitHub Actions Artifacts","description":"https://lannonbr.com/blog/github-actions-artifacts","value":"https://lannonbr.com/blog/github-actions-artifacts","date":"2020-05-04"},{"name":"Caching in GitHub Actions","description":"https://lannonbr.com/blog/github-actions-caching","value":"https://lannonbr.com/blog/github-actions-caching","date":"2020-07-26"},{"name":"Accessing your repo's contents within GitHub Actions","description":"https://lannonbr.com/blog/github-actions-filesystem","value":"https://lannonbr.com/blog/github-actions-filesystem","date":"2020-08-29"},{"name":"GitHub Actions Hierarchy","description":"https://lannonbr.com/blog/github-actions-hierarchy","value":"https://lannonbr.com/blog/github-actions-hierarchy","date":"2020-05-04"},{"name":"Running GitHub Actions work in parallel with Jobs","description":"https://lannonbr.com/blog/github-actions-jobs","value":"https://lannonbr.com/blog/github-actions-jobs","date":"2021-06-14"},{"name":"GitHub Actions Secrets","description":"https://lannonbr.com/blog/github-actions-secrets","value":"https://lannonbr.com/blog/github-actions-secrets","date":"2020-08-02"},{"name":"GitHub Actions Triggers","description":"https://lannonbr.com/blog/github-actions-triggers","value":"https://lannonbr.com/blog/github-actions-triggers","date":"2020-05-04"},{"name":"GitHub Actions in 2024 Wishlist","description":"https://lannonbr.com/blog/github-actions-wishlist-2024","value":"https://lannonbr.com/blog/github-actions-wishlist-2024","date":"2024-03-31"},{"name":"GitHub Actions Workflow Step Types","description":"https://lannonbr.com/blog/github-actions-workflow-step-types","value":"https://lannonbr.com/blog/github-actions-workflow-step-types","date":"2020-05-04"},{"name":"The Shifting Trajectory of GitHub","description":"https://lannonbr.com/blog/github-universe-2023-copilot","value":"https://lannonbr.com/blog/github-universe-2023-copilot","date":"2023-11-11"},{"name":"Home Automation: Extend, Not Replace","description":"https://lannonbr.com/blog/home-automation-extend-not-replace","value":"https://lannonbr.com/blog/home-automation-extend-not-replace","date":"2025-11-15"},{"name":"Resizing images with ImageMagick ZSH function","description":"https://lannonbr.com/blog/image-resize-imagemagick","value":"https://lannonbr.com/blog/image-resize-imagemagick","date":"2020-06-13"},{"name":"Intentional Computing","description":"https://lannonbr.com/blog/intentional-computing","value":"https://lannonbr.com/blog/intentional-computing","date":"2025-08-09"},{"name":"Weeknotes #62 (January 10, 2026)","description":"https://lannonbr.com/blog/jan-10-2026-weeknotes","value":"https://lannonbr.com/blog/jan-10-2026-weeknotes","date":"2026-01-10"},{"name":"Weeknotes #10 (January 11, 2025)","description":"https://lannonbr.com/blog/jan-11-2025-weeknotes","value":"https://lannonbr.com/blog/jan-11-2025-weeknotes","date":"2025-01-11"},{"name":"Weeknotes #63 (January 17, 2026)","description":"https://lannonbr.com/blog/jan-17-2026-weeknotes","value":"https://lannonbr.com/blog/jan-17-2026-weeknotes","date":"2026-01-17"},{"name":"Weeknotes #11 (January 18, 2025)","description":"https://lannonbr.com/blog/jan-18-2025-weeknotes","value":"https://lannonbr.com/blog/jan-18-2025-weeknotes","date":"2025-01-18"},{"name":"Weeknotes #64 (January 24, 2026)","description":"https://lannonbr.com/blog/jan-24-2026-weeknotes","value":"https://lannonbr.com/blog/jan-24-2026-weeknotes","date":"2026-01-24"},{"name":"Weeknotes #12 (January 25, 2025)","description":"https://lannonbr.com/blog/jan-25-2025-weeknotes","value":"https://lannonbr.com/blog/jan-25-2025-weeknotes","date":"2025-01-25"},{"name":"Weeknotes #61 (January 03, 2026)","description":"https://lannonbr.com/blog/jan-3-2026-weeknotes","value":"https://lannonbr.com/blog/jan-3-2026-weeknotes","date":"2026-01-03"},{"name":"Weeknotes #65 (January 31, 2026)","description":"https://lannonbr.com/blog/jan-31-2026-weeknotes","value":"https://lannonbr.com/blog/jan-31-2026-weeknotes","date":"2026-01-31"},{"name":"Weeknotes #9 (January 04, 2025)","description":"https://lannonbr.com/blog/jan-4-2025-weeknotes","value":"https://lannonbr.com/blog/jan-4-2025-weeknotes","date":"2025-01-04"},{"name":"Weeknotes #36 (July 12, 2025)","description":"https://lannonbr.com/blog/jul-12-2025-weeknotes","value":"https://lannonbr.com/blog/jul-12-2025-weeknotes","date":"2025-07-12"},{"name":"Weeknotes #37 (July 19, 2025)","description":"https://lannonbr.com/blog/jul-19-2025-weeknotes","value":"https://lannonbr.com/blog/jul-19-2025-weeknotes","date":"2025-07-19"},{"name":"Weeknotes #38 (July 26, 2025)","description":"https://lannonbr.com/blog/jul-26-2025-weeknotes","value":"https://lannonbr.com/blog/jul-26-2025-weeknotes","date":"2025-07-26"},{"name":"Weeknotes #35 (July 05, 2025)","description":"https://lannonbr.com/blog/jul-5-2025-weeknotes","value":"https://lannonbr.com/blog/jul-5-2025-weeknotes","date":"2025-07-05"},{"name":"Weeknotes #32 (June 14, 2025)","description":"https://lannonbr.com/blog/jun-14-2025-weeknotes","value":"https://lannonbr.com/blog/jun-14-2025-weeknotes","date":"2025-06-14"},{"name":"Weeknotes #33 (June 21, 2025)","description":"https://lannonbr.com/blog/jun-21-2025-weeknotes","value":"https://lannonbr.com/blog/jun-21-2025-weeknotes","date":"2025-06-21"},{"name":"Weeknotes #34 (June 28, 2025)","description":"https://lannonbr.com/blog/jun-28-2025-weeknotes","value":"https://lannonbr.com/blog/jun-28-2025-weeknotes","date":"2025-06-28"},{"name":"Weeknotes #31 (June 07, 2025)","description":"https://lannonbr.com/blog/jun-7-2025-weeknotes","value":"https://lannonbr.com/blog/jun-7-2025-weeknotes","date":"2025-06-07"},{"name":"The Role of a Junior Developer in the Age of AI","description":"https://lannonbr.com/blog/junior-dev-ai","value":"https://lannonbr.com/blog/junior-dev-ai","date":"2024-10-27"},{"name":"Installing local node modules with npm","description":"https://lannonbr.com/blog/local-node-module-install-npm","value":"https://lannonbr.com/blog/local-node-module-install-npm","date":"2020-10-05"},{"name":"Weeknotes #17 (March 01, 2025)","description":"https://lannonbr.com/blog/mar-1-2025-weeknotes","value":"https://lannonbr.com/blog/mar-1-2025-weeknotes","date":"2025-03-01"},{"name":"Weeknotes #71 (March 14, 2026)","description":"https://lannonbr.com/blog/mar-14-2026-weeknotes","value":"https://lannonbr.com/blog/mar-14-2026-weeknotes","date":"2026-03-14"},{"name":"Weeknotes #19 (March 15, 2025)","description":"https://lannonbr.com/blog/mar-15-2025-weeknotes","value":"https://lannonbr.com/blog/mar-15-2025-weeknotes","date":"2025-03-15"},{"name":"Weeknotes #20 (March 22, 2025)","description":"https://lannonbr.com/blog/mar-22-2025-weeknotes","value":"https://lannonbr.com/blog/mar-22-2025-weeknotes","date":"2025-03-22"},{"name":"Weeknotes #21 (March 29, 2025)","description":"https://lannonbr.com/blog/mar-29-2025-weeknotes","value":"https://lannonbr.com/blog/mar-29-2025-weeknotes","date":"2025-03-29"},{"name":"Weeknotes #70 (March 07, 2026)","description":"https://lannonbr.com/blog/mar-7-2026-weeknotes","value":"https://lannonbr.com/blog/mar-7-2026-weeknotes","date":"2026-03-07"},{"name":"Weeknotes #18 (March 08, 2025)","description":"https://lannonbr.com/blog/mar-8-2025-weeknotes","value":"https://lannonbr.com/blog/mar-8-2025-weeknotes","date":"2025-03-08"},{"name":"Weeknotes #27 (May 10, 2025)","description":"https://lannonbr.com/blog/may-10-2025-weeknotes","value":"https://lannonbr.com/blog/may-10-2025-weeknotes","date":"2025-05-10"},{"name":"Weeknotes #28 (May 17, 2025)","description":"https://lannonbr.com/blog/may-17-2025-weeknotes","value":"https://lannonbr.com/blog/may-17-2025-weeknotes","date":"2025-05-17"},{"name":"Weeknotes #29 (May 24, 2025)","description":"https://lannonbr.com/blog/may-24-2025-weeknotes","value":"https://lannonbr.com/blog/may-24-2025-weeknotes","date":"2025-05-24"},{"name":"Weeknotes #26 (May 03, 2025)","description":"https://lannonbr.com/blog/may-3-2025-weeknotes","value":"https://lannonbr.com/blog/may-3-2025-weeknotes","date":"2025-05-03"},{"name":"Weeknotes #30 (May 31, 2025)","description":"https://lannonbr.com/blog/may-31-2025-weeknotes","value":"https://lannonbr.com/blog/may-31-2025-weeknotes","date":"2025-05-31"},{"name":"Modular Learning - Diving into Mutable Instruments Plaits","description":"https://lannonbr.com/blog/modular-learning-plaits","value":"https://lannonbr.com/blog/modular-learning-plaits","date":"2020-08-09"},{"name":"Why I developed a reimplementation of the Netlify CLI in Rust","description":"https://lannonbr.com/blog/netlify-deploy-rust","value":"https://lannonbr.com/blog/netlify-deploy-rust","date":"2022-01-08"},{"name":"Readable Streams & Fetching large files in Nodejs","description":"https://lannonbr.com/blog/node-fetch-readable-stream","value":"https://lannonbr.com/blog/node-fetch-readable-stream","date":"2024-12-24"},{"name":"Weeknotes #52 (November 01, 2025)","description":"https://lannonbr.com/blog/nov-1-2025-weeknotes","value":"https://lannonbr.com/blog/nov-1-2025-weeknotes","date":"2025-11-01"},{"name":"Weeknotes #54 (November 15, 2025)","description":"https://lannonbr.com/blog/nov-15-2025-weeknotes","value":"https://lannonbr.com/blog/nov-15-2025-weeknotes","date":"2025-11-15"},{"name":"Weeknotes #2 (November 16, 2024)","description":"https://lannonbr.com/blog/nov-16-2024-weeknotes","value":"https://lannonbr.com/blog/nov-16-2024-weeknotes","date":"2024-11-16"},{"name":"Weeknotes #55 (November 22, 2025)","description":"https://lannonbr.com/blog/nov-22-2025-weeknotes","value":"https://lannonbr.com/blog/nov-22-2025-weeknotes","date":"2025-11-22"},{"name":"Weeknotes #3 (November 23, 2024)","description":"https://lannonbr.com/blog/nov-23-2024-weeknotes","value":"https://lannonbr.com/blog/nov-23-2024-weeknotes","date":"2024-11-23"},{"name":"Weeknotes #56 (November 29, 2025)","description":"https://lannonbr.com/blog/nov-29-2025-weeknotes","value":"https://lannonbr.com/blog/nov-29-2025-weeknotes","date":"2025-11-29"},{"name":"Weeknotes #4 (November 30, 2024)","description":"https://lannonbr.com/blog/nov-30-2024-weeknotes","value":"https://lannonbr.com/blog/nov-30-2024-weeknotes","date":"2024-11-30"},{"name":"Weeknotes #53 (November 08, 2025)","description":"https://lannonbr.com/blog/nov-8-2025-weeknotes","value":"https://lannonbr.com/blog/nov-8-2025-weeknotes","date":"2025-11-08"},{"name":"Weeknotes #1 (November 09, 2024)","description":"https://lannonbr.com/blog/nov-9-2024-weeknotes","value":"https://lannonbr.com/blog/nov-9-2024-weeknotes","date":"2024-11-09"},{"name":"Weeknotes #49 (October 11, 2025)","description":"https://lannonbr.com/blog/oct-11-2025-weeknotes","value":"https://lannonbr.com/blog/oct-11-2025-weeknotes","date":"2025-10-11"},{"name":"Weeknotes #50 (October 18, 2025)","description":"https://lannonbr.com/blog/oct-18-2025-weeknotes","value":"https://lannonbr.com/blog/oct-18-2025-weeknotes","date":"2025-10-18"},{"name":"Weeknotes #51 (October 25, 2025)","description":"https://lannonbr.com/blog/oct-25-2025-weeknotes","value":"https://lannonbr.com/blog/oct-25-2025-weeknotes","date":"2025-10-25"},{"name":"Weeknotes #48 (October 04, 2025)","description":"https://lannonbr.com/blog/oct-4-2025-weeknotes","value":"https://lannonbr.com/blog/oct-4-2025-weeknotes","date":"2025-10-04"},{"name":"Pay for Journalism","description":"https://lannonbr.com/blog/pay-for-journalism","value":"https://lannonbr.com/blog/pay-for-journalism","date":"2026-02-13"},{"name":"Daily Journalling with Pen and Paper in 2025","description":"https://lannonbr.com/blog/pen-and-paper-2025","value":"https://lannonbr.com/blog/pen-and-paper-2025","date":"2025-10-18"},{"name":"Platform Abstractions","description":"https://lannonbr.com/blog/platform-abstractions","value":"https://lannonbr.com/blog/platform-abstractions","date":"2023-04-08"},{"name":"Automating blogpost creation with Plop","description":"https://lannonbr.com/blog/plop-post-automation","value":"https://lannonbr.com/blog/plop-post-automation","date":"2020-05-09"},{"name":"Putting away the computer for the night","description":"https://lannonbr.com/blog/put-away-computers","value":"https://lannonbr.com/blog/put-away-computers","date":"2024-12-08"},{"name":"Read-Only AI Agents","description":"https://lannonbr.com/blog/read-only-agents","value":"https://lannonbr.com/blog/read-only-agents","date":"2025-09-06"},{"name":"Intentional Consumption and why I am using RSS in 2024 and beyond","description":"https://lannonbr.com/blog/rss-intentional-consumption","value":"https://lannonbr.com/blog/rss-intentional-consumption","date":"2024-11-02"},{"name":"Implementing the Display trait in Rust","description":"https://lannonbr.com/blog/rust-display-impl","value":"https://lannonbr.com/blog/rust-display-impl","date":"2020-09-09"},{"name":"Rust Projects","description":"https://lannonbr.com/blog/rust-projects","value":"https://lannonbr.com/blog/rust-projects","date":"2022-01-30"},{"name":"Keyboard shortcut automations with JS and Script Kit","description":"https://lannonbr.com/blog/script-kit-keyboard-shortcut-automations","value":"https://lannonbr.com/blog/script-kit-keyboard-shortcut-automations","date":"2021-05-09"},{"name":"Searching Digital Gardens with Alfred","description":"https://lannonbr.com/blog/search-digital-garden-alfred","value":"https://lannonbr.com/blog/search-digital-garden-alfred","date":"2020-05-25"},{"name":"Weeknotes #45 (September 13, 2025)","description":"https://lannonbr.com/blog/sep-13-2025-weeknotes","value":"https://lannonbr.com/blog/sep-13-2025-weeknotes","date":"2025-09-13"},{"name":"Weeknotes #46 (September 20, 2025)","description":"https://lannonbr.com/blog/sep-20-2025-weeknotes","value":"https://lannonbr.com/blog/sep-20-2025-weeknotes","date":"2025-09-20"},{"name":"Weeknotes #47 (September 27, 2025)","description":"https://lannonbr.com/blog/sep-27-2025-weeknotes","value":"https://lannonbr.com/blog/sep-27-2025-weeknotes","date":"2025-09-27"},{"name":"Weeknotes #44 (September 06, 2025)","description":"https://lannonbr.com/blog/sep-6-2025-weeknotes","value":"https://lannonbr.com/blog/sep-6-2025-weeknotes","date":"2025-09-06"},{"name":"Debugging serde_json error paths","description":"https://lannonbr.com/blog/serde-path-to-error","value":"https://lannonbr.com/blog/serde-path-to-error","date":"2020-09-14"},{"name":"Analyzing JS Bundles with source-map-explorer","description":"https://lannonbr.com/blog/source-map-explorer-demo","value":"https://lannonbr.com/blog/source-map-explorer-demo","date":"2020-06-14"},{"name":"Setting up HTTPS in Tailscale in my home network","description":"https://lannonbr.com/blog/tailscale-https","value":"https://lannonbr.com/blog/tailscale-https","date":"2024-12-24"},{"name":"Getting Started with using Tailwind in Toast","description":"https://lannonbr.com/blog/tailwind-toast-getting-started","value":"https://lannonbr.com/blog/tailwind-toast-getting-started","date":"2020-10-07"},{"name":"VS Code Extensions","description":"https://lannonbr.com/blog/vscode-extensions","value":"https://lannonbr.com/blog/vscode-extensions","date":"2020-05-04"},{"name":"VSCode Issue Tracker Post Mortem","description":"https://lannonbr.com/blog/vscode-issue-tracker-post-mortem","value":"https://lannonbr.com/blog/vscode-issue-tracker-post-mortem","date":"2023-03-19"},{"name":"GitHub Issues: Angry AI Spam Edition","description":"https://lannonbr.com/blog/vscode-issues-angry-ai-spam","value":"https://lannonbr.com/blog/vscode-issues-angry-ai-spam","date":"2025-12-20"},{"name":"Auto-enabling Dark Mode on Windows 10 based on time of day","description":"https://lannonbr.com/blog/win-10-dark-mode","value":"https://lannonbr.com/blog/win-10-dark-mode","date":"2020-09-20"},{"name":"Working in Public Notes","description":"https://lannonbr.com/blog/working-in-public-notes","value":"https://lannonbr.com/blog/working-in-public-notes","date":"2020-08-09"},{"name":"Working with RSS","description":"https://lannonbr.com/blog/working-with-rss","value":"https://lannonbr.com/blog/working-with-rss","date":"2025-05-04"},{"name":"Testing Yoke: A possible future beyond Helm","description":"https://lannonbr.com/blog/yokecd-testing","value":"https://lannonbr.com/blog/yokecd-testing","date":"2025-03-09"}]}
