- ↔
- →
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 05, 2026
-
🔗 Hex-Rays Blog What's new in the IDA Domain API? rss
What's new in the IDA Domain API?
It has been a while since our first post about the IDA Domain API, our *open- source* Python API designed to make scripting in IDA simpler, more consistent, and more approachable.

-
🔗 r/reverseengineering Reverse Engineering Crazy Taxi, Part 3 rss
submitted by /u/ifnspifn
[link] [comments] -
🔗 r/reverseengineering Ghidra 12.1.2 has been released! rss
submitted by /u/ryanmkurtz
[link] [comments] -
🔗 r/Harrogate Mornington Crescent and the Dragons rss
Hi there. My wife and I are planning a move to Harrogate and are looking at this area. I've heard conflicting reports about the area. Any local insights? What's it like to live there?
submitted by /u/MaxyDad13
[link] [comments] -
🔗 r/Harrogate Car event this weekend rss
Anyone know what car event is going on this weekend? I’ve been seeing loads of old American and other interesting cars going down Skipton Road over the past few hours.
submitted by /u/Alarmed_War6135
[link] [comments] -
🔗 HexRaysSA/plugin-repository commits sync plugin-repository.json rss
sync plugin-repository.json No plugin changes detected -
🔗 streamyfin/streamyfin v0.54.1 release
What's Changed
This is a fairly substantial release, bringing major improvements to playback, TV support, mobile stability, and build infrastructure. Playback received the most attention, with MPV support on Android and iOS, hardware decoding, improved PiP and subtitle handling, chapter markers, and more reliable watch progress reporting
TV support has also moved forward significantly. Streamyfin is now live on the App Store for tvOS and available for anyone to download, alongside a refreshed TV interface, better focus and navigation handling, Android TV recommendations, tvOS TopShelf support, native Apple controls, and enabled iOS / Apple TV builds
As usual, thanks to everyone filing issues, testing builds, translating strings, and helping move the project forward!
✨ Highlights
- Streamyfin for Apple TV is now live on the App Store and available for anyone to download
- MPV player on Android & iOS with hardware decoding and PiP (with subtitles) (#1332), plus native Apple controls (#1411) and MPVKit 0.41 (#1604)
- Chapter markers and chapter list in the player (#1586)
- Local network auto-switch — automatically switches to your local server address (#1334)
- TV interface overhaul — uniform scaling, tvOS TopShelf extension (#1561), Android TV recommendations (#1575), and iOS TV builds enabled (#1422)
- Setting to disable auto-play next episode (#1342)
- Autorotate for landscape (#1265)
🎬 Player
- Caching progress shown in the seek bar (#1376)
- Progress throttling for MPV (#1366)
- Fixed progress bar / watch-time reporting (#1611, #1239)
- SubRip subtitle fixes for MPV (#1375)
- Stop external subs from auto-selecting when added (#1349)
- Disable subtitle embedding on iOS simulator (#1544)
- Don't cache background media-source requests (#1602)
- Android PiP fixes (#1605, #1628)
- Keep landscape when opening chapter list on iOS (#1624)
📺 TV
- TV menu/back navigation and overlay focus fixes (#1559, #1558)
- TV password modal fix (#1598)
- TV native search component
🐛 Fixes
- Music videos and home videos now show in libraries (#1326)
- Close modal on Android back button (#1487)
- Clear stored user on logout (fixes empty home on relaunch) (#1622)
- Dedupe top people sections (#1623)
- Correct mimeType/UTI for log export (#1424)
- Downloads refactor — less prop drilling, improved layout (#1337)
🔧 Build & Infra
- Expo SDK 55 → 56 upgrade (#1594, #1600)
- iOS 26 / SDK 56 EAS build fixes (#1613)
- Android MPV Kotlin build fix (#1614)
- EAS build + auto-submit release workflow (#1616, #1632)
- Xcode build script (#1296)
🌍 Translations
- Ongoing Crowdin sync; new strings for "ends at" and action sheet options; Russian updates (#1474, #1475, #1427)
👋 New Contributors
@quang-tran, @gallyamb, @a-collado, @stevebyatt10, @felixschndr, and @github-actions[bot] made their first contributions.
Full Changelog :
v0.51.0...v0.54.1 -
🔗 r/LocalLLaMA Gemma 4 with quantization-aware training rss
| Google's collections: https://huggingface.co/collections/google/gemma-4-qat-q4-0 https://huggingface.co/collections/google/gemma-4-qat-mobile And Unsloth's: https://huggingface.co/collections/unsloth/gemma-4-qat Unsloth's analysis (KLD and such): https://unsloth.ai/docs/models/gemma-4/qat#qat-analysis submitted by /u/rerri
[link] [comments]
---|--- -
🔗 r/reverseengineering Extending a map tool for Cataclismo rss
submitted by /u/Bobby_Bonsaimind
[link] [comments] -
🔗 r/reverseengineering I've been reverse engineering a lost 2010 horse MMO and I need contributors rss
submitted by /u/RimFaxxe_Official
[link] [comments] -
🔗 r/reverseengineering HookNt: A Windows x64 tool to trace NT APIs by injecting an import-free DLL, installing ntdll trampolines, and streaming events over named pipes rss
submitted by /u/4l73rn47iv3Bug
[link] [comments] -
🔗 r/reverseengineering Multi-layer sandbox for native code execution on Linux with no external deps. rss
submitted by /u/Decent-Assistance-50
[link] [comments] -
🔗 r/LocalLLaMA finally rss
| submitted by /u/KvAk_AKPlaysYT
[link] [comments]
---|--- -
🔗 Drew DeVault's blog The circus freaks of open source rss
The masterwork of Terry A. Davis is his eclectic operating system, TempleOS, which he worked on until his tragic death in 2018. In terms of technical excellence, TempleOS rates well in some respects and poorly in others. For example, it earns the achievement, coveted in OS dev circles, of being self-hosted.1 TempleOS is written in Terry’s own bespoke dialect of C and includes an editor, interpreter, and compiler, as well as a number of original games. In other respects, it compares poorly to many hobby OS projects, some of which have achieved significantly greater levels of technical excellence and sophistication. I would place TempleOS somewhere in, say, the lower middle-class of hobbyist operating systems.
Among hobbyist operating systems, TempleOS stands out as one of the most well-known, having attracted considerably more press coverage and a much larger fan-base than any other hobby operating system can boast. The reason TempleOS stands out from the crowd is not due to its modest technical achievements, but because it is clearly the product of severe untreated schizophrenia.2 What makes TempleOS special is that Terry built it to talk to God. Every feature and each technical decision re-enforces his schizophrenic delusions, from its implementation language (“HolyC”) to its prophetic “oracle” app. Enthusiasts of TempleOS are drawn to it in part because it affords an opportunity to explore the unique, creative masterwork of a person suffering from mental illness in a way that deeply impacts that work.
A curious onlooker will find TempleOS interesting and engaging for the space of perhaps one afternoon before moving on. However, for the less scrupulous fans, turning one’s attention to Terry himself never failed to entertain. Terry’s public life put his mental illness on display, through frequent outbursts, conspiracy theories, rants and nonsensical discourse, all of which was often laced with slurs, racism, and homophobia, endearing him in particular to the 4chan crowd, who would taunt and provoke him to draw out more… entertainment.
The press and fan attention was deeply harmful to Terry and likely exacerbated his mental illness. Whenever TempleOS or Terry came up online, the work and the man were fawned over, sanctifying the somewhat impressive, somewhat unremarkable OS as a profound achievement, inspiring reactions that included well-meaning, probably misguided celebrations of what’s possible in spite of profound mental illness, as well as the enthusiastic, disgusting revelry of bigots. Many well-intentioned commenters on Terry’s work demonstrate in their comments, overtly or covertly, a thrilling, voyeuristic sensation of witnessing his mental illness through TempleOS. It never failed to make me feel sick.
I wish we had just left Terry well enough alone.
The masterwork of Kent Overstreet is bcachefs, a novel copy-on-write file system for Linux, designed to compete with the likes of ZFS and BTRFS. Kent originally authored the bcache subsystem for Linux around 2013, and based on this work began working on bcachefs in 2015. Over the next ten years, he committed himself entirely to the project, leaving his job at Google to work on it, and ultimately securing an income for himself via Patreon, from which he still earns about $1.5k per month.
Kent is known to be difficult to work with, even among his peers in the Linux kernel – a community infamous for its difficult personalities. He struggled to meet the kernel developer’s expectations for the development process and standards of quality and cooperation. As a consequence, after 15 years devoted to bcachefs, Kent’s life’s work culminated in alienation from all of his professional peers and the complete removal of bcachefs from the Linux kernel last year.
I think the Linux kernel made the right decision to marginalize Kent to protect their community. Someone who is abrasive and toxic, refuses to play by the rules or work well with others, and does not improve when given feedback and being subjected to repeated moderator interventions, should be removed from the community. I agree with the decision, even as someone who myself has been abrasive and toxic and refused to play by the rules, and has been removed from communities as a consequence.
Over the months following the frustrating end to bcachefs in upstream Linux, I expect that Kent has experienced a serious emotional, professional, moral, and existential crisis. For him to have poured so much of himself into this project, and for it to turn out this way, must be a terrible thing to experience, and I think that experience has caused Kent a lot of suffering, and probably played a major role in what happened next.
Kent appears to be experiencing a prolonged episode of AI psychosis. He believes that his chat bot is female, sentient, and that they have started dating and having sex. He views himself as some mix of collaborator, mentor, and partner with respect to the bot, and he has set up automations so that the bot can participate in his IRC channel and post to its own blog.
These developments garnered attention from the press and the public, remarked upon and ridiculed by news outlets, discussion forums, video producers, Reddit, Hacker News, on the Fediverse, and so on. Onlookers, both curious and malicious, have joined the IRC channel to harass him, manipulate the bot into saying things that embarrass or humiliate Kent, and so on.
In short, Kent is experiencing a mental health crisis, and our anonymous, stochastic ringleader has directed him onto the circus stage for us to throw peanuts at.
These two examples are not isolated. This kind of crisis is happening more and more often, in the world’s degrading social, political, and economic conditions, as our peers suffer from depression, anxiety, burnout, and more. Mental health issues and the ensuing harassment, shame, and stigma disproportionately affects neurodivergent and queer people, who often become the subject of gleeful humiliation by bigots deliberately trying to exacerbate their struggles. Crises happen to “problematic” people, too; often in such cases people who would otherwise consider themselves allies of social justice can find in a problematic person a convenient excuse to participate in these gleeful humiliation rituals themselves.
I often see that people who I otherwise respect and recognize as allies and kindred spirits are participating in these rituals of humiliation, harassment, and voyeurism. I don’t think it’s right to gossip over or sensationalize the mental health crises faced by members of our communities.
When our peers are struggling with their mental health, the best thing to afford them is compassion and privacy. If you find yourself in a position to help someone who is struggling, it’s best to offer them a compassionate confidence, to allow them to take the lead in their struggle, and connect them to the resources they want and need. If you have concerns, express them, but focus on the person’s right to self-determination in addressing their mental health.
If you’re not in a position to help, then it’s probably best to turn away and mind your own business.
PostscriptThis is a difficult topic to write about. By writing about these specific examples, am I sensationalizing them? Disrespecting the privacy of the people I’m writing about? Participating in the circus myself?
I don’t know, but I did my best. The alternative is to quietly let the circus continue, and that doesn’t sit well with me, either.
In my research for this article, I came across Living with Schizophrenia UK and their guide for journalists covering schizophrenia. It was helpful for me to write this post compassionately and carefully, and it might be a good resource for you if you want to learn more about schizophrenia, or write comments or follow-up material after reading this blog post.
It was difficult to balance the factors at play when writing this piece. I wanted to bring specific examples, to avoid vagueposting and provide a stronger narrative, and especially to deal with the specific problem of harassment directed at Kent Overstreet, which I wanted to confront directly as it’s a contemporary, ongoing problem.
Of course, this has to be done carefully. I took some care to avoid armchair diagnoses of specific conditions, except in the case of Terry where I could find a citation of a public diagnosis. I left a lot of details out of the accounts of specific people which came up in my research, but were not necessary to support my arguments. Those details would have provided for a more compelling story, but would have upset the balance of the article more towards participation in the circus than commentary on it.
I’m sure I haven’t done a perfect job here, but I hope that I’ve put enough care into it to avoid making the problem any worse than it already is. Feel free to email me with any remarks or feedback you have.
Thanks for reading, and remember to take good care of your collaborators, friends, and loved ones.
-
🔗 Ampcode News Faster Deep & Rush rss
The first token now arrives 87% faster and entire responses are 32% faster, p50, in Amp's
deepandrushmodes.How? Mostly using websockets for communication with OpenAI, partly because we rebuilt Amp to be much faster last month.
These gains matter most on long-horizon tasks, where we're seeing up to a 40% end-to-end speedup from user prompt submission to completion.
You can see the difference:
-
- June 04, 2026
-
🔗 IDA Plugin Updates IDA Plugin Updates on 2026-06-04 rss
IDA Plugin Updates on 2026-06-04
New Releases:
Activity:
- ida-ios-helper
- 4ff8ac50: :sparkles: Add optimization for objc get set
- ida-ios-helper
-
🔗 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 -
🔗 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
-
🔗 r/LocalLLaMA VibeOS - Fully Hallucinated Operating System rss
| Who needs programming anyway? submitted by /u/WhatererBlah555
[link] [comments]
---|--- -
🔗 r/LocalLLaMA KVarN: new KV-cache quant from Huawei. 3–5× KV cache compression with actual speed-up instead of slow-down, and unlike TurboQuant it holds up on reasoning (Apache 2.0, vLLM single flag) rss
| The KV-cache quant race just got more interesting. Huawei just open-sourced KVarN , a KV-cache quantization method under Apache 2.0, drops into vLLM with one flag. Posting because the tradeoff it's claiming is genuinely different from what's already in the stack, and I'd like to see it stress-tested. The landscape it's stepping into- FP8 (
--kv-cache-dtype fp8) is the current default: ~2x KV capacity, BF16-level throughput, near-zero quality loss. Hard to beat, and the bar anything new has to clear. - TurboQuant (Google) got the headlines this year for aggressive compression. It's the one that spooked memory-chip stocks back in March. But per vLLM's own study (Red Hat AI), it buys that memory by giving up speed: it runs at 66-80% of BF16 throughput, up to ~2.5x slower at burst , because it dequantizes back to BF16 for the attention compute. And its low-bit modes drop ~20 points on reasoning (AIME25, LiveCodeBench).
What KVarN claims (vs FP16)
- 3-5x more context (vs FP8's ~2x)
- up to ~1.4x FP16 throughput, at FP16-quality outputs
- up to ~2.4x TurboQuant throughput, at higher accuracy
- at matched accuracy , at least as compact as every TurboQuant operating point (their paper's table)
- holds reasoning quality at high compression; the exact axis where TurboQuant's low-bit variants fall apart
- no model changes, no retraining, no calibration; single vLLM flag
Reasoning benchmarks (from the paper) https://preview.redd.it/aeyuff7h2a5h1.png?width=738&format=png&auto=webp&s=252a2948ed2e3dca280f967c6016b36e73f3858c This is the part that matters. Most KV-cache quant tanks either math/code accuracy or throughput; KVarN claims neither. Throughput with vLLM v. Compression (from repo readme) https://preview.redd.it/11lhlua73a5h1.png?width=1216&format=png&auto=webp&s=2b50ac0169708511cb3b29f84084fafeda94fed1 Links
- Repo: https://github.com/huawei-csl/KVarN
- Paper: https://arxiv.org/abs/2606.03458
- vLLM TurboQuant study (source for the throughput / reasoning numbers above): https://vllm.ai/blog/2026-05-11-turboquant
It looks like they learned from the SINQ https://www.reddit.com/r/LocalLLaMA/comments/1nxjh4c/github_huaweicslsinq_welcome_to_the_official/ case where everyone was asking for throughput numbers and vLLM integration 😃 submitted by /u/acluk90
[link] [comments]
---|--- - FP8 (
-
🔗 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/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
-
🔗 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]
---|--- -
🔗 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
-
