Handling secrets (somewhat) securely in shells
Sometimes, you need to deal with secrets in an interactive shell. Say, for example, you want to do things with the API of a GitLab instance for which you require authentication:
Sometimes, you need to deal with secrets in an interactive shell. Say, for example, you want to do things with the API of a GitLab instance for which you require authentication:
the computer lied
I share what I know.
If you are an Emacs user with a keen eye, you will have noticed that in Emacs Lisp, code is data. After all, 'Lisp' is shorthand for 'List Processing'. One of E...
Atwood's Law predicted JavaScript's dominance through accessibility. A new corollary is emerging: system languages will win through operational efficiency and AI-assisted development.
Models are getting better and better, while the agents that drive them languish.
To me, one of the most annoying parts of software engineering is writing code that doesn’t require thinking. It’s just a typing exercise, and that’s boring.
AI agents wrote 613,318 lines of Lean that copy Python's internals, tested every piece against real Python, and turned up 418 bug reports along the way.
The most valueble code in my repo, is the code I didn't write.
Raymond Chandler would have loved generative AI
The Nix language lacks a good type system . There are already several configuration languages that provide static and even gradual typing (see, e.g., Cue , Dhall , or Nickel ), but none offer the ability to easily annotate legacy Nix code with types.
Good developers’ caution about agentic development comes from knowing that built isn’t the same as working in production.
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 …
On efficient algorithms, the exponential time hypothesis, and losing the plot.
Orchestrator-worker, blackboard, and pipeline patterns for coordinating multiple AI agents — with the failure modes that only show up once you go past a single-agent demo.
The cost of thread context switch, including cache invalidation, can reach up to 3 million CPU cycles RTTI can be quite expensive, with dynamic_cast being up...
I once wrote a Perl subroutine that would memoize the subroutine that called it. That much was useful, but then it inserted a copy of itself into the caller, so that its callers would be memoized too. A well-placed call to aggressively_memoize could back-propagate to the whole codebase, spreading functional purity…
In this blog post, I will share the adventures I had creating my own LLM, from (almost) scratch, trained only on old texts. I made my own base-training and fine-tuning scripts, data processing pipelines and custom datasets. ("almost from scratch" means I did use existing programming languages and libraries, I didn't…
AI changes rewrite economics because codebases with clear, common patterns get more leverage than proprietary or inconsistent systems.
When the address of a nested function is taken, GCC creates at trampoline at run-time. This trampoline is placed on the stack, which means that the stack has to be executable. This is problematic because a non-executable stack is an important security feature. For some time now, GCC has the option to place the…
What regular expression features work everywhere. Very few unless you relax your definition of "everywhere."
<img src="http://stevehanov.ca/blog/images/acer.jpg"/> If you have a web site with a search function, you will rapidly realize that most mortals are terrible typists. Many searches contain mispelled words, and users will expect these searches to magically work. This magic is often done using levenshtein distance. In…
A guide to bringing up the Linux Kernel and a userspace application on a new hardware (or in this case, a self-made emulator)
The very same week we signed our first ever angel investor for Plastic SCM, in early summer of 2005, Linus Torvalds announced Git. I had spent more than a year pitching investors to build a new version control, and suddenly the creator of Linux was building one himself. That week I understood the road ahead was going…
Synchronization barriers let you test for race conditions with confidence.
This may have some legs
A modular, compile-checked tutorial for learning category-theory ideas through a tiny Rust ML pipeline.
How I developed a Klondike Solitaire game for curses in C language as an entry for the IOCCC.
In which I revisit one of my favorite bugs, the invalid surrogate pair.
Actually building floating point from scratch!