📰 NewsMonitor

Nextpad++

Windows Notepad is, more or less, the Windows peer to MacOS’s TextEdit — the built-in system text editor. For years, it was really basic — more basic than TextEdit. Recently Microsoft has started beefing it up, though, culminating last year when they added fucking Markdown support. Which still blows my mind. Notepad++ is a longstanding open source (GPL) Windows text editor by Don Ho, which debuted back in 2003. Just adding “++” to the name feels misleading. The name implies that it’s like Microsoft’s Notepad but a little more. Notepad++ is in fact a wholly independent programming text editor, with a rich plugin library, and remains quite popular. To some extent Notepad++ sorta kinda the Windows peer to BBEdit. Nextpad++ is something new, from Andrey Letov. It’s a Mac port of the Notepad++ GPL code, apparently in Objective-C. It launched a few weeks ago under the name “Notepad++ for Mac”, but Letov had no right or permission to the name. That dispute has been settled, and Letov has renamed this project Nextpad++. The website’s About page has entire sections for “How Nextpad++ for Mac Was Built” and “Technology Stack”, and neither of those mentions AI, but this thing almost has to have been built using AI vibe-coding agents. That same about page also says the project only started on March 10, and the 1.0 version (under the defunct “Notepad++ for Mac” name) shipped just a few weeks after that. Something of the scope of this port couldn’t happen at that pace without AI. Nextpad++ feels like a fever dream. Like what Mac apps would be if the Nazis had won WWII. Look, there are all sorts of foreign apps on the Mac. Electron apps. Apps ported with Wine. The curious new generation of lean-and-mean apps that are, in a technical sense, “native”, but are decidedly not Mac-assed apps, like Zed and Tolaria. Those apps just feel like aliens on MacOS. Like new species. But the Mac is welcoming to them, like the Mos Eisley cantina. We do serve their kind here. Nextpad++ doesn’t feel like an alien. It feels like Vincent D’Onofrio’s alien-bug-in-human-skin character from Men in Black. Letov’s website describes it as “A real Mac app, not a Wine wrapper: Objective-C++ on top of Scintilla and Cocoa, shipped as a Universal Binary for Apple Silicon (M1–M5) and Intel Macs.” Ostensibly that’s a good thing. But Nextpad++ looks and feels like something that should not exist. The promotional screenshots on the app’s own website show it with 50 inscrutable toolbar buttons. It closes tabs on mousedown, not mouseup. Its default font is 10-point Courier New. No human being would port a complex Windows app like Notepad++ to the Mac like this. I’m not anti-AI. I’m very much intrigued by the whole incipient vibe-coding phenomenon. But this app feels unholy. It’s spooky.  ★

Kagi Snaps

Kagi’s documentation: Typing @r headphones will search for “headphones” but limit the results to reddit.com (r is the short code for Reddit). This allows you to quickly find relevant content on a specific site using Kagi’s powerful index. It is effectively the same as doing headphones site:old.reddit.com. Its relative, Bangs feature, invoked by using “!r headphones”, would redirect the user to Reddit’s internal search. I learned about the snaps feature from a Kagi blog post a few months ago, and I’ve been loving it ever since. From that post: You can also use Snaps to quickly search within Kagi’s knowledgeable. For example, the @help snap searches the Kagi help docs, handy for when you want to quickly look into a feature. User tip: “I recommend combining Snaps with the “I’m feeling lucky” bang: ! with no short code. Like searching @gh curl ! to go to the curl repo. I’ve never actually looked any of these up. I just guessed at the ones I most want to use and they all worked on the first try. @nyt returns results from The New York Times; @wsj is for The Wall Street Journal. Take a guess what @df does. And you can add your own custom bangs/snaps in Kagi’s settings. It’s easy. In fact, I created a custom @nyt bang/snap shortcut to override Kagi’s default. Kagi’s built-in @nyt bang/snap uses the query.nytimes.com subdomain, which is outdated. You get better results just using nytimes.com with no subdomain. Also: Does your preferred search engine have a well-written comprehensive user manual? Kagi does. Good documentation is a tell-tale sign of a great product and a company that puts users first. There exist good products with bad or no documentation, but there are very few poor products with great documentation.  ★

Seriously, Give Kagi a Try

Quoting from a post I wrote a year ago: Like, even if I use the magic &udm=14 parameter with Google search, to get “disenshittified” results from Google, I find I get better results from Kagi. When I know there’s one right answer (say, a specific article I remember reading and want to find again), Kagi is more likely than Google to list it first. If it’s a years-old article, Kagi is way more likely than Google to find it at all. For me, Google (and, alas, DuckDuckGo too) have largely stopped working reliably for finding not-recent stuff on the web. Not true with Kagi. I used DuckDuckGo for years as my default search, and for those years, I found it largely on par with Google. But it felt like every once in a while — maybe, say, once or twice a month — DuckDuckGo would come up dry in its results. DuckDuckGo pioneered a trick they call Bangs. Include !g to any search terms, and instead of performing the search itself, DuckDuckGo will redirect that search to Google. They have a whole bunch of these Bangs — “!a” for Amazon search, “!nf” for Netflix. There are literally thousands of them (which of course they allow you to search for). The only one I ever really used though was !g, for redirecting my current search to Google because DuckDuckGo’s own results for the same terms was unsatisfying. My memory may not match with my actual usage, but like I said, I feel like I used this about once or twice a month for the several years I was using DuckDuckGo as my default search engine. Infrequently enough that it didn’t annoy me to the point of considering switching back to Google for default in-browser search, but frequently enough that I was annoyed enough to remember that I needed to use it at all. Kagi supports Bangs too, including !g for Google web search. I can’t remember the last time I felt the need to try using it. It’s been months, many months. And, the last few times I’ve tried it, Google’s results were no more help than Kagi’s. In the year since writing the above, I honestly don’t think I’ve resorted to the !g bang once. For me, Google web search is about as relevant to my life as Yahoo search. Something I used to use, something that used to be better, but which I’ve found a vastly superior alternative to. If Kagi went out of business or changed for the worse, I’d be heartsick. It’s truly one of the best services I’ve used, and it keeps getting better. Google Search is like watching 2001: A Space Odyssey with a goddamn Febreze ad stuck in the famed match cut. Kagi search is like paying for a streaming service with no ads and higher image quality and better sound. It’s just plain better.  ★

Search Ads as a Vector for Travel Scams

Dawn Gilbertson, writing for The Wall Street Journal (gift link): Calder says that he tried to rebook at the given link a few times but that it wouldn’t work. He became worried new flight options were dwindling, so he googled the airline’s customer-service number. (There was a link to customer-service contacts way down in the email that he initially overlooked.) The rest of the story is sadly familiar to the Better Business Bureau, Federal Trade Commission, airlines and consumer advocates. It’s called an impostor scam. This can occur when a company impersonates an airline’s customer-service number or site, often by buying a sponsored ad on a search platform. The company is hoping that panicked consumers trying, say, to rebook a flight will click on the first link they see, bringing them to unscrupulous parties that try to charge exorbitant fees. I’ve written before about such tactics, and they are only becoming more sophisticated with AI. “Scammers thrive on that sense of urgency,” says John Breyault, a vice president at the National Consumers League whose coverage area includes fraud. The person who answered Calder’s call identified himself as a Lufthansa representative and asked for the Lufthansa confirmation number. He found new flights on Lufthansa’s partner Air Canada and Austrian Airlines, a Lufthansa Group subsidiary, on the same late-summer dates. The kicker, which Calder admits in hindsight is a colossal red flag: He had to pay $12,132 to make the change. That’s more than five times the amount of the original tickets. In addition to airlines, these scammers often impersonate hotels. Yet another reason to try Kagi as your default web search engine. I’m not saying Kagi is scam-proof in its actual search results, but it’s 100 percent resistant to scammers buying search result ads — because they have no ads. With Kagi, you pay a very small subscription fee and in exchange you get better results with zero ads. Also, another reason to worry about Apple’s upcoming ads in Apple Maps.  ★

Teresa Ribera Visited the U.S. and No One Noticed

Jacob Parry and Laura Greenhalgh, reporting for Politico, one month ago: The EU’s landmark tech regulations are a “success story” that are beginning to level the playing field between Silicon Valley’s giants and their digital competitors in Europe, said European Competition Commissioner Teresa Ribera on Friday. [...] Ribera’s comments come as Brussels prepares for a formal review of the DMA to determine what is working and where the law may need to be reformed. The regulation aims to prevent “gatekeeper” firms, including Apple, Alphabet and Meta, from using their dominant positions to stifle competition from smaller players. The EU’s top antitrust official pushed back against criticism that enforcement has been too slow, arguing that the “rule of law” requires a methodical approach based on evidence and due process. [...] Ribera recently returned from a diplomatic mission to Washington and Silicon Valley where she met with U.S. officials and tech executives. She said there is a surprising degree of alignment between European and American priorities, despite the differing political climates. In particular, Ribera highlighted a “consistent” dialogue with the U.S. Department of Justice under the current Trump administration. Again, I only found this story because I went searching for news regarding Teresa Ribera and the DMA after taking note in an earlier post that things have been very quiet on this front for the last year. When Margrethe Vestager visited the U.S. and met with tech executives, it was news. There were press photos. Vestager drew attention to the meetings, and, of course, to herself. It’s pretty telling that Ribera recently visited both Washington and Silicon Valley and it barely registered in the news. Ribera’s approach to the E.U. competition chief job might actually be focused on genuine competition and consumer welfare, not punishing U.S. companies for their success by weaponizing byzantine layers of bureaucracy that ultimately work against the interests of EU citizens and the stagnant EU economy.  ★

Broadcasters Urge EU to Use the DMA to Go After Smart TV Platforms, None of Which Are From European Companies

Foo Yun Chee, reporting for Reuters back on March 23: Google, Amazon, Apple and Samsung’s smart TVs and virtual assistants should fall under the EU’s toughest tech rules because of their growing market power, the world’s largest broadcasters told EU antitrust chief Teresa Ribera on Monday. The call by the Association of Commercial Television and Video on Demand Services in Europe (ACT) whose members include Canal+, RTL, Mediaset, ITV, Paramount+, NBCUniversal, Walt Disney, Warner Bros Discovery, Sky and TF1 Groupe underscores the battle between ​broadcasters and Big Tech for market share in a lucrative industry. Android TV, which increased its market share from 16% to ​23% from 2019 to 2024, Amazon Fire OS whose market share rose from 5% to 12% in the same period and Samsung’s Tizen OS with its 24% market share should be designated as gatekeepers under the EU’s ​Digital Markets Act, the broadcasters said, citing data from a 2025 market study. Apple is mentioned only in the context of voice assistants, not Apple TV 4K: The broadcasters also voiced concerns about virtual assistants, the most ​well known of which are Amazon’s ​Alexa and Apple’s Siri, while OpenAI entered the field last year with a beta feature called Tasks for its AI chatbot ChatGPT. The European Commission has yet to label any virtual assistants as gatekeepers under the DMA. [...] They urged Ribera to subject smart TVs and virtual assistants to the DMA on the basis of qualitative criteria even if they do not meet the quantitative benchmarks which ​are more than 45 million monthly active users and 75 billion euros ($87 ​billion) in market capitalisation. I found this story only after posting the previous item, trying to see if there were any DMA-related actions that I’d missed under Ribera’s leadership. I didn’t find much. And this Reuters story only says the broadcasters sent Ribera a letter asking her to go after smart TV platforms and voice assistants — there’s no suggestion that Ribera intends to do so.  ★

New DMA Compliance Features for EU Users in iOS 26.5 (and Perhaps the EU Has Finally Come to Their Senses on Tech Regulation)

Juli Clover, MacRumors: To comply with the EU’s Digital Markets Act, Apple is letting third-party wearables access some features that have historically been limited to the Apple Watch and AirPods. Proximity pairing — Third-party earbuds are able to use proximity pairing to connect to an iPhone, similar to the AirPods. Bringing a set of earbuds that support the feature near an iPhone will initiate an AirPods-like one-tap pairing process, so third-party wearables like earbuds will no longer require multiple steps to pair.

iPhone notifications — Third-party accessories like smartwatches are able to receive notifications from the iPhone, and users are able to view and react to them. Interactive notifications from the iPhone have been limited to the Apple Watch, while third-party wearables have only been able to display read-only notifications. Notifications can only be forwarded to a single connected device at a time, so turning on notifications for a third-party wearable disables notifications on Apple Watch.

Live Activities — Live Activities from the iPhone can be displayed on a third-party wearable, similar to how Live Activities are shown on an Apple Watch.

Accessory makers will need to add support for the interoperability updates, so they may not be available right away. Third-party TVs, smartwatches, and headphones will be able to use the features. Two thoughts. First, I’d love to hear about any third-party devices that begin taking advantage of these EU-exclusive features. Second, it sure seems as though the European Commission has quietly walked away from using the DMA as a cudgel under the leadership of competition chief Teresa Ribera. I’d even forgotten her name. Margrethe Vestager’s name, I still remember. I haven’t mentioned Ribera, or any new enforcement actions against Apple and iOS, in 13 months. The last was this post regarding a €500M fine imposed against Apple in April last year, the culmination of an investigation that began under Vestager. I wrote then: This finding — and the scope of the fine (roughly $570M converted from euros) — was completely in line with (at least my) expectations. Apple booked about $184B in profit last year, so this fine is about 0.3% of that. Maybe Apple just considers this the new cost of doing business in the EU? It’s not nothing, but it’s about 1/80th of the theoretical maximum fine the EU could have assessed, $39B. Something, not nothing, but definitely not a big deal. Teresa Ribera, the EC competition chief, is clearly trying to thread a political needle here. Fines big enough to create the impression that the EU is asserting itself, but small enough not to actually be all that inflammatory amidst the Trump-initiated mad-king trade war. Even Ribera’s job title — Executive Vice-President for Clean, Just and Competitive Transition — seems designed to de-escalate tensions. Margrethe Vestager was adamantly against American companies. Ribera is not. These new DMA compliance features are the result of requirements imposed in March last year — again, from investigations that began under Vestager, not Ribera. I wrote then: Apple’s statement makes clear their staunch opposition to these decisions. But at least at a superficial level, the European Commission’s tenor has changed. The quotes from the Commission executives (Teresa Ribera, who replaced firebrand Margrethe Vestager as competition chief, and Henna Virkkunen) are anodyne. Nothing of the vituperativeness of the quotes from Vestager and Thierry Breton in years past. But the decisions themselves make clear that the EU isn’t backing down from its general position of seeing itself as the rightful decision-maker for how iOS should function and be engineered, and that Apple’s core competitive asset — making devices that work better together than those from other companies — isn’t legal under the DMA. I think that holds up. The EU hasn’t rescinded any of their existing requirements under the DMA. But Ribera has clearly deescalated the EU’s approach to regulating American companies in general, and Apple specifically. No new requirements in over a year, no new investigations, and no inflammatory rhetoric. (Still no iPhone Mirroring in the EU, either, though, because they haven’t rescinded any already-imposed requirements.) Much better.  ★

Where Are All The Data Centers?

If you liked this piece, please subscribe to my premium newsletter. It’s $70 a year, or $7 a month, and in return you get a weekly newsletter that’s usually anywhere from 5,000 to 18,000 words, including vast, detailed analyses of NVIDIA, Anthropic and OpenAI&

Not a Security Issue

As part of my work with Alpha-Omega, and at Daniel’s request, I recently ran an AI-assisted security scan over the curl source tree, mostly to see what the current generation of tools would produce against a codebase that has already had every fuzzer and auditor on earth pointed at it. The findings were better than I expected, and one reason stood out: the scanner had read docs/VULN-DISCLOSURE-POLICY.md and applied it. A whole class of results came back labelled in effect “real bug, worth fixing, but not a security issue per the project’s own policy”: server-triggered NULL dereferences, small leaks, things that only fire if you can already control the command line. The tool had found them, checked them against curl’s published list of what doesn’t count, and demoted them before I had to. One example I can share, since by definition it isn’t sensitive: the scanner found that tool_formparse.c walks a linked list of -F form parts recursively with no depth limit, built a 150k-line config file to prove it, and got an ASan stack-overflow trace out the other end. It then wrote, in its own summary, “trigger requires user to run curl with attacker-supplied config or args, so excluded by policy,” filed it under quality bugs, and moved on. A small ber_free leak on an LDAP error path got the same treatment with a terser “policy excludes small leaks.” The scan did turn up things I can’t talk about yet, which is rather the point, but the noise floor was lower than I’ve seen from comparable runs on projects without a written policy. Almost everything written about AI-generated security reports over the past few months is about what to do once they land in your inbox. Daniel has written and spoken about it at length, Seth Larson called it early from the Python side, ISC reported an 89% false-positive rate on one platform, and there’s an OpenSSF working group effort collecting triage practices. All of that addresses the receiving end, whereas the curl scan suggested the same documents that help a human triager can be loaded into the scanner’s context and suppress findings before anyone has to read them. Agentic scanners read the repository as they go, pulling in SECURITY.md, CONTRIBUTING.md, and anything that looks like policy, because they’re built on the same scaffolding as coding agents. A maintainer has no say over who points a scanner at the repo, but the files sitting there when it arrives are entirely theirs. VULN-DISCLOSURE-POLICY.md The section that did the work is headed “Not security issues” and lists sixteen named categories, covering things like small memory leaks, never-ending transfers, NULL dereferences triggered by a malicious server, busy-loops that eventually end, escape sequences in terminal output, weak algorithms that a protocol requires, and anything that depends on tricking the user into running a crafted command line. Each entry gets a paragraph of reasoning: the busy-loop one says applications already have to handle the transfer loop legitimately running at 100% CPU, so a prolonged one is a bug rather than a vulnerability, and the command-line one points out that an attacker who can make you run a crafted curl invocation could make you run sudo rm -rf / instead. The reasoning is what lets a reader, human or otherwise, apply the rule to cases the list didn’t anticipate, and the categories only work because they’re specific to curl. A generic “DoS is out of scope” line wouldn’t have helped, but “never-ending transfers are not security issues because applications already need countermeasures for stalled connections” is something a tool can match a finding against. Prior art Node.js embeds a full threat model in SECURITY.md with explicit trust boundaries, listing what the runtime does not trust (inbound network data, file content opened via the API) against what it does (the operating system, the developer’s own code), and sets a high bar for DoS reports by requiring asymmetric resource consumption and ruling out anything mitigable by ordinary process recycling. Django’s policy gives worked code examples of reports that are “not considered valid”, mostly variations on passing unsanitised input to an internal function and blaming the function. It also asks reporters not to include CVSS scores, severity assessments, or “lengthy background sections”, which is a fairly direct description of what an LLM produces by default. Chrome’s security FAQ is the source of the most-borrowed single exclusion in the genre, that a physically-local attacker who can already run code as you is out of scope because the browser can’t defend against the operating system. I collected around five hundred repositories that ship a threat model file of some kind. The filenames are all over the place, THREAT-MODEL.md, threat_model.md, ThreatModel.md, sometimes buried three directories into docs/, which means a tool has to go looking rather than checking a known path. The OpenSSF SECURITY-INSIGHTS schema has had in-scope and out-of-scope arrays under vulnerability-reporting for a couple of years, which would be the obvious machine-readable home for this, but I’ve not seen a scanner that consumes them. What to write The baseline is having a SECURITY.md at all, which a surprising share of widely-depended-on repos still lack, and on GitHub turning on private vulnerability reporting so there’s somewhere for a report to go that isn’t a public issue. An empty policy file with a contact address is still better than nothing because it’s the first place both humans and tools look. The exclusion list is the cheap part and the part that did the work in the curl scan. Each entry needs the name of the pattern, a flat statement that it doesn’t qualify, and enough reasoning that the rule generalises beyond the exact case you wrote down. Underneath that sits a short threat model describing who the attacker is assumed to be and what they control, against what the project is actually trying to protect, which for most projects fits in three or four paragraphs. The exclusion list is really just the threat model restated as concrete cases. In practice most maintainers will write the exclusions first because that’s where the pain is, accumulating entries as bad reports come in, and only later write down the model that explains why they hold together, which is fine, though the list does tend to get sharper once the model exists. The CNCF self-assessment template is a reasonable starting shape if you want one. One category worth adding that I haven’t seen written down is documentation not matching behaviour. AI scanners flag this constantly because “docs say X, code does Y” is a finding template they’ve learned, and it is technically a defect, but it’s only a security issue if the documented behaviour was a security guarantee somebody relied on. A function that the docs say returns null on error but actually throws belongs in the public tracker, whereas a function documented as escaping HTML that turns out not to is a real vulnerability. Stating that distinction in the policy file would have trimmed my curl results further, and Piotr Karwasz made much the same observation from the Log4j side, where most of the borderline reports describe real behaviour that the threat model excludes and the fix is usually a Javadoc line saying whether an argument is trusted. None of this stops someone pasting a hallucinated buffer overflow into your HackerOne queue without reading anything, and the bottom of the report-quality distribution is unreachable by documentation. But the better-built tools, the ones that read the repo before reporting, are the ones a policy file can steer, and those are increasingly the ones doing the scanning. Writing the threat model down was always good practice for human reporters, and it turns out the new readers take it more literally than the old ones ever did. Whatever mythical models turn up next will be reading the same files.

[Sponsor] Drata

Leverage autonomous AI agents to automate compliance, manage internal and third-party risk, and continuously prove your security posture.  ★