๐Ÿ”— State machines as business logic engines - DEV Community

Throughout my years of web development with Elixir and Phoenix, I have often struggled with how to effectively implement business logic in a way that is maintainable and easy to reason about. One solution that has begun to gain traction in the world of state management is the con … | Continue reading


@yellowduck.be | 3 hours ago

๐Ÿ”— I've built 30+ MVPs. The founders who succeed are the ones you'd probably hate.

I've been the hired gun for dozens of founders over the years. I've seen who makes it and who burns out. And honestly? The ones who win are usually doing things that "SaaS Twitter" would scream at them for. Here is the controversial stuff I see the winners doing while everyone el … | Continue reading


@yellowduck.be | 8 hours ago

๐Ÿ”— Introduction to HTML, CSS and OpenAI in Phoenix LiveView

I'm Boris and I created Claude Code. Lots of people have asked how I use Claude Code, so I wanted to show off my setup a bit. My setup might be surprisingly vanilla! Claude Code works great out of the box, so I personally don't customize it much. There is no one correct way to us … | Continue reading


@yellowduck.be | 23 hours ago

๐Ÿ”— To spawn, or not to spawn?

That is indeed the question! Whether it is better to keep everything in a single process, or to have a separate process for every piece of state we need to manage? In this post Iโ€™ll talk a bit about using and not using processes. Iโ€™ll also discuss how to separate complex stateful … | Continue reading


@yellowduck.be | 23 hours ago

๐Ÿ”— 5 engineering dogmas it's time to retire

A few months ago, I wrote about 13 software engineering laws, which are observations about how software projects behave. Today, Iโ€™ll cover 5 practices that are considered โ€˜common wisdomโ€™, and why I think worth reconsidering them. Donโ€™t reinvent the wheel - find a package Every P … | Continue reading


@yellowduck.be | 1 day ago

๐Ÿ”— Embedding-based tool selection for AI agents

When I first built our AI assistant, it had five tools. Look up an order. Process a refund. Check ticket availability. Simple stuff. Fast forward six months and we're at nearly 40 tools spanning orders, events, marketing campaigns, contests, and customer management. The problem b … | Continue reading


@yellowduck.be | 1 day ago

๐Ÿ”— Using React components in Phoenix LiveView

There are several ways to integrate React or Svelte into a Phoenix project. Tools like Inertia.js also work quite well with Phoenix. However, for this experiment I wanted to do it without relying on external libraries, using only what Phoenix provides out of the box. Continue rea … | Continue reading


@yellowduck.be | 1 day ago

๐Ÿ”— Building embeddable widgets with Phoenix Channels

When youโ€™re selling stuff, every click away from your website is a potential lost sale. Customers kept asking us to allow people to buy tickets without leaving their branded site. They loved the service, but wanted to retain brand presence and coherence. The ask seemed simple eno … | Continue reading


@yellowduck.be | 2 days ago

๐Ÿ”— Building a double-entry payment system in Elixir

Multi-tenant platforms which facilitate e-commerce transactions hold people's money. Getting that money to the right people, in the right amounts, at the right time, is the core trust contract with your partners. This is the most critical and sensitive component in our system as … | Continue reading


@yellowduck.be | 2 days ago

๐Ÿ”— Itโ€™s hard to justify Tahoe icons

I was reading Macintosh Human Interface Guidelines from 1992 and found this nice illustration: accompanied by explanation: Fast forward to 2025. Apple releases macOS Tahoe. Main attraction? Adding unpleasant, distracting, illegible, messy, cluttered, confusing, frustrating icons … | Continue reading


@yellowduck.be | 2 days ago

๐Ÿ”— Exposed EPMD: a hidden security risk for RabbitMQ and the BEAM ecosystem

The Erlang Port Mapper Daemon (EPMD) is a built-in component that helps Erlang-based applications (including RabbitMQ) discover each otherโ€™s distribution ports for clustering. Although EPMD itself isnโ€™t directly dangerous, its exposure on the public internet often signals that Er … | Continue reading


@yellowduck.be | 3 days ago

๐Ÿ”— SQLite as an application file format

An SQLite database file with a defined schema often makes an excellent application file format. Here are a dozen reasons why this is so: Simplified application development Single-file documents High-level query language Accessible content Cross-platform Atomic transactions Incre … | Continue reading


@yellowduck.be | 3 days ago

๐Ÿ”— Use 'git mv' to record filename case changes in Git

After my previous post Tracking renamed files in Git, hereโ€™s another entry in my ongoing series โ€œI thought git mv was useless but I was wrongโ€. This oneโ€™s especially relevant to users on macOS and Windows, where the file system is case-insensitive by default. More precisely, APFS … | Continue reading


@yellowduck.be | 3 days ago

๐Ÿ”— How startups lose their edge

Ian explains how companies lose their edge during rapid growth. As teams scale from 20 to 2,000 people, the original culture gets diluted through layers of management. Companies start hiring safe candidates with impressive resumes instead of culture fits, and adopt conventional s … | Continue reading


@yellowduck.be | 4 days ago

๐Ÿ”— Why (senior) engineers struggle to build AI agents

For the past few decades, Engineering meant one thing: removing ambiguity. It meant defining strict interfaces, enforcing type safety, and ensuring that Input A \+ Code B \= Output C. Traditional software engineering is Deterministic. We play the role of Traffic Controllers; we o … | Continue reading


@yellowduck.be | 4 days ago

๐Ÿฅ Using Tailwind CSS group hover to style child elements

Tailwind CSS provides the group and group-hover utilities to conditionally apply styles to child elements based on the state of a parent. This is especially useful when you want to change the appearance of nested elements when a container is hovered, focused, or active. In plain … | Continue reading


@yellowduck.be | 4 days ago

๐Ÿ”— A modern guide to SQL JOINs

There are many SQL JOINs guides and tutorials, but this one takes a different approach. We try to avoid misleading wording and imagery, and we structure the material in a different way. The goal of this article is to clarify your mental model. (~6600 words) Continue reading on kb … | Continue reading


@yellowduck.be | 5 days ago

๐Ÿ”— "Secure by default" โ€” how Phoenix keeps you safe for free

Discover how Phoenix's "secure by default" framework keeps your applications safe without extra cost or effort. Learn about key security features like XSS, CSRF protection, secure browser headers, and SQL injection prevention, automatically integrated for your peace of mind. Perf … | Continue reading


@yellowduck.be | 5 days ago

๐Ÿ”— You should never build a CMS

We're just going to call it: up until recently, cursor.com was powered by Sanity as its CMS. Then Lee Robinson sat down and spent 344 agent requests and around $260 to migrate the content and setup to markdown files, GitHub, Vercel, and a vibe-coded media management interface. He … | Continue reading


@yellowduck.be | 5 days ago

๐Ÿ”— AI can write your code. it canโ€™t do your job

The companies building AI are spending billions to acquire engineers, not replace them. Hereโ€™s why your job is safer than you think. The Larger Context As technology advances, the misconception that AI can completely automate jobs has become prevalent. However, this perspective o … | Continue reading


@yellowduck.be | 6 days ago

๐Ÿ”— What I look for in AI-assisted PRs

I review a lot of PRs these days. As the job of a PR author becomes easier with AI, the job of a PR reviewer gets harder.1 AI can โ€œassistโ€ with code review, but Iโ€™m less optimistic about AI code review than AI code generation. Sure, Claude/Codex can be quite helpful as a first pa … | Continue reading


@yellowduck.be | 6 days ago

๐Ÿฅ Sorting case insensitive in SQLite with COLLATE NOCASE

SQLite sorts text using a collation. By default this is case sensitive, which often leads to surprising orderings when data contains mixed casing. SQLite provides a built-in solution for simple use cases: COLLATE NOCASE. Basic usage You can apply COLLATE NOCASE directly in an ORD … | Continue reading


@yellowduck.be | 6 days ago

๐Ÿ”— How to review AI-generated PRs

So your team uses AI a lot. Maybe youโ€™re feeling a bit overwhelmed by the amount of bad code, or just the volume of code, youโ€™re having to review. Iโ€™ve been there too. While AI has gained popularity, Iโ€™ve worked with many teams in many industries. Here are some techniques and str … | Continue reading


@yellowduck.be | 7 days ago

๐Ÿ”— What I learned building a vector database on object storage

When I came across Turbopuffer, a vector database built entirely on object storage, I got curious. Really curious. The architecture seemed almost too simple. Write-ahead logs on S3? Centroid-based indexes? Stateless query nodes? It felt like someone had taken all the "rules" of d … | Continue reading


@yellowduck.be | 7 days ago

๐Ÿฅ Be aware of 1Password breaking syntax highlighting

You might have noticed that the syntax highlighting of the code snippets on this site don't always work correctly. After spending a couple of hours figuring out what happened, it turns out that the culprit is 1Password's browser extension. Hey everyone! I want to thank everyone … | Continue reading


@yellowduck.be | 7 days ago

๐Ÿ”— LLM APIs are a synchronization problem

The more I work with large language models through provider-exposed APIs, the more I feel like we have built ourselves into quite an unfortunate API surface area. It might not actually be the right abstraction for whatโ€™s happening under the hood. The way I like to think about thi … | Continue reading


@yellowduck.be | 8 days ago

๐Ÿ”— Building a MCP server in Elixir

Weโ€™ve been working with MCP servers for a while, and this use case was a perfect opportunity to build out another one. The goal of this article is to give you an overview of how we built a simple MCP server in Elixir, focusing on using the appropriate libraries and understanding … | Continue reading


@yellowduck.be | 8 days ago

๐Ÿ”— Tuning TCP ports for your Elixir app

Elixir is great at handling lots of concurrent connections. When you actually try to do this, however, you will bump up against the default OS configuration which limits the number of open filehandles/sockets. You may also run out of TCP ephemeral ports. The result is poor applic … | Continue reading


@yellowduck.be | 8 days ago

๐Ÿ”— Avoiding recompilation hell in Elixir with mix xref

Elixir is an amazing language and itโ€™s been a huge privilege being able to work with it for over a decade now (how time flies)! Iโ€™d like to point out an issue that, if overlooked, can severely impact productivity in your team. Yes, Iโ€™m talking about module (re)compilation. You ma … | Continue reading


@yellowduck.be | 9 days ago

๐Ÿ”— PDF data extraction and OCR: the ultimate guide

The Portable Document Format (PDF) has been indispensable for professional and every-day life ever since its creation in 1993. Secure, accessible to a wide audience and extremely convenient in its portability, PDF files are used pretty much in all spheres of peopleโ€™s life contain … | Continue reading


@yellowduck.be | 9 days ago

๐Ÿ”— Adding Google OAuth to Phoenix

Recently added Google authentication to Mitte. Writing this down as I don't want to remember all the steps next time. Here's how to add Google OAuth to a Phoenix app, step by step. Continue reading on azerkoculu.com#reading-list #http #elixir #phoenix #auth | Continue reading


@yellowduck.be | 9 days ago

๐Ÿ”— Database migrations in Kubernetes

In the era of microservices and Kubernetes, managing database migrations has become more complex than ever. Traditional methods of running migrations during application startup are no longer sufficient. This article explores various approaches to handling database migrations in a … | Continue reading


@yellowduck.be | 10 days ago

๐Ÿ”— Simple network communications in Docker without compose

I often run services like databases or messaging systems in Docker and connect to them from my host computer, where I have a .NET application that processes data. However, managing these services through Docker Compose can add unnecessary complexity when I'm only running a few si … | Continue reading


@yellowduck.be | 10 days ago

๐Ÿ”— Virtual fields in Ecto: Eliminating N + 1 queries

There exists a plethora of things I find annoying in this world and slow sites certainly top the charts! But what causes increased latency when interacting with a database? In many cases, it is the dreaded N + 1 query problem; a scenario where an application makes multiple databa … | Continue reading


@yellowduck.be | 10 days ago

๐Ÿ”— Cabify hubs: Simplifying rider pickups

Finding your driver in a busy airport can sometimes feel harder than catching your flight. At Cabify, we wanted to change that. In 2022, we rethought how our app handles pickups at major transport centers: airports, train stations, and bus terminals. We call these places Hubs. Th … | Continue reading


@yellowduck.be | 11 days ago

๐Ÿ”— Brand new layouts with CSS subgrid

When CSS Grid layout was first released, it came with a big asterisk: only the gridโ€™s direct children could participate in the layout. โ€œSubgridโ€ is a newer addition to CSS Grid which allows us to extend the grid layout down through the DOM tree. When I first heard about subgrid, … | Continue reading


@yellowduck.be | 11 days ago

๐Ÿ”— Why your CTO might start coding again

A friend of mine runs a mid-sized software shop that went agentic-only six months ago. His current recruiting pitch would have seemed fairly odd two years ago: heโ€™s actively seeking former development managers who havenโ€™t written production code in years to be software developers … | Continue reading


@yellowduck.be | 11 days ago

๐Ÿ”— Why I (still) love Linux

I know, this title might come as a surprise to many. Or perhaps, for those who truly know me, it wonโ€™t. I am not a fanboy. The BSDs and the illumos distributions generally follow an approach to design and development that aligns more closely with the way I think, not to mention t … | Continue reading


@yellowduck.be | 12 days ago

๐Ÿ”— Deploy Phoenix 1.8 with Coolify on Hetzner

Hello, great community! How are you all doing? I hope youโ€™re doing great. Iโ€™m doing excellent โ€” very motivated to share some of the things Iโ€™ve learned on my journey to becoming anElixir and Phoenix developer. This will be the first tutorial of the project where weโ€™ll create a Li … | Continue reading


@yellowduck.be | 12 days ago

๐Ÿฅ Adding a second CSS and JS bundle to a Phoenix application

Phoenix ships with a single asset pipeline by default, but real-world applications often need more. An admin area or backoffice is a common case where separate CSS and JS bundles keep concerns isolated. This post shows how to add a second bundle, including Tailwind configuration … | Continue reading


@yellowduck.be | 12 days ago

๐Ÿ”— The internet is cool. Thank you, TCP

The Internet is Cool. Thank you, TCP The internet is incredible. Itโ€™s nearly impossible to keep people away from. But it can also be unreliable: packets drop, links congest, bits mangle, and data corrupts. Oh, itโ€™s dangerous out there! (Iโ€™m writing this in Kramerโ€™s tone) So how i … | Continue reading


@yellowduck.be | 13 days ago

๐Ÿ”— Which language is best for AI code generation?

How do you pick a tech stack for a new project? If it was five years ago, it was fairly straightforward. There were two basic questions: first, which language/framework is the best to solve the problem at hand; and second, what language and tooling are you and your team familiar … | Continue reading


@yellowduck.be | 13 days ago

๐Ÿฅ Validating webhook signatures in Phoenix

When exposing a webhook endpoint, signature validation is essential. It ensures that incoming requests actually originate from the expected provider and that the payload has not been tampered with in transit. Phoenix provides all the building blocks needed to implement this clean … | Continue reading


@yellowduck.be | 13 days ago

๐Ÿ”— Battle-tested lessons from 10 years in a single codebase

Experience is valuable in software because, over time, you see lots of different technologies, get a chance to try out different approaches to problems, and build up all the little ancillary skills that make you more efficient and effective. One particular kind of experience that … | Continue reading


@yellowduck.be | 14 days ago

๐Ÿ”— 5 key Elixir concepts for JavaScript devs

At Revelry, we build high-performance, resilient software that stands the test of time. A key part of how we achieve this is by using the Elixir functional programming language โ€“ but of course, because we write software for the web, we also have to write JavaScript as well (altho … | Continue reading


@yellowduck.be | 14 days ago

๐Ÿฅ Using the lockf command on Linux and macOS

The lockf command is a small but useful Unix utility for applying advisory file locks from the shell. It is commonly used in scripts to prevent multiple instances of a process from running at the same time. What lockf does lockf applies a POSIX advisory lock on an open file descr … | Continue reading


@yellowduck.be | 14 days ago

๐Ÿ”— Building an MCP client in Elixir

Itโ€™s been over a year sincePart IIof this series, and a lot has happened. Weโ€™ve been building AI systems for almost two years now. Most of our client projects involve AI in some form. It started with the RAG approach I wrote about in Part II โ€” retrieve documents, inject context, … | Continue reading


@yellowduck.be | 15 days ago

๐Ÿ”— A new era of intelligence with Gemini 3

Google introduces Gemini 3, its most intelligent AI model, enhancing reasoning and multimodal capabilities. You can now access Gemini 3 across Google products like the Gemini app, AI Studio, and Vertex AI. Expect Gemini 3 Deep Think mode for Ultra subscribers soon, with more mode … | Continue reading


@yellowduck.be | 15 days ago