When someone asks what the next trend in AI and software development will be, the easiest answer is to point to another model, another editor, or another promise of code generated from a sentence.
An AI agent gets a request such as: “renew the customer contract, but do not exceed the approved budget.” A human sees the hidden knowledge immediately: who the customer is, which document counts as the contract, which budget is current, what renewal means, who can approve an exception, and which system may execute each step.
Whenever we talk about excessive agency in AI agents, the conversation quickly becomes a security conversation. That makes sense. An agent with too many tools, too many permissions, and too much autonomy is a neat way to turn a prompt failure into a real action in the world.
There is an optimistic reading of the current phase of software development, and part of it is true: more people coding, more repositories, more pull requests, more code reaching production.
If the Agent Harness is the system around the model, the Meta Harness is the system around harnesses. That distinction looks small, but it changes the architecture. The harness defines how an agent thinks, uses tools, stores state, builds context, asks for approval, and verifies results. The meta harness appears when that no longer fits inside a single agent, a single session, or a single…
There is a comfortable way to build an AI agent: take a good model, write a large system prompt, connect half a dozen tools, add a few MCP servers, drop in Markdown skills, inject conversation history, and call it a platform.
Your agent nailed the demo and everyone loved it. The product manager smiled, the engineering team applauded, and someone already posted on Slack: “this is going to change everything”. But how do you know it actually works? If the answer is “we tested it and it seemed fine”, you are operating in vibes mode. And vibes don’t scale.
Introduction: the API bill shock For any developer who has integrated autonomous agents into real workflows, the initial excitement around “zero-touch” automation usually lasts until the first API invoice closes. What begins as a trivial coding task can quickly turn into a financial black hole. Real cases, such as the community report about using the Opus 4.6 model through the API,…
The pace of software development has undergone unprecedented compression. What until recently was simply “programming” is now called trad coding (traditional coding), a process that required writing line by line, respecting the natural flow of problem-solving and the time the brain needs to process logic. Today, that flow has been run over by the rise of AI agents.
In Go, context.Context is the standard mechanism for propagating cancellation, deadlines , and values across Goroutines and function calls. The general rule is simple: always pass the context forward. But this rule has a subtle trap that can cause bugs that are hard to reproduce, especially when you have optional operations with fallback.
You have probably experienced this: in one moment, GPT or Claude solves a complex coding problem in seconds; in the next, the same AI forgets basic context or invents nonexistent information. If the “brain” (the model) is the same, why are the results so inconsistent?
If you follow the GitHub Copilot ecosystem, you have probably heard of *.agent.md files. They are great for simple things, basically a boosted prompt that runs inside Copilot. But when you need a real agent that calls APIs, queries databases, applies permission policies, injects context through RAG, and runs in production as a microservice… Markdown is not enough.
The paradox of modern speed We live in the paradox of technical abundance: in the age of Artificial Intelligence, we generate code in minutes, but organizations have never struggled so much to convert that volume into real value. The fatal mistake of modern leadership is believing that coding speed solves the delivery bottleneck. As David Rogers articulates in his thesis on Digital Transformation,…
The scale paradox There is an efficiency gulf between biological architecture and silicon. While a 12-year-old child already masters the complexities of human language, models like GPT-3 require about 2,000 times more data to reach comparable proficiency. This “Scale Paradox” reveals an uncomfortable truth: we are trying to compensate for the lack of structural logic and efficient…
The productivity paradox Engineering leaders and developers are constantly searching for more productivity. The pressure to deliver faster is relentless, but the paths to achieve that speed are rarely clear. We invest in new tools and processes, often without understanding whether we are actually solving the right bottlenecks or just adding complexity.
If you are starting to venture into the world of AI Engineering and want to go beyond the basics, you need to deeply understand what Retrieval-Augmented Generation (RAG) is. This technique is, without a doubt, a turning point for anyone who wants to build AI agents that actually deliver solid results with user- and company-specific data.
You know when you are trying to solve a complex problem with AI and it feels like a single model cannot handle the job? I have been through that several times. It is like when you ask an AI agent to do several things at once and it simply freezes, takes forever, or gives mediocre answers to everything. That is when I dove deep into the world of multi-agent systems, and man, I learned that this…
Exactly one year ago, a commit with the message “Golanged” marked the beginning of a new phase in my career as a developer. It was my first step with the Go language in a professional project, inside a monorepo that I still maintain today. Little did I know that this word, almost a joke, would represent the discovery of a universe of possibilities. Today, I celebrate not only the date,…
In the world of software development, prompt engineering is emerging as a crucial discipline. The ability to extract accurate and useful responses from Large Language Models (LLMs) has become a competitive advantage. However, one fundamental aspect of this new craft is being largely ignored: the engineering of a good prompt can, and will, silently change depending on the model being used. Many…
Go 1.25 was officially released in August 2025, bringing a series of significant improvements for developers. This new version maintains Go’s tradition of compatibility, ensuring that existing code continues to work perfectly while introducing important optimizations and new features.
Maps in Go have always been one of the language’s most widely used and optimized data structures. With the release of Go 1.24, they became even faster thanks to the implementation of the Swiss Tables concept.
Go 1.24 introduced a new package called weak , bringing support for weak pointers . These pointers make it possible to reference memory without preventing its collection by the garbage collector (GC) , making them particularly useful for cache optimization and reducing memory leaks .
Version 1.24 of the Go language was released in February 2025, bringing a series of improvements and new features that promise to increase developer productivity and optimize application performance. In this article, we will highlight some of the main new features, such as the new tool directive, support for generics in type aliases, the Loop function for benchmark tests, performance improvements,…
The Go language was criticized for its simplicity and design philosophy in a recent article called “Why Go Should Sometimes Be a No-Go” , where the author raises some negative points about the language, arguing that its minimalist approach can be a limitation in certain contexts. However, these arguments can be countered with a broader view of Go’s benefits and purposes.
Functional programming (FP) has gained popularity in recent years due to its ability to create more expressive, modular code with fewer side effects. Although Go is a language designed primarily for the imperative paradigm, it has several characteristics that make it possible to adopt functional programming concepts. This article explores how to apply functional programming principles in Go…
Google’s style, decisions, and best practices guide for the Go language is a set of recommendations intended to promote clarity, simplicity, and efficiency in code development. These guidelines help developers write readable and maintainable code, which is essential for long-term projects. In this article, we explore the main points covered in these documents, emphasizing the importance of…
The Go Developer Survey is an essential tool for understanding the evolution and challenges faced by developers who use the Go language. The results from the second half of 2024 (H2), conducted between September 9 and 23 with 4,156 respondents, bring valuable insights into developer satisfaction, tooling preferences, technology trends, and everyday challenges.
Since its release in 2009, the Go programming language has won over developers around the world, especially in distributed systems, cloud computing, and DevOps. But what exactly makes Go such an attractive language? Beyond its technical characteristics, it is the underlying philosophy that truly defines what Go represents. This thread on Reddit brought together the core values that shape the…
I think one of my biggest adventures with Go has been working with tests. They changed one of my opinions about the language’s pragmatism: yes, it is still super practical, still very simple and pleasant to program in, but I used to take that idea too lightly, to the point of doing things any which way and without respecting software engineering principles. As the name says, they are…
Semantic versioning, also called SemVer , is a standard used by developers to number software versions clearly and predictably. It makes it easier to understand which changes happened in the software and what impact those changes have. Basically, SemVer uses a three-number notation in the format X.Y.Z , where each number has a specific meaning.
In today’s fast-paced, technology-driven world, the success of software-based organizations depends heavily on the performance of their developers . However, developers often face many obstacles, from unclear task requirements to inadequate tools and poor feedback processes. The term “Developer Experience” (DX) encompasses how developers feel, think, and perform their work. A…
In the ongoing search for efficient and concurrent programming languages, the Go language has stood out for its simplicity, performance, and powerful features. One of Go’s most distinctive features is the concept of Goroutines , which enables efficient concurrent execution of tasks.
At PicPay, to improve the scalability of our PHP applications, we use Swoole as a high-performance runtime , making applications asynchronous and non-blocking. Starting to use Swoole brought some challenges, and one of them is observability. We will understand more about it later.
Swoole is about to deliver something very, very cool: its own CLI. You can already start using it with the precompiled binary distributed in Swoole releases at https://github.com/swoole/swoole-src/releases/tag/v4.8.7 .
Swoole will be shipping something really-really cool that is it’s own CLI. You can start playing with it using the pre-compiled binary distributed under Swoole’s releases at https://github.com/swoole/swoole-src/releases/tag/v4.8.7 . The trick here, for this project, is: we will be shipping Swoole CLI binary along side with Bref’s LambdaRuntime to provide a custom AWS lambda…
Originally posted by @Reasno at guxi.me/posts/cloudnative-hyperf Hyperf officially provides container images and the configuration options are very open. Deploying Hyperf in the cloud itself is not complicated. Let’s take Kubernetes as an example to make some modifications to the default skeleton package of Hyperf so that it can run gracefully on Kubernetes. This article is not an…
Inspired by the article about Hyperf by the great @ Leonardo do Carmo (and also by his tip about Hashnode hehe), I decided to stop by and write about Nano , the Swoole micro-framework from the Hyperf folks.
I’m assuming you already know what is GraphQL and Swoole , so what about getting started right straight to the code, shall we? What you maybe doesn’t know yet is about Siler ! It is a set of general purpose high-level abstractions aiming an API for declarative programming in PHP.
When I’m not in front of a “soup of colored letters” (people say this when they see my screen on VS Code) or “jumpy green text” (yeah, this one is for the terminal); I like to play and study music! Diving into my journey on F#, this is my attempt to mix this new and old passions.
I have just a couple years in functional programming, just a couple weeks in F# and no background or experience with .NET, so don’t take this as a reference from an expert, it’s just me documenting what I’ve learned so far.
One the of the hardest things in development - IMHO - after naming, is handling State, at least handling it reactively without overs (over-building, over-rendering, over-painting and overhead!).
It is common for people to argue that hashing is not cryptography; they do it so vehemently that they ridicule things like “I encrypted it with MD5.” Is it really that wrong to say this?
I used to love everything about object oriented programming, ignoring everything else, when I finally got it, I thought that every piece of software should be developed using OO and if it is not, it is wrong.