RSSAmplifier

Blog

Patrick Müller

Hey, I’m Patrick 👋 I share what I learn about software engineering (mostly Python), AI, product development, and life as a dev.

patrickm.deRSS feed ↗12 posts

Latest posts

Static Protocols in Python: Behaviour Over Inheritance

The first time I read about protocols was in the book "Fluent Python" by Luciano Ramalho. This book goes deep. Deeper than I knew Python at that time. If you hadn't heard of Protocols before, I'll give you a short introduction. Protocols have something

How to build internal developer tools with a small team

There are thousands of resources on how to build good software products. When I was developing my first SaaS product, LemonSpeak, I often found myself in the same loop: Should I implement a new feature or improve an existing one? The question seems easy - but it isn't. I

When is a knowledge graph open or closed world? And how to create a company wide implementation strategy

This week, I created my very first personal knowledge graph. It was a rather small one. One that built up on my knowledge about Star Wars. I’ve been following a course on HPI (Hasso Plattner Institut), and this topic is also important at work. So, I wanted to

The LLM Hype Train: A Pamphlet[?] You Should Read With Your Manager

What if I told you ChatGPT is the end of software engineering? Would you believe it? Three years ago OpenAI changed the game in the AI field with ChatGPT. ChatGPT is based on the foundation of Large Language Models, in short LLM. Since then, AI has finally made it onto

Pytest Fixtures: How to Use & Organize them in your Test Architecture

In my last post , I talked about why I practice TDD and why I want to share my learning progress in testing. Today I want to talk about what pytest fixtures are, when I use them and how you can share fixtures across your tests. What are pytest fixtures? Imagine

How bugs made me believe in TDD

I always knew that testing was important, but I neglected it for a long time. During my studies, the subject was unfortunately given far too little attention and there was also a lack of practical relevance. However, as I gained more professional experience, I learned that I always have to

Why Celery Tasks trigger signals twice

Celery uses signals to trigger functions. I am currently writing tests for my Celery tasks. A central point for me is to test the function that is triggered by a successfully completed task. In my case, the function is called execute_after_task() and stores the task ID in Redis.

Pytest Fixtures: Einführung, Nutzung & Organisation in deiner Testarchitektur

In meinem letzten Post habe ich darüber gesprochen, warum ich TDD praktiziere und warum ich meinen Lernfortschritt in Testing teilen möchte. Heute möchte ich darüber sprechen, was pytest Fixtures sind, wann ich sie verwende und wie du Fixtures testübergreifend verf&

Warum ich TDD praktiziere und wie es auch dir helfen kann

Mir war schon immer klar, dass Testing wichtig ist, allerdings wurde es von mir dennoch eine lange Zeit vernachlässigt. Wahrend meines Studiums kam das Thema leider viel zu kurz und zudem fehlte es an Praxisbezug. Mit der zunehmenden Berufserfahrung habe ich aber gelernt, dass ich immer mit einer

Wie schreibe ich eine Cold Email?

Marketing ist ein Buch mit sieben Siegeln für mich. Ich bin mit Leib und Seele Softwareentwickler und dazu nicht sehr extrovertiert. Falls es dir auch so geht, dann ist dieser Artikel genau das Richtige für dich. Was käme mir da gelegener als cold emailing?

Wie du das richtige SaaS-Pricing findest und Fehler vermeidest

Falls du gerade an deinem eigenen SaaS (Software as a Service) arbeitest oder auch an einem anderen digitalen Produkt und vor der Entscheidung stehst, wie du das Pricing gestaltest, dann bist du hier genau richtig. Ganz kurz vorweg: Jedes Produkt und jedes Unternehmen ist individuell, daher gibt es keine allgemeing&

Wieso Celery Tasks Signale doppelt triggern

Celery nutzt Signale, um Funktionen zu triggern. Aktuell schreibe ich Tests für meine Celery Tasks. Dabei ist für mich ein wesentlicher Punkt, die Funktion zu testen, welche von einem erfolgreich beendetem Task getriggert wird. In meinem Fall heißt die Funktion execute_after_task() und