Posts whose title or text contains one of these words are left out of every view.
Whole words only: ai catches "AI-generated" but not "openai". Add a star for word beginnings: llm* catches llm and llms.
99 words is the limit
C++20 shipped a powerful ranges library, but the set of view adaptors had some obvious gaps. Want to get the output as a container? No luck. At least C++23 helped with that. Want to iterate over two vectors as one sequence? Write your own. Want to avoid redundant evaluations in a transform | filter pipeline? Write a workaround. Want a quick index sequence matching a range’s size? Spell out iota...
SEO, or search engine optimization, is a black box for a reason.
On July 6, 2013, I published json2xml 0.1 on PyPI. Its job was straightforward: take JSON and turn it into XML. Thirteen years later, that is still its job. The interesting part is what has accumulated around it: compatibility decisions, regression tests, profiling sessions, a native Rust extension, millions of downloads, and code that appears in public projects maintained by Google Cloud, AWS, and NASA. A small library can travel a long way through an import statement. With version 8.0.0…
Ecliptic Mariner: Diaries is something a bit new for the lab - a video game, built in an engine. As most of you know, we’ve built a few game-like and toy like things here in the lab, but I’ve never actually set out to make a “video” game (we’ll see why I use those quotes in a moment), let alone one built on someone else’s engine. Since the last update, progress has been plugging along (at something resembling a pace), so it seems like a good time to share progress again. Godot Kind of Hurts My…
I love colors, and I spend a lot of time looking for the right palette for a website. And I am frequently changing the colors in my website and I never settled for one a single one. Instead of keep changing the colors, I thought I can create a set of palettes for my Lightbi theme and I can apply the same here whenever I want. So decided to create Lightbi Palettes, a collection of website palettes. So I can pick a palette and see how the whole site looks from the navigation bar, to footer. What…
Epic’s new games launcher is ‘vibe coded’ theverge.com Epic Games is announcing a big refresh of its PC games launcher today in preview, saying that the new version is “way faster” and now supports Linux. But the company, which has been publicly making a big push into AI-assisted development, also notes that the refresh was “vibe coded.” I don't care that this is vibe coded and that title is pure clickbait. This is huge! Native support for Linux! And also: To bring Fortnite to Linux, we are…
Just a short note that First Proof is announcing the result of their “third batch” evaluation at a webinar at 3PM ET hosted by ICARM today. (Registration required.)
In a previous post, I discussed the differences between push-based and pull-based customization in the context of trying to implement support for formatting and structured bindings. For those problems, pull-based customization (adding an annotation to a type and having a partial class template specialization that looks for that annotation) works pretty well — until you suddenly run into ambigui...
Inbox Zero for Privacy, not Productivity inspired me to achieve an actual Inbox Zero at my e-mail provider, thereby sufficiently solving the challenge of e-mail encryption for my risk profile.1 As a result, I am able to choose a budget-friendly e-mail provider without paying a premium for 'privacy features'. I chose to use the Thunderbird method as described in the blog post linked above. In practice, I rely on the following approach: Recently received e-mails: These e-mails remain in my Inbox…
The root DNSSEC trust anchor, the Key Signing Key or KSK as it’s called, was rolled, i.e. renewed, on Sunday 2026-10-11. To be precise the key was created two years ago, but it is now used for signing the root DNSKEY resource record set (RRset). I’m not involved in the process, but I am an avid follower, and as such I tooted before the event and after: The second screen shot shows an arrow pointing at 38696 which is the key tag (or key id) of this new key, and dig(1) is showing how it was used…
I’m trying something new, under the name First Takes. These will be quick write-ups of ideas I find interesting. If this goes well, expect to see these more often than my traditional posts, and covering a wider range of topics. If you’d like to only receive my traditional, high-effort pieces, see the instructions at the end of this post.Anthropic’s engineering team just dropped a fascinating post: Redesigning source control at Anthropic. It describes a major engineering project undertaken in a…
What does the future hold I don't know if software is going to be dead or not, the whole web seems to think it will be though. Anyways, tinytown.studio was meant to be a small focused app studio. Looking back, I wish I had put more effort into growing it into what I originally imagined. I didn't. The things that are running like Ping and Toggles aren't going anywhere. But I'm not sure what "app studio" means now when it takes a few prompts to clone whatever the hell I have built. I'm trying to…
I think many companies could use a formal learning review process for non-mutual employee departures. A “non-mutual departure” could be initiated by either party in an employment relationship, either by the employee or the employer. What they have in common is that one side is unhappy. Maybe the company was unhappy with the employee’s performance. Or maybe the employee left after 12 months because the job was not a good fit.
Last week I had some extra time to burn and figured it was time to make a category tagging system for the blog. If anyone reading are familiar with blogs and blogging, a category system is a pretty common staple for navigating and discovering past written blog posts. For example, let's say you want to read my posts on antiques, or perhaps on Linux, you'd have to either scour thru the index or use the search form. Search forms can be useful, but if you don't specifically know what you're looking…
Almost everyone misunderstands Chrome extension manifest version 3, the successor to Chrome extension manifest version 2, MV3 and MV2 for short. As a professional web browser extension developer, I had to migrate my Chrome extensions from MV2 to MV3, which forced me to learn the difference. In this blog post, I hope to dispel the common misunderstanding. The reason almost everyone misunderstands MV3 is that they mistakenly equate the extension manifest version with the content blocking API,…
I have self-published my two textbooks, Data Science for Crime Analysis with Python, and Large Language Models for Mortals: A Practical Guide for Analysts with Python. I have written about my set up previously, long story short use Quarto to compile the books to epub and a nice PDF, and then use LuLu for print on demand. I figured a blog post on why I think all academics should take this route when publishing textbooks is in order though. Reason #1 – you can set the cost. Most textbooks are…
a plan is just a thought a plan is - all it could ever possible be -- is a present-moment statement of intent. It's an expression of your current thoughts about how you'd ideally like to deploy your modest influence over the future. The future, of course, is under no obligation to comply. book: four thousand weeks
Formlabs sent me a [Form Studio 1](https://formlabs.com/3d-printers/form-studio-1/?utm_source=youtube&utm_medium=refe rral&utm_campaign=jeffgeerling-fs1-2026-07-26-global) resin 3D printer to test after years of back-and-forth about their Form 4 printer. Like the Form 4, it's an SLA (stereolithography) printer, but unlike the Form 4 (which starts at $2,600), it's affordable for a hobbyist. It's not cheap, coming in at $699 (or $749 with a flex build platform, which I highly recommend), but it…
Mike Jackson takes apart three common metaphors that get folks off on the wrong foot when thinking about systems: the elephant, the iceberg and the lever: When I make the case for eradication of elephants, icebergs and leverage points from the discourse of systems thinking, I am often told that, while these metaphors are simplistic, they do offer beginners an easy route in. I take a contrary view – that it is cruel, disheartening and confusing for novices to be led in the wrong direction and…
Chaos isn't a Pit. Chaos is a Countertop.: M.G. Siegler, writing about the Apple promo video for the new HomeView: It is also pure chaos. I'm not sure I've ever felt such anxiety watching a promotional video, and certainly not one made by Apple. I felt the same way. The video did not make me want to buy a HomeView. It made me want to go live by myself in a cabin. ✍️ Reply by email
(“A free, independent union”.)
Learn how to use the new frozendict built-in to create and manipulate immutable dictionaries. Python 3.15 introduced a new built-in data type: the frozendict. A frozendict is an immutable dictionary that can be created with the built-in of the same name: version_info = frozendict( {"major": 3, "minor": 15, "patch": 0} ) The dictionary literal syntax using the curly braces {} creates a regular dictionary, so you must always use the built-in frozendict to create a new frozen dictionary. In this…
Previous posts in this series introduced Frml, then explained how it checks simplar scalar code, handles contracts between functions, deals with loops, and checks arrays. This post shows how Frml handles built-in functions like push and pop. Here’s an example program to motivate the discussion: fn main() -> Int { let a: Array<Int> = [1]; push(a, 2); assert length(a) == 2; return 0; } Built-in Functions Frml’s built-in functions live in frml/builtins.py: read(path: String) -> String returns the…
<h1>The better technology</h1> <p>This summer I did 3 months residency in Berlin. I attended the program called <a href="https://sandbox.techeurope.io">The Sandbox</a>.</p>
Unsettled is out. It’s an escape game hidden in an ordinary-looking phone: a blank screen, a mail icon with one unread message, and every message from Unsettled Corp is a lock that gives up a number. There are no instructions, and no clue is given for free. The puzzles use the phone itself. You’ll turn it, shake it, lay it face down, knock on the back, go offline, or go for a walk. Some clues aren’t in the app at all. There are three chapters and thirty-five locks. Chapter two arrives a day…
TN3179: During testing, you might want to reset your program’s Local Network privilege to the undetermined state. Your options for this vary by platform. On iOS, the easiest option is to delete your app. Alternatively, if you don’t want to delete your app for some reason, reset the entire privacy subsystem using Settings > General > Transfer or Reset > Reset > Reset Location & Privacy. On macOS, the list in System Settings > Privacy & Security > Local Network has add (+) and remove (-) buttons.…
Apple finally announced their smart home control hub (dubbed HomeView) yesterday. It's a whopping $299 and an amalgamation of their technologies in an attempt to reinvigorate their home strategy. Later in the day, Marques Brownlee's impressions video dropped and he said he doesn't really know who the product is for: "But whenever we see a new product, whenever I think about a new product, I always want to think about the target demographic that they think it's best for, that they're aiming this…
medienbaecker.com has become my personal site. It’s a place where I talk about topics that are important to me, not strictly limited to web stuff. Read more
I think Deep Data Security (DDS) is one of the most promising additions to Oracle 26ai. The idea is straightforward: describe who may read or change which data with SQL, and let the database enforce it.