Java’s String.indexOf can be slow (quadratic)
lemire.me
In Java, you find the location of a substring using indexOf .
String haystack = "The quick brown fox jumps over the lazy dog" ;
String needle = "fox" ;
int index = haystack . indexOf ( needle );
Naively, you might implement indexOf by a loop inside a loop, like so.
int naiveIndexOf ( String haystack , String needle ) {
for ( int i = 0 ; i m
String haystack = "a" . repeat ( n );
String needle = "a" . repeat ( m ...

I’m porting gpui-component (a Rust UI component library built on GPUI) to C++ as gpui-cpp . By which I mean: my friend Claude does the porting, I’m just directing.
It uses markdown-rs (a CommonMark + GFM parser) markdown parser so I ported it too.
Then I optimized it.
This post describes what I did with the intention of teaching other how to optimize C++ code.
The starting point
There are 2 kinds of markdown parsers:
those that stream nodes as they pars...

Sam posted this on his blog ( RSS feed ) in the context of “AI” code review comments, but is broadly applicable:
I wish people would just go back to being themselves.
By Ruben Schade in Sydney, 2026-08-22. Sam posted this on his blog ( RSS feed ) in the context of “AI” code review comments, but is broadly applicable:
I wish people would just go back to being themselves.
By Ruben Schade in Sydney, 2026-08-22. Sam posted this on his blog ( RSS feed ) in the conte...
This is part 8 in a series of posts on writing concurrent network servers. In
this part, we'll switch to Go and see how it tackles the challenges described
earlier in the series.
All posts in the series:
Part 1 - Introduction
Part 2 - Threads
Part 3 - Event-driven
Part 4 - libuv
Part 5 - Redis case study
Part 6 - Callbacks, Promises and async/await
Part 7 - Rust
Part 8 - Go (this part)
This post assumes a basic familiarity with the Go programming language.
Sequential ...
poems embody Nature, of seasons (for)ever- changing; living in time. poems embody Nature, of seasons (for)ever- changing; living in time. poems embody Nature, of seasons (for)ever- changing; living in time.

Introduction
In the Livelymerge project, Dan Ingalls, Peter van Hardenberg, and I (Alex Warth) are building a Lively Kernel-like system whose heap is an Automerge document. (See the earlier notes in this series for the object model and support for local state .) One of the challenges I listed at the start of this series was performance : can programs whose objects live in an Automerge document run fast enough for authentic use?
For a while the answer was no. Here’s the example th...
Samuel Yeboah , Francesco Di Chiara and Mingliang Liu Today, Netflix runs two Flink autoscalers. That is exactly one more than we want. We built the first one in-house years ago, when there was no mature option suited to our platform. The second came from the Apache Flink community, and it can scale workloads our homegrown system was never designed for. We now run both in production and are steadily converging on the open-source one. Along the way we learned some hard lessons about metrics, c...

Modern computer systems are quite fascinating.
They are highly complex, run a lot of software, and their performance characteristics are hard or impossible to predict.
Earlier this year, I gave a lecture on benchmarking,
which for lack of generic and always-applicable advice,
I started with a brainstorming session
about its pitfalls.
Since systems have become so complex that we rarely know what happens exactly.
We are prone to simply guess what’s going on.
Or rather, we should hypothesize a...

View of Haarlem with Bleaching Grounds , by Jacob van Ruisdael, via WikiArt . Welcome to the reading list, a weekly roundup of news and links related to buildings, infrastructure, and industrial technology. This week we look at Los Angeles’ ADUs, electrical transformer manufacturing, gas turbine power plants, how water in the Colorado River is used, and more. Roughly 2/3rds of the reading list is paywalled, so for full access become a paid subscriber. No essay this week, but I have a very lon...

Brigadier Martin Hotine is not quite the image of a decorated officer. His name
is styled with trailing acronyms that make it no surprise that there is an
official portrait, yet in that painting he appears disheveled, his tie far off
center in the collar of his jacket. He leans off to one side, not quite like he
is sitting for a portrait, but more like he was caught in the middle of
something. Photos of the man are often similar: he's distracted, looking down at
his desk or staring into space. H...

0.0 Context Setting
Friday, 21 August 2026 in Portland Oregon where the timer continues to tick down to Skynet Sentience day. A busy day today: the 9am show, and then a couple calls, along with making sure that I get some proposals and overviews out to people.
0.1 Events
That’s a wrap on How People Work, Live! ... with Marcin Wichary. You can go watch the recording now , or you can look at the playlist , or even (deep breath) subscribe to my channel .
Next up!
How People Work,...
So, I have this little app, Epoch , that I use to keep a journal. It’s a
tiny Rust web app that runs as a systemd service and uses SQLite as
the database. I use a desktop and a laptop regularly, and use
Syncthing to synchronize them, including Epoch’s database. That way I can
use the app on both devices without needing a server to synchronize them, the
tradeoff being that I have to make sure the sync is finished before performing
any mutations.
But I had this bug. Say I edit today...
I try not to give a lot of prescriptive advice about working in tech companies 1 . There are many ways to be successful, and every company works differently. If you’re shipping projects and your management chain is happy, it doesn’t really matter how you’ve accomplished it. However, there’s one thing that I do think is solid advice: you should never be angry at work .
Anger in the workplace
Anger in the workplace is toxic. An angry colleague immediately becomes a new problem to b...
I caught wind of the news that MacStories is back posting on X, the “everything platform”, and that seems to have caused some backlash. I am not a reader of MacStories (because tools are tools and I don’t read about new computers the same way I don’t read about new washing machines) and I’m also not on X. So why do I even care about this news? Well, the short answer is that I don’t. But after the move (I guess because of the backlash?) Federico Viticci, MacStories’ Founder, posted ...
Shield AI’s X-BAT named official autonomous aircraft of the Army-Navy Game
shield.ai
RENO, Nev. (August 20, 2026) — Shield AI, the defense-tech company building the world’s best AI pilots and next-generation aircraft, today announced its X-BAT has been named the Official Autonomous Aircraft of the Army-Navy Game presented by USAA, one of the most storied rivalries in American sports. Shield AI also joins as an Associate Sponsor of America’s Game. The 127th meeting of the United States Military Academy at West Point’s Army Black Knights and the United States Naval Academy...
Rust Glancer
Aug 21, 2026
Rust Glancer , a functional
LSP server for Rust which uses two orders of magnitude less RAM, is incredibly
cool. Go check it out! This post started as a comment on lobste.rs, but I
figured it out that it’s better to publish it somewhat more prominently. Don’t
expect polished writing though!
Some thoughts:
rust-analyzer uses rowan for syntax tree representation
Yeah, rowan is garbage :P I was really thinking about
incremental parsing,
i...

IBM employed 264,300 people across IBM and its wholly owned subsidiaries at December 31, 2025, down from 270,300 a year earlier. The company reported $67.5 billion in 2025 revenue with a smaller workforce than in any of the three prior years. This post collects the verified workforce numbers IBM published in its 2025 Annual Report, its 2026 proxy statement, and its own responsible business data summary.
IBM Employee Statistics 2026
264,300 Employees at IBM and wholly owned subsidiaries, ...

One of the memes on Twitter is that “programming is solved now.” I’m not sure
to what degree it is, but one thing is pretty clear: the act of familiarizing
yourself with a language no longer matters and some of the friction that
mattered for humans does not matter for agents.
As a result, LLMs make language choice much less consequential than it used to
be. If you don’t like the choice, you can seemingly rewrite it in another
language and you can make it pick a language that you, as ...

One does not need a doctorate in mathematics to split 12 eager trivia buffs into two competitive teams. But consider that each person arrives with unique strengths and liabilities: One may be a geography obsessive with no ear for music, another could be a naturalist who doesn’t own a television, and another could be a cinephile who never reads. Balancing traits between two camps becomes a lot…
Source One does not need a doctorate in mathematics to split 12 eager trivia buffs into two comp...
Skyroot Vikram-1, the least worst case scenario for India’s launch crisis
jatan.spaceFirst launch of Skyroot’s Vikram-1 rocket from ISRO’s Sriharikota launch complex. Images: Skyroot Aerospace The successful launch of Skyroot Aerospace’s small Vikram-1 rocket on July 18 , sans the mixed outcome for payloads , has been hailed as a revolutionary launch success for India by the company, ISRO, the Indian government, various media outlets, industry executives, and people at large. That it’s rare globally to achieve orbit on first attempt bolstered said outlook and emot...
See, I told you I’d get tuckered out writing about vehicles and be back to protocols soon enough.
“The internet is forever” is a great warning against the inability to unshare content, but completely irrelevant in regard to linkrot and long term preservation. Links I save or share here often are offline or significantly altered on a scale of months or years, much less over the course of decades. Http is efficient; “go get that file from that server” is fast, but does a rather poor job ...

In the UK August is known in the press as "silly season" (because nothing of note happens, so the only stories published are nonsense ones).
Turns out this doesn’t apply to the world of data and AI blog posts - still over 50 interesting ones for me to share with you this month.
In the UK August is known in the press as "silly season" (because nothing of note happens, so the only stories published are nonsense ones).
Turns out this doesn’t apply to the world of data and AI blog posts - s...
The BOE TV070WXM-TV0 LCD used in the original Steam Deck can be had for around $30. It's a serviceable 7" touchscreen with 400 nits of brightness and a resolution of 1280x800 (for a sharp 216 ppi).
The specs are a lot nicer than the Pi 7" Touch Display , which costs twice as much, with giant bezels and half the resolution!
Until today, the Steam Deck LCD didn't work with a Raspberry Pi. But the folks at Scandent were trying to standardize on a mass-market touchscreen for one of the...