Enhancing software, elevating teams.

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.

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?

You might also like
Communicate or be micromanaged - the engineering edition

Communicate or be micromanaged - the engineering edition

Your startup does not need more engineers, it needs fewer mistakes

Your startup does not need more engineers, it needs fewer mistakes

Getting started with performance testing

Getting started with performance testing

Navigating Outages: lessons from recent cloud failures

Navigating Outages: lessons from recent cloud failures

How to pragmatically leverage AI as a startup

How to pragmatically leverage AI as a startup

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.