Enhancing software, elevating teams.

Why engineers need a voice in the roadmap

Why engineers need a voice in the roadmap

A great product roadmap balances business goals with technical sustainability. Ignoring engineering input leads to technical debt and bottlenecks that slow growth. In this video, we discuss how SaaS teams can integrate engineering priorities into the roadmap for long-term success.

Why you shouldn't let customers pay for features

Why you shouldn't let customers pay for features

Selling bespoke features to customers might seem profitable, but it changes your SaaS business model. Instead of a scalable product, you become a service provider, stuck maintaining one-off features. Learn why this approach is risky and how to build for long-term success.

Tech stack decisions for AI startups: what you need to know

Tech stack decisions for AI startups: what you need to know

Selecting the right tech stack is critical for AI startups. Python is essential for data science, but the backend, frontend, and infrastructure choices determine scalability and efficiency. Explore the best tech stack combinations, hosting tools, and ETL solutions to future-proof your AI startup.

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.

You might also like
The hidden cost of multiple repositories

The hidden cost of multiple repositories

A guide to vibe coding vs AI-assisted development

A guide to vibe coding vs AI-assisted development

Communicate or be micromanaged - the engineering edition

Communicate or be micromanaged - the engineering edition

Legacy vs technical debt: how investors can spot hidden risks in software products

Legacy vs technical debt: how investors can spot hidden risks in software products

Ignoring revisions when using git blame

Ignoring revisions when using git blame

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.