- ↔
- →
to read (pdf)
- I don't want your PRs anymore
- JitterDropper | OALABS Research
- DomainTools Investigations | DPRK Malware Modularity: Diversity and Functional Specialization
- EXHIB: A Benchmark for Realistic and Diverse Evaluation of Function Similarity in the Wild
- Neobrutalism components - Start making neobrutalism layouts today
- June 04, 2026
-
🔗 r/Harrogate Harrogate meet ups girls rss
From down south looking for girls to meet while working away single funny and
Looking For a fun time 22 and malesubmitted by /u/RhysB0ne
[link] [comments] -
🔗 anthropics/claude-code v2.1.163 release
What's changed
- Added
requiredMinimumVersionandrequiredMaximumVersionmanaged settings — Claude Code refuses to start if its version is outside the allowed range and directs the user to an approved version - Added
/plugin listcommand to list installed plugins, with--enabled/--disabledfilters - Added a "c to copy" shortcut to
/btwthat copies the raw markdown answer to the clipboard, preserving formatting when pasted elsewhere - Hooks: Stop and SubagentStop hooks can now return
hookSpecificOutput.additionalContextto give Claude feedback and keep the turn going without being labeled a hook error - Skills: added
\$escape syntax to include a literal$before a digit in command bodies - stdio MCP servers now receive the same
CLAUDE_CODE_SESSION_IDas hooks/Bash on--resume - Fixed
claude -phanging forever after its final result when a backgrounded command never exits — background shells are now stopped ~5s after the result once stdin closes - Fixed
claude -pfailing with "ANTHROPIC_API_KEY required" on Bedrock/Vertex/Foundry whenCI=trueand no Anthropic API key is set - Fixed bash commands failing under bazel and EDR-protected Go workflows:
$TMPDIRwas overridden to/tmp/claude-{uid}for all commands instead of only sandboxed ones (regression in 2.1.154) - Fixed Bash commands failing on Windows with "EEXIST: file already exists" on the session-env directory when it has the read-only attribute or is inside OneDrive
- Fixed org-managed permission rules not applying for the entire session when the managed settings fetch completed during startup on a fresh config directory
- Fixed background sessions in
claude agentslosing their running background tasks when reattached after a Claude Code update - Fixed terminal misalignment and a multi-second hang when exiting the agent view by pressing Esc
- Fixed clicking Stop on a background-task chip in the desktop app not clearing the chip when the underlying process was already gone
- Fixed keyboard input becoming permanently unresponsive after a paste operation whose end marker is dropped by the terminal
- Fixed hook
if: "Bash(...)"conditions firing on every Bash command containing$()or$VAR; the pattern now matches against commands inside subshells and backticks too - Fixed deny rules on home-directory paths (e.g.
Read(~/Desktop/**)) not blocking Bash commands that reference the path via$HOME - Fixed a stray "(no content)" line left in the transcript after closing panel dialogs like /mcp and /plugins
- Background agent sessions now update to a new Claude Code version in the background, so opening a session after an update no longer waits on a cold restart
- Clearer descriptions for built-in commands and skills in the / menu
- The subscription-switch suggestion now shows in the startup announcement slot instead of a toast
claude agentsdispatching from the state-grouped view now starts the session in the directory the agent view was opened from
- Added
-
🔗 r/reverseengineering System Over Model, Tested: Reproducing Mythos’s FreeBSD Find on Local Open-Weight Models rss
submitted by /u/onlinereadme
[link] [comments] -
🔗 backnotprop/plannotator v0.19.27 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.19.26 | Amp plugin production fixes, Mermaid rendering fix, Settings flicker fix, update notification toast and shimmer
v0.19.24 | Amp integration, configurable data directory, Auto Mode permission option, Pi plan approval fix
v0.19.23 | Droid integration, Windows Pi AI fix, quieter update indicator
v0.19.22 | Safari copy fix in plan viewer, CLAUDE_CONFIG_DIR support for session logs
v0.19.21 | Ask AI in plan review and annotate mode, shared AI runtime, origin-aware provider defaults
v0.19.20 | Interactive goal setup UI, OpenCode submit_plan fixes, browser no-op sentinel handling for Claude agents
v0.19.18 | Edit-based submit_plan for OpenCode, Pi namespace migration, Codex annotate-last fix, OpenCode commands dir fix
v0.19.17 | Reworked goal setup skill (interview-driven flow), CLI --version flag
v0.19.16 | Code navigation with peek view (Cmd/Ctrl+click tokens in diffs)
v0.19.15 | Commit-based diff base, jj evolution diffs, GitLab reliability fixes, OpenCode command intercept fix
v0.19.14 | Visual explainer skill update, PFM code-file hover previews, Graphviz, diff tab size and line bg intensity, hooks settings tab
What's New in v0.19.27
v0.19.27 adds Kiro CLI as a supported agent, introduces Glimpse native window support, and ships a message picker for annotate-last. Nine PRs total, six from external contributors, three first-timers.
Kiro CLI Integration
Plannotator now supports the Kiro CLI agent harness. The integration uses Kiro's native skill and custom agent model rather than a plugin or hook. The installer auto-detects Kiro when
~/.kiroexists orkiro-cliis on PATH, then installs five skills and a custom agent configuration file. Three skills are Kiro-specific with thekiro-cliorigin baked in (review, annotate, archive), and two are shared with other agents (setup-goal, visual-explainer).The custom agent file at
~/.kiro/agents/plannotator.jsonwires all five skills together with a shell tool scoped toplannotator .*. The installer never overwrites an existing agent file, so users who customize it won't lose their changes on upgrade. All three platform installers (bash, PowerShell, CMD) received the same update.- #837 closing #794, contributed by @ashwinjohn3
Annotate-Last Message Picker
Running
plannotator lastafter/rewindused to silently annotate the orphaned pre-rewind message. The annotation UI now surfaces recent assistant messages so you can pick which one to annotate.Two new affordances appear when there are multiple messages to choose from. A "Message N of M" button in the sticky toolbar lets you switch between messages while staying in the same session. A Messages tab in the sidebar shows the full list with annotation counts per message. Your annotations are preserved when you switch. On submit, only messages you actually annotated are included in the feedback.
When there is only one message, the behavior is unchanged from previous versions.
Glimpse Native Window
Plannotator can now open in a Glimpse native window instead of a browser tab. Glimpse provides a lightweight, borderless WebView window that feels more integrated than a random browser tab opening in the background.
The feature is auto-detected: if
glimpseuiis on PATH and no explicit browser is configured viaPLANNOTATOR_BROWSER, the server spawns Glimpse automatically. If Glimpse isn't installed, everything works exactly as before. Remote sessions never attempt Glimpse. The window size defaults to 1280x900 and can be adjusted viaPLANNOTATOR_GLIMPSE_WIDTHandPLANNOTATOR_GLIMPSE_HEIGHT. To disable Glimpse entirely even when installed, setPLANNOTATOR_GLIMPSE=0or add{ "glimpse": false }to~/.plannotator/config.json.- #840, contributed by @bjesuiter
Pi Approval Continuation Fix
The previous fix for Pi plan approval (#805 in v0.19.24) sent the continuation message as a
deliverAs: "followUp", which caused a visible "Follow-up: Continue with the approved plan." row to appear in Pi's TUI. This release replaces that with an idle-wait approach: after approval, the extension polls until Pi reports idle, then sends a normal user message. The visible queue artifact is gone.Additional Changes
- List marker alignment in diff view : List bullets and numbers in the plan-diff clean view now align to the first line of multi-line items instead of centering vertically against the full wrapped height. — #838, contributed by @rcdailey
- Goal setup "grill first" interview : The setup-goal skill now supports an opt-in deep-dive interview step in Phase 1 that walks the decision tree one question at a time before building the bundle. — #839, contributed by @dgrissen2
- Glimpse disable config : A
PLANNOTATOR_GLIMPSEenvironment variable andglimpseconfig option let users disable Glimpse even when it's installed. - Multi-message annotation performance : The multi-message annotation export now computes lazily at submit time instead of re-parsing all messages on every annotation change.
- Kiro on homepage : Kiro CLI is now listed in the agent selector on plannotator.ai.
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: Run
/pluginin Claude Code, find plannotator , and click "Update now".OpenCode: Clear cache and restart:
rm -rf ~/.bun/install/cache/@plannotatorThen in
opencode.json:{ "plugin": ["@plannotator/opencode@latest"] }Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionDroid: Install via the plugin marketplace:
droid plugin marketplace add backnotprop/plannotator droid plugin install plannotator@plannotatorAmp: Install the CLI first, then copy the plugin:
mkdir -p ~/.config/amp/plugins curl -fsSL https://raw.githubusercontent.com/backnotprop/plannotator/main/apps/amp-plugin/plannotator.ts \ -o ~/.config/amp/plugins/plannotator.tsKiro CLI: The installer auto-detects Kiro and installs skills automatically. After installing the CLI, launch with:
kiro-cli chat --agent plannotator
What's Changed
- feat: Kiro CLI integration (skills + custom agent, cross-platform installers) by @ashwinjohn3 in #837
- fix(ui): align list markers to first line in clean diff view by @rcdailey in #838
- feat(setup-goal): opt-in "grill first" interview step in Phase 1 by @dgrissen2 in #839
- feat: open Plannotator in Glimpse when available by @bjesuiter in #840
- fix(pi-extension): avoid visible approval follow-up queue by @xz-dev in #843
- feat: annotate-last message picker (fixes #800) by @GLips in #809
- perf: defer multi-message annotation export to submit time by @backnotprop
- feat(marketing): add Kiro CLI to homepage agent selector by @backnotprop
- feat: add PLANNOTATOR_GLIMPSE env var to disable Glimpse native window by @backnotprop
New Contributors
- @ashwinjohn3 made their first contribution in #837
- @GLips made their first contribution in #809
- @bjesuiter made their first contribution in #840
Contributors
@ashwinjohn3 built the Kiro CLI integration from scratch, wiring up skills, a custom agent, and cross-platform installer support that mirrors the existing Codex and Gemini auto-detect pattern. @GLips both reported and fixed the annotate-last message selection issue, contributing the full message picker UI including the sidebar Messages tab, per-message annotation state, and multi-message feedback export. @bjesuiter contributed Glimpse native window support, adding auto-detection and fallback logic to both the Bun and Pi server browser-opening paths. @xz-dev returned with a follow-up to the Pi approval fix, replacing the visible follow-up queue with an idle-wait polling approach. @rcdailey fixed list marker alignment in the plan-diff clean view by extracting the
ListItemBodycomponent and addingitems-startto the flex container. @dgrissen2 added the opt-in "grill first" interview step to the setup-goal skill, extending Phase 1 with a deep-dive question flow for vague or interdependent goals.Full Changelog :
v0.19.26...v0.19.27 -
🔗 earendil-works/pi v0.78.1 release
New Features
- More built-in provider coverage - Added Ant Ling and NVIDIA NIM provider setup, plus MiniMax-M3 support for the direct MiniMax providers. See Providers.
- Richer extension context - Extensions can use
ctx.modeandctx.getSystemPromptOptions()to adapt behavior across TUI, RPC, JSON, and print modes and inspect base system prompt inputs. See Extensions.
Added
- Added containerization documentation and a Gondolin extension example for routing built-in tools into a local micro-VM.
- Added Ant Ling provider selection and setup documentation.
- Added MiniMax-M3 model support inherited from
@earendil-works/pi-aifor theminimaxandminimax-cndirect providers (#5313). - Added NVIDIA NIM provider selection, setup documentation, and direct NIM request attribution headers.
- Added
ctx.modeto extension contexts so extensions can distinguish TUI, RPC, JSON, and print mode. - Added
ctx.getSystemPromptOptions()for extension commands to inspect the current base system prompt inputs (#5306 by @xl0).
Fixed
- Fixed temporary extension package installs to use a private
~/.pi/agent/tmp/extensionsdirectory with0700permissions instead ofos.tmpdir()/pi-extensions. - Fixed git package source handling to reject unsafe host/path components and keep managed clone paths inside install roots.
- Fixed stored XSS in HTML session exports by sanitizing Markdown link and image URLs with a scheme allow-list after stripping control characters.
- Fixed SDK embedding in bundled Node apps failing with
ENOENTwhenpackage.jsonis not present next to the bundle entrypoint. The package metadata reader now gracefully handles missingpackage.jsonby using defaults, enablingcreateAgentSession()without requiring package-adjacent files at runtime (#5226). - Fixed HTTP timeout setting not being respected for non-Codex providers (e.g., llama.cpp via OpenAI-compatible API). The
httpIdleTimeoutMssetting (set via/settingsHTTP timeout) now applies as the default SDK request timeout for all providers that support it, not just OpenAI Codex Responses. Disabling the timeout (HTTP timeout = false) now correctly disables SDK timeouts for all supported providers by sending a maximum int32 value (effectively infinite) instead of 0, since SDKs treat timeout=0 as an immediate timeout (#5294). - Fixed inherited Amazon Bedrock requests to replace blank required user/tool-result text with a placeholder and skip blank replay text blocks (#4975).
- Fixed inherited Anthropic Claude Opus 4.7+ requests to suppress deprecated temperature parameters (#5251 by @yzhg1983).
- Fixed inherited OpenAI GPT-5.5 generated metadata to omit unsupported minimal thinking (#5243).
- Fixed inherited OpenRouter Kimi K2.6 thinking replay and developer-role instruction handling (#5309).
- Fixed inherited OpenRouter reasoning instruction requests to preserve the system role when required (#5221 by @PriNova).
- Fixed inherited overlay focus restoration so non-capturing overlays remain interactive after UI rerenders and explicit focus release (#5235 by @nicobailon).
- Fixed inherited tab width accounting in column slicing and overlay compositing so tab-containing output cannot exceed the terminal width (#5218).
- Fixed opening and listing very large JSONL session files by reading session entries line-by-line instead of materializing the full file as one string (#5231).
- Fixed the footer branch display in WSL
/mnt/...repositories to refresh after branch changes (#5264 by @psoukie). - Fixed
renderShell: "self"tool renderers that emit no component lines leaving a blank chat row (#5299). - Restored inherited NVIDIA Qwen 3.5 122B NIM model support.
-
🔗 r/LocalLLaMA Nvidia's been paying shills on LinkedIn rss
| 3 different accounts, some even with LinkedIn Gold, made the above posts all on the same day. And clearly all of them followed the marketing team's pointers without even understanding how locally hosted AI works, no way a $249 8GB machine can replace frontier models. submitted by /u/jotunck
[link] [comments]
---|--- -
🔗 jj-vcs/jj v0.42.0 release
About
jj is a Git-compatible version control system that is both simple and powerful. See
the installation instructions to get started.Release highlights
- Switched to the mimalloc memory allocator for better multi-threaded
performance.
Breaking changes
-
The following deprecated command options have been removed:
jj commit --reset-author/--authorjj describe --no-edit/--edit/--reset-author/--authorjj git push --allow-newjj metaedit --update-committer-timestamp-
The following deprecated config options have been removed:
-
git.auto-local-bookmark git.push-new-bookmarks
Deprecations
jj evologno longer supports legacy commit predecessors recorded injj<
0.30.
New features
-
Shell completions now surface descriptions for custom aliases,
revset-aliases, template-aliases, and fileset-aliases. Descriptions are
extracted from the.docfield of the alias definition if it is a table
with.docand.definitionproperties. -
jj shownow accepts multiple revisions, showing all of them one after the
other, behaving closer togit show. -
jj git fetchnow generates evolution history based on change IDs. If change
IDs are preserved by the remote, local descendant revisions will be rebased
onto the rewritten parents. -
Added
jj util backend namecommand that prints the commit backend being used
in the current repo. -
Added
edit-invocation-modeconfig option for diff editors (e.g.
jj diffedit,jj split). When set to"file-by-file", the editor is
launched once per changed file, making it possible to use per-file tools like
vimdifffor editing.
Fixed bugs
-
jj git remote addnow reports an error instead of panicking when the
remote name is empty or contains whitespace.
#9099 -
Color-words diffs are now shown as separate before and after lines when color
output is disabled, making piped or redirected diffs readable.
#5894 -
jj bookmark forgetno longer printsForgot N local bookmarks.when no
local bookmarks were actually forgotten (e.g. when only an untracked remote
bookmark matched). #9181. -
The
builtin_log_redactedtemplate now also redacts workspace names.
Contributors
Thanks to the people who made this release happen!
- Alex Jaspersen (@ajaspers)
- Archer (@archer-321)
- ase (@adamse)
- Austin Seipp (@thoughtpolice)
- David Rieber (@drieber)
- Eyüp Can Akman (@eyupcanakman)
- Jakub Stasiak (@jstasiak)
- James Dixon (@lemonase)
- Joseph Lou (@josephlou5)
- Laurynas Keturakis (@laulauland)
- Luna Schwalbe (@lunagl)
- Martin von Zweigbergk (@martinvonz)
- Niko Savola (@nikosavola)
- OlshaMB (@OlshaMB)
- Sergey Kasmy (@SergeyKasmy)
- truffle (@truffle-dev)
- Vincent Ging Ho Yim (@cenviity)
- Yuya Nishihara (@yuja)
- Switched to the mimalloc memory allocator for better multi-threaded
-
🔗 sacha chua :: living an awesome life Emacs Chat 25: Ben Zanin (@gnomon@mastodon.social) rss
I chatted with Ben Zanin about music, Org Mode, Emacs in terminals and on an Android, keyboards, elfeed, and more.
View in the Internet Archive, watch or comment on YouTube, read the transcript online, download the transcript, or e-mail me.
Chapters
- 0:00 How Ben got started with Emacs
- 2:19 Ben got into Emacs because of twittering-mode
- 4:30 Emacs as a media playback platform with Versuri and Mpdel
- 9:13 Emacs on Android with Termux
- 13:44 Keyboards and other devices
- 16:44 Benefits of a split keyboard
- 18:22 Meeting workflow
- 21:11 Narrowing
- 22:58 There's even an internal Slack channel about Emacs at Ben's company
- 24:50 Ben keeps Org capture templates as individual files and adapts them to different meeting flows
- 28:45 Personal-scale software and the journey
- 34:07 vc-git-grep for finding notes again
- 37:47 Keybindings and terminals; wezterm
- 42:38 Timers: tea-timer, tmr
- 43:57 Different stages of package use
- 44:47 Elfeed
- 53:13 Bookmark naming conventions
- 53:50 elfeed-curate for annotations
- 55:46 mytoots archives Mastodon toots
- 57:05 Mentoring offer
- 58:02 A local instance of public-inbox can let you use Gnus to read mailing lists quickly
Transcript
Still needs editing
Expand this to read the transcript0:00 How Ben got started with EmacsSacha: I forgot to ask you how your last name is pronounced. Ben: Oh, Zanin. Sacha: This is Emacs chat number 25 and here I am with Ben Zanin. You have a math background and now you're in IT. Where did you encounter Emacs in the journey? Ben: So the reason I have a math background is that I wanted to get into programming language design and at the time so that led me over to lambda calculus and that kind of thing and at the time it was at the time I was getting into university in like 2005-2006 It was impossible to get into the computer programs, but I could get into math. I figured that would move me in the direction that I wanted to go in, so I did. Got to third year, and then every professor who taught any of the courses I cared about all left the faculty at the same time. Sacha: Oh no! Ben: Yeah. Anyhow, that's a different story. But yeah, I got into Emacs because in the process of learning about Lambda Calculus, the Lisp weenies found me. And yeah, I spent a bunch of time learning about that. And it wasn't until like 10 years after I got into Common Lisp and Scheme that I actually got into Emacs at all. Sacha: That's interesting. Usually people, like, if they're doing Lispy things, they get into Emacs right away because Lisp. But okay, so 10 years after. You're already well-used to parentheses at that point. Ben: Yes. But I guess it wasn't until about ten years ago, like around 2015 or so, that I started really getting into Emacs. I would still consider myself to be a beginner on that front. Sacha: Oh yeah? So what got you to get into it more? Ben: I found that I was looking for more structured data management processes. Basically, I was looking for personal information management. And I kept bouncing off Emacs because I wanted to get into those tasks, but Emacs was such a rich learning process that I kept getting sidetracked, so I kept bouncing off of it.2:19 Ben got into Emacs because of twittering-modeBen: But I have to admit that one of the things that originally actually got me into Emacs was twittering mode. Oh yeah? Because I was looking for a tool that would let me, we'll probably get into this later in the chat, but I was looking for a tool that would let me keep a larger window of context about the conversations that I've been in. The Twitter apps and the Twitter website implemented a really narrow window. I wanted to be able to search back a couple of weeks for stuff that I had seen or talked about previously. Twittering-mode gave me the ability to keep days or weeks of context in a single buffer that I could then immediately search. So I didn't actually get into Emacs as a text editor, I got into it as an application platform, and then gradually learned the rest of it. This is actually fantastic. So I kind of stuck around after that. Sacha: That is the first time I've heard of someone coming to Emacs because of Twitter. Ben: No, it's deeply embarrassing. Sacha: No, it's wonderful. I love that there's just so many reasons why people come and the fact that you could find something that would let you take those notes and see that context and reply to it, and even, as I see in your config, work around slow keyboard response issues. Ben: And also the fact that that's still in the config despite Twitter itself... I think I abandoned it in 2017, but it takes me a little while to rip things out of my config. Sacha: Yeah, I see you're a lot more active in Mastodon these days. I see your Monsterdon posts scrolled by my feed every so often. Yeah, so we dove right into that because a lot of the stuff in your config is interesting and your workflows too. My idea for these Emacs chats is to show people the kind of stuff that isn't immediately obvious to newbies when they're looking at someone's config. Because a lot of the stuff is new workflows and how the keyboard shortcuts work together and how this stuff fits into your life. That's not immediately obvious from the code. I've taken a look at your config, but before we jump into the gazillion things I wanted to ask you about, are there things that you particularly love about your Emacs workflow?4:30 Emacs as a media playback platform with Versuri and Mpdel
Ben: I'm probably going to get a little bit of deserved flak for this, but I use Emacs a lot as a media playback platform. I spend a lot of time using Emacs to listen to music through MPV. And I've got some integration with Versuri, which lets me... I think you've seen those customizations where what I've done is I've kind of duct-taped the two together. Versuri is an Emacs package for being able to quickly search through lyrics for songs. What I've done is I've bound Versuri to the point where I've pulled up a page of lyrics, I now have a hotkey that bounces me over to a search of my MPD library for where that song is, and vice versa. I've got MPD rigged up so that when I've got a song currently playing, I can bounce into Verisuri to display the lyrics for that particular song. Something you probably have not seen in my config yet because I haven't finished it yet... What I'm working on is actually integrating Org Mode with MPD, because I'd really like to be able to streamline my process where occasionally when I'm listening to something, I'll take notes either about the lyrics or about the song. I'd like to be able to link from Org Mode directly to either that song, that album, or that particular timecode. I don't have that yet, but I'm working on it. I think I'll probably lean on it quite a bit once I have it. Sacha: Yeah, yeah. I saw your tweet from May, I think, where you're talking about coming up with this way of taking notes. think if you come up with maybe a custom Org Mode link type that can store the annotation and then let you go to it, I think that would be really interesting. Especially if you figure out, okay, like, are you taking notes in the album? Are you taking notes on the song? Are you taking notes on this moment in the song? That could all be very cool. Ben: Actually, do you mind if I share my screen? Sacha: Please. Ben: So one of the things I wanted to kind of note was... Let me... Oh yeah, this is actually going to be further embarrassing. I'm a terminal Emacs user. Sacha: I saw. Can you increase the font size, though? Ben: Absolutely, yeah. Sacha: Resizing your terminal so it's smaller makes everything look bigger... Ben: Is that better? Sacha: More. Some of us are older. Thank you. Ben: One of the things that's kind of unusual about my MPD configuration is I've got a satellite config. Sorry, the line wrap is a little bit off here. What this means is that I have... the household file server maintains the MPD library, but I've got multiple playback nodes around the house. What that lets me do is... Sacha: You can play stuff on this... Ben: So what this means is that I'm controlling the... well, in this case, that's a little MeLE Quieter3C that I've got in the living room that's kind of like the the home media server, the home playback machine. Fundamentally, I'm an ops guy, I'm a sys admin, and I've got, unfortunately, a fleet of machines around the house. What this lets me do is easily control each one of them. Instead of each one maintaining its own library of music files, the file server itself indexes them, which means that library updates are almost instantaneous, instead of having to read over the network to pull metadata out of each individual file. So having a satellite setup lets me... The real benefit is that MPD tracks albums, directories, and files as URLs. That means that I have a single global namespace of URLs for all of the media that's currently in the library, which means that I can annotate from any machine, but have it mean one thing. It makes it convenient for navigation, but it also makes it convenient for keeping notes, which I'm currently doing manually and working on those Org link types to be able to make it a little bit more smooth than it currently is. Sacha: So you've got your central store of music files. You've got URLs for them so you can talk about them. That's just one identifier per song. You've got multiple speakers that you can use your completing interface to say, okay, I want to play this over there. You have Emacs controlling all of that. 9:13 Emacs on Android with TermuxSacha: Now, is that Emacs on your laptop and you just take it around and you say, okay, I'm going to sit in the living room for a little bit or whatever and play there. Or do you... Ah, there you go. That's what I was going to ask. All right. So Emacs on your phone. The Android port or Termux? Ben: I have both installed. I think you actually saw this a few months ago when I was running performance comparisons between the Termux version of Emacs and the native port, and found that the native port generally ran anything CPU-intensive roughly twice as fast. But I still use the Termux version because it's... I'm not sure if you played around with the Android terminal virtualization layer at all, but it's not great. I really appreciate the integration that Termux gives me with Android features. For example, being able to query the sensors, such as GPS or temperature sensors, and I can actually pull those in from the Emacs side. And that's something I kind of want to get into. Sacha: What do you think of using the temperature sensors for? What can Emacs do with that? Ben: It's not so much the fact that I use the temperature sensors as that when I pull the sensors, that's the most remarkable value that I get out of it. But one of the interesting things is the barometric pressure sensor, which gives me height, which matters because when I'm out and about and if I stop to record an entry in my journal, for example, I'll just pull the sensors and dump them into the header in the entry that I'm writing. The barometric sensor, I'll get the GPS, so that'll tell me what the actual height is at that location on the earth. The barometric sensor also gives me a little bit of insight into the weather. So it's not so much the temperature sensor is what my temperature is, but just like if it's a hot day or not. Sacha: I am very curious about that setup. So if you happen to share your, I don't know, Org capture for Termux that includes all these things... You don't have to show me the actual stuff, but you know, at some point I think other people will be curious about what kind of benefits they can get from running Emacs on their phones. Ben: So, I mean, I guess I'll... One of the benefits that I get is the ability to keep shopping. So I'm a little bit of a militant cyclist. One of the things that I often do is leave
Ben: notes about things that I need to take care of in particular areas of the city. The nice thing is that I can just drop them directly in commits right as I'm going. So I often have a long list of updates that are from Emacs on my phone, just because it's convenient. All right. There we go for Monsterdon, in fact. Sacha: Nice, nice. Then that's Syncthing or whatever else to just get it copied back to your laptop or just on your phone? Ben: Straight Magit mode. Sacha: Oh, yeah? Ben: That's one of the things that I found was a little bit clunkier when I was running virtualized Emacs under the Android emulator and also the native Android port of Emacs. They are a little bit more troublesome to get Magit to work. Because I rely on that for syncing back and forth from my phone, that's one of the reasons why I stuck with Termux. Sacha: Very cool, very cool. I like Termux's little bar of extra keyboard keys that you can have, so you can have a regular keyboard and then you can just have your Controls and your Alts and whatever on that little extra bar. Termux is quite interesting. Ben: I think I'm probably pushing it harder than it is meant to be pushed. Sacha: That's the fun of it. I don't exactly know how everything will shake out, but probably with Google trying to lock down the developer ecosystem in a few months, right? They're saying, oh, you know, it's got to be ADB in order to get these unsigned apps on. We'll have to see how it all shakes out. But I'm hoping Termux can survive because I like that one too. Ben: Yeah, me too. Sacha: Okay, so you've got interesting music, an interesting music setup with lyrics and playback and all that stuff. You've got your phone, which also runs Emacs and from which you can, you've also set it up so you can control your music from your phone? Ben: Yes. Sacha: Okay. 13:44 Keyboards and other devicesSacha: When I was reading through your toots, I noticed you like to play around with other keyboards and other devices like the 8BitDo. Do you have any of that talking to Emacs too? Ben: [Keychron B11 Pro is] the keyboard I'm currently using. I got this so I could keep it in my purse and just like walk around with it, but it turns out it's super comfortable and I'm accidentally using it as a daily driver. Sacha: All right. Name-drop the keyboard for all the people who like the device recommendations. Ben: It's a Keychron B11 Pro. It runs ZMK. ZMK, I suppose. And if you've seen me interacting with Pete Johanson on Mastodon, he's the lead developer of that firmware package. It's a little bit like QMK, except that fundamentally QMK is a polling architecture, and it works really well for very restricted microcontrollers. ZMK is interrupt-based, which means it is tremendously more efficient in terms of power draw. So if you want a Bluetooth keyboard, you should probably run ZMK on it. Anyhow, yeah, it's fantastic. And I do have a bit of a keyboard problem where I tend to... Sacha: Many Emacs people have keyboard problems. Ben: Right? I feel like I'm in good company right now. Sacha: Yeah, yeah, yeah. So, devices, yep, gotcha. And this has become your main keyboard even for regular computing? Ben: In the last couple of weeks, yeah. It's super comfortable. Because it's so flat, I can get away without having to use palm rests to actually keep in a decent posture, because of the curvature of it.. Like, it's an Alice layout. The key travel isn't too bad. It's actually quite comfortable. I found that I needed a little bit of acclimatization to get used to split keyboards. This one has roughly the spread of a split, but it seems to be easier for my muscle memory. So yeah, I didn't intend to leave it on my desk, but it stuck and has kind of stayed there for now. Sacha: Does it have any special ergonomics for all the modifiers that we like to do? Or do you just use Caps as Control or whatever else? Ben: Actually, I don't use Caps as Control and I actually really need to get into remapping that. ZMK has a very rich remapping story, as I expect you to imagine, from a custom firmware. The macros are intense, and you can get really deep in customization. I have done none of that on this keyboard yet, because it's only, I think, a couple of months old at this point. Sacha: You've been settling in. As you said, this has been your main keyboard for a little while. Charlie Baker says, "yeah, I love the split keyboard. Recently bought one myself. I was getting so much neck pain, you know, shoulder and neck pain from so many hours keeping hands close together." But the split lets his shoulders relax. So probably you're getting the same, like, ha, my arms.16:44 Benefits of a split keyboardBen: The two things that I first noticed when I moved to a split keyboard was one, my wrists started feeling a lot nicer and two, I was immediately able to bench press like 20 pounds more the next week. It was amazing how much of a difference it made and it showed up in the data. Sacha: Wow. There was a weightlifting talk at EmacsConf last year, I think. So there's a surprising overlap between the people who are checking their weightlifting stats and the people who are into Emacs. Naturally, with Org Mode. There you go. Ben: Let's not look at those numbers too closely. I'm not too proud of a bunch of them. But yes, I find that Org capture templates let me keep on top of that and not really think about it, which is great because you don't want to think about it. You want to gather the data and think about it separately so that you can stay emotionally divested from what the numbers mean. Sacha: I know. I'm totally happy to dig into the Org capture, especially if you do any graphing. People always love graphing their progress, right? But if you're like, I don't really want to show my numbers at the moment, that is also understandable and okay. Ben: I don't, I'm afraid. Sorry. Sacha: That's okay. Ben: It took me a couple years to get used to being on camera at all. I don't really like my appearance very much. I'm working on that, as you can see. I've had to work on that to be able to work remotely. It's a work in progress. I'm getting through it. Sacha: You know us. We're very much focused on text. In fact, you even use Emacs in the terminal. That's very text-y.18:22 Meeting workflowSacha: One of the interesting things actually that I wanted to ask you about since you mentioned meetings is you probably also have the role of designated note-taker. You mentioned in one of your toots that you take notes and people are like, what are you doing that in? How are you taking your notes? And it's Emacs. Ben: Yes, so actually that's one of the things I should lead off with as an apology. I probably won't be able to share many of my capture templates because I don't use them in my personal life very much. They're mostly on my work machine. I've got capture templates for impromptu meetings where it's just like an exploratory, we have a problem we need to solve, we're kind of talking through a discussion, a separate capture template for meetings with agendas to make sure that we stay on them and that we log decisions, and a separate set of templates for... So I have a team of direct reports and they each have different cares and different topics that we're working to develop in their professional careers. I find that it's really useful to be able to keep some continuity between our conversations. It also makes it very easy to export that entire dataset, share it with them to make sure that they can consult it at the same time. If I got anything wrong, I can fold their corrections in. But all of those templates, unfortunately, are on my work machine. Sacha: We'll just sketch out the general idea in abstract details and then people who want to implement it for themselves can fill in the blanks. For example, when you're having a meeting with your direct reports, are the tasks related to them in an Org agenda? Are you using dynamic blocks? Is it tracked somewhere else or is it in Org? Ben: It's straight in Org mode. So most of the touch points that we have are more about professional development and their cares and concerns, rather than specific deliverables. Usually deliverables we manage at a team level. But if there are specific things that individuals are working on, they will be in to-dos under their subheadings in a way that show up on the agenda if we have assigned deadlines for them. But generally, if there's a deadline on a task, it's because I'm doing something and they need to track it, or they're doing something and I need to track it. If I'm the only guy using Emacs, then Org Mode won't work for that, so there aren't a lot of those. But if it's just something that I need to check up on to make sure that something that... Like they've got planned leave for example, or they have a cousin's wedding that they need to go off to, or something that I just need to keep in my brain that's not necessarily deliverable, then it would be appropriate to keep that in a place where it'll only show up on my agenda. So that's the kind of decision making that I apply there.21:11 NarrowingSacha: And you mentioned you have a subheading, I guess a subheading per person or sort of... Or do you use tags to keep track of something that might touch several people? Ben: Usually a section per person, and that's more of a convenience than anything else. That lets me narrow to just that subheading and share my screen during the meetings. Then I don't have to worry about accidentally leaking anybody else's information into the screen share or anything like that. Obviously we let off with conversations about them being all right with that. But the ability to very clearly and simply delineate "This domain of my notes pertains to this person" and being able to be confident and share that confidence that there will be no leakage means that we can explore topics and talk about them in a way that might otherwise be a little bit more restrictive. So being able to do that simply, and being able to establish a very clear delineation around whose information belongs where and where it should be shared turns out to be pretty valuable. Sacha: Yeah, and that's a technique I think that especially people who are new to Emacs and who aren't used to narrowing and widening might not know how to use effectively. I think narrow is even one of the commands that's disabled by default. You've got to say, yeah, you know, I'm not scared. I know what to do. Ben: Yeah, it's kind of bizarre to me that it is, but yeah. Sacha: I can imagine people accidentally triggering it and they're like, oh no, the rest of my file is missing. But if you know how to narrow to a region, and Org even has those commands to easily narrow to a subtree... I think it's even part of the default speed command so you can trigger it right from a heading. But it's great for that kind of restriction.22:58 There's even an internal Slack channel about Emacs at Ben's companySacha: Okay, so the reason why I was asking about that is because some people are working with people who are not using Emacs, so it's very interesting to see what the kinds of... It's very rare for people to work with other people who actually use... Are there any other Emacs people in your company, for example? Ben: There's an entire Emacs Slack topic about that, yeah. It's kind of great. Sacha: What is that like to have co-workers who do Emacs? Because this is a rare experience. Ben: It's super cool. It's also neat to see the very, very different ways that people use it. But yeah, oftentimes people will talk about problems that they have with particular internal tools, and somebody's like, oh yeah, go check out this repo on GitLab that I published last week where I got sick of it and decided to solve that problem categorically. It's actually super cool. And some of the folks at... Generally, I tried not to mention my current employer at any point. Obviously, it's not secret. It's in the init file. But yeah, I don't tend to get into that deeply. But some of the other people who work at my company, they maintain venerable Emacs packages. So it's awesome to be able to go and talk with some of the folks who I've been working on the code that I've been using for a decade and we are now coworkers. It's lovely. Sacha: Oh, that's so nice. I'm glad you have that kind of little community in there. Ben: Yeah. Bunch of nerds. Sacha: So I suspect some people will be looking up your company after this. I think it's also mentioned in LinkedIn and sort of like, okay, let's see if there's any job openings. Ben: If it's mentioned on LinkedIn, that is somebody else. I haven't logged into LinkedIn in 15 years and I never will.24:50 Ben keeps Org capture templates as individual files and adapts them to different meeting flowsSacha: We do have a question from Shae. Shae is asking, how do you make a capture template to stay on agenda and record decisions? You got any tips for that? I'm guessing this is more of a human thing rather than an Org thing, but maybe you have some ideas on how you keep something on track. Ben: So I'll actually push back on the "It's a human thing rather than an Org thing". I strongly believe that one of the real values of Org Mode is that it's a very plastic system. Fundamentally, I think that it is a human system because it allows you to express exactly those kinds of trade-offs in a really, really fluid way. I love the personal information management that Palm Pilots provided, for example, but it was pretty restrictive. One of the things that I love about Org Mode is that if you find that a particular person has a particular conversation style, it's really easy to modify your Org Mode capture templates to be able to capture that particular flow that you have with that person. Or with a particular group of a recurring meeting, for example, that tends to flow in a particular way. Super easy to update the templates that I use to capture those particular meetings to make it easier to match the general conversation flow with the notes that I will be taking about it. Sacha: Wow, that sounds pretty sophisticated. Ben: Well, I mean, that's the thing. It's not sophisticated. It tracks the human process very easily. So it's really lightweight. So you don't have to have a lot of sophistication to make it very, very useful. You just have to have a feedback loop that you can tune every time with one or two minutes of effort. And that's one of the reasons why I depend on Magit mode so much is that it lets me track those things. But yeah, to answer Shae's question about how do I track those particular things. So if it's a meeting where one of my direct reports has a particular set of topics that we tend to investigate, like somebody who's concentrated on career growth. So we're talking about the areas in which we want to see development. I'll absolutely update the capture templates for that particular person to say, all right, here's what we talked about last time. Here are the things that were done between our last two conversations about how we move in that direction. Were they successful or not? Did it require a lot of effort? So was it something that more effort should be put into to be able to drive down the work over time, to be able to produce those results? But yeah, that goes into the templates and that goes into the cadence of conversations that we talked about in Capture. Sacha: So that's really interesting. You modify the capture templates with the notes that you want to have easily available the next time you chat with them. Ben: Exactly, yeah. Sacha: The capture templates are still defined as a setq somewhere in your thing, or are you going into the customized interface? Ben: So I actually keep the capture mode templates as raw files that are referred to, and that makes it easier to version them in a way that like, I mean, sure, like my Emacs init file, if you look at the Git history of it, it has a whole bunch of different... Sacha: I had not considered having capture templates as files files. It worked out really well. Ben: So you can see that... It's a little bit hard to see with the font this small, but you can see that I've got a lot of changes to, for example, my init file, but keeping them in individual capture mode template files makes it a little bit easier to just look at the history of that particular file and see why particular changes were made. Sacha: I'm going to try that. I think that's a great idea because it allows you to be a lot more granular about the notes.28:45 Personal-scale software and the journeySacha: I saw in that very brief flash of your change log message that you like to write Fairly detailed commit messages that talk about why a change was made instead of just a new function, new command. Very terse updates that I sometimes just try to get away with. Tell us more about that because I think you've had a couple of toots about reading source code and reading commits. Ben: Yeah. So I guess One of the things that I most appreciate about software in general, and specifically personal software, like personal scale software that's been written by an amount of people that you could fit into a room to have a conversation about it. One of the things that I most appreciate about that is that almost all software written that way is fundamentally a diary about the way that a person learned how to solve a set of problems that they might not have known about when they decided to at the beginning. It's this fascinating process of Tracking somebody's voyage through the problem landscape as they discover other people who have touched on topics that are tangential to the problem being solved by that software package. It's such a personal and fascinating experience to see somebody go from, I know just enough about a problem to be able to decide that I want to build the machine that works on it, to I have this deeper understanding of how the problem actually exists in the broader set of things that people care about. ...oriented along the axis of what machinery can do to help solve parts of that problem. And like the commit logs for a program are like just this, it's like a map through that territory. It's wonderful to read, but it's also like... It gives you a lot of insight into the person doing the navigation. When you see 16 commits on December 24th of 2023, like, oh, okay, that person probably had a little bit of time to work on it. And then when you see a bunch of commits that are like 5 p.m. Monday to Friday, like, oh, okay, this is probably done in a particular way. But yeah, it's this deeply personal process of seeing how problems are learned about. And I just really appreciate that. Sacha: I think what you're saying about personal scale software and kind of getting a sense of people's journey as they learn to understand a problem and as they start to prototype a solution because you never quite come across the right solution the first time around. You're figuring things out. You're borrowing things from other people. I think that will resonate a lot with lots of people in the Emacs community because Emacs use is so personal as you mentioned when you were looking at the Slack channel. I was wondering, in your personal practice, as you figure things out, what kinds of things help you? Is it mostly a matter of actually sitting down and taking the time to write the literate programming stuff around the code blocks or the commit messages? Or are there other tools or techniques that help you do that? Are there tools or techniques that help me write down your journey along the way as you think about the code? What's your practice? For example, when you come across something that you want to figure out, how do you go about doing it? Ben: So it depends on how I'm approaching the project. So one of the neat things about software is that it's a document and a device at the same time. So you can care about it because of the thing that it does, or you can care about it because of the information that it captures. And if I'm digging into a program because it does a thing that I want to learn, then I'll pay attention to the device aspect of it. And that usually means that I'll start with its own documentation. So if it has a man page, I'll read that. If it has user docs, I'll read those. And usually I'll start keeping notes in an Org Mode file because it's easy to hyperlink back to it and add my own annotations in parallel to the actual authoritative source. If I'm reading software primarily as a document, then I'll start by reading the source code and the commit logs, usually the most recent ones, and then I'll jump back to the beginning of the project and read upwards at the beginning, and then fill in the blanks iteratively if it's a project that's small enough or has little enough history that I can do that. And again, I'll usually start an Org Mode file specific to that particular exploration that will let me organize my notes as I go. I really do rely on the external brain that I can keep in an Org Mode file. I tend to have a pretty decent long-term memory, but being able to bridge the gap between short-term memory and long-term memory is super, super useful. So leaving myself hints that let me dredge things back out of long-term. Reloaded into the hot cache of short term really, really helps out because that lets me maintain that flow state or get back into that flow state when you've got like the whole program, all the context that you've absorbed up until now and the ideas of like the areas that you want to investigate. Being able to hot reload all of that and then pick up where I left off is super useful. But the meat brain can't do it. I need the machine brain too.34:07 vc-git-grep for finding notes againSacha: Tell me about this dredging up process. Are you a lots of little files person? Are you a couple of large files? Are you a project file? There's an Org file in each project that you look up. How do you find things, especially if you don't remember the exact words? Ben: So it's usually like an Org Mode per category and they get consolidated. Let me shrink this down a little bit. So usually it's an Org Mode category per file. If there's something super specific, then usually it'll kind of live out in its own place until I get around to... I love that you have an Org File specifically for Mud Cake. But that's the thing. It'll live off in its own thing until it gets integrated into the list where the long-term stuff lives. So, for example, I promise this is pertinent to your actual question. Sacha: No, no, this is very pertinent. Ben: But so like usually lots of little files while I'm still working on something and then as that something becomes part of my larger life and has links to other things then it'll kind of get centralized into one of the Org Mode files that has a broader topic purpose basically. Sacha: Okay and then if you if it's like very long term and you can't remember the exact rates to find something how do you generally find find your notes? Ben: That way. Sacha: All right. You start graphing various keywords and try to find it. Ben: Yeah. So one of the things that I don't yet have turned on, and actually you inspired me to look into this, was so... Actually, do we have enough time? Yeah, okay. So I'm just looking at the clock. One of the things that I wanted to get into was long-term searching and searchability. Yeah. So I use SQLite's indexing for a lot of things, and I really appreciate its Porter stemming because it lets you search for stemmed words, which are kind of approximate matches, which is useful, but less useful than vector databases. And you actually put a little bit of work into indexing topics based on vector similarity. Sacha: Which I haven't gotten back to, so I'm glad to see, you know, you managed to experiment with it. See what you come up with. Ben: So I don't have anything to show yet, except that it's an interesting topic because... Because I'm word-oriented, I will often remember individual keywords or I'll have enough patience that I can sift through a list of potential keywords as I'm grepping for stuff. And if I find that my first three or four attempts at searching for a keyword don't find the topic that I'm looking for, once I do eventually dig up the topic, I will add those keywords that I was searching for just so I can find it next time, expecting that future me will probably behave more or less like current me. But yeah, like being able to use a vector database to search for headings that include related topics instead of related words. I'd really like to get there. I'm not there yet. And I think that's going to be interesting and useful. I also think it's going to be challenging to kind of represent Org modes. hierarchical structure to restrict the training of particular vector sets to be able to find like an increasingly or cast an increasingly wide net for where I want the searches to run. So I don't know how that's going to be solved yet, but I'm going to be looking into it.37:47 Keybindings and terminals; weztermSacha: Percopop has a question regarding terminal Emacs. Do you need to change any of the keybindings to avoid clashes with the terminal? You know, some keybindings don't work on terminals, or some terminals already have these keybindings set. Ben: Yeah, so I have good news and bad news there. The good news is that, so one of the terminals that I'm using right now on most of my systems is Westerm. It's really good. I started off with Alacrity and I kind of bounced off that project because of some of the behavior of the lead developers. I won't get too deep into it, but what I found is that Westerm It gives me very little friction that way. It doesn't have a lot of its own key bindings on its own, and that's a relief. It means that I really don't have to... I don't think I've had to put any time into customizing Western to get out of the way of Emacs or Screen. And I should mention, I am running Emacs within Screen. So that introduces another layer. Control-A-A, for example, is beginning of line for me, even though Control-A itself is the default Emacs keybinding. But yeah, I think that I ended up choosing terminal software specifically on that merit, so that it doesn't get in the way. That's actually one of the things that Termux is... The default Google keyboard keeps stealing key bindings. It'll update and all of a sudden I can't use a particular alt key combination anymore because now it invokes a Google keyboard shortcut for pulling things out of the Android clipboard, for example, which is really kind of annoying. But yeah, in terms of terminals on full-fledged machines, I generally don't have that particular problem. Except for... What was the name of it? It was... It was a zap-to on-the-screen package that alphapapa wrote, I believe, that I... Actually, let me just look it up. Yeah, Avy. Sacha: Oh yeah? Ben: So I wanted to start picking this up in 2021, and yeah, control colon doesn't work in terminals. So the mode itself is fantastic, and when I'm using it in a GUI Emacs, it's very useful, and I rarely use it now specifically because of that particular terminal problem. That is self-inflicted. That is not a problem with the package. That is a me problem. But yeah, I think this is the notable one that I bounced off of. Sacha: Yeah, just trying to find the right, you know, a key binding that will pass. Because you can't get used to key binding in one system and then not have it available in other systems. It's just going to mess with your brain. So yeah, Ray points out, yeah, Google steals Control Shift K, which he uses to kill tabs to the right. So it's like, oh. Ben: Infuriating. Sacha: Yeah, yeah. And of course, none of the standard keyboards have a super key on the thing, so you can't just tack on another modifier that'll get through. Ben: That's actually one of the reasons that I picked up this particular keyboard is Brian Carlson. Another Torontonian. He works on Git LFS and some other stuff. He was specifically looking for a keyboard that had a super key that he could remap. So four keys to the right of space, which this one has. And because it's ZMK, it's remappable. I think this might be suitable for his purpose, except that he wants a QMK keyboard, specifically because the development tools for QMK are packaged in W, and that's a plus for him. Anyhow, yes, I agree. Like, not having a super and a hyper key on a keyboard Sacha: feels like like one of your fingers that are cramped up we need more modifiers well I mean you know pipe organ Tell us about that. Ben: What is this? Oh yeah, foot pedals. Yeah, and I actually do have these wired into a little Atmel microcontroller running QMK. I honestly tried the foot pedal thing for a little while. It was hilarious. I did not find it useful. Sacha: I don't have the hand-eye-foot coordination to do that thing at the same time. Ben: Maybe if I had learned piano as a kid, it would have been good. But yeah, I don't seem to be able to do it. But I gave it the old college try and it was fun.42:38 Timers: tea-timer, tmrSacha: Okay, I had a couple of things I wanted to ask about in your config. You have two types of timers. You have tea-timer and you have Prot's TMR. Do you use them for different purposes? What's going on here? Ben: So I'm trying them out. I tried TTimer first because it was the first one that I found, and it was useful. I was actually using it in meetings because I would, when I was trying to keep us on topic, I would use that to remind us that, oh, we've got four other topics we need to get through. We're trying to give this one five minutes. We're running up on four. And it was just because it was super low overhead. It was easy to pick up. It was easy to have it displayed on my screen. And it didn't feel like I was... Running a chess timer on everyone. It's very subtle in the mode line. It was useful. But what I found was that when I was... Running multiple timers simultaneously. TMR, just the fact that you can list all the timers and manage them in a separate buffer. It's richer and I appreciated some of its documentation more. I haven't fully switched over to it yet. I'm still in exploratory mode. In fact, this is probably like... So I actually have a bunch more packages installed than I'm currently using. So I'm going to shrink this down a little bit just so that it doesn't line wrap.43:57 Different stages of package useBen: But yeah, so I've got, I think about 140 packages locally cloned. I've got, as you can see in my init, about half of that actually installed. There are various phases. I've got a clone, but I don't have it in my init. Or I have it in my init, but there's another package that offers similar functionality. Or I'm all-in on this particular choice and I'm removing the other ones. It's a gradual kind of progression. Sacha: Yeah, we're all auditioning packages to see if they fit in our workflow and all that stuff. I was curious also about your elfeed things. You have a few things related to elfeed. Actually, do you want to talk about the thing you just highlighted first? Ben: No, we'll get back to it in a sec. I'm keeping an eye on the clock. Sacha: But yeah, elfeed.44:47 ElfeedSacha: Yeah, you've got a couple of interesting things in your elfeed setup, including picking a search from a bookmark or other shortcuts like that. Ben: So I have discovered in my conversations with the new maintainers for elfeed that my elfeed habits are very deviant. So let me actually start off by going through... You can see that like the top of my elfeed list is kind of in one format and down at the bottom, the ones that are closer to present day are organized in a different way. Sacha: You've got tags now. Ben: So my feed list is, I mean, it started in Google Reader. It's kind of been forward ported since then. It's long. Sacha: I love the comments. Ben: But one of the consequences of having a long feed list is that I have an enormous elfeed database. And I use it for completely different purposes. So for example, I'm going to show off that little default search. I keep an eye on projects that have releases that aren't packaged by Debian, for example. So I've got this little ATS Mini. basically a small AM FM radio that happens to run on ESP32 and the firmware for this community developed and it's kind of interesting but like that's not packaged by Debian so I pay attention to or I subscribe to the release feed for that particular project. I do keep in keep an eye on the Linux kernel especially these days because The gallop of security vulnerabilities coming out of mythos analyses right now means that I have to pay more attention than usual to fresh updates. So generally I run Debian stable, but I do run kernels from backports and I want to know when those are available. MeshTastic. I was paying more attention to this a couple of weeks ago. I'm not going to reach that right now. But yeah, the local MeshTastic community in Toronto is plagued by a couple of griefers that make it a lot less fun. So I'm paying a bit less attention to that right now. But yeah, so like one of the bookmarks that I have is software currency. Another one is, for example, the YouTube channels that I subscribe to. Thank goodness for Elf YouTube. It is so nice to be able to get the transcripts for things directly in there. Sacha: There's even a sponsor block integration so you can skip all the promotions and stuff. Ben: Yeah, I mean, so again, my use of YouTube is also deviant in that I pretty much strictly subscribe to RSS feeds and they're downloaded onto the file server. So when a new recording comes out, it gets dropped there. I'll watch it. And then I've got a little widget that scans through my Kodi database for watched files. Once YouTube files show up in the watch list, they're automatically purged. And it means I just never see an ad. It's not just satisfying. I don't think that I would be able to pay attention if I was being constantly interrupted because of the way that my brain works. But yeah, so being able to quickly search for YouTube is one thing. I do have... articles that I've marked as spoilers for media that I haven't watched or read yet. Maybe I go to an extreme degree, but I'll try to avoid previews for new movies, for example. But I do want to actually go back to them later on. Marking articles as having spoilers that I want to revisit later on is an easy way of not having to worry about it anymore. And for a while, back in the days when I was paying more attention to... Enter the Dragon was the sequel to... What was that TV show? The George R.R. Martin seven seasons and it went badly off the rails in season six. Sacha: Game of Thrones. Ben: Thank you. So when I was watching that for a while, several of the sites that I was reading would have individual episode updates. And I really appreciated having a list of Elfie keywords that I could automatically apply those tags to. So I wouldn't even see the headlines because it was problematic enough. I've become less... Nice. Yeah, I've been putting less effort into maintaining that now, but the infrastructure is still there and I can lean on it if I need to. One of the things that I don't have set up right now is a quick search for the municipal topics that I cover. So I tend to subscribe to a lot of news because I found that, for example, it's interesting to see how the Toronto Star covers stuff differently from other local newspapers. And it's useful to be able to quickly pull up You know, the five or six publications that cover news in the same way and then look through the annotations for them or add the annotations myself so I can see that this particular story was covered by this journalist in this publication in this way and then it lets me cross-reference so that I can pay attention to Topics that are under-covered or publications that habitually leave out particular aspects of news stories. It lets me pay more attention to The trends of publications as well as to the stories that they're covering. But the consequence of that is that my LFE database is like four and a half gigs. And it's common for me, actually, I don't know if that actually shows. It's common for me to have like 65,000 articles in like the six month horizon for the default LFE searches. And that means that searches and redraws are expensive, even on a relatively performant machine. So you've probably seen some of the workarounds that I've got. And this little bookmark selector is one of those workarounds. So L feeds interactive search, super, super useful. But if you're trying to do it like this, actually, it's not so bad. Sacha: I love this. This is like, yeah. When you see someone using elfeed for like 65,000 items, you get a sense of what you can be used for when you're really stressing it. Ben: Yeah. Well, and the organization of the bookmarks that I have means that I do have like one just river of news of all of the things that I want to pay attention to. But like it's seven or eight like pretty divergent topics with not a lot of overlap. So it's neat to be able to Think of elfeed as the thing where news information comes in, but the individual bookmarks are the topics that are grouped together that I actually care about and want to read about in concert with each other. If I specifically narrow it down to just Emacs stuff, one of the things that I can easily do is I had a bookmark for that search and if I name it. So now that I've got that bookmark saved. Sacha: And then it's like bookmark annotation. right and like this is also it ends up in my dot file so as a git config as a as a git commit but53:13 Bookmark naming conventionsSacha: now that that bookmark exists simply because of the naming uh lfe search now it shows up in completion precisely this sort of stuff I I am under utilizing bookmarks I think but I like that I love this idea of using bookmarks with a naming convention and then writing Emacs list but take advantage of that naming convention to make that easy to jump to easy to use in other things Ben: Yeah, it means I don't really have, like, when I notice that there's a thing, I don't have, it diminishes the activation energy for building a new workflow. It means that I don't have to put a lot of thought into it. I can quickly do it. And if it turns out to not be useful, I can quickly get rid of it. Sacha: Very cool.53:50 elfeed-curate for annotationsSacha: I had one more thing that I wanted to ask you about elfeed that I want to squeeze in in the five minutes that I have before the kiddo comes out for lunch break. This elfeed curate that you're using, this is the first time I've come across it in the config. Are you sharing your notes or your selections with other people or just for yourself? Ben: No. So it's just for myself sometimes. So what I'm trying to replicate is back in Google Reader days, I really appreciated how when you added an annotation to an article that you were reading, By default, that annotation would be viewable by other people in your social graph. That was super interesting. Sometimes you could also add personal-only annotations. Actually, I don't think that's the keyword that it uses. I think it's just an. Sacha: Also, because you have an Emacs keyword on it, so I don't know whether you have any annotated Emacs ones. Ben: Yeah. Well, I mean, generally, if I've added an annotation, it will be. So, for example, here. Right? Super useful. Well, super useful for me, anyhow. If I find that there's an annotation that is more... This is inflammatory. It doesn't need to go out on the web. Sacha: Sorry, you need to kill the stream and have a 10-second video. Ben: No, it's all good. I'm not worried about sharing this, but it's not something I've posted. But what the nice thing is is that if it is something that I want to share, it's really, really easy to just drop this into master.mode. Sacha: Yeah, yeah. Huh. Very cool. Ben: Yeah, so that's one of the ways that I use it. And because the annotations are just Org Mode files, you can add links to other things and it becomes just as useful as anything else.55:46 mytoots archives Mastodon tootsSacha: And you're saying this can flow into Mastodon and from there, once you toot it, I think you're using, like, this is mytoots thing that you mentioned in your config also for archiving it? Or searching, yeah, okay. Oh, except it's currently not working. Ben: Yeah, I don't have it loaded right now. But yeah, so mytoots, it just loads the backup of your export archive. So it loads the... What's the most recent one? So yeah, it was your Outbox JSON file, which is the most recent one here. So I've got an Org Mode reminder to download it roughly quarterly. My Outbox is about 100 megs right now. And compared to, well, I mean, it's compared to 4.5 gigs for elfeed. It's not so big. I think... Oh yeah, that's not going to redraw properly. I was just going to show it like my resident Emacs memory size right now is about like five or six gigs. It's a little bit embarrassing. By comparison, 100 megs of JSON and RAM is not so bad, but like having an instant search for everything that you posted and being able to bounce back from your local archive to the conversation thread that's live and see anything new that comes in. Again, it lets me exercise that outboard brain kind of idea. So yeah, my toot's super useful.57:05 Mentoring offerSacha: I like it a lot. And then the last thing that I want to ask before, again, kiddo, because I have like two minutes, is that you have a mentoring offer pinned in your Mastodon, too. Have people taken you up on it, especially if they've taken you up on Emacs? Is that ongoing or forgotten about or whatever? Ben: Not forgotten about. Very much real. Still open. I haven't refreshed that offer recently, but it's still pinned for a reason. Yeah, I think maybe a dozen or so folks have asked for that. 9 or 10 success stories, I think. Nobody's asked for Emacs tutorialship yet. That's fine. Again, I love Emacs. I use it. I don't often recommend it. But if anybody was curious about that, I would be very open to the idea. Sacha: All right, so if people want to also develop a very interesting elfeed setup, they know who to talk to. Ben: Please, I would love that conversation. Sacha: Thank you so much. Yes, go ahead.58:02 A local instance of public-inbox can let you use Gnus to read mailing lists quicklyBen: Oh yeah, there's just one last thing I want to mention, and I realize we're right up against time. I use GNU for email, but I use GNU for reading mailing lists. I just wanted to just strongly recommend to anybody who is thinking about it, this is amazing. You gotta do this. Public inbox lets you keep a complete local archive of the entire mailing list. Searches are instant. Tracking threads is instant. Check it out. It's fantastic. Sacha: That's great because like Emacs develops like gazillion threads and how do you even keep track of all this stuff but if you've got news and you and if you've got this set up then you're no longer dependent on the good graces of Gmail being around as a kind of NNTP to mailing list gateway so uh so yeah uh John wants to know if you have YouTube like if you have a YouTube channel I'm guessing you don't yet but uh again I don't really like my face very much Ping Ben on Mastodon and ask about this mentoring thing and then share your notes so we can all learn from it. Thank you so much for today. I look forward to chatting with you more through toots. What is the verb, you know, in the 30-verse? All right. Thank you so much. All right. Bye. Okay, folks. I'll end the stream too. Bye. Thanks for hanging out.Chat
- sachactube: only slightly panicking behind the scenes 🙂 Nudged Ben by Mastodon in case we got our wires crossed
- sachactube: yay, he's here, just getting sound sorted
- symbiopoyesis: Good morning
- x_goose_x: hey gnomonnnnnn
- CharlieBaker707: yay! love the split keyboard. recently bought one myself. i was getting shoulder and neck pain from so many hours keeping by hands close together, but the split let's my shoulder's relax.
- ShaeErisson: How do you make a capture template to stay on-agenda and record decisions? Any tips?
- PuercoPop: Regarding terminal emacs, did they need to adapt any keybindings to avoid clashses with the terminal keybindings?
- AyanRaza-n1x: is that the creator of emacs?
- Ray-On-Emacs: Yes! Google steals C-S-k, which I use to kill tabs to the right on Vivaldi!
- CharlieBaker707: elfeed is like a distraction alleviation machine. I agree with Ben, I don't think I could consume any of this information outside of Emacs. Ads and even varying formats distract me too much.
- JonKishore11: do he have YT
- sachactube: Thanks for hanging out, everyone! =)
- gnomon027: Thanks so much for running this whole series, @sachactube !!
You can e-mail me at sacha@sachachua.com.
-
🔗 r/reverseengineering void-sniff: A lightweight x64 Native API syscall monitor with a custom inline hook engine and zero dependencies rss
submitted by /u/Shot_Bake_6665
[link] [comments] -
🔗 r/LocalLLaMA Me visiting this sub rss
| submitted by /u/Scutoidzz
[link] [comments]
---|--- -
🔗 Console.dev newsletter mq rss
Description: Query, filter, transform Markdown.
What we like: Extract content from Markdown, then apply transformations to the content. Works as both a CLI and a REPL environment. Options to convert other formats e.g. CSV into a Markdown table. Syntax is similar to jq. Has an MCP server for AI usage.
What we dislike: Nothing!
-
🔗 Console.dev newsletter Slumber rss
Description: Terminal HTTP client.
What we like: TUI and CLI for making REST and other HTTP client requests. Config-based recipes for building requests. Can import collections from other formats e.g. OpenAPI. Templates for dynamic requests. Also works as a Python package.
What we dislike: Only supports HTTP.
-
🔗 Ampcode News Agents, Everywhere rss
Amp has a new UI and sidebar, built for watching and driving all of your Amp agents, on web, mobile, and CLI.
We rebuilt Amp's foundation last month, so that your agents can run for longer, with less handholding needed. Amp is now a distributed system with durable execution for the agent loop and a plugin API.
Now, with this new foundation in place, we're pulling ourselves back above ground to shape how you use Amp to get the most out of these models.
We want you to be happy and productive running many Amp agents simultaneously on long-running tasks. You should be able to use the agent interface for most of your work. You shouldn't need to juggle terminal tabs.
Remote-controlling a single thread was the first step toward this, and now you can remote control all of your active threads in one place:
It's rolled out to everyone. To use it:
- Desktop web: sign into ampcode.com, or run
amp app. - Mobile web: sign into ampcode.com.
- Amp CLI: press Opt+S/Alt+S to show the sidebar with threads in your current directory.
The thread list for your team has also been redesigned and moved to Activity.
- Desktop web: sign into ampcode.com, or run
-
🔗 Ampcode News Opus 4.8 rss
Opus 4.8 now powers Amp's
smartmode, replacing Opus 4.7.It is a better coding agent than Opus 4.7: more faithful to the prompt, tighter in the changes it makes, and better at checking its own work. In our internal evals it solved 62% of tasks, up from 4.7's 52%.
Tighter Changes, Better Checks
Opus 4.7 was already strong on hard, multi-file work, and Opus 4.8 keeps that. What changes is how it gets there: with fewer wasted steps and more self-checking.
The clearest difference is restraint and verification.
Opus 4.7 can sometimes over-engineer, reaching for a more elaborate solution than the task needs. It also verifies its own work less, occasionally moving on even when a command's output is already warning that something is off.
Opus 4.8 makes a more focused change that solves the specific intended task, then checks itself. It leans on a tighter write→test loop, often spinning up a quick script, test, or skill to confirm the change works before proceeding. In our evals it ran tests and code 15% more per task than 4.7.
That restraint is easiest to see on hard tasks. On everyday work the two make a similar number of tool calls. The harder a task gets, the tighter 4.8 stays, just where 4.7 tends to run long and fail more often.
It Reaches for the Right Tool
Opus 4.8 is noticeably better at using its tools and sub-agents without being told to.
When a task needs outside context, it actually calls
librarianinstead of inferring a library's behavior from the local code. Across our eval it reached for it 14 times, versus once for Opus 4.7. It also reaches for a repo's skills more often to verify its work, for example by driving the browser or the CLI, rather than just assuming the change worked.When it edits, it leans on
edit_filefor surgical, in-place changes rather than rewriting whole files withcreate_file. In our evals 79% of its file edits go throughedit_file, up from 63% on Opus 4.7.Fewer Built-in Tools
We dropped the
Readtool fromsmart.Opus 4.8 is good enough at reading files straight from the shell with
cat,rg,sed, andnl. It parallelizes those reads when it needs several files at once.Fast Mode Is Worth It Now
Opus 4.8 has a fast mode at roughly 2.5× the speed. It now costs 2× base tokens, down from 6× on 4.7—3× cheaper.
Toggle fast mode for a thread from the CLI command palette (Ctrl+O) →
speed: use fast.How to Use It
Opus 4.8 stays close to what you ask, changes less to get there, and checks its own work. A few habits make it shine:
- Say how far to go. It keeps changes narrow, touching fewer files than 4.7 unless told otherwise. Name the scope when you want it wide: "Fix this for every input format, not just this one." Left unsaid, it changes exactly what you described, which is usually what you want.
- Give it something to verify against. It runs tests and code more readily than 4.7, so a test, repro command, or repo skill turns that instinct loose. A browser or CLI skill lets it actually exercise the change rather than infer correctness from the code.
-
- June 03, 2026
-
🔗 IDA Plugin Updates IDA Plugin Updates on 2026-06-03 rss
IDA Plugin Updates on 2026-06-03
Activity:
- capa
- 33701d67: Merge pull request #3090 from corkamig/rva_deprecation
- GTA2_RE
- ida-fast-mcp
- IDA-MCP
- ida-pro-mcp
- bbe35ff7: feat: enhance prefetch_context with AST structure resolution, struct …
- f4a3c722: feat: implement 4 advanced intelligence upgrades (CFG Hashing, Emulat…
- b9e36b37: Optimize SymbolDB schema init, cache PPAAEngine, support low-range RV…
- 2c3967a7: Implement host-side intelligence-driven Predictive Pointer & Address …
- a3a822a7: Generalize IDA_DIR fallback in test_live_ida_crystallize.py to scan s…
- 39f65af6: Add generalized E2E live IDA crystallization script
- e910a222: Fix PE bitness and processor inference in ArchProfile to prevent head…
- 2b564238: test: add AgentMacroCrystallizer performance benchmarks and integrate…
- ef2cba4e: feat: implement sequence mining and macro crystallization for intelli…
- 21c3cc70: test: add analogy engine performance benchmarks and fix legacy guard …
- 92b6cf28: perf: optimize CrossBinaryAnalogyEngine score order and helpers.dot_p…
- 3e1a70eb: feat: implement Phase 4 - Cross-Binary Analogy & Finding Transfer Engine
- 743dc1b5: docs: update generated session tool documentation to include suggest_…
- 30e35110: test: add functional and qualitative performance verification tests a…
- 58d7b0bf: test: add comprehensive unit tests and benchmarks for intelligence ph…
- 41c2c011: feat: implement Phase 3 active learning curiosity-driven nudge engine
- faa45cad: Phase 2: Implement Federated Policy merging of Q-value experience uti…
- plugin-ida
- PseudoForge
- quokka
- b4b6d16c: Merge pull request #104 from quarkslab/new_features
- Rikugan
- 7eb1f8b2: Merge pull request #55 from buzzer-re/dev
- dcd9d146: fix(ci): annotate Binary Ninja disassembly page
- b61595b4: fix(ci): format chat sidebar widget
- a6c31cf2: feat(agent): improve tool paging and data reads
- aa00ea64: fix(installer): detect Binary Ninja Python on Windows
- 1dfb2939: feat(ui): add chat sidebar and fix IDA theme compatibility
- 6c0417ea: fix(ci): align version metadata after merge
- 670f6946: Merge origin/main into dev
- c4fcb5ed: fix(agent): abort provider streams on cancel
- 00e04863: fix(installer): replace ida batch unicode symbols
- 63cf3277: fix(installer): sync plugin version metadata
- 57d90d48: Merge pull request #54 from buzzer-re/dev
- Vegvisir-harness
- 4780132a: Add structured subagent observability records
- b2082269: Enhance Solarium observations and selector hints
- 506ab607: Enhance Solarium observation safety and session evidence
- f07dde78: Optimize TUI transcript rendering
- 4f5657f7: Harden subagent executable resolution
- d06e0653: Expose subagent board control tools
- f901cd28: Add reasoning effort and fast mode controls
- capa
-
🔗 daaain/claude-code-log Release 1.4.0 release
Changed
- Fix sed
- Add MkDocs documentation site with live TUI reference (#197)
- Relax Textual constraint from
==to>=(#196) - Add
--versionflag to the CLI (#195) - Fix AskUserQuestion result rendering + highlight chosen options (#180) (#189)
- Derive render_session_id from the SessionTree, not a loop variable (#190)
- Fix collapsible body overlapping preceding content in tool cards (#153) (#187)
- Extract compute_session_data + compute_project_aggregates (C9b) (#188)
- Add C9a characterization tests for session-scan call sites (#186)
- Route converter summary + ai-title extraction through shared helpers (#185)
- status: Wave B fully merged; Wave C kickoff (C8/C9a/C9b stacked, C10 dropped, decisions locked)
- Compute branch preview once from the DAG-line (#184)
- status:#184 fully validated (CI 11/11, CodeRabbit clean) — ready to merge
- docs: keep simplification status note self-contained to project scope
- status: correct#184 state; move GitHub CI/CodeRabbit ops to github guideline
- status: reverse-order stacked-PR lift recipe CONFIRMED on#184
- Factor session-header construction out of _render_messages (#183)
- status:#183/#184 rebased + CodeRabbit forced (#183 clean, #184 2 doc fixes); record @coderabbitai + reverse-order workarounds
- Dedup requestId tokens in pagination cache-miss fallback (#182)
- status: Wave B track complete — opp 7 PR#184 up, all monk-approved; add merge sequence
- status: note stacked-PR CI/CodeRabbit defers to merge-time
- status: opp 1 green (#182, awaiting merge); opp 6 #183 in review; opp 7 in progress
- status: opp 1 - > PR #182 (in review); opp 6 in progress
- Add live-status section to simplification plan
- Add converter/renderer simplification plan
- Move detail-visibility predicate onto MessageContent (#181)
- Sync rendering-architecture.md §5 with the current pipeline (#178)
- Extract inline junction-forward-link block into a named pass (#177)
- Co-locate the away-summary detail rule on AwaySummaryMessage (#176)
- Remove vestigial progress-chain parent repair (#175)
- plugins: dev-docs gaps + public helper API + ToolResult example (Phase 2) (#173)
- Implement unified plugin system from RFC#166 (#169)
- Render Read tool results with pygments via structured payload (closes#170) (#172)
- work/: triage against shipped main (#171)
- Always regenerate projects index so variant-flag toggles refresh links (#168)
- RFC: plugin system (unified message-transformer mechanism) (#166)
- Per-message timestamps in Markdown output (#160) (#165)
- Support non-GitHub forges via static map +
--git-linkfallback (#156) (#164) - Obsidian-friendly output: --output dir + --expand-paths + --filter-path (#151) (#155)
- Linkify commit SHAs in rendered Markdown + HTML — closes#156 (#161)
- CSS clean-ups (issue#153) (#163)
- Cross-link TaskOutput / TaskUpdate headers back to their spawn (#154) (#158)
Full Changelog :
1.3.0...1.4.0 -
🔗 r/LocalLLaMA New Google Gemma 4 12B Claims Near-26B Performance - We Tested Both! rss
| We ran both models locally on one RTX 4090 and gave each the same task: write a self-contained HTML5 canvas animation with real physics in one file without libraries. Three scenes - a Galton board, two blocks colliding off a wall, and a chaotic triple pendulum Outputs:
Gemma 4 26B-A4B: 15 GB VRAM usage, 6.9k tokens, 138 tok/s
Gemma 4 12B: 9 GB VRAM usage, 8.9k tokens, 80 tok/s Same Gemma 4 family, but the 26B-A4B won every scene and ran ~1.7x faster - on just 4B active params. The 12B stayed very close though, on almost half the VRAM - which makes it the ideal model for a 16 GB laptop. Open source local ai models app: atomic.chat (I’m founder, feel free to try and give any feedback) submitted by /u/gladkos
[link] [comments]
---|--- -
🔗 anthropics/claude-code v2.1.162 release
What's changed
claude agents --jsonnow includeswaitingForshowing what a waiting session is blocked on (e.g. permission prompt)--tools: explicitly listing Grep/Glob now provides the dedicated search tools on native builds with embedded search (previously these names were silently ignored)/effortnow confirms when your chosen level will persist as the default for new sessions- Clicking a slash command in the autocomplete menu now fills it into your prompt instead of running it immediately; press Enter to run
- Remote Control now shows as a persistent footer pill (with a link to the session) instead of a startup message
- Renamed Windsurf to Devin Desktop in the
/idemenu,/terminal-setup, and/scroll-speed, following the editor's rebrand - Fixed a silent startup hang when the config directory is read-only or unwritable — Claude Code now starts with in-memory config and surfaces startup errors instead of showing a blank screen
- Fixed WebFetch permission rules not being applied to built-in preapproved domains; explicit
WebFetch(domain:...)deny/ask/allow rules now take precedence over the preapproved-host auto-allow - Fixed Windows permission rules never matching when spelled with backslashes (
~\,\\server\share) or case-variant paths, and Read deny rules not hiding files from Glob/Grep results - Fixed an interrupt (Esc) sent at the very start of a turn being silently dropped in stream-json/SDK sessions, leaving the turn running with no "Interrupted" feedback
- Fixed API 400
no low surrogate in stringerrors for classifier side-queries and MCP server descriptions containing emoji near a truncation boundary - Fixed MCP per-server
timeoutconfig values below 1000 ms being floored to a 1-second watchdog that aborted every tool call; sub-1000 ms values are now ignored (falling back toMCP_TOOL_TIMEOUTor default), andclaude mcp getannotates them accordingly - Fixed the LSP tool's
workspaceSymboloperation returning no results; it now accepts aqueryparameter and passes it to the language server - Fixed
claude agentscutting live status text (tool args, replies, prompts, exec output) at 60–120 columns on wide terminals; the status detail now uses the full terminal width - Fixed
claude agentstruncating long session names at 40 columns; the name column now grows with terminal width - Fixed
claude agentsattach occasionally bouncing straight back to the session list on the first try after a background-service restart - Fixed
claude agentsCtrl+V image paste doing nothing in the dispatch input and the session reply box; pasting with no image now shows a hint - Fixed backgrounding a session with ← silently losing the conversation when the background service cannot start; the session stays in the list as a failed row you can wake with Enter
- Fixed replies from the agents view that fail to send being lost; they are now queued for delivery on the next session start
- Fixed cross-session messaging (
SendMessage) silently breaking whenCLAUDE_CODE_TMPDIRor$TMPDIRpoints at a deep directory - Fixed opening a running background session from
claude agentsstalling for 5 seconds before attaching - Quieter startup: notices group by severity, and session info and announcements share a single line per launch
- Startup warnings rewritten to be shorter and clearer, each with a concrete fix
- Launch-prompt warnings (deep link/pre-filled prompt) now stay pinned below the input until you act instead of scrolling away
- Failed turns now show a compact warning line instead of a multi-line red error block
- Improved background service startup and
claude updateverification to wait out endpoint-security scanning of new binaries instead of failing after 5 seconds - Background dispatch spawn failures now report the error class name when no errno is available
- Removed the "Claude in Chrome enabled" and "marketplace installed" startup messages; model auto-updates and the team-onboarding tip now show as quiet notices under the logo
-
🔗 r/Harrogate Moving to Harrogate rss
Hey!
I’m currently looking at moving to Harrogate from Newcastle. I have a few friends in Harrogate and every time I visit, the place just feels extremely peaceful (which is the opposite of where I currently live - it honestly feels like two different worlds).
I’ve done some research and Harrogate seems very safe overall, but I was wondering if there are any areas that locals would recommend avoiding, or areas you’d particularly recommend?
A bit about me: I work in tech, teach yoga on the side, enjoy fitness, nature, cafes, walking, and generally prefer a quieter lifestyle over nightlife. One of the things that’s drawing me to Harrogate is the balance between a smaller town feel and still being well connected to Leeds and York.
I’m also curious about the wellness/fitness scene. Are there any yoga studios, gyms, run clubs, wellness communities, or other groups you’d recommend? I’d be looking to get involved and build a bit of a community if I move.
I’d also love to hear from anyone who moved to Harrogate from a larger city. How did you find it? Any unexpected pros or cons?
Thank you!
submitted by /u/Technical_Bet_1575
[link] [comments] -
🔗 r/reverseengineering Automated Fault Injection Attack Framework rss
submitted by /u/SkrilHexNukehul
[link] [comments] -
🔗 r/LocalLLaMA More Gemma 4 models incoming rss
| https://x.com/i/status/2062237998415069224 possibly the 120B model submitted by /u/Deep-Vermicelli-4591
[link] [comments]
---|--- -
🔗 r/reverseengineering x86 assembly: Why you only need Paris to beat Pizza Tycoon (1994) rss
submitted by /u/Optdev
[link] [comments] -
🔗 Jeremy Fielding (YouTube) How To Get Almost Any Part for Free Or Very Cheap 8 Resources You Probably Don't Know exist rss
If you want to join my community of makers and Tinkers consider getting a YouTube membership 👉 https://www.youtube.com/@JeremyFieldingSr/join
If you want to chip in a few bucks to support these projects and teaching videos, please visit my Patreon page or Buy Me a Coffee. 👉 https://www.patreon.com/jeremyfieldingsr 👉 https://www.buymeacoffee.com/jeremyfielding
Social media, websites, and other channel
Instagram https://www.instagram.com/jeremy_fielding/?hl=en Twitter 👉https://twitter.com/jeremy_fielding TikTok 👉https://www.tiktok.com/@jeremy_fielding0 LinkedIn 👉https://www.linkedin.com/in/jeremy-fielding-749b55250/ My websites 👉 https://www.jeremyfielding.com 👉https://www.fatherhoodengineered.com My other channel Fatherhood engineered channel 👉 https://www.youtube.com/channel/UC_jX1r7deAcCJ_fTtM9x8ZA
Notes:
Technical corrections
Nothing yet
-
🔗 r/LocalLLaMA Introducing Gemma 4 12B: a unified, encoder-free multimodal model rss
| submitted by /u/johnnyApplePRNG
[link] [comments]
---|--- -
🔗 r/reverseengineering Wow64 implementation details: How is Wow64 implemented in Windows 11 25H2 rss
submitted by /u/_WinAsm
[link] [comments] -
🔗 r/LocalLLaMA google/gemma-4-12B · Hugging Face rss
| Gemma is a family of open models built by Google DeepMind. Gemma 4 models are multimodal, handling text and image input (with audio supported on E2B, E4B, and 12B) and generating text output. This release includes open-weights models in both pre-trained and instruction-tuned variants. Gemma 4 features a context window of up to 256K tokens and maintains multilingual support in over 140 languages. Featuring both Dense and Mixture-of-Experts (MoE) architectures, Gemma 4 is well-suited for tasks like text generation, coding, and reasoning. The models are available in five distinct sizes: E2B , E4B , 12B , 26B A4B , and 31B. Their diverse sizes make them deployable in environments ranging from high-end phones to laptops and servers, democratizing access to state-of-the-art AI. Gemma 4 introduces key capability and architectural advancements :- Reasoning – All models in the family are designed as highly capable reasoners, with configurable thinking modes.
- Extended Multimodalities – Processes Text, Image with variable aspect ratio and resolution support (all models), Video, and Audio (featured natively on the E2B, E4B, and 12B models).
- Diverse & Efficient Architectures – Offers Dense and Mixture-of-Experts (MoE) variants of different sizes for scalable deployment.
- Optimized for On-Device – Smaller models are specifically designed for efficient local execution on laptops and mobile devices.
- Increased Context Window – The small models feature a 128K context window, while the medium models support 256K.
- Enhanced Coding & Agentic Capabilities – Achieves notable improvements in coding benchmarks alongside native function-calling support, powering highly capable autonomous agents.
- Native System Prompt Support – Gemma 4 introduces native support for the
systemrole, enabling more structured and controllable conversations.
https://developers.googleblog.com/gemma-4-12b-the-developer-guide/ feed your potato!!! https://huggingface.co/ggml-org/gemma-4-12b-it-GGUF https://huggingface.co/unsloth/gemma-4-12b-it-GGUF submitted by /u/jacek2023
[link] [comments]
---|--- -
🔗 Confessions of a Code Addict Why Git Has a Variable Named false_but_the_compiler_does_not_know_it rss
Today, in weird C code tricks, I want to show you a small example from Git's source code.
Recently, I was poking around the Git source when a directory name caught my eye, it was named "compiler- tricks". I thought, "This is a promising name, let's see what's inside of it".
Inside this directory, there was a file called not- constant.c, and the whole file contained just this:
#include <git-compat-util.h> int false_but_the_compiler_does_not_know_it_ = 0;The variable name made me curious. Why would Git need a global variable whose name says that the value is false, but the compiler does not know it?
To understand this, let's first look at where this variable is used.
It is used inside a macro called
NOT_CONSTANTin git-compat- util.h:/* * Prevent an overly clever compiler from optimizing an expression * out, triggering a false positive when building with the * -Wunreachable-code option. false_but_the_compiler_does_not_know_it_ * is defined in a compilation unit separate from where the macro is * used, initialized to 0, and never modified. */ #define NOT_CONSTANT(expr) ((expr) || false_but_the_compiler_does_not_know_it_) extern int false_but_the_compiler_does_not_know_it_;The macro takes an expression and performs a logical OR with this global variable:
(expr) || false_but_the_compiler_does_not_know_it_Now, the global variable is initialized to
0, and Git never modifies it (I checked the entire Git codebase). So, logically, this expression is equivalent to:(expr) || 0which is simply:
exprSo, why write the code this way?
The variable
false_but_the_compiler_does_not_know_it_is not declared asconst. It also has external linkage and is defined in a different translation unit from the code that uses it. As a result, while compiling a file that usesNOT_CONSTANT, the compiler cannot prove that the value of this variable will always remain0.In practice, it is always
0. But from the compiler's point of view, someone else could modify it.This is the whole trick. Git creates a value that is false at runtime, but not obviously false to the compiler. At this point, you might be wondering: what is the point of this trickery? To answer that, we need to look at where this macro is actually used.
Paid subscribers help me justify spending time on these strange little code rabbit holes. If you enjoy this kind of systems writing, consider upgrading.
Tripo AI Raises Nearly $200M to Advance AI 3D and World Models
(Sponsored)
Tripo AI builds AI 3D foundation models for high-demand 3D workflows across interior design, e-commerce, gaming, film, VR/AR, digital twins, robotics, and interactive entertainment.
Used by more than 20 million users worldwide, Tripo AI helps creators, developers, and studios turn ideas into high-quality 3D assets faster, from product visualization and home design to game-ready assets and simulation workflows.
Following nearly $200 million in Series A+ and A++ financing, Tripo AI is accelerating its research roadmap, product development, and global creator ecosystem. Its new research initiative, Project Eden, explores how AI 3D can move beyond single-asset generation toward persistent, editable, reusable, multi-agent interactive worlds.
With Tripo AI, you can explore:
-
AI-generated 3D assets and production-ready meshes
-
Native 8K AI textures
-
Intelligent part segmentation for editable 3D workflows
-
Project Eden, Tripo AI's world model research initiative
Start creating with Tripo AI ->
Where Git Uses This Trick
So, the question is, where does Git use this macro? One of the interesting uses appears in refs/files- backend.c. Git has code that tries to create a symbolic ref using a symlink. If that succeeds, it continues to the next update. If it fails, it falls back to creating a regular symbolic ref.
The code looks like this:
/* * By using the `NOT_CONSTANT()` trick, we can avoid * errors by `clang`'s `-Wunreachable` logic that would * report that the `continue` statement is not reachable * when `NO_SYMLINK_HEAD` is `#define`d. */ if (NOT_CONSTANT(!create_ref_symlink(lock, update->new_target))) continue;To understand why this is needed, we need to look at how
create_ref_symlinkis defined.Depending on the build configuration, it can either be a real function:
static int create_ref_symlink(struct ref_lock *lock, const char *target) { /* ... */ }Or, it can be compiled away into a constant expression:
#if defined(NO_SYMLINK_HEAD) || defined(WITH_BREAKING_CHANGES) #define create_ref_symlink(a, b) (-1) #endifSo, when
NO_SYMLINK_HEADis defined, this expression:!create_ref_symlink(lock, update->new_target)effectively becomes:
!(-1)In C,
-1is treated as true. Therefore,!(-1)is false. So, the compiler sees something like this:if (0) continue;This causes the Compiler (clang in this case) to raise a warning that the
continuestatement is unreachable.But the problem is that this is only true for one build configuration. On other platforms, where
NO_SYMLINK_HEADis not defined,create_ref_symlinkis a real function and thecontinuestatement is reachable.Git wants to keep the same source-level control flow across these configurations. So it wraps the condition in
NOT_CONSTANT, so that the compiler sees something like this:if (!(-1) || false_but_the_compiler_does_not_know_it_) continue;At runtime, this still evaluates to false because
false_but_the_compiler_does_not_know_it_is0.But at compile time, the compiler cannot prove that the condition is always false. As a result, it doesn't emit the unreachable-code warning.
Why Git Added This Macro
While that explained what this code does and where it is used, I was also interested in looking at the commit history behind it to udnerstand the original motivation.
The
NOT_CONSTANTmacro was added in commit 82e79c63642c by Junio C Hamano (the maintainer of Git) in March 2025. The motivation was Git's experiment with Clang's-Wunreachable-codewarning.This warning can be useful because it can catch genuinely unreachable code. But it can also produce false positives when the same source code is compiled across different platforms and build configurations.
The original case was not the symbolic ref code. It was in run- command.c, around sigfillset().
POSIX says that
sigfillset()can fail, so Git wants to check its return value. But on some platforms, the system headers make it obvious to the compiler thatsigfillset()always succeeds. In such builds, Clang sees the error handling branch and concludes that it is unreachable.One option would be to disable
-Wunreachable-code, but that would also disable the useful warnings. Git's approach was to keep the warning enabled and add a small escape hatch for cases where the warning is known to be a false positive.The later refs change used the same escape hatch. In commit 3860985105a, Johannes Schindelin added
NOT_CONSTANTaround thecreate_ref_symlinkcondition because Clang was complaining inNO_SYMLINK_HEADbuilds.So, this macro is a warning-management trick. It tells the compiler: this expression may look constant in this build, but please do not treat it as a compile-time constant.
Could This Be Done Differently?
But this problem is not unique to Git, many projects face similar problems and solve them in different ways. The following are a few alternate solutions.
The most direct option is to directly wrap the call to
create_ref_symlinkusing conditional preprocessor directives so that it compiles only on platforms whereNO_SYMLINK_HEADis not defined.#ifndef NO_SYMLINK_HEAD if (!create_ref_symlink(lock, update->new_target)) continue; #endifThis would remove the unreachable code in
NO_SYMLINK_HEADbuilds. But it also spreads build-configuration logic into the middle of the control flow.Another option is to disable the warning locally:
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunreachable-code" if (!create_ref_symlink(lock, update->new_target)) continue; #pragma clang diagnostic popBut this is compiler-specific and noisy. It also does not explain the real issue to anyone reading the code.
You could also use volatile:
static volatile int not_constant_zero; if ((expr) || not_constant_zero) ...This would also prevent the compiler from treating the value as a normal constant. But
volatilehas a stronger meaning. It tells the compiler that every read of the variable must really happen because the value may change outside the compiler's normal model. That is useful for things like memory- mapped I/O, but it is too strong for this case.The approach used by Git is much more precise. It uses an ordinary external variable defined in a separate translation unit. This is enough to hide the value from the compiler during normal compilation, without introducing volatile semantics.
You could also use a function:
int false_but_the_compiler_does_not_know_it(void); if ((expr) || false_but_the_compiler_does_not_know_it()) ...But then you may introduce an extra function call in the generated code unless the compiler or linker can optimize it away.
So, the global variable trick is not the only way to do this. But it gives Git a small, reusable annotation for a very specific situation that they can apply anywhere this problem surfaces.
If you are enjoying this article, you may also like my virtual memory article/ebook. It explains virtual memory from first principles and builds up to the details programmers usually hear about but rarely understand deeply: page tables, page faults, TLB shootdowns, NUMA placement, and more.
Check out Virtual Memory Article
Does the Linker Remove This Branch?
This brings us to another interesting question.
While this trick fools the compiler into believing that the branch may evaluate to true at runtime, in reality, we know that on
NO_SYMLINK_HEADbuilds, the branch is always false. So, the question is will link-time optimization (LTO) eliminate the branch from the final binary?To check this, I wrote a small reproducer with three files, similar to how Git structures this code.
First, let's see the file that uses the variable:
extern int false_but_the_compiler_does_not_know_it_; extern int slow_path(void); int branch_test(void) { if (0 || false_but_the_compiler_does_not_know_it_) return slow_path(); return 0; }Then, the file that defines the variable:
int false_but_the_compiler_does_not_know_it_ = 0;And finally, a small
main:int branch_test(void); int slow_path(void) { return 42; } int main(void) { return branch_test(); }To make this visible, I used a small reproducer where the branch calls
slow_path(). This makes the branch easy to spot in the generated assembly if it survives optimization. I compiled it with Clang 18 using normal optimization and warning flags enabled:clang-18 -O2 -Wall -Wextra -Wunreachable-code -c branch.c -o branch.o clang-18 -O2 -Wall -Wextra -Wunreachable-code -c main.c -o main.o clang-18 -O2 -Wall -Wextra -Wunreachable-code -c not_constant.c -o not_constant.o clang-18 -O2 -Wall -Wextra -Wunreachable-code \ branch.o main.o not_constant.o -o normalThen I used
objdumpto inspect the final executable.objdump -ddisassembles the binary, which lets us see the actual machine instructions that survived compilation and linking:objdump -d normalThe final binary still contains the load and the branch. The following is a cleaned-up version of the output produced by objdump to focus on the interesting bits.
lea false_but_the_compiler_does_not_know_it_(%rip), %rax cmpl $0x0, (%rax) jne slow_path xor %eax, %eax retLet's break this down instruction by instruction:
lea false_but_the_compiler_does_not_know_it_(%rip), %raxThis computes the address of the global variable and stores it in the
raxregister.cmpl $0x0, (%rax)This compares the value stored at that address with zero.
jne slow_pathIf the value is not zero, execution jumps to
slow_path.xor %eax, %eax retOtherwise, the function returns
0.So, we can see that with normal compilation and linking, the branch is still present in the final binary. The ordinary linker does not reason about the value of this global variable and doesn't remove the branch.
PS: If you are interested in learning x86 assembly, I have a series in progress that teaches it. Check it out at the link below:
Check out the x86 assembly series
But then I tried the same experiment with link-time optimization:
clang-18 -O2 -Wall -Wextra -Wunreachable-code -flto \ branch.c main.c not_constant.c -o lto objdump -d ltoWith LTO enabled, the branch disappears. The final
mainsimply becomes:<main>: xor %eax, %eax retSo what changed?
Normally, the compiler optimizes each translation unit separately. When it compiles
branch.c, it only sees this declaration:extern int false_but_the_compiler_does_not_know_it_;It does not see the definition in
not_constant.c, so it cannot know that the value is always0.With link-time optimization, the compiler keeps an intermediate representation of the code and performs optimization after seeing all the translation units together. At that point, it can see both the use of the variable and its definition. It can also see that nothing modifies it. As a result, it can prove that the condition is always false and safely remove the branch.
That gives Git the best of both worlds. The trick prevents Clang from producing an unreachable-code warning during normal compilation. Later, if LTO is enabled, the compiler can still remove the useless branch from the final binary. In effect, this is similar to the conditional-compilation solution we discussed earlier, but without muddying the code with
#ifndefdirectives all over the place.
If you enjoyed this, you 'll probably enjoy the rest of the newsletter. I write about Python internals, compilers, assembly, operating systems, and performance engineering, helping you build the kind of low-level intuition that makes you a better programmer. Paid subscriptions help keep this work going.
-
-
🔗 r/reverseengineering Hacking your PC using your speaker without ever touching it rss
submitted by /u/nns_ee
[link] [comments] -
🔗 r/LocalLLaMA Calling it now Microsoft is buying Unsloth. rss
I am going to be honest, I am leery of this new partnership with Unsloth. Microsoft historically hated open source, and this will not benefit the community in the end. It will look great at first. They will drop updates, play nice, and everyone will celebrate.
But if you have been around the block, you know exactly how this play ends. Microsoft spent decades aggressively trying to kill open source. A shiny PR campaign does not change corporate DNA.
Calling it now, Microsoft is going to buy Unsloth and go after llama.cpp next. They just want to control how we run models locally so they can force everyone back onto their paid cloud servers. They do not buy things to keep them free. They buy them to trap you in their ecosystem, so do not act surprised when they pull the rug.
Edit: I figured this would get some strong reactions, and I appreciate someone from Unsloth jumping in to say it is just a partnership. I am not trying to spread rumors, I am just calling it how I see it. Honestly, I hope I am wrong. I know Unsloth is a massive contributor to Hugging Face and a vital lifeline to open source, just like everyone else here who contributes.
Also, I know people are looking at my account name and recent posts thinking I am a bot. In my first post ever, I said this account was a throwaway. I am real, and I actually write my own stuff. I am not here to karma farm, I just genuinely care about the future of open source and speak my mind.
P.S. I miss the old days of Reddit, and I am trying to bring it back in my own way with open dialogue.
submitted by /u/Wrong_Mushroom_7350
[link] [comments] -
🔗 HexRaysSA/plugin-repository commits sync repo: +2 releases rss
sync repo: +2 releases ## New releases - [augur](https://github.com/0xdea/augur): 0.9.2 - [haruspex](https://github.com/0xdea/haruspex): 0.9.3
-
- June 02, 2026
-
🔗 IDA Plugin Updates IDA Plugin Updates on 2026-06-02 rss
IDA Plugin Updates on 2026-06-02
New Releases:
Activity:
- atelier
- augur
- 88610ef5: doc: update documentation
- capa
- 09f5bd5a: Version number for deprecation
- claude-marketplace
- GTA2_RE
- 8ae65fce: upd
- ida-domain
- 9142ada4: Fix microcode dump test for new version of IDA (#82)
- ida-lifter
- b62811db: fix: Resolve INTERR 50920 for narrow memory loads and enforce coverage
- ida-pro-mcp
- 6b5fe60f: fix(installer): skip IDA lookup for client-only installs
- d794f768: docs(search): regenerate combinator tool docs
- 8b585d5e: fix(search): allow hunt recipe listing in live MCP
- f8772866: feat(installer): support coexisting IDA 9.2 and 9.3
- 6c954d82: fix(search): make all 8 combinator actions work end-to-end against re…
- d8158f85: feat(search): add 8 combinator actions (bool, hunt, neighborhood, out…
- 43880ccb: fix(ci): address CI-only test failures
- 7b37a597: docs: regenerate tool skills to match current schemas
- 8b471b74: fix(installer): preserve user config on JSONC/JSON5/malformed input
- b83b741d: fix(tests): resolve all remaining 44 pre-existing test failures
- 6ed292f1: fix(tests): ack policy and init bookmark_mgr in test_bugfixes
- 639c5881: dedupe(phase5): audited, no actionable dead-code targets
- 11d40768: dedupe(phase4): audited, no actionable targets
- 5a3b28f1: dedupe(phase3): cross-reference notes for intentional action overlap
- 7a2e4d25: dedupe(phase2b): finish remaining cross-file helper consolidation
- 6ce721de: dedupe(phase2): cross-file helper consolidation
- idac
- NyLib2
- f5bc8c2d: Add Win32 font matching and auto-install
- PseudoForge
- quokka
- 47d3384e: Merge pull request #116 from quarkslab/dependabot/github_actions/acti…
- rhabdomancer
- 195a0880: feat: add
syscallandioctlto the list of insecure functions
- 195a0880: feat: add
- Vegvisir-harness
- c49f0fe5: Enhance Agent Red template
- 551f6818: Document manual-only vendored component updates
- 9d8c3777: Install Solarium wrapper
- ccf7141d: Install binary intelligence workbench wrapper
- d17b3fec: Import binary intelligence workbench component
- d1926d38: Make subagent active limit configurable
- af1037e9: Update runtime feature documentation
- d5d2a418: Restore unlimited tool round default
- b8faa181: Preserve tool policy across rebuilds
- d807293b: Harden command and file sandboxing
-
🔗 Evan Schwartz Scour - May Update rss
Hi friends,
In May, Scour scoured 865,266 posts from 28,671 feeds (1,766 of which were newly added), and 260 new users signed up to bring it across the 3,000 user mark!
Here's what's new in the product:
🔎 Smarter Interest Matching
Scour is now better at finding posts that match your interests. You should see more relevant content and far fewer off-topic articles in your feed. (This sounds simple, but it represents at least a full month's effort 😅.)
The way this works under the hood was one of the single biggest changes I've made to Scour's core ranking system since I started working on it. At a high level, scoring now combines Scour's original fuzzy concept matching (embedding vector distance) with how much the article uses relevant vocabulary (lexical search). While these ingredients are well-established, I think the exact way Scour implements them might be a somewhat novel system design.
The reason this was so complex to build was that existing approaches to lexical search did not work for Scour. For example, every Scour user has between a handful and hundreds of interests (I have 642), each of which might have 3-10+ relevant keywords. This means that every "search" is actually a search for thousands of terms (for my feed, it's around 5,000). Most search systems are built for individual queries with a handful of terms. The even more tricky issue is that lexical search algorithms like BM25 do not produce scores that are comparable across queries, because they are designed for ranking (ordering results for a specific query), not scoring. Scour, however, needs to know which of your interests a given post is most related to and it sorts the posts in your feed by how relevant they are for any of your interests. I believe that the custom scoring and indexing system Scour now uses provides both cross-query score comparability and efficient lookup for thousands of parallel queries. Stay tuned for more details!
🙏 Help me out! Please like, dislike, and report posts as off-topic as you're browsing. These signals help me tune the system and figure out the edge cases where it could be improved.
🔠 Better Title Keyword Bolding
Scour bolds keywords in the post titles to make the feed easier to skim. The new lexical scoring layer discussed above makes it easier to bold exactly the words related to your interest.
📃 Peeking Under the Hood
Two other small changes let you peek under the hood of the new scoring system. On desktop, hovering over a post's title will show you the score breakdown between semantic and lexical. Separately, if you click on an interest tag and go to the single-interest page, there is now an Advanced link that will show you the terms the lexical scoring system is using to find and rank posts.
🔖 Some of My Favorite Posts
Here were some of my favorite posts that I found on Scour in May (you can tell from the topic concentration where my mind has been!):
- Latent Terms: Dense Retrievers Contain Trivially Extractable BM25-ready Zipfian Vocabularies
- Rethinking Agentic Search with Pi-Serini: Is Lexical Retrieval Sufficient?
- Re-autoresearching MSMARCO BM25, on Vespa
- How we made a SQL query optimization agent 59% more accurate using autoresearch and LLM Observability
- Your Vector Database Doesn't Know What Similar Means
- My Plan with RSS
- Agentic Coding is a Trap
Happy Scouring!
- Evan
-
🔗 anthropics/claude-code v2.1.161 release
What's changed
OTEL_RESOURCE_ATTRIBUTESvalues are now included as labels on metric datapoints, so you can slice usage metrics by custom dimensions like team or repoclaude agentsrows now showdone/totalbefore the detail when work is fanned out; peek shows the longest-running item/mcpnow collapses claude.ai connectors you've never signed in to behind a "Show unused connectors" row- Parallel tool calls: a failed Bash command no longer cancels other calls in the same batch — each tool returns its own result independently
- Fullscreen mode: clipboard now uses
wl-copy/xclip/xselon Linux when available, copies to both the clipboard and PRIMARY selection for middle-click paste, and the "hold {key} for native selection" hint now shows the correct key per terminal - Fixed the
/effortdialog, workflow animations, and prompt keyword shimmer not honoring the "Reduce motion" setting - Fixed
forceLoginOrgUUID/forceLoginMethodmanaged-settings policies blocking third-party provider sessions (Bedrock, Vertex, Foundry, Mantle) alongside the org pin (regression in 2.1.146) - Fixed background subagent output corrupting
claude -pstdout when using--output-format textorjson - Fixed
/usage-creditsstarting a re-login for Team and Enterprise admins instead of pointing to the organization's usage settings page - Fixed
/autofix-prreporting "cannot run on the default branch" when the session is inside a git worktree or another repository - Fixed
--resumepicker not showing sessions from the current directory when it isn't a git worktree (e.g., jj workspaces) - Fixed Windows hooks that invoke bash explicitly (e.g.,
/usr/bin/bash script.sh) failing with "command not found" or "cannot execute binary file" - Fixed OpenTelemetry log events (
user_prompt,api_request,tool_result,tool_decision) being silently dropped when emitted before telemetry initialization completed - Fixed
claude mcplist/get/add printing secrets to the terminal:${VAR}references are no longer expanded, and credential headers and URL secrets are redacted - Fixed Workflow agents spawned with
isolation: "worktree"in background sessions being blocked from editing files inside their own worktree - Fixed background sessions dispatched from
claude agentsbooting on a stale model from the daemon's environment instead of the model insettings.json - Fixed a potential crash when rendering Write tool results after resuming a session
- Fixed completed subagents getting stuck showing as running when an error occurs while finalizing their result
- Fixed
EADDRINUSEerrors from tools that bind Unix sockets under$TMPDIRwhenCLAUDE_CODE_TMPDIRis set to a deep path - Improved terminal rendering performance by stabilizing the layout engine's JIT compilation profile
- Improved rendering performance for large file writes
- [VSCode] Added a tip suggesting disabling terminal GPU acceleration (or running
/terminal-setup) to fix garbled glyphs
-
🔗 sacha chua :: living an awesome life La semaine du 25 au 31 mai rss
lundi 25
Ma fille était un peu triste parce que j'avais mangé mon petit-déjeuner avant qu'elle ne se réveille. Elle m'a demandé si je pouvais l'attendre pour que nous puissions manger ensemble.
J'ai emmené ma fille chez l'oculariste pour polir sa prothèse oculaire. Après le rendez-vous, elle a voulu rentrer au lieu d'aller chez College Optical pour commander des lunettes de soleil correctrices.
Pour le déjeuner et en guise de récompense pour le rendez-vous chez l'oculariste, nous avons mangé des nouilles instantanées. Ma fille m'a donné l'autre moitié de son sachet d'épices aux fruits de mer. Nous les avons enrichies avec du gâteau au poisson et aux algues. Elle a découvert qu'elle n'aimait pas le mochi à la crème glacée, donc elle a eu de la crème glacée à la place.
Après l'école, elle n'a pas voulu aller au cours de gymnastique parce qu'elle était un peu fatiguée. Au lieu de cela, nous sommes allées au parc pour jouer avec une balle, une corde à sauter, un grand dé en mousse, et la pataugeoire là-bas.
Pour le dîner, ma fille a voulu du sushi au crabe comme au restaurant que nous avons essayé vendredi.
Mon mari, ma fille et moi avons joué au Scrabble. Maintenant ma fille peut trouver ses propres mots avec quelques indices. Nous avons joué juste pour le plaisir, donc nous n'avions pas compté les points. Pour notre premier jeu, elle a voulu échanger des tuiles avec mon mari et moi, donc nous le lui avons permis. Pour notre deuxième jeu, mon mari a dû aller faire autre chose, donc elle et moi avons joué. Elle a voulu inclure les noms Pokémon, donc nous nous sommes amusées en plaçant les mots comme « Ekans », « Abo » et « Jolteon » (l'anglais et le français sont également permis) même si les mots anglais normaux sont aussi possibles.
mardi 26
J'ai terminé la transcription de ma conversation avec Matei qui est anthropologue. Je la lui ai envoyée pour relecture avant de la publier.
Un des chats de notre voisinage m'a rendu visite, donc je lui ai donné un bol d'eau.
Ma fille et moi sommes allées au parc pour jouer seules. Nous avons joué avec la balle et à la pataugeoire.
J'ai appris que la prononciation du verbe « interviewer » en français a deux sons « v ». C'était intrigant.
mercredi 27
L'école a eu un remplaçant, donc elle a choisi de sécher les cours. Le matin, elle et moi avons travaillé sur ses devoirs dehors. Elle était de bonne humeur. L'après-midi, elle était un peu triste parce qu'elle attendait une réponse de son amie, et elle s'est blottie sur le canapé. Une fois qu'elle a finalement reçu une réponse, j'ai emmené ma fille au parc pour jouer avec ses amies. Elle s'est très amusée, donc j'ai eu vraiment du temps pour penser pendant qu'elle jouait.
J'ai finalement envoyé les factures pour le mois de mars et d'avril.
Ma mère est restée à la maison parce qu'elle avait fait une petite chute.
jeudi 28
J'ai discuté avec Protesilaos sur les recommandations sur Emacs pour divers utilisateurs.
Ma fille et moi avons joué au Scrabble sur le porche pendant la pause déjeuner. Nous avons aussi joué au Scrabble avec mon mari après le dîner. Nous avons commencé à compter les points, bien que nous ayons toujours joué en coopération.
vendredi 29
J'ai interviewé Omar Antolin Camarena sur sa configuration et ses flux de travail sur Emacs. J'ai travaillé sur la publication des transcriptions vers le format PDF. J'ai ajouté la fonctionnalité d'exclure des sections par format selon les étiquettes.
J'ai pratiqué la prononciation française.
J'ai emmené ma fille à un cours de rattrapage de gymnastique aérienne.
samedi 30
Ma fille s'est amusée toute seule à faire des bulles et à jouer avec de la mousse à raser.
Ma fille a voulu des vêtements neufs et un jouet anti-stress, donc je l'ai emmenée dans différents magasins. Elle n'a pas aimé le Thinking Putty au début qu'elle a choisi parce qu'il a des paillettes. Nous sommes prudentes avec les paillettes pour éviter de gratter son œil si elle le frotte. Après avoir joué avec le Putty, elle a décidé qu'elle l'aime, et elle va simplement bien se laver les mains.
Pour explorer de nouvelles saveurs, nous avons mangé chez KFC.
Pendant qu'elle regardait des émissions, j'ai ajouté une commande à mon logiciel pour effacer des images incorrectes afin que j'en téléverse une nouvelle.
Nous avons joué à Donjons et Dragons ensemble pour nous exercer au rôle de meneuse de jeu. Mon roublard halfelin a vaincu un méphite, mais le mimique dans l'autre pièce était trop pour moi. Du côté de ma fille, elle a aidé Cornflower avec les devoirs de la ferme.
Mon mari et moi avons discuté des voyages. Même si voyager est bien recommandé pour se découvrir soi-même, il y a d'autres façons de le faire, donc il vaut mieux bien réfléchir. Pour le moment, je pense qu'il vaut mieux que j'aide ma fille à apprendre à apprécier ce qui est proche.
Ma fille a dit qu'elle a du cérumen, donc elle a utilisé de l'huile minérale pour le déloger. Ça a marché.
Après le dîner, j'ai fait les courses seule.
dimanche 31
Mon mari était trop frustré aujourd'hui, donc mon mari et ma fille étaient tous les deux grincheux. Je me demande ce qui se passe.
Quand même, pendant qu'ils se débrouillaient, j'ai travaillé sur les transcriptions de mes entretiens récents. J'ai aussi poussé des mises à jour de mon outil pour écrire le sous-titrage. J'ai oublié de vérifier mes changements avec les tests, mais heureusement, il y avait juste un bug et le bug était dans le test au lieu du code. J'ai aussi restauré les articles que j'ai accidentellement effacés. Ensuite, j'ai recherché des machines à coudre pour ma sœur et mes nièces qui habitent aux Pays-Bas, parce que leur ancienne machine était abîmée.
Ma fille s'est très amusée en jouant comme la meneuse de jeu dans un jeu de Donjons et Dragons avec sa tante. Elle veut être la meneuse de jeu pour un jeu avec ses tantes et ses cousines la semaine prochaine, donc sa tante lui a offert l'occasion de s'entraîner.
J'ai appelé ma mère. Elle m'a dit que ma tante lui demandait à plusieurs reprises si nous lui rendrions un jour visite. Eh ben, ma tante ne nous aidera pas à élever notre enfant si je suis malade, donc son opinion ne compte pas pour moi.
You can e-mail me at sacha@sachachua.com.
-
🔗 sacha chua :: living an awesome life La semaine du 18 au 24 mai rss
lundi 18
Je me suis réveillée très tôt pour interroger ma sœur qui est très malade d'un cancer. Nous voulons enregistrer des vidéos pour ses jeunes filles et son mari. Sa fille aînée a commencé à l'interviewer, mais bien sûr, il y a des sujets dont elles ne peuvent peut-être pas parler pour le moment. Je l'ai appelée sur Facebook Messenger et j'ai utilisé OBS pour enregistrer l'appel. J'ai un flux de travail pour corriger et formater la transcription, et je suis ravie de l'utiliser pour ma famille.
Il faisait très chaud. C'était notre première vague de chaleur intense cette année. J'ai emmené ma fille au parc Amos Waites pour jouer à la pataugeoire là-bas. Elle a vraiment aimé la robe-maillot que nous avons cousue. Elle adorait tourner dans le siège pivotant que notre parc à proximité n'a pas. Elle a tellement joué qu'elle s'est endormie sur le chemin du retour.
Après le dîner, ma fille et moi sommes allées à un autre parc pour regarder des feux d'artifice pour la fête de la Reine. Il y avait beaucoup de gens, donc je pense que c'était un rassemblement habituel pour les jours de fête où les feux d'artifice sont autorisés.
J'ai terminé la révision de la transcription de ma conversation avec Prot et Philip. Je pense que l'audio de Philip est parfois trop faible, mais je ne suis pas sûre de pouvoir normaliser juste ces segments. Si j'ai une conversation avec un autre locuteur, je peux enregistrer les flux audio séparément, mais dans une conversation entre trois locuteurs (Prot, Philip et moi), je ne peux pas complètement les séparer. En plus, je pense que je ne peux pas remplacer juste l'audio d'une vidéo en diffusion sur YouTube. Peut-être que je peux mettre en ligne une nouvelle vidéo et changer l'ancienne vidéo en une vidéo non répertoriée.
À l'heure du coucher, ma fille et moi avons parlé de la neurodivergence, des mathématiques, et des facteurs humains comme les limitations de la boucle auditive comparée à la visualisation. J'adore lui parler de son cerveau.
mardi 19
J'ai essayé de virer de l'argent aux Philippines via Wise. C'était réussi.
Je me suis entraînée aux virelangues. Oups, j'ai oublié de confirmer l'audio sur OBS, donc je ne peux pas l'analyser.
J'ai réécrit deux transcriptions pour les entretiens de ma sœur.
J'ai emmené ma fille au parc pour jouer avec ses amies. J'ai oublié les glaces à l'eau, donc je suis revenue à la maison pour les retrouver.
Nous avons pratiqué les permutations et la division posée.
mercredi 20
J'ai réécrit encore des transcriptions pour les entretiens de mes nièces avec ma sœur. J'ai configuré un serveur dans notre réseau pour les héberger avec l'authentification basique.
L'école avait un remplaçant aujourd'hui. Il a accidentellement éjecté tous les élèves de la salle de réunion virtuelle et tous ont dû attendre que l'enseignant corrige les permissions.
J'ai ajouté un gousset aux shorts de bain de ma fille.
J'ai emmené ma fille et son amie au parc pour jouer. Elles se sont amusées à me donner des décharges avec l'électricité statique. Après que les autres amies de ma fille sont arrivées, ma fille semblait un peu surstimulée. Elle est partie seule et elle était grincheuse pour le reste de la journée, pauvre chérie.
jeudi 21
J'ai discuté d'Emacs avec Raymond Zeitler sur une diffusion en direct. C'était la première fois que je lui parlais en vidéo même si nous correspondons depuis 18 ans via les commentaires sur mon blog.
Le dentiste a fait deux plombages. Il a proposé un plan de traitement, mais c'est cher, donc je veux bien y réfléchir avant de procéder. Je pense que je veux gagner en confiance avec ce dentiste d'abord. On dirait que la restauration précoce est mieux que d'attendre pour les dents cariées selon les recherches, donc c'est bon, mais on dirait aussi que d'autres dentistes recommandent d'autres niveaux de traitement. J'aime les précautions COVID que ce dentiste prend. Il y a d'autres dentistes (un peu loin) qui prennent aussi ce niveau de précautions, mais ils disent probablement la même recommandation (c'est la même recherche), donc je ne cherche pas particulièrement d'autre conseil. Je ne veux pas passer pour une vache à lait, tu sais?
vendredi 22
Je me suis réveillée tôt pour une conversation sur la communauté Emacs et l'IA avec Matei Candea, un anthropologue. Il pense à faire une étude ethnographique, et je pense que c'est potentiellement intéressant.
J'ai terminé la transcription de ma conversation avec Raymond Zeitler sur Emacs. J'ai remarqué que j'utilisais le mauvais horodatage pour publier les chapitres à partir de la transcription, donc j'ai corrigé l'erreur.
Ma fille n'a pas voulu participer à l'école parce qu'il y a eu un remplaçant, donc elle a fait une pause.
J'étais fatiguée, donc j'ai fait une sieste.
J'ai emmené ma fille au cours de rattrapage de gymnastique. Elle a pris plaisir à apprendre la gymnastique aérienne. Après le cours, ma fille a voulu aller au parc asperge (St. James Park) parce qu'il y a un grand toboggan. Elle s'est entraînée à descendre le toboggan à de nombreuses reprises. Après avoir fait ça, nous avons acheté du sushi. Elle a essayé la tempura de crevettes et elle l'a aimée.
samedi 23
Il a beaucoup plu et c'était très venteux, donc nous sommes restées à la maison au lieu d'aller à la célébration de printemps à la ferme Riverdale.
Ma fille et moi avons joué à Stardew Valley avec le mod Tileman Reworked, qui me demande d'acheter les tuiles auxquelles je veux accéder. J'aime parfois jouer à des jeux avec des limites comme Minecraft Skyblock parce que les limites focalisent l'attention et la progression est très différente. Ma fille préfère notre jeu précédent avec le mod Stardew Valley Expanded.
Pour le dîner, nous avons mangé du sotanghon, qui est une soupe aux nouilles et au poulet. Nous avons aussi essayé le taiyaki congelé. C'était pratique et acceptable, mais bien sûr le taiyaki chez Pat Mart est meilleur.
À l'heure du coucher, ma fille et moi avons discuté de la neurodivergence, de la double exceptionnalité, de l'apprentissage des élèves doués, de la différence entre la récupération d'information et de la synthèse. Nous avons aussi discuté de la faune, des maladies, des vaccins, et d'autres sujets.
dimanche 24
J'ai parlé avec mon mari du TDAH. Il pense que je suis juste préoccupée, et ce n'est pas grave. C'est bon. Je ne veux pas laisser ma vie être perturbée au point d'avoir des problèmes dans deux zones ou plus dans ma vie pour obtenir possiblement un diagnostic, ce qui ne m'aiderait probablement pas beaucoup plus. Quand même, je peux continuer d'explorer comment je peux m'adapter à mon cerveau et ma situation.
Ma fille et moi avons préparé du lait au sucre brun et aux perles boba faites à la main.
Mon mari, ma fille et moi sommes allés aux Stockyards pour faire des courses. Nous avons acheté une boîte de mangues, des perles boba, des haricots azuki, et d'autres aliments. Nous avons préparé une fournée de mochis aux haricots azuki.
J'ai recherché quelques dessins pour les transcriptions. Je pense que je veux inclure les noms des interlocuteurs dans la marge gauche et les horodatages dans la marge droite. Je veux aussi réécrire la transcription pour supprimer les mots de remplissage.
Pour le dîner, nous avons mangé du curry japonais.
Je me suis couchée tard parce que sur Stardew, j'ai finalement accédé à la caisse chez Pierre pour acheter des graines dans la troisième année. La progression est très lente. Heureusement, le mod HibernationRedux me permet de sauter le temps pendant que j'attendais la croissance des arbres.
You can e-mail me at sacha@sachachua.com.
-
🔗 r/reverseengineering Resident Evil: Code Veronica X is now able 3D graphics from the decompiled source! rss
submitted by /u/MrFroz1995
[link] [comments] -
🔗 r/LocalLLaMA Minimax M3 appears to have no political censorship rss
| I'm currently working on a chinese/CCP AI bias benchmark, and this has stood out as an outlier. All the other Minimax models are censored as is typical for chinese LLMs. submitted by /u/DingyAtoll
[link] [comments]
---|--- -
🔗 Register Spill Building Software Is Learning rss
A few weeks ago I shared the following as an internal message with the Amp team. I showed it to a friend while talking about feedback loops and he told me to post this publicly. So here we go. Unedited, straight up copy & pasted from our Slack.
You know what's rare?
person a: "we need this feature" person b: "yes, let me build it" ... person b: "done." person a: "fantastic, exactly what I wanted."That's basically NEVER what happens. At least not when you're building something new. It might happen when you fix a bug or when you port something that already exists in another app to a new language or framework, ... Or when you're building after a spec.
But when there's no spec, and when you're building something new?
Here's how that works:
person a: "we need this feature" person b: "yes, let me build it" [...] person b: "done." person a: "hmm, actually, that's not what I meant. what I meant is: [...]"Or this:
person a: "we need this feature" person b: "yes, let me build it" [...] person b: "you know what... There's 3 ways to do this, actually, and I'm not sure what the best way to do this is?" person a: "ah, I see, I think given that we want to ship this tomorrow, let's go with way 1"Or:
person a: "we need this feature" person b: "yes, let me build it" [...] person b: "done." person a: "Don't like it"Now why does that happen, again and again and again?
Because building new software is learning! If you're building something new and you don't yet fully know how exactly it's supposed to work, you will learn what exactly it is that you're building as you're doing it. Let me repeat: building new software is learning.
So far, so good, right? But here's the very important bit, the one bit I want you to take with you into this week: there is no way in hell , absolutely zero chance, that you can build something new and avoid bumping into "that's not what I meant", or "now that I'm working on it I'm not actually sure", or "hmm, now that I use it, I don't like it". Because the only way you could avoid that would be to fully specify what you want up front and, well, guess what programming is? It's fully specifying what you want. You can't avoid it, because you can't define it yet, because building software is learning!
Now that was the bad news. Here's the good ones. You can reduce the time the
...from the examples above takes -- the time between the confident "yes, let me build this" and the humbled "oh, I see".And that, in turns out, is the most important thing you can do when you're building something new: reducing the time it takes you to go from "let me try something" to getting your ass whooped by reality.
If someone says "we need this feature", don't go "yes, let me build it" and hack on something for 4 weeks only for the other person to ultimately go "that's not what I meant." No. Instead, embrace that we need to learn , that we need to try and play around with this idea as fast as possible, in a way that lets us learn. To embrace that idea means that you try to figure out "what is it they mean" as fast as possible , with the minimal effort required, so you can LEARN what it is you're building.
Instead of going away for 4 weeks and hacking on something, you instead can do stuff like this:
-
... build a prototype, in 1hr, and show it to them, and they go "no, that's not what I meant, you should change this part here"
-
... write down a spec of how you'd approach it, in 30min, and show it to them, and they go "no that's not what I meant"
-
... cut up the thing in multiple things and ship one every day, so that every day what you built hits reality and you get to learn, because on day 2 someone says "know what, we should change..."
-
... reduce the scope, figure out what the things are that we're already sure about and skip those, and instead focus on the bits that we don't know yet -- that's where we need to learn. don't add 5 ways to login, if all we need to learn right now is 1.
-
... fake a demo video, show that around, get input on that - Quinn's done it many times
-
... write the news post that explains the idea -- why waste effort building something for a week if the idea can be captured in 3 paragraphs?
-
... write the example code that would go into the README, show that around, does that look like a good API? People don't need an SDK built if they dislike the API in the readme.
-
...
There's more options that I didn't list here. And you don't have to pick only one. In fact, for something big, you should probably do a few of these things. Or you vary them, or combine them, or ...
What exactly you do doesn't matter as much as constantly asking: how can I get feedback on what I'm trying to build as soon as possible? And "feedback" here is used in the widest sense possible. Feedback comes in all shapes and sizes: feedback from the CI system on main, feedback from colleagues, feedback from users, feedback from you once you actually use it.
And if you follow that question -- how can I get feedback as soon as possible, so I can learn? -- you'll also find out how to chop things up and how to ship them:
-
you won't get good feedback if you ship an "MVP" of an idea that's so obviously buggy that all you'll get is bug reports for 3 days, not actual feedback on how useful it is
-
you won't get good feedback if the people supposed to give you feedback have to jump through 8 hurdles to test it
-
you won't get good feedback if you keep your changes on a branch for 3 weeks, because by the time you merge your 27 commits and CI blows up you have 27 possible causes, vs. 1 if you had merged them one by one
-
want feedback on the design of your skateboard? sure, show them the deck, no need for wheels. want feedback on how your skateboard feels? you can't ship it to testers without wheels on it.
-
...
So. Here's what I want you to think about going into this week: how can I get feedback on what I'm building on as fast as possible? when is the last time I got valuable feedback on what I'm building? in what frequency do I get feedback on what I'm building? why is that frequency so low?
Because we're building something new, in a time when software is changing (background vocals: everything is changing), and no one has a clue what the fuck is going on - so the most important thing is to embrace that and as soon as possible, as often as possible, ship things on which we can get feedback on, in a way that gives us valuable feedback -- by CI, by production, by our teammates, by select users, by select customers, by all of our users.
Yes, italics and bold. Because building software is learning and we want to learn as much as possible.
Like italics and bold? Subscribe:
-
-
🔗 r/LocalLLaMA I have become George Jetson: my job is now Yes/No supervision for a machine I don’t fully understand. rss
| submitted by /u/Helpful_Today7449
[link] [comments]
---|--- -
🔗 r/reverseengineering Built a decompiler for exotic legacy programming language opentext Gupta Team Developer rss
submitted by /u/Sita-Technologies
[link] [comments] -
🔗 19h/ida-codedump v1.1.0 release
Full Changelog :
v1.0.0...v1.1.0 -
🔗 anthropics/claude-code v2.1.160 release
What's changed
- Added a prompt before writing to shell startup files (
.zshenv,.zlogin,.bash_login) and~/.config/git/, which could otherwise lead to unintended command execution acceptEditsmode now prompts before writing build-tool config files that grant code execution (.npmrc,.yarnrc*,bunfig.toml,.bazelrc,.pre-commit-config.yaml,.devcontainer/, etc.)- Edit no longer requires a separate Read after viewing a file with
grep: single-filegrep/egrep/fgrepcommands now satisfy the read-before-edit check - Fixed copy-on-select not writing to the Windows clipboard on WSL — now uses PowerShell interop instead of OSC 52, which terminals like MobaXterm don't support
- Fixed restoring a completed session from
claude agentsdropping chat history and re-running the original prompt - Fixed background sessions re-attached after overnight retire losing their conversation and re-running the original prompt
- Fixed
claude --bgoccasionally failing with "socket missing" when the background daemon was cold-starting on a loaded machine - Fixed an issue on Windows where the directory a background session was started in could not be deleted after
claude rmuntil the background daemon exited - Fixed background agents that resumed work being shown under Completed in the agents list
- Fixed
claude agentsfreezing for several seconds when returning to the session list due to the auto-updater re-checking on every exit - Fixed Esc, arrow keys, and typing becoming unresponsive on Windows when attached to a background session or in the agent view while the host is under heavy CPU load
- Fixed background agents emitting terminal sync-output markers to terminals that don't support them (Apple Terminal, tmux), causing render artifacts when entering a running agent
- Fixed mouse wheel scrolling prompt history instead of the transcript right after opening a session from the agents list
- Fixed CJK IME composition appearing at the bottom-left of the screen instead of at the input caret in the
claude agentsview - Fixed valid
file:///C:/...links being rewritten to a broken path on Windows terminals with hyperlink support - Fixed voice mode failing to connect when the project directory or branch name contains non-ASCII or special characters
- Fixed the auto mode unavailability message on third-party providers (Bedrock/Vertex/Foundry) to point to the
CLAUDE_CODE_ENABLE_AUTO_MODEopt-in instead of incorrectly blaming the model - Fixed
/effort ultracodeincorrectly blaming the dynamic workflows setting when the model cannot run xhigh; ultracode is no longer offered on models that do not support it - Fixed model-not-found errors suggesting
--modelwhen running via the SDK or other hosts where the CLI flag doesn't apply - Fixed Claude's past replies disappearing from scrollback when resuming a brief mode session with brief mode turned off
- Fixed vim mode
ppasting on the line below instead of at the cursor when the register was yanked withv$ - Improved performance of opening recently-inactive background agent sessions in
claude agents - Improved auto mode classifier latency by reducing reasoning on routine actions, lowering the chance of "could not evaluate this action" blocks
- Improved background-session teardown (
claude rm/stop, idle reap) to send SIGTERM to running shell subprocesses before SIGKILL, so cleanup handlers run - Removed
CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE; the environment variable is now a no-op - Removed the JetBrains plugin install suggestion from startup
- Renamed the dynamic-workflow trigger keyword from
workflowtoultracode. The word "workflow" no longer triggers a run; asking for one in your own words still works. The trigger keyword is highlighted in violet in the prompt input
- Added a prompt before writing to shell startup files (
-
🔗 Rust Blog Launching the Rust Foundation Maintainers Fund rss
If you want to financially support the development of Rust, please consider donating to the Rust Foundation Maintainers Fund.
A few months ago, the Rust Foundation announced the Rust Foundation Maintainers Fund (RFMF). Since then, the Rust Project has been closely cooperating with the Rust Foundation to determine how exactly this fund will be used to support Rust maintainers. This resulted in the acceptance of RFC #3931, which established the Funding team and the Maintainer in Residence program.
The primary goal of the Funding team is to ensure that maintainers who work on Rust and its toolchain will be properly supported. We will talk to Rust Project members to figure out their funding situation, meet Rust team leads to learn about their maintenance needs, approach companies to find opportunities for them to invest into Rust by supporting Rust maintainers, coordinate various funding efforts and ensure that the beneficial effects of funded maintenance are visibly promoted, with the help of the Content team.
Maintainer in Residence is a new program dedicated to financially supporting existing Rust Project maintainers1. Each Maintainer in Residence will be funded to maintain one or more critical parts of Rust, such as the compiler, the standard library, Cargo, Clippy or one of many other projects that the Rust Project develops and maintains. The funded work will include activities such as performing large-scale refactorings, code reviews, unblocking new features, issue triaging, mentoring other contributors and more, and will be split between priorities guided by the teams they are supporting and priorities of their own choosing within the Project. Where applicable, Maintainers in Residence are also encouraged to propose, champion, and drive forward Rust Project Goals.
The goal of this program is to provide stable and long-term funding so that maintainers can focus on important work that ensures the long-term health of Rust. The funding team will select Maintainers in Residence based on funding availability and maintenance needs within the Rust Project, and help ensure that they are successful. We expect that this will usually be a (near) full- time position, but that will depend on the nature of the work and the area of maintenance.
This program extends our existing support for Rust maintainers, such as the program management program and the compiler-ops program. An important development is that we now have a centralized mechanism for gathering donations from both individuals and companies, and a dedicated team that will help direct those funds to specific maintainers. You can find more details about the funding team and the Maintainer in Residence program in the RFC.
We expect to hire the first Maintainer in Residence in the upcoming months and announce it on this blog, so stay tuned!
How to contribute funds
If you are an individual who wants to help Rust succeed and thrive, you can donate to the RFMF through GitHub Sponsors2. Companies who would like to invest in better maintenance of Rust can also donate through GitHub Sponsors or they can contact the Rust Foundation directly.
The important thing is that all proceeds from this fund will be directly used to support Rust Project maintainers. We currently expect that to happen primarily through the Maintainer in Residence program, but it can also be done in the form of smaller-scale grants or other mechanisms, as determined by the Funding team. We will figure this out on the go, as this is also quite new for us.
We really appreciate each donation, however small, because with more money we can hire more maintainers to ensure that we can continue to develop Rust and that important improvements are not blocked on maintenance tasks. This is especially important at this time, where Rust is starting to get used more and more in the industry in various application areas, which increases the need for sustained maintenance. The importance of multiple funding sources is underscored by an unfortunate trend we currently observe, where key Rust maintainers are losing their funding for Rust work due to budget shifts. The Rust Foundation Maintainers Fund is designed to provide stable funding for Rust maintainers that is less dependent on sudden shifts in the job market and the IT industry.
As with most things, there is no one-size-fits-all solution, so there are multiple ways to support Rust financially. The RustNL Maintainers Team recently hired several Rust Project maintainers. Previously, we wrote about how you can support specific individuals working on Rust. And there are also Rust Project Goals in search of funding. We welcome all efforts that can help support Rust Project maintainers, who often do work that is near invisible and thankless, while at the same time incredibly important and necessary, on a volunteer basis.
Thank you for considering sponsoring the development and maintenance of Rust! You can find more information about funding Rust on our Funding page.
-
This program was inspired by the Developer in Residence concept used by the Python Software Foundation (PSF), with which we led several helpful discussions. Thank you, PSF! ↩
-
Note that the fact that GitHub Sponsors is currently enabled on the
rustfoundationGitHub organization, and not therust-langorganization, is an implementation detail that might change in the future. All donations raised on this Sponsors page will be routed to the Rust Foundation Maintainers Fund and will be spent on directly supporting Rust Project maintainers. ↩
-
-
🔗 Drew DeVault's blog Vim Classic 8.3.0 released rss
Following up on my earlier announcement that I was forking Vim, I’m happy to announce the first release of my fork today: Vim Classic 8.3.0.
I have written a release announcement for vim-classic.org, which you can read here. Happy editing!
-
🔗 Ampcode News The End of Public Threads rss
We’ve removed public, internet-wide, discoverable thread sharing from Amp. You can still share threads within a workspace, or as
Unlistedto share them with anyone by unguessable URL.Why? It’s getting too hard to review a thread to ensure it doesn’t contain any snippets of sensitive files. Each model release means the agents get better, and as they get better they read more files into context. Public discoverable thread sharing is just too risky now. This decision is proactive and isn’t prompted by any incident.
Public discoverable threads have served their purpose well. Last year, Mitchell’s Ghostty threads and other publicly shared Amp threads helped spread the word that coding agents were actually good—and taught people how to use them.
Public user profiles (like ampcode.com/@sqs) still show your activity but no longer show any threads. Any existing
Public (Discoverable)threads are nowUnlisted, so your blog posts with thread links won’t break.
-
