After over a year of professional Rust — the books, the articles, the deep-dive conference talks, and a lot of practice — I have a genuine love for the language. What strikes me most is its meticulous nature: you define the rules, and the compiler enforces them with ruthless consistency. It forces you to think before you write, rather than patching up afterthoughts at runtime. It is, without a…
A while back, a salesperson from a well-known AI lab came to visit us. Before diving in, he paused — proudly — to show us how the day’s deck had been made: his model had researched our company, pulled our branding, assembled use cases tailored to our industry. To prove the point, he ran the whole thing again, live. It was polished. It was convincing. The room was impressed. Then someone…
Twice in a row Recently, in two separate meetings at a large tech company, I watched the same scene play out. Someone presented an approach that was suboptimal — not just technically, but for the customer and the company too. Not catastrophically wrong — just not right. Better alternatives existed — technically sounder, ones that would actually bring value to the product and/or its users. Both…
If there’s one topic guaranteed to split a room full of developers, it’s AI. On one side, the enthusiasts — convinced this is the next major shift in computing, eager to tell you about it. On the other, the skeptics — equally convinced it’s a hype cycle that will quietly deflate like the ones before it. The polarization is real and surprisingly sharp. But I think its root is…
I don’t know if you’ve noticed, but in our profession, there are two types of people: doers who are too busy doing to talk much about it, and talkers who spend at least as much time discussing what they’ve done as actually doing it. And here’s the uncomfortable truth—in certain environments, the latter strategy pays off handsomely. Let’s explore why. The doers:…
It’s easy to laugh at other people’s bad AI takes. More interesting—and more honest—is to revisit your own. Here’s a tour of mine. Some I wrote down, others I merely thought. For those, you’ll have to take my word. Let’s go! First contact: ChatGPT as a toy Setting aside AI’s ancestors (Data Science, then Machine Learning), my first real contact with AI was…
History rhymes Over the past few months, we’ve been witnessing a genuine revolution driven by AI. Tasks that until recently required skilled humans can now be performed by AI in a fraction of the time and cost. This white-collar revolution isn’t without echoes of the blue-collar revolution that transformed the world centuries ago. The industrial revolution Starting around 1760,…
AI has undeniably started to transform our profession. It went from joke, to toy, to indispensable coding assistant—and it’s probably not stopping there. My point isn’t to deny where things are headed. I’m not one of those people. But the question I keep asking myself is: is it still intellectually interesting? What drew us to programming It’s worth asking what brought us…
In a previous post , I talked about the evolution of developers without really diving into each stage. That post also deserves a refresh now that AI has entered the picture. Let’s go. The book developer Before the internet, there were essentially two sources of knowledge: books and magazines. Most developers spent time reading books and articles in publications like Dr. Dobb’s Journal…
Two recent events inspired me to write this post. First, I’ve been getting serious about Rust. I’d dabbled before—written a few small things, read “The Book”—but recently I started using it professionally. I’ve read more books, written considerably more code, and I’m still very much learning. To be clear: I don’t consider myself competent in Rust yet.…
You know that person on the team who always has an opinion—even on topics outside their expertise. When I started my career, you’d run into them occasionally. Now they’re everywhere. The social media effect In the age of social media, everyone has a platform. Competence matters less than audience. And this has bled into the workplace. That person who constantly shares their…
AI has evolved dramatically over the past few months. What started as a nice-to-have tab completion feature has become an essential part of many developers’ workflows. But this rapid adoption isn’t without risks—and those risks look very different depending on where you are in your career. The exoskeleton metaphor I came up with this image back in early 2024, and it still holds: AI is…
The other day, I was tasked with figuring out why a particular error was flooding our logs — tens of thousands of occurrences. An interesting challenge for sure, especially given that our codebase depends on a maze of internal and external services and libraries. The error itself hinted that this was going to require some serious digging. Down the rabbit hole So I rolled up my sleeves and got to…
The other day, I stumbled upon a piece of Go code that looked something like this: func StringToByteArray ( s string ) [] byte { return unsafe . Slice ( unsafe . StringData ( s ), len ( s )) } At first glance, this seemed odd. Was the author really reimplementing the standard []byte() cast? Intrigued, I decided to dig deeper. The initial analysis Looking at this code, it was clear this had to be…
We all know that programming languages emerge and evolve over time . What’s less acknowledged is that very few of them actually die. The result? A sprawling landscape of languages, and not always the skills to match. When was the last time you met a COBOL developer? But here’s the thing: just because a language still exists doesn’t mean you should use it. Languages are answers to…
Before I even started my career, I had already written a lot of code. Not beautiful, not well-organized, not even remotely good code — no. But a lot of pretty technical and challenging stuff. I wasn’t trying to build a portfolio — I just wanted to understand how computers actually worked. Just a kid with a computer I learned Basic first, but quickly moved on to Pascal and Assembly Language.…
When you’re starting out in tech, there’s one question that doesn’t get nearly enough attention: should you work for a big company or a startup? There’s no right or wrong answer here—it all depends on what you’re looking for. But understanding the tradeoffs is crucial, because this choice will shape not just your day-to-day experience, but potentially your entire…
The era of hidden code When I started my career, open source barely existed—and the little that did wasn’t on anyone’s radar. If anything, the prevailing attitude was the opposite: the more you could hide your code, the better. We genuinely believed that competence lived in the code itself, that our value as developers was somehow embedded in those lines we so carefully guarded. There…
When bytes mattered When I started in computing, we talked about KiB and MHz. And of course, there was only one CPU core to handle everything. Those constraints shaped how we thought about software: every byte mattered, every cycle counted. Since then, thankfully, we’ve gained access to exponentially more power. Today we talk about GiB and TiB as well as GHz, and it’s not unusual to…
The other day, I was working on improving some cache code when I stumbled upon something peculiar: a struct member that turned out to be a function. Its name? exitFunc . That’s… unusual, to say the least. My curiosity was piqued, and I decided to dig deeper. What I found is a cautionary tale about the temptation to sweep problems under the rug. Down the rabbit hole I started by…
Evaluating a human being is hard. You might point to the Olympics as proof that we can measure human performance — and sure, we can time a sprint to the hundredth of a second. But what about team performance? Trickier. Yet we still manage to crown FIFA’s Best Player or an MVP in the NBA. Where it gets genuinely difficult is measuring intellectual performance. In a team. Over time.…
The rise and the rust Back in 1995, Java was nothing short of a revolution. It promised to change everything about how we wrote and deployed software. And in many ways, it delivered. But it wasn’t until 1997, when Java moved server-side, that it truly became the language everyone had to learn. Yet despite all of this—despite the genuine innovation and the undeniable impact—I can’t help…
Programming languages have come a long way. What we write code in today looks nothing like what developers used decades ago. Over time, languages have evolved through at least four distinct generations, each one addressing the shortcomings of the previous while sometimes introducing new challenges of its own. Let’s take a walk through this evolution. The procedural era Languages like C and…
Few sentences are harder to say out loud than “I don’t know”. It ranks right up there with “I owe you an apology” in the pantheon of phrases we’d rather avoid. And yet, not saying it when it matters creates something far worse for the person on the other end: frustration. So the real question is — does our own discomfort really outweigh someone else’s…
The complexity myth There’s a curious belief among developers at large companies: they tend to think they’re solving far more complex technical problems than engineers at smaller shops. After spending time on both sides of that fence, I can tell you the reality is quite different. The technical challenges are roughly equivalent. What actually gets harder at scale are the political and…
The other day I met a relatively young developer who was talking to me about CQRS. Nothing wrong with that—except it wasn’t really a discussion. No weighing pros and cons, no “here’s when it makes sense”. More like uncritical evangelism, as if CQRS were the latest breakthrough about to revolutionize everything. In the 2020s. I later learned he’d been implementing it…
The brief You’re building a small multi-tenant SaaS product. You need to run scheduled tasks—some system-wide (cleanup, analytics aggregation), some per-tenant (sending reports, syncing data). You may already be thinking message queues, dead letter queues, RabbitMQ, Redis, Kafka. That works—but for a SaaS running on a handful of web servers, it’s probably overkill. Your servers…
While scrolling through one of my favorite newsletters, I stumbled upon an article with a provocative title saying that Sentinel errors were slowing your code down by 3000%. Intriguing, I thought, and bookmarked it for later. What I found when I finally read it is a cautionary tale about understanding your tools before rushing to publish. The incredible shrinking benchmark When I opened the…
Google was founded in 1998 to revolutionize search—back when AltaVista and Yahoo dominated with their Yellow Pages-style directories. Since then, Google has grown into something unprecedented: over 250 acquisitions, 80,000 engineers, thousands of teams, and a monorepo so vast it’s measured in billions of lines of code and millions of files. There’s really nothing else quite like…
There was a time when the all-powerful boss decided everything. “Do this, do that”. Total alienation, demotivation, dictatorship. Nobody misses that era. Then came what some called “participative management”. The manager still made the final call, but took time to explain, listen, and adjust objectives based on feedback. The manager owned the strategy’s failure; the…
The other day, a young developer asked me what had changed in 30 years of software development. Good question! Here’s what I told him. Simpler and more complex at the same time Development has become much simpler. Where we once wrote C or C++ with frequent detours into assembly—understanding how CPUs worked, how data was laid out in RAM—we now “just” write JavaScript, Python, or…
Something never felt right I’ve always had a problem with technical interviews. They feel artificial, disconnected from reality, and frankly unfair. Judging someone’s abilities based on a few minutes of puzzle-coding under pressure? That’s never sat right with me. Where it started Early in my career, I interviewed at a company for a C++ position. The experience conversation went…
After spending many years working for myself, I’m regularly approached by people thinking about making the leap from a traditional job to freelancing or self-employment. Two themes always come up in these conversations: risk and difficulty on one hand, freedom on the other. I might tackle the first topic in a future post, but today I want to share some thoughts on the second. The surprising…
The spark that started it all Ever since I was a kid, I’ve been passionate about computers. Not the LinkedIn-bio kind of passion, no — the real kind. The kind that keeps you awake until 3 AM because you’re this close to figuring it out. The kind that jolts you awake in the middle of the night with a sudden “aha!” moment. When I started my career, most developers shared this…
The other day, a junior developer made an observation: my code seemed to require fewer review rounds and generated fewer bugs than average. He asked me how I did it. I had to give him a rather vague answer — I’d never really thought about it before. But the question stuck with me, and I’ve been reflecting on it since. Here’s what I came up with. Start with architecture The first…
Hey, I’m Fred! I’ve been writing code for as long as I can remember—starting at age 10 with Basic, then quickly moving on to Pascal and Assembly. Back in the day, I was part of the demoscene and wrote one of the first PC demos. I also dabbled in some… let’s call it creative low-level programming involving self-replicating code for executables. Different times! The journey…