In-browser code playgrounds
Embed and run interactive code snippets entirely in your browser, no server required.
Mathematica 14
Wolfram's Version 14 includes expansive connections to and from LLMs. New learning tools, including courses and books. Plus, functionality advances in math, core language, video objects, trees, finite fields, Knowledgebase, systems engineering, graphics. Astro, biological and chemical computation.
A Local-First Case Study
How I built a local-first app for planning trips, and what I learned about the current state of the local-first ecosystem along the way.
Advent of Code on the Nintendo DS
Solving AoC on the DS with Rust.
The borrow checker within
This post lays out a 4-part roadmap for the borrow checker that I call “the borrow checker within”. These changes are meant to help Rust become a better version of itself, enabling patterns of code which feel like they fit within Rust’s spirit , but run afoul of the letter of its law . I feel fairly comfortable with…
Coding the anime "woosh" screen on Amiga
The Amiga was a spectacle of graphics and sound when it debuted in 1985. While it can trivially display colorful images like in the above example, doing so in the context of a game engine presents a lot of unique challenges.
Properly testing concurrent data structures
There's a fascinating Rust library, loom, which can be used to thoroughly test lock-free data structures. I always wanted to learn how it works. I still do! But recently I accidentally implemented a small toy which, I think, contains some of the loom's ideas, and it seems worthwhile to write about that. The goal here…
Demystifying Debuggers, Part 2: The Anatomy of a Running Program
On the concepts involved in a running program. What happens, exactly, when you double click an executable file, or launch it from the command line, and it begins to execute?
Missing the Point of WebAssembly
wingolog: article: missing the point of webassembly
Robert Elder's Guide to GNU Coreutils
Over the last 18 months, I've taken the time to create 108 short YouTube videos that summarize all of the commands that are found in the Coreutils Package . These videos focus mostly on Coreutils v8.3, but also included are a few commands from v9.0 as well. For each of the blog posts, I've adapted and modified the…
If Inheritance is so bad, why does everyone use it?
This essay says that inheritance is harmful and if possible you should "ban inheritance completely". You see these arguments a lot, as well as things like...
A simulation of me: fine-tuning an LLM on 240k text messages
Armed with a download of my 240,000 text message and Whatsapp history, I was able to fine-tune an LLM to create convincing conversations.
A Pipeline Made of Airbags
Immutable infrastructure and its tooling has obvious benefits, but the way its current adoption is being done is locking us up in a room whose walls are padded with yaml and we could be losing a lot.
The Emacs Window Management Almanac
Window management in Emacs gets a bad rap. Some of this is deserved, but mostly this is a consequence of combining a very flexible and granular layout system with rather coarse controls. This leaves the door open to creating and using tools for handling windows that employ and provide better metaphors and affordances…
Don't let dicts spoil your code
I restricted the use of dicts in my code to make it easier to follow and maintain. Here's my explanation of the benefits and advice on what you can use instead. Bonus point: what to do with all the legacy code when there's no time to eradicate all the dicts.
I'm not a fan of strlcpy(3)
strlcpy(3) is an OpenBSD function which is often hailed as a safer replacement for strcpy(3) and/or strncpy(3) . One of the obvious issues with strlcpy is that it's not safe if src isn't null-terminated. However, that's not the reason I don't like strlcpy. In fact despite knowing this, I used to think it was an okay…
Git Things
A grab bag of less frequently talked about git adjacent points.
Beating the Compiler
In modern times, everyone knows that writing assembly is a fool's errand: compilers are the result of literal engineer-centuries of work, and they know the processor much better than you do.
Adding a USB port to the ThinkPad X1 Nano (the hard way)
I wanted to add an internal USB port to my ThinkPad X1 Nano which should have been a fairly easy thing to do, but it wasn't.
Qlock – A JavaScript Quine Clock
Displays the current time in a seven-segment style, embedded within its own JavaScript source code. (321 bytes)
The search for easier safe systems programming
I've been involved in the Rust project in some form or another since 2016, and it's a language I'm very comfortable using. Many Rust programmers could say the same . But, if we take a step back and are honest with ourselves, we'd admit that the road to getting to that level of comfort was difficult.
Implementing Natural Conversational Agents with Elixir
In my last post , I discussed some work I had done building Nero, the assistant of the future that I’ve always wanted. I ended up creating an end-to-end example which used Nx, OpenAI APIs, and ElevenLabs to create an in-browser home automation assistant. For a first product, it’s decent. Nero is a neat little party…
Hidden Changes in GPT-4, Uncovered
The tool instructions in this article are not up to date as of 2024-01-12, see this post to learn more about the new tool OpenAI added to block conversations about U.S. elections using function calls.
Leveraging Zig's Allocators
How Zig's allocators can help manage memory and improve performance
The new APT 3.0 solver
APT 2.9.3 introduces the first iteration of the new solver codenamed solver3, and now available with the –solver 3.0 option. The new solver works fundamentally different from the old one. How does it work? Solver3 is a fully backtracking dependency solving algorithm that defers choices to as late as possible. It…
Exploring Gleam, a type-safe language on the BEAM
From Erlang, to Elixir and now, GLEAM!?
Playing guitar tablatures in Rust
Introducing Ruxguitar, a guitar tablature player written in Rust