Enhancing software, elevating teams.

The hidden cost of API migrations

The hidden cost of API migrations

Forced API migrations without a rollback plan? That’s how businesses lose trust—and money.

Securely Mounting COMPOSER_AUTH Secret in Docker Builds

Securely Mounting COMPOSER_AUTH Secret in Docker Builds

Using ARG or ENV for secrets in Dockerfiles can expose sensitive credentials in your final image. Instead, use Docker BuildKit’s --secret to pass secrets securely at build time. Learn how to protect your Docker builds across CLI, Docker Compose, GitHub Actions, and GCP.

Death by a 1000 tweaks: the absurdity of maintaining your own UI library

Death by a 1000 tweaks: the absurdity of maintaining your own UI library

The best products aren’t built by obsessing over pixels but by delivering real value. Without a clear UI framework, teams drown in design tweaks instead of shipping features.

Taming a Python: don't let the snake bite

Taming a Python: don't let the snake bite

Adapting to a new tech stack is all about mindset. Switching from PHP to Python was an eye-opener. Package management confusion, unexpected paradigms, and a lack of encapsulation made for an interesting challenge. Embracing constraints is the secret to growth.

There is a time and place for everything: managed services vs DIY

There is a time and place for everything: managed services vs DIY

Should you avoid managed services to prevent lock-in? Maybe. However, spending months reinventing infrastructure instead of shipping features is a bigger risk. Balance is key. Know the trade-offs, understand the costs, and make decisions based on your reality.

Learning from OSS: legacyBehaviour property on Next.js 's Link component

Learning from OSS: legacyBehaviour property on Next.js 's Link component

Ever introduced a breaking change and instantly regretted it? Components evolve, but forcing users into painful refactors isn’t ideal. Next.js tackled this with a legacyBehaviour flag—letting devs opt out of the new behavior while they migrate at their own pace.

How to start growing talent in-house

How to start growing talent in-house

Startups thrive on rapid growth, but when it comes to scaling talent, they often hit a wall. Enterprise-style feedback systems sound great—until they become a productivity sink. So how can you build structured talent development without overcomplicating things?

When to hire senior developers vs. juniors - the perfect team composition

When to hire senior developers vs. juniors - the perfect team composition

Senior developers bring expertise, long-term vision, and stability to complex SaaS projects, while juniors—when guided effectively—offer cost-efficiency and faster execution for well-defined tasks.

When Symfony event listeners go wild!

When Symfony event listeners go wild!

A simple bug fix can turn into a full-blown debugging adventure - especially when Symfony’s event listeners start misbehaving. 🧐 If your listeners are firing twice (or more), your service configuration might be the culprit. Here’s how we solved a sneaky autoconfiguration.

You might also like
Eliminating SPOFs: the importance of documentation

Eliminating SPOFs: the importance of documentation

Mobile app security: A best practices checklist for startups and scale-ups

Mobile app security: A best practices checklist for startups and scale-ups

Pragmatic ways of keeping documentation up to date

Pragmatic ways of keeping documentation up to date

A field guide to modernizing your PHP project — how to avoid a rewrite through incremental development

A field guide to modernizing your PHP project — how to avoid a rewrite through incremental development

You’ve successfully subscribed to madewithlove
Welcome back! You’ve successfully signed in.
Great! You’ve successfully signed up.
Success! Your email is updated.
Your link has expired
Success! Check your email for magic link to sign-in.