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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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