Mario Arias runs a series called Comparing Programming Languages . He has written the same interpreter, the Monkey language from Thorsten Ball’s book, in a whole pile of languages, and every so often he lines them up and makes them race. The twelfth post is a native showdown. He took the implementations that compile to a native binary, handed each one the same tiny Monkey program, and timed…
Vibescript v0.40.0 is out. The main addition is Tasks , a small structured-concurrency API for scripts that need bounded fanout. The common case is pretty simple. You have a list of things, each thing needs the same independent operation, and the host is fine running a few of those operations at once: scores = Tasks . map ( users , with : :score_user ) That is the whole deal. map walks the list…
Every so often I end up writing another program to compute the digits of π. I have no real need for it. It has never once come up in my actual work. But it is a tidy, self-contained problem with a clear right answer, and it makes a good excuse to get a feel for a language or a library. I have done it before in Ruby and in Crystal. The Ruby version leans on Ramanujan’s series and BigDecimal .…
Back in November I introduced Vibescript as an embeddable scripting language for constrained, AI-friendly environments. Four months later, it works end-to-end. Version 0.26.2 ships a fully functional interpreter, a rich REPL, gradual typing, editor tooling, and a companion website . The REPL Run vibes repl and you land in terminal UI with tab completion for built-ins, keywords, and your own…
I built a little maze solving tool to help visualize the difference between depth-first search (DFS) and breadth-first search (BFS) . Why I built this So many problems on LeetCode and HackerRank can be solved with these algorithms, and AI coding agents make it easy to build interactive learning tools like this one. I hope the takeaway here isn’t just how DFS and BFS work (if you didn’t…
As vibe coding grows in popularity, there are domains where we want to narrow what users can build. Instead of giving a blank canvas, we can offer an opinionated set of well-defined primitives that combine into predictable, safe applications. Think of it less like traditional software development and more like HyperCard: flexible, but within bounds. Even in these constrained environments,…
Exploring 3xo, a Kanban-style Agent Workspace I’ve been experimenting with different ways to interact with coding agents, and one idea has started to feel especially natural: a Kanban board. Instead of a chat window, 3xo (pronounced “exo”) is a desktop app that turns agent collaboration into something that looks and feels like software development. You can spin up Claude Code and…
The Starting Point If you haven’t heard of Claude Code , it’s Anthropic’s command-line interface that gives you Claude with access to your filesystem. It can read and write files, run commands, and basically act as a coding assistant that can actually touch your computer. Obsidian , on the other hand, is my note-taking software. It’s where I store everything - daily notes,…
I built a little Kagi MCP Server last week. It helps language models like Claude search the web and summarize web pages using Kagi’s excellent search and AI capabilities . Why I built this I’ve been using Kagi as my personal search engine for a while now. It’s privacy-focused, the results are high quality, and it’s not cluttered with ads. As I now work with LLMs frequently,…
You’re ready to give Meta’s new Llama 3.1 model a try, but do you download 405b-instruct-q4_K_S , 8b-instruct-q3_K_L , or 70b-instruct-q5_0-taylors-version ? If you’re staring at Ollama’s Llama 3.1 model page , you will see almost 90 different versions of the model. Let’s break down the naming convention to help you select the right one for your use case. Instruct vs…
Cicada 3301 is the name given to a mysterious organization that posted a series of complex puzzles online, starting in 2012. The enigmatic puzzles focused on cryptography, data security, steganography and internet anonymity. Spanning many forms of media including websites, phone numbers, original music, digital images and physical locations around the world, they drew in thousands attempting to…
The Ruby Nanoc gem is a fantastic gem for generating static websites. You get the benefits of partials, layouts, SCSS, helpers and other features without having to deploy an entire Ruby web framework. It all compiles down to plain ole’ HTML and CSS. For years, my Nanoc workflow looked like this: Make changes locally Run nanoc to generate the HTML and CSS Upload the contents of output/ to an…
I purchased a Dell XPS 9300 Developer Edition laptop in August 2020. It shipped with Ubuntu 20.04, but I replaced it with Arch Linux. This was a return to Linux for me since switching all my machines to MacOS in 2005. Overall the quality of the machine has been superb. I got the 4k screen and HiDPI support in GNOME has been great. The bezel-less design also makes it feel like a laptop from the…
How io_uring and eBPF Will Revolutionize Programming in Linux AI for Full Self-Driving talk by Andrej Karpathy, Sr. Director of AI @ Tesla: https://www.youtube.com/watch?v=hx7BXih7zx8 The Virginia teen who made the Nintendo Switch bot Modder re-creates Diablo 2 utilizing the Grim Dawn game.
I first came across the idea of novelty search via Kenneth O. Stanley’s YouTube talk Why Greatness Cannot Be Planned and the corresponding book . It’s an exploration algorithm that is driven by the novelty of behavior rather than an objective. The most intriguing part of novelty search to me is its focus not on optimization but rather discovery. It’s not to say novelty search is a better search…
United Launch Alliance (ULA) rocket factory tour Hideo Kojima’s Strange Worlds The mind behind Metal Gear Solid and other works. dark_nexus might be the worst IoT botnet ever
The Tour de France was started by a newspaper BLAKE3 was released. Borrows a lot from crypto to allow for multi-core hashing. How math saved the MET older, but interesting article on how the Chudnovsky brothers helped the MET photograph their elaborate tapestries known as “The Hunt of the Unicorn”.
In software development, we love our processes. Scrum, Agile, Waterfall, Extreme Programming, etc. They are all designed to allow teams to deliver software on a predictable schedule. Product managers love having a way to make and prioritize requests. Software developers like the way it prevents unrealistic expectations from forming. It provides a cadence to product development. But can innovation…
Touch screen interfaces and the USS John S. McCain The Builder’s High From 2014 but maybe even more relevant in today’s social media climate Book: Database Internals excellent, concise book on database algorithms and technology. The Friendship that made Google Huge Boeing 737MAX Technical Breakdown of the crashes
Ruby’s class and instance variables are notorious for their thread safety. While it’s perfectly fine to use class and instance variables within a threaded Ruby application, it’s important to know when doing so will cause issues. One of the changes I recently made for the release of Stealth 1.1 was to move configuration options from a class instance variable to Thread.current . Previously, loading…
BLAKE2 is a cryptographic hash function faster than MD5, SHA-1, SHA-2, and SHA-3, yet is at least as secure as the latest standard SHA-3. It was a final candidate to become SHA-3, but apparently the committee didn’t feel like it differed enough from SHA-2. Either way, it is a really fast, secure cryptographic hashing function that I wanted to use in Ruby. The reference C implementation comes…
After eight months of development, I’m excited to announce the official launch of Stealth . Stealth is an open source Ruby framework for creating conversational voice and text chatbots. Back in August 2017, Matthew Black and I started imagining a better way to build chatbots. We wanted a framework that included: Support for any messaging service . If a service wasn’t yet supported, it…
In Stephen Wolfram’s book, A New Kind of Science, Wolfram put forth a theory that complex systems cannot be shortcut by math. In order to obtain the output of a program for a certain step, one must run that program for each step up until the desired step. While studying cellular automata , Stephen Wolfram discovered that some of the simple programs used to generate cellular automata produced…
The abstractions we build are the building blocks of future innovations. Today Google announced they have added support for Docker in Google App Engine. While this is great news for developers looking for a place to deploy their Docker images, it represents something larger. The Linux container represents a major shift in how we think about servers and the way we interact with them. If you were to…