Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 21,843 posts.
What do you really get from IDE-driven development?
I’ve been playing with GitHub Copilot, an IDE extensions that uses GitHub’s vast knowledge of how people code to suggest what you probably meant to type next. I’m running it through Visual Studio Code, but it also runs in JetBrains and Neovim.
Go 1.21 may have a clear(x) builtin
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
How programmers make sure that their software is correct
Our most important goal in writing software is that it be correct. The software must do what the programmer wants it to do. It must meet the needs of the user. In the business world, double-entry bookkeeping is the idea that transactions are recorded in at least two accounts (debit and credit). One of the … Continue…
"Useless Ruby sugar": Endless (one-line) methods
Or, about the virtue of exactly one phrase.
Alternatives to JSX
The blog of Seva Zaikov
Android’s Commitment to Kotlin
When we announced Kotlin as a supported language for Android, there was a tremendous amount of excitement among developers. Since then, there has been a steady increase in the number of developers using Kotlin. Today, we’re proud to say nearly 60% of the top 1,000 Android apps contain Kotlin code, with more and more…
Prefer Fakes over Mocks
The primary purpose of software testing is to detect any potential defects in a program before it reaches its intended consumers. This is typically achieved by establishing functional requirements which define supported user interactions as well as…
Monorepos and the Fallacy of Scale
In a recent blog post entitled “Monorepos: Please don’t,” Matt Klein discusses the pros and cons - as it turns out, mostly cons in his view - of monorepos. The long and short of it is that he thinks that they are not a good fit for most teams. After thinking about this question for a few years I have come to the…
Typed nils in Go 2
This is an experience report about a gotcha in Go that catches every Go programmer at least once. The following program is extracted from a larger version that caused my co-workers to lose several hours today.
Ditching PaaS: Why I Went Back to Self-Hosting
I had never been a fan of devops/server-admin work. The sheer number of headaches involved in setting up the services, configuring them, automating them, and ensuring their reliability were just annoying and time-consuming. PaaS offerings like Heroku, AWS—and later—Railway, and Render, were appealing options out of…
Good code is rarely read
The other day I was interviewing a developer for a position at Wallapop. The candidate was a little bit junior, but I enjoyed their technical assignment and the conversation was going great. One of the questions I had to ask was
Why I switched from Vim to Emacs
EDIT: As pointed out on reddit (both in r/emacs and r/vim), many of my criticisms of Vim are unfair. Everything I posted about was based purely on my personal experience with the two, but much of m…
Codex vs. Claude Code (today)
Every AI tool has its strengths and weaknesses, and the only way to discover what they are is by using them.
When O3 is 2x slower than O2
An deep dive into a pathological case.
Optimizing a lock-free ring buffer
A single-producer single-consumer (SPSC) queue is a great example of how far constraints can take a design. In this post, you will learn how to implement a ring …
C++: A language for next generation web apps
On Monday, I was pleased to be an uninvited speaker at <a href="http://devwaterloo.pbworks.com/">Waterloo Devhouse</a>, hosted in <a href="http://postrank.com">Postrank's</a> magnificent office. After making some surreptitious alterations to their agile development wall, I gave a tongue-in-cheek talk on how C++ can…
AngularDart is going all Dart
Until now, the multiple language flavors of Angular 2 were written as TypeScript source, and then automatically compiled to both JavaScrip...
The tree-based approach to organizing documentation sucks
Read candid takes on engineering culture: 10x myths, agile failure modes, and full-stack fantasies that quietly damage software teams at scale.
Efficient algorithms, the Exponential Time Hypothesis, and losing the plot
On efficient algorithms, the exponential time hypothesis, and losing the plot.
Default musl allocator considered harmful to performance
In a real world benchmark, the default musl allocator caused a 7x slowdown compared to other allocators. I recommend all Rust projects immediately swap to a different allocator in a musl environment.
Kotlin M7
Kotlin M7 is here and with it some long awaited features. Compiler and Language Changes Inline support One of the biggest features of M7 is support for inline functions. Kotlin encourages the use o
Releases for XFCE
So it’s not that I’ve been quiet and lazy – I was actually busy preparing some releases and hacking on stuff. So here’s an update on what’s been going on and what’s to come.
Mapping Strings in C++
Mapping strings to things makes sense. You take a meaningful string and you assign it a value. As with most things we do in programming there are many pitfalls to approaching a problem. So, lets explore some of them!
On Melissa O’Neill’s PCG random number generator
Computers often need random numbers. Most times, random numbers are not actually random... in the sense that they are the output of a mathematical function that is purely deterministic. And it is not even entirely clear what "really random" would mean. It is not clear that we live in a randomized universe... it seems…
Eighteen months of Django
Some best practices I've picked up after working on Django products over the past 18 months