Building teams, crafting code,
making impact.

PHP lied to me

PHP lied to me

We discuss the challenges of using PHPStan at its strictest level for type checking, particularly with 'mixed' types. It explores solutions like using strval() and creating custom functions, but ultimately, the author opts to lower PHPStan's strictness due to complexity, ending with mixed feelings.

Automating malware scanning on uploaded files

Automating malware scanning on uploaded files

Implementing a malware scan for file uploads using ClamAV on DigitalOcean, this post details setting up a pragmatic solution despite infrastructure limitations. It covers the initial approach, technical setup, challenges, and potential improvements for a secure file-handling system.

Six signs your team needs to scale

Six signs your team needs to scale

Learn when your startup is ready to scale: signs include increased workloads, strained leadership, skill gaps, and declining quality. Discover the role of CTO coaching and external guidance from madewithlove for successful growth and innovation.

Don't become a code review bottleneck

Don't become a code review bottleneck

Transform code reviews from a bottleneck to a team effort. Balance quality and productivity by engaging everyone in reviews, automating minor checks, and fostering a culture of code quality. Make your reviews sustainable now.

How to communicate a roadmap to VCs and investors

How to communicate a roadmap to VCs and investors

What do investors and VCs care about when they ask for your roadmap? How do you gain their trust while presenting them? How manage expectations?

Never hire senior developers*

Never hire senior developers*

When do SaaS startup founders know it's the right time to hire junior developers? And why is always hiring senior developers, not a good idea?

Why AI?

Why AI?

Will AI take over our jobs? Should we, as software developers, be using AI? How should I use AI in my job? How will this all evolve? Here's my personal findings on the topic.

Be boring

Be boring

In discussions with non-tech managers, buzzwords often mask understanding. My view: use tech pragmatically, focusing on proven tools. Innovation matters, but clarity and long-term stability are key. Managers should demystify tech jargon and ensure meaningful application.

The command pattern in Laravel

The command pattern in Laravel

This post delves into the Command Bus pattern, highlighting its use in software architectures and Laravel implementation. It covers commands as user actions, command handlers, and the Command Bus for execution, emphasizing the pattern's role in simplifying and maintaining code structure and logic.

You might also like
A company's first steps in AI

A company's first steps in AI

Caching routes, components and functions with "use cache" in Next.js 15 (canary)

Caching routes, components and functions with "use cache" in Next.js 15 (canary)

Instant feedback using the useOptimistic hook in React

Instant feedback using the useOptimistic hook in React

Crossing boundaries: Handling data mutations in client components

Crossing boundaries: Handling data mutations in client components

Crossing boundaries: Passing server data to client components in React

Crossing boundaries: Passing server data to client components in React

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.