A guide to set up a modern Python development environment using uv, the fast all-in-one tool from Astral that replaces pyenv, virtualenv, and Poetry.
Read articleAll Posts
Most env-var validation checks that values exist. That catches missing config but misses the worse case - a value that is present, valid in shape, and silently wrong. Here is the asymmetric pattern for separating loud failures from silent ones in a Next.js server.
Read articleWhen one Go struct legitimately serves multiple consumer roles - producer, service, admin - declare three interfaces and let DI cache the singleton at the wide type while each consumer holds only the methods it can call. Same shape as io.ReadWriteCloser in the stdlib.
Read articleMost SQS idempotency guides reach for Redis dedupe keys or dedupe tables. If your worker's job ends in a terminal state-machine transition, the row's own status column is already the lock - and one UPDATE statement is the entire safety story.
Read articleA talk I gave to the Airvet engineering org on working with AI coding agents - the mental model, context engineering, and the Research → Plan → Implement loop that ties them together.
Read articleLearn how to configure MCP (Model Context Protocol) servers globally for Claude Code, making them available across all your projects.
Read articleA talk I gave to the Airvet engineering org as a primer on AI - what GPT and RAG actually are, how neural networks, tokens, and embeddings fit together, and why the difference matters.
Read articleA guide to the upcoming changes in ESLint v9 regarding TypeScript integration, including migration notes.
Read articleHow to solve one of the most frustrating UX issues in chat applications: ensuring automatic scrolling works correctly when images load asynchronously.
Read articleWhy useRef alone is insufficient for dynamic measurements, and how to combine it with ResizeObserver and useState for responsive UI.
Read articleSolving Firebase Auth redirect issues on Vercel by implementing a proxy solution to handle SAML SSO authentication and resolve missing initial state errors.
Read articleUnderstanding the Go idiom of accepting interfaces and returning concrete types to write flexible, reusable, and maintainable code.
Read articleUnderstanding memory allocation in Go, including stack vs heap allocation, escape analysis, and how Go handles pointer returns from functions.
Read articleUnderstanding Go methods, the difference between value and pointer receivers, embedding for composition, and how interfaces work with methods.
Read articleUnderstanding Go slices, their underlying array structure, creation and modification mechanics, and the implications when passing slices to functions.
Read articleA guide to JSON serialization and deserialization in Go, covering type mappings, HTTP responses, and practical examples with the net/http package.
Read articleHow Go passes function arguments by value and the implications for different data types: integers, pointers, slices, strings, and structs.
Read articleFixing VSCode warnings for Tailwind CSS directives by creating custom CSS data configuration files for proper syntax recognition.
Read articleA comprehensive cheatsheet for Node Version Manager (NVM) commands including installation, version switching, aliasing, and management.
Read articleA guide to understand Go interfaces through a power socket and electrical device analogy, covering duck typing and interface implementation.
Read articleHow to recover from an accidental git push --force by using git reflog to find the previous commit and restore the branch to its original state.
Read articleFixing TypeScript ESLint errors when using SVGs with Next.js 11 by creating custom module declarations and configuring TypeScript properly.
Read articleUnderstanding Go data structures and their memory layout including integers, floats, arrays, pointers, structs, strings, and slices.
Read articleHow to find and kill processes running on specific ports like 3000 on macOS using lsof and kill commands.
Read articleUnderstanding the difference between indexing strings as bytes versus runes in Go, and when to use each approach for proper Unicode handling.
Read articleAutomatically format and lint code with Git hooks using Husky, Prettier, ESLint, precise-commits and lint-staged for pre-commit and pre-push workflows.
Read articleA practical guide to working with JavaScript Promises - from basic chaining and resolve/reject behavior to .catch, Promise.all fail-fast handling, and async/await error patterns.
Read articleUnderstanding the io.Reader and io.Writer interfaces in Go, and how accepting an io.Writer parameter makes your code flexible across files, HTTP responses, stdout, and in-memory buffers.
Read articleDeploying a Go service to a single AWS EC2 instance as a hardened systemd service - cross-compiling the binary, copying it across, creating a non-root service user, configuring systemd with the right hardening directives, and handling graceful shutdown.
Read articleSetting up ESLint to parse and lint a mixed JavaScript and TypeScript codebase using overrides configuration for different file types.
Read articleA guide to access and utilize Material-UI theme objects within Emotion styled components and CSS props, with practical implementation examples.
Read articleA detailed guide to setting up automated email billing alerts in AWS using CloudWatch metrics and SNS notifications for cost monitoring.
Read articleA guide to implement authentication and authorization in AWS API Gateway, covering Cognito User Pools, IAM roles, and API keys with practical examples.
Read articleA step-by-step guide to setting up and using breakpoints for local debugging of AWS Lambda functions, improving serverless development workflow.
Read articleBridging CloudFormation-generated runtime values - DynamoDB table names, API Gateway URLs, ARNs that do not exist until deployment - into a local .env file using the serverless-export-env plugin.
Read articleA detailed guide to using Serverless Framework pseudo parameters for referencing Lambda functions and other AWS resources in your serverless applications.
Read articleLearn how to set up VS Code to properly recognize and validate custom YAML tags used in Serverless Framework configuration files.
Read articleHow the browser turns CSS changes into pixels - the five stages of the render pipeline, why some CSS properties trigger the full pipeline and others skip most of it, and how to avoid jank by understanding which path your changes take.
Read articleThere are two caching strategies on the web: fingerprinted-immutable URLs and server-revalidated mutable content. Pick one per resource. Most caching confusion comes from conflating no-cache, no-store, and must-revalidate.
Read articleA closure is a function bundled with the lexical environment it was created in. That environment survives because the closure holds a reference to it - which is why each call to a function factory returns an independent counter.
Read articleHow JavaScript actually shares methods between objects - the prototype chain, what `new` really does, and how ES6 class syntax maps onto the same underlying machinery.
Read articleA mental model for useEffect — moving past the lifecycle (mount/update/unmount) mindset to thinking about effects as a way to synchronize side effects with React state and props.
Read articleWhen to reach for useReducer over useState, and why. The Dan Abramov framing: dispatch tells the reducer what happened, the reducer decides how state changes - so the component never needs to know the update logic.
Read articleA guide to set up and switch between multiple AWS profiles when working with AWS CLI and Serverless Framework projects.
Read articleExploring effective programming education through mental models, with practical strategies for building conceptual understanding and improving outcomes.
Read articleA single-rule mental model for JavaScript's `this` - everything desugars to `Function.prototype.call(thisValue, ...args)`. Walks through bare calls, method calls, detachment, `.call` / `.apply` / `.bind`, the `new` operator, arrow functions, strict mode, and how to implement `.bind` from scratch.
Read articleA detailed guide to implementing dynamic locale selection in Gatsby using Contentful, GraphQL variables, and React Context for internationalized content.
Read articleA guide to using TypeScript type guards for runtime type checking and type narrowing in your TypeScript applications.
Read articleA guide to properly handling array map operations with union types in TypeScript, including type inference and type safety considerations.
Read articleA guide to managing Python environment variables using dotenv, including best practices for configuration and security.
Read articleA practical guide to reading Python tracebacks - the bottom-up mental model, multi-frame call stacks, common exception types, and the "During handling of the above exception" chain that confuses beginners.
Read articlePython's with statement compresses try/finally resource handling into a clean syntax - but it's just sugar over the __enter__/__exit__ protocol, which you can implement yourself with a class or the @contextmanager decorator.
Read articleA detailed guide to testing React Helmet document head meta tags using React Testing Library, including setup, best practices, and common testing patterns.
Read articleA guide to implement TypeScript generics and conditional types for type-safe Emotion components with dynamic as props, including practical patterns and examples.
Read articleBridging callback-style AWS SDK v2 methods with async/await in Node.js Lambda handlers - the .promise() method, sequential and parallel SDK calls, and the init-outside-handler pattern for cached Promises.
Read articleThe mental model behind CloudFormation !Ref and !GetAtt - !Ref returns a resource primary identifier, !GetAtt returns one of its named attributes. With practical examples for IAM permissions and Lambda environment variables in serverless.yml.
Read articleAWS docs call Lambda-to-Lambda invocation an anti-pattern, but there are specific cases where direct invoke is the right call. A walkthrough of the real costs, the cases where they apply, the cases where they do not, and the alternatives.
Read articleA practical cheatsheet for the Serverless Framework CLI - organized by workflow phase (bootstrap, develop, deploy, invoke, inspect, rollback, remove) instead of alphabetically.
Read articleTwo practical patterns for scoping down the IAM permissions used by the Serverless Framework CLI when deploying - bottom-up gradual scoping, and the top-down 'dedicated deployer' pattern using a dev account as a permission discovery sandbox.
Read articleMost serverless bugs don't live in your code - they live at integration points and in IAM config. Here's why unit tests miss them and what to test instead.
Read articleA deep dive into TypeScript ESLint plugin performance issues, exploring common bottlenecks and providing solutions for improved linting speed.
Read articleA practical guide to reducing AWS Lambda cold start latency in Node.js - the anatomy of a cold start, six concrete optimizations from SDK tree-shaking to HTTP keep-alive, common myths (VPC and Layers), and when to reach for Provisioned Concurrency.
Read articleA guide to set up ESLint, explaining the differences between ESLint config files and plugins, with detailed configuration examples and best practices.
Read articleA detailed guide to profiling, measuring, and optimizing slow ESLint rules, with practical techniques for improving linting performance.
Read articleA guide to create TypeScript module declarations for SVG and image assets, including webpack configuration and type definitions.
Read articleA guide to properly typing and integrating AWS Amplify configuration files in TypeScript projects, with focus on aws-exports.js setup.
Read articleA guide to implementing Emotion Theme Provider decorators in Storybook, including troubleshooting common issues and best practices for theme management.
Read articleA guide to configure React-Intl Provider decorators in Storybook for internationalization testing, including setup and best practices.
Read articleA detailed guide to setting up Webpack loaders in Storybook for importing and using SVG files as React components.
Read articleA guide to configure Emotion CSS prop with JSX Pragma in Storybook, including setup, troubleshooting, and best practices.
Read articleA step-by-step guide to keeping your Git fork in sync with the original upstream repository, including remote tracking and branch management.
Read articleA detailed guide to testing Formik form validation schemas using Jest and React Testing Library, covering validation rules, error handling, and test patterns.
Read articleAn in-depth explanation of the __name__ == __main__ pattern in Python, why it exists, and how to use it effectively in your modules.
Read articleA guide to set up a modern Python development environment using pyenv for version management and Poetry for dependency management.
Read articleA practical guide to diagnosing and resolving common Netlify build failures, including deployment issues and continuous integration troubleshooting.
Read articleRecap of the Hacktoberfest Orange County meetup — open source contributions, community engagement, and collaborative coding experiences.
Read articleA detailed guide to testing Formik form submission handlers using Jest and React Testing Library, including async submissions and validation testing.
Read articleUnderstand and resolve React synthetic event warnings in setState, with best practices for event handling and state updates.
Read articleA deep dive into React pure render optimization and method binding patterns, exploring different approaches for improving component performance.
Read articleA guide to configuring Webpack for building optimized React production bundles on Windows, including environment-specific settings and common pitfalls.
Read articleA guide to avoiding common pitfalls when using setState in React, including asynchronous updates, batching, and state management patterns.
Read article