AI Solves the Problem You Describe, Not the One You Have
Your AI built exactly what you asked for. Here's how to give it context that's objective, complete and concise so it solves the real problem.
Writings
Thoughts on programming, technology, and lessons learned along the way.
Your AI built exactly what you asked for. Here's how to give it context that's objective, complete and concise so it solves the real problem.
Popup and voice alerts, a one-click prompt enhancer, a detail slider, an assumptions tracker, and a context window bar: five small Claude Code mods, each a single row above the prompt box, that keep the human in the loop at the right moments.
Faster isn't always better: artificial latency and meaningful loaders can build user confidence, and a dedicated UX agent can catch what AI-generated interfaces miss. Building software is getting cheaper — making it worth using is still hard.
Coding agents can ship code changes while leaving stale docs that mislead the next session. Keep behavior in names, types, and tests; reserve prose for non-inferable constraints; keep docs minimal and close to code; and remind agents to finish documentation updates with the change.
Keep hand-written frontend interfaces and pin them to backend service methods with compile-time type assertions — about sixty lines of TypeScript magic that turns silent API drift into a red build, adoptable one endpoint at a time.
A practical pipeline for reducing tech debt in enterprise JS/TS codebases: Knip for mechanical detection, TypeScript LSP for function-level analysis, CI automation with grace periods, and scoped LLM audits for architectural dead code — with detection and judgment kept separate.
Page navigation in React SPAs doesn't have to be an instant hard cut. The View Transitions API lets the browser animate between route snapshots with a few lines of CSS — no animation library required.
An ~80-line script that finds unused TypeScript function candidates using the compiler AST and getReferencesAtPosition from the Language Service API — the same engine behind Find All References in your editor.
Incognito mode is session isolation, not zero caching. A test suite across 11 scenarios reveals how Chrome shares cookies, storage, and HTTP cache within incognito sessions — and clears them when the last window closes.
How to run GitHub Copilot CLI inside GitHub Actions for AI-powered CI checks — security review, requirements validation, and documentation checks — plus the pros, cons, and a recommended three-layer architecture.
SSH into your MacBook from your iPhone anywhere in the world using a-Shell, Tailscale, and tmux — a completely free, open-source setup that keeps terminal sessions alive across disconnects.
Chrome DevTools' Override Content and Override Headers let you intercept network requests and replace responses locally — a game changer for frontend development, especially on large projects where backend changes are slow or impossible.
After publishing 100+ Flutter apps, these are the App Store rejection reasons I see most often — missing Info.plist permissions, alpha-channel icons, in-app account deletion, XML escaping, debug banners in screenshots, and mandatory login issues.
Side-effect imports run a module's top-level code without binding any exports — useful for polyfills, analytics, and startup configuration, but they hide behavior and introduce ordering concerns. This post explains the pattern with examples and when to use it carefully.
The BroadcastChannel API lets browser tabs, windows, iframes, and workers on the same origin exchange messages without a server. This post covers common use cases, a logout synchronization example, and how it compares to localStorage events, Shared Workers, and Service Workers.
Seven common problems with AI-assisted 'vibe coding' — from duplicated code and security gaps to generic frontends and missing context — with practical workflow solutions for each. These aren't fundamental AI limitations; they're fixable with the right habits.
A walkthrough of Hopcroft's Algorithm for DFA minimization — partition refinement, a step-by-step six-state example, full Python implementation, and O(n·s·log n) complexity analysis. A final project for UVA's Advanced Data Structures and Algorithms class.
Reflections from my first PyCon US — volunteering at the registration desk, GPU tiling with NVIDIA, AI economics, Python's generational garbage collector, Pablo Galindo's 'cathedral' keynote on open source, and the 'Silence is Gold' lightning talk. PyCon reminded me that Python is much bigger than a programming language — it's a community.
Monorepos significantly enhance AI coding tools by providing full context across frontend, backend, and shared code. This article explains how unified codebases enable better AI suggestions, fewer errors, and more effective pair programming with AI assistants.
Discover practical productivity tips and tools that can significantly boost your programming efficiency, from keyboard shortcuts to automation techniques.
Xcode's DerivedData folder can consume massive disk space on Mac. This article explains how to find and safely delete it to reclaim storage, with a real-life example of freeing up 276 GB.
A real-life scenario demonstrates how git rebase can help separate feature work from dependent changes. The article explains a branching situation, the problem with merging, and how 'git rebase --onto main A' solves it, highlighting the value of practical experience.
Mobile browsers often share canonical URLs, which can strip important context from links. This article explains why, the impact on users, and a workaround for static sites to preserve full URLs when sharing.
Learn how to write clean Flutter code using Dart extension methods. This article explains how to add new methods to existing classes, provides practical examples like date-only extraction and string capitalization, and encourages creating your own extensions for cleaner, more maintainable code.
Learning programming in 2024 is easier than ever thanks to abundant resources, but it's also easy to get overwhelmed. Focus on mastering core concepts, building real projects, and following your interests to stay motivated. Avoid "tutorial hell" by applying what you learn and tracking your progress.
No articles found matching your criteria.