Join Function
fn::join
noun
- Takes a sequence of ideas and combines them, joined by a separator.
What tools help manage polyglot project dependencies?
I consulted 200+ references researching build systems so you don't have to. Here's the definitive feature matrix comparing 8 tools across 15 dimensions—plus the AI-powered research process that made it possible.

More ...
Why I Built a Calendar That Shows 365 Days at Once

AI Coding Tool Tips: Structure Your Logs Strategically
Turn your log firehose into queryable intelligence. Learn how structured logging with user IDs, session IDs, and request IDs transforms debugging from hours of regex hunting into SQL queries that trace any bug from user click to database error.
)](/img/2025-12-30-structure-your-logs-strategically/head-img.w2048q85.webp)
AI Coding Tool Tips: Generate Reusable Implementation Guides
Transform clever one-off solutions into reusable knowledge. Learn how to have AI document your best implementations as internal guides, creating a library of patterns you can reference and replicate across any project.

AI Coding Tool Tips: Keep Dependencies in Your Workspace
Stop watching your AI struggle with new APIs. Learn why making library source code available in your workspace beats MCP servers, and how direct file access gives AI the context it needs to integrate unfamiliar dependencies quickly.
)](/img/2025-12-28-keep-dependencies-in-workspace/head-img.w3840q85.webp)
AI Coding Tool Tips: Good build output is also worth a thousand prompts
Turn your build system into your most reliable code reviewer. Learn how smart builds catch AI mistakes that compile but break in production, and why dependency-aware tools like Nx speed up your AI coding iterations dramatically.
)](/img/2025-12-27-good-build-output-is-also-worth-a-thousand-prompts/head-img.w2048q85.webp)
AI Coding Tool Tips: AI Absorbed Every 'Works on My Machine' Bad Habit
Discover why AI inherits our worst "dev complete" habits and declares victory at 80% done. Learn how to use lightweight integration tests to give AI a real definition of done and catch missing pieces before you waste time debugging.

AI Coding Tool Tips: A failing test is worth a thousand prompts
Learn why failing tests eliminate ambiguity, how they catch meaning instead of just bugs, and the simple prompt that turns your test suite into an AI coding superpower.
)](/img/2025-12-25-failing-test/head-img.w3840q85.webp)
AI Coding Tool Tips: 7 types of things I put in my rule files.
Like Leonard Shelby from Memento, AI assistants forget everything between conversations. Learn the seven types of external memory—rule files—that transform your AI from confused newcomer to knowledgeable teammate who remembers your preferences and patterns.

AI Coding Tool Tips: Three Lenses That Keep AI Code Reviews From Killing You
Master the art of reviewing thousands of lines of AI-generated code without falling asleep. Learn three focused lenses—engineering culture, cross-cutting concerns, and idioms—that help you stay alert and catch dangerous code before it ships.
).
Not a recommended review technique, lol.](/img/three-lenses-that-keep-ai-code-reviews-from-killing-you/head-img.w3840q85.webp)
AI Coding Tool Tips: Why Your AI Coding Outputs Suck
Discover why jumping straight into "build me X" leads to 2,000 lines of wrong code. Learn the three levels of AI planning that transform vague prompts into precise builds, and why the fastest developers invest time upfront in planning mode.
).
_Isn't this entirely true about software too?_](/img/invest-time-in-planning-mode/head-img.w3840q85.webp)
AI Coding Tool Tips: Code Your Own Scaffolding First
Stop arguing with chatbots about TypeScript vs JavaScript. Learn how to scaffold projects before AI writes application code, turning your workspace structure into the perfect prompt that eliminates guesswork and gets you building features faster.
)](/img/code-your-own-scaffolding/head-img.w3840q85.webp)
AI Coding Tool Tips: Use Git Well
Learn why git becomes your lifeline when AI writes most of your code. Discover the team-scale practices that keep you aligned with code you didn't write yourself, and how branching gives you multiple states to experiment with when AI gets creative.
)](/img/use-git-well/head-img.w3840q85.webp)
10 reasons I don't write
Perfectionism disguised as "needing the right tools" kills writing before it starts. Learn why waiting for margin notes, automated numbering, and perfect markdown features is just procrastination in disguise, and I used coding to overcome it.

Polyglot monorepo build and maintenance automation
Stop copying code between folders and manually managing package builds. Learn how Projen, PDK, and Nx create reusable code packages with automated dependency tracking, letting you import instead of copy-paste while keeping build artifacts current with zero manual effort.

CDK Template to Launch an EC2 Instance with an Encrypted Root Volume
Set up remote development with VS Code's SSH plugin and automatic port forwarding. Learn how to use AWS CDK to create and delete EC2 development environments with encrypted storage, perfect for bandwidth-heavy development work.
Kubernetes Controller Pattern Example with Java and MySQL
Build a Kubernetes controller that automatically creates MySQL databases with StatefulSets, Services, and Secrets. Learn how controllers subscribe to API events and manage resource lifecycles, making database provisioning as simple as applying a custom resource.
10x Faster Spring Boot Startup Times
Achieve 10x faster startup and 5x less memory usage with Spring Native compilation. Learn how to compile Spring Boot apps to native executables that start in milliseconds instead of seconds, perfect for serverless and container environments.
k9s - My Favorite Kubernetes Tool
Replace endless kubectl commands with a terminal UI that makes Kubernetes management intuitive. Learn how k9s turns complex cluster operations into simple keyboard shortcuts, from viewing logs to navigating resources with ease.
Kubernetes with Java - Handling Events
Move beyond polling to real-time Kubernetes event handling in Java. Learn how to subscribe to API events for deployments and other resources, enabling notifications and automation that respond instantly to cluster changes.
Config Updates Without Redeployment for Spring and Kubernetes
Update application configuration without restarting pods using Spring PropertySources and Kubernetes ConfigMaps. Learn how to build apps that reload configuration on-demand, enabling live updates in production environments.
Accelerate Your Deployment Velocity with Feature flags
Deploy hundreds of changes per week without exposing incomplete work to users. Learn how feature flags let you separate deployment from release, enabling continuous delivery while keeping work-in-progress safely hidden behind toggles.
Kubernetes with Java - Creating Images
Create production-ready container images for Spring Boot apps using Dockerfiles or Cloud Native Buildpacks. Learn essential OCI image attributes: proper layering, non-root users, graceful shutdown, and security.
You Can Match How Many Deployments Amazon Does in a Day
Amazon does 136,000 deployments per day with 50,000 engineers—that's just 2-3 changes per engineer per week. Learn why your team can achieve similar velocity by making small iterative changes and automating 5-10 deployment steps per change.
Kubernetes with Java - Running in the Cluster
Deploy Spring Boot apps that access Kubernetes APIs from inside the cluster using proper RBAC configuration. Learn how to package apps into OCI images, configure ServiceAccounts with minimal permissions, and deploy with Kubernetes resources.
Kubernetes with Java - Asynchronous APIs
Stop overwhelming the Kubernetes API with frequent requests by switching to asynchronous event subscriptions. Learn when to use synchronous vs asynchronous APIs, how to implement watches with SharedIndexInformer, and cache data locally for better performance.
Kubernetes with Java - Introduction
Build Spring Boot applications that interact with Kubernetes APIs to extract deployment metadata and create custom views. Learn how to initialize the K8s API client and transform cluster data into team and application listings.
