🏡


to read (pdf)

  1. I don't want your PRs anymore
  2. JitterDropper | OALABS Research
  3. DomainTools Investigations | DPRK Malware Modularity: Diversity and Functional Specialization
  4. EXHIB: A Benchmark for Realistic and Diverse Evaluation of Function Similarity in the Wild
  5. Neobrutalism components - Start making neobrutalism layouts today

  1. May 31, 2026
    1. 🔗 anthropics/claude-code v2.1.159 release

      What's changed

      • Internal infrastructure improvements (no user-facing changes)
    2. 🔗 r/LocalLLaMA (YT) PewDiePie released his harness/webui rss

      (YT) PewDiePie released his harness/webui | At the very least it's interesting to have a non-programmer's take on this (though he did study mechanical engineering and did some web development iirc) https://pewdiepie-archdaemon.github.io/odysseus/ submitted by /u/Dany0
      [link] [comments]
      ---|---

    3. 🔗 MetaBrainz Picard 3 beta 4 fixes startup issues on macOS rss

      We have released Picard 3 beta 4. The recently released beta 3 did crash on macOS and when running the picard-plugins command line tool, both has been fixed in this. In addition beta 4 fixes display issues in the new log view.

      Download links and a detailed list of changes since Picard 3 beta 3 are available below. For a more detailed overview of what is new in Picard 3 please see the previous blog post Picard 3 Alpha Release.

      While we have all the major features implemented and with the latest bug fixes we are confident in the current code, this is still a pre-release and there might be bugs. If you use this, do so with care, backup your files and please report any issues you encounter.

      Some of the changes are also backward incompatible, hence we recommend you make a backup of your Picard.ini config file before trying the beta version. You can do so in Picard’s Options under Advanced > Maintenance.

      What’s new?

      Bugfixes

      • PICARD-3300 - Fails to launch on macOS: "Expected an instance of Tagger"
      • PICARD-3301 - Visual glitch in log viewer for multi line output
      • PICARD-3304 - picard-plugins fails to launch with "Expected an instance of Tagger"

      Improvements

      • PICARD-3303 - Add syntax highlighting to Log Detail dialog

      Download

      We appreciate your interest in trying this new version. Use with care, backup your files and please use theMetaBrainz community forums and the ticket system to give feedback and report bugs.

      For Windows and macOS you can download the beta version from the Picard download page. Linux users can run from source or try the beta channel of the Picard snap package.

      Picard is free software and the source code is available on GitHub.

      For anyone wondering if they missed beta 2: We had the version updated for beta 2, but we never released it and instead had further changes that got now released as beta 3.

      Acknowledgements

      Code contributions by Laurent Monin and Philipp Wolfer. Translations were updated by Nebulain (Chinese (Simplified Han script)).

    4. 🔗 r/reverseengineering ThinkPad firmware reverse-engineering toolchain: archived Lenovo BIOS → named SoC pads, EC analysis, CVE diffs, coreboot/OpenCore port scaffolding rss
    5. 🔗 Register Spill Joy & Curiosity #88 rss

      It's been a fantastic week. The Amp team met in San Francisco and together we hung out in a beautiful house, drank coffee and diet coke, ate way too many snacks, and hacked on Amp.

      A single timezone, many overlapping hours, synchronous communication with even the option to tap someone on the shoulder. You could feel the clock rate of the team go up. Our #shipped channel was busy. What a team!

      But I didn't get a lot of reading in. And now the sun is up, the coffee's finished, and I'm going for a run.

      • Amp Neo is now Amp. It's out, for everyone. Generally available, fully released; the infrastructure scaled, the clients resilient. It's been tested on three cross Pacific flights already. Go and try it. Try the plugins, try the remote control. I'm very proud of this architecture and this team and that we made this work -- infinitely scalable agents, running everywhere. And it's only the start.

      • Fantastic little post by Patrick: Fast is better than slow. There's between ten and fifteen things I want to quote here, so go read the whole thing instead.

      • Then go and read the section about being fast on nat.org and and Patrick Collison's Fast page.

      • Benedict Evans on Predicting AI job exposure: "The counter-argument to all of this would be to say that, yes, well done, there are important exceptions, as there always are, but directionally and in aggregate, it is 'surely' correct to say that jobs that involve a lot of repetitive clerical work are most exposed, and this is how many jobs that is, and by how much. That sounds good, but you don't know if the exceptions are bigger than the rule. Suppose we'd looked at the internet in 1995 and said that this would destroy the value of physical distribution for media - this was 'directionally correct', but in practice that meant totally different things for record companies, newspapers, TV companies and movie studios. Are you trying to say something that has some predictive value, or just observing a truism? On average, we're all dead. Half of the jobs you've analysed might be entirely unaffected, and there might be other big pools of jobs to be transformed that you miss entirely. You don't know."

      • The new Ferrari Luce has been revealed. It's the Ferrari designed by Jony Ive and Marc Newson. I'm not a big car guy, so I don't have a strong opinion on whether it looks good or not, but after everybody else had a strong opinion I went through the list of Ferrari models and remembered that I don't like the look of most Ferraris.

      • "If you're the kind of person who is skeptical that AI coding is good for anything, then I doubt this post will persuade you. But if you're the kind of developer who uses agents to write multi-hundred-line PRs that you barely understand yourself, I'd invite you to slow down a bit and try this other, slower style of 'vibe coding.'"

      • I honestly don't know what to think of this, one for the Curiosity column: I Am Retiring from Tech to Live Offline.

      • This post by Jeff Geerling made me want to go buy a MacBook Neo. But I don't need one. Maybe my kids do?

      • "Have you ever read that Hacker News comment by the early FedEx employee about how they chose Memphis as the location for their headquarters?" "No. It's a Hacker News comment?" "Yes, it is, let me find that for you." Here it is.

      • This is art.

      • I've used the term "thundering herd" approximately three hundred times in the last few weeks and realized that I kinda assumed everyone knows what it is. So if you don't, click that link. Another piece of terminology that I assumed everyone knows: pets vs. cattle. But: why would they? So, if you don't know what someone could mean when they use the terms pets and cattle when talking about infrastructure: go and read this.

      • I really, really need to understand jj revsets more. I learned that jjui lets me hit shift-l and change the revset very easily, but I never know exactly what I'm looking for. So I'm linking to this excellent post here hoping that it'll get me to learn revsets. (Send me your favorite revset aliases, please.)

      • Simon Willison: I think Anthropic and OpenAI have found product-market fit.

      • Lovely idea: apartment birds, heard recently. Built by Teddy.

      • Insignificant Bullets, Evil Poachers, and L.A. Culture. Always fun to read Herzog.

      • My Name Is David Chang, and I Hate Fancy Beer. If I could, I'd print this out and shove it into everyone's face whenever they ask me why I don't like IPAs. Actually, you know what, I just might and put it in my wallet, just in case. The whole point of beer is that it's simple. Four ingredients and that's it. My stance: if you think a normal beer is boring, you might just not like beer then. Go and do your own thing then, but don't call it beer. Why? Imagine you're really into bread. Say you love a really good sourdough bread. You not only love the taste, but also how it's made, how traditional it is, how simple. But then someone comes along and goes "sourdough bread? boring!" and puts fucking raisins in it and sells it as Craft Bread and when you decline the dumb raisin bread people ask you "wait, I thought you liked bread?"

      Did you also grab Bud Light in the supermarket and said "When in Rome…"? You should subscribe:

    6. 🔗 Confessions of a Code Addict How Large Is the Virtual Address Space? rss

      This video is a continuation of our virtual memory series, based on the article/book I wrote on the same topic.

      In the previous video, we talked about what virtual memory is and why we need it. This week, we look at the size of the virtual memory space. Since virtual memory is accessed through virtual addresses, a natural question is: how much memory can a program actually address?

      This video answers that question, along with a few related ones:

      • Deriving the size of the virtual address space from first principles

      • Why the virtual address space is split between user space and kernel space

      • What canonical virtual addresses are

      In the next video, we will talk about the address space layout of a process.

      In the meantime, you can read the full article if you haven't already.

      Update on the Ebook Version

      I also want to give a quick update on the virtual memory ebook. I've updated the PDF for a smoother on-screen reading experience with better color schemes and fonts. Apart from that, I've also created an EPUB version for those who prefer that format. You can get both from the link below. Happy reading!

      Get Ebook


      Read more

    7. 🔗 @brandur The Minimum Viable Unit of Saleable Software rss

      Last week I wrote about leaving Stainless and my intention to work on building my side project River into a small, sustainable business. When I sent that letter, a few people asked about my thought process in trying to run a software company in the age of AI: "Are you crazy?! Anything you ship can be instantly displaced by an internal package built by an LLM!" Having become as much of an LLM convert as anyone at this point, I acknowledge that it's a very fair question. Indeed I might be crazy, but I'll talk through my thought process, and you can decide.

      Let me start with an anecdote. This morning I was browsing the internet's most wretched hive of engagement farmers and master solicitors of fake information and fictional anecdotes, LinkedIn. One user there posted about how his company had been spending $400/mo on Atlassian's Jira. He'd felt personally slighted by this outrageous bill, so he'd had his team build a new internal task tracker using Claude. Gone was Jira and the $400/mo spend, replaced by a custom package that could be tooled out in any way they needed via continued refinement by an LLM.

      We've been talking about buy vs. build in software circles for years, but last year the calculus changed. It used to be that build was a very expensive proposition, especially given the state of engineering salaries and scarcity of great people. One could expect huge upfront cost, schedule overruns, and an infinitely deep rabbit hole to slide down. The general wisdom had always been to build only inside your core domain and avoid getting sidetracked by peripheral projects. Once your company reached enormous size, and the cost of those distractions disappeared comfortably into its margins, then maybe they'd be worth doing.

      But LLMs changed all of that. Suddenly it was quite possible to produce substantial pieces of software by getting models to do the work.


      Cheap != zero

      While LLMs have made software considerably cheaper to build, they haven't brought it to zero. Good LLM-built systems still involve a feedback loop, where an operator has the model work for a while, makes adjustments based on results, asks for another pass, refines further, and so on, taking dozens of loops to get to a satisfactory result that's an optimal compromise between time spent and quality.

      And like before, maintenance will be an ongoing cost. Especially for more complex packages, there's always going to be a feature to add or bug to fix. LLMs will make those changes easier to make, but don't make them free, with the most expensive element being the part-time labor of the human in the equation who oversees and verifies results.

      Back to our $400/mo Atlassian anecdote above: after considering the initial build effort, including refinement passes, and the ongoing LLM-driven maintenance, does it pass the smell test, like at all? A task tracker's still a complex piece of software, and even with gratuitous use of LLMs, you'd expect to spend at a minimum a few weeks on the initial push (charitably). From there, its internal owner will switch to bug fixes and feature development.

      Let's try to come up with some rough numbers to quantify the situation. Let's say we have an engineer making $200k/year and working 40 hours a week (pretend for a second 9/9/6 was blessedly never conceived). That's $16.7k/mo, $3,850/week, or $96/hour:

      salary = 200_000.0
      
      {
        month: salary / 12,
        week:  salary / 52,
        hour:  salary / 52 / 40,
      }.each { |k, v| puts "%-6s $%0.2f" % ["#{k}:", v] }
      
      
      
      month: $16666.67
      week:  $3846.15
      hour:  $96.15
      

      To counterbalance the $400/mo that would've been paid to Atlassian, the engineer can spend no more than 4 hours a month (400 / 96) prompting features/fixes on their homegrown Jira clone, or looking after its database, or whatever, not including context switching overhead. Even with LLM help, that's completely unrealistic already, but let's be charitable and say they can get it down to 2 hours a month. It'd still take 37 months to break even after those initial 2 weeks of effort (number of months to make back Atlassian's $400/mo minus 2 hours/mo maintenance effort = 2 * 3846.15 / (400 - 2 * 96.15)).

      Don't get me wrong, I hate Jira just as much as anyone who's ever used it and have a nearly uncontrollable urge to want to rebuild it too, but the math here doesn't pencil out 1.

      The build threshold

      But does that always hold true? Let's take the other side for a second by examining a much higher-priced SaaS product. Gemini reports that the price of a fully loaded Salesforce seat is ~$500/mo. Say you need 50 seats, that's $25k/mo!

      For that price you could have 1.5x engineering resources (25 / 16.7) working on your clone full time. Once again, a CRM's a reasonably complex piece of software and a rebuild wouldn't be trivial, but no matter how you construe it, this is closer to a "build" decision, even for a smaller company. (And with Salesforce down 30% YTD, the markets seem to believe it too.)


      The zone of viability

      I'm contending (and/or hoping) that for a software package of arbitrary complexity, there's a zone of viability in which when priced within reason, it'll make sense to buy over build, even given the existence of the powerful LLMs that've become our daily companions:

      Zone of viability in a sweetspot between cost and
complexity

      Software in the zone of viability satisfies two conditions:

      • There's sufficient novelty as to make a rebuild-by-LLM non-trivial, and with some ongoing maintenance burden.

      • Pricing is not so exorbitant as to strongly encourage rebuild-by-LLM.

      As long as continued pricing within reason keeps software within the zone of viability, the total paid in licensing is less than the cumulative expense of prompting its initial push and sustaining its continued existence.

      Somewhere along the zone of viability is the minimum viable unit of saleable software , below which a rebuild is the same or less effort compared to going through the purchasing process for a third party and not cost-effective over the long run.

      | Ongoing price | Ongoing spend | Engineer equivalent hours/mo | Equivalent engineering resources | Buy | Build
      ---|---|---|---|---|---|---
      Jira | $400/mo | $400/mo | 4.2 hours | 0.02 engineers | ✔ |
      Salesforce | $500/seat/mo | $25k/mo | 260 hours | 1.5 engineers | | ✔


      River as a plausible business

      For the last few years Blake's worked on a small business based on our open- source project River, a job queue for Go and Postgres, and for at least the next few months, I'll be taking over full-time. This self-serving blog post is a long way of saying that I hope that despite the world having crossed the LLM horizon, River comes in over the minimum viable unit of saleable software and is still a plausible company in the modern age.

      In terms of novelty, River's an open-source project that makes almost all job- related features (periodic jobs, scheduled jobs, unique jobs, web UI, …) available for free, but reserves some advanced features (workflows, sequential jobs, concurrently-limited jobs, …) and billing capability (billing by invoice) for a Pro version that we charge for. An LLM could reproduce the latter features, but we've put enough thought into their API design and performance properties that it'd take some work to get back to something of similar quality.

      In terms of price, we used a sublinearly scaling pricing model based on team size rather than headcount, starting at $125/mo for up to 20 developers, and scaling up to a multiple of that for an unlimited site license. So for a small-to-medium development team, $125/mo is the all-in cost across everyone.

      So back to the question at the top: did I get this right? Who knows. For now I'm betting my livelihood on it, and the coming months will tell.


      A note on the photo at the top: This is a natural feature called "Zlatnite Mostove" ("The Golden Bridges") in the Vitosha mountains near Sofia, Bulgaria where I hiked recently after attending Balkan Ruby. The field of rocks is called a "bridge" because it covers an active river underneath it. This post is partly about River and that's a river, so I'm banking on enough of a connection to be justifiable.

    8. 🔗 r/reverseengineering TinyLoad v7 - what i added :D (in memory protection using VEH and alot more) rss
    9. 🔗 r/reverseengineering Snowboard Kids 2 is 100% Decompiled rss
    10. 🔗 mahmoudimus/ida-sigmaker v1.9.1 release

      sigmaker.py - IDA Python Standalone Python Release

      Release Information

      What changed

      Added

      • Signature output now labels addresses with the containing function name. GeneratedSignature.display, XrefGeneratedSignature.display, and the function-signature action append (funcname) to printed addresses when the address lies in a named function, falling back to the bare address otherwise. The address is always kept, so distinct anchors in the same function stay distinguishable. (#47)

      Description

      This is a standalone release of the IDA Pro signature maker plugin. The file sigmaker.py contains the complete plugin code that can be directly imported into IDA Pro.

      Installation

      1. Copy sigmaker.py to your IDA Pro plugins directory
      2. Restart IDA Pro
      3. Use Ctrl+Alt+S to access the Signature Maker menu

      License

      See the main repository for license information.

    11. 🔗 r/LocalLLaMA It's funny how everything changes, yet somehow stays the same. rss

      It's funny how everything changes, yet somehow stays the same. | submitted by /u/bigattichouse
      [link] [comments]
      ---|---

    12. 🔗 19h/ida-lifter v2.6.1 release

      Full Changelog : v2.6.0...v2.6.1

    13. 🔗 mahmoudimus/ida-sigmaker v1.9.0 release

      sigmaker.py - IDA Python Standalone Python Release

      Release Information

      What changed

      Changed

      • Find shortest unique signature for current function worst case drops from ~12 s to ~1 s on large databases. Profiling on 200 MB+ modules found the remaining cost was not the index or the refinement kernel but two leftovers, both now fixed: the seed-candidate map ran in a pure-Python loop over the whole seed bucket, and patterns whose seedable prefix was all wildcards fell back to a full-buffer scan. (#45)

      Internal

      • New seed_offsets Cython kernel maps a seed bucket to the candidate start array (the p - s shift, the fit guard, the n-1 boundary) under nogil, the same pattern as refine_offsets. This was the last O(C0) loop left in Python; moving it to C cut the worst observed function search from ~12 s to ~1 s. (#45)
      • Seeding is deferred for all-wildcard prefixes instead of running an O(N) masked scan when no exact byte is available to key the index. (#45)
      • Adversarial refinement microbenchmark (tests/perf/adversarial_refine.py, with a --check regression guard) plus cross-check tests pinning the Cython kernels to their Python fallbacks. Block refinement and sorted-bucket spaced-seed intersection were measured and shelved. (#45)
      • Signatures produced are byte-identical to 1.8.0; only the speed of finding them changed. (#45)

      Documentation

      • ALGORITHM.md gains a table of contents, a "Rejected optimizations" section explaining why the two upgrades above were shelved, and notes on the seed_offsets kernel and deferred seeding. (#45)

      Description

      This is a standalone release of the IDA Pro signature maker plugin. The file sigmaker.py contains the complete plugin code that can be directly imported into IDA Pro.

      Installation

      1. Copy sigmaker.py to your IDA Pro plugins directory
      2. Restart IDA Pro
      3. Use Ctrl+Alt+S to access the Signature Maker menu

      License

      See the main repository for license information.

    14. 🔗 r/reverseengineering usbsnoop — sniff and decode USB device traffic system-wide with eBPF, for reversing proprietary protocols (control/SCSI/HID, no bus analyzer) rss
    15. 🔗 Servo Blog April in Servo: new Android UI, focus, forms, security fixes, and more! rss

      Servo 0.2.0 contains all of the changes we landed in April, which came out to yet another record 534 commits (March: 530). For security fixes, see § Security.

      Note: the GitHub release is available now, but the crates.io release is not yet complete. We expect to publish it some time next week.

      servoshell 0.2.0 showing several new features: better wrapping for CJK
scripts, ‘tab-size’, better file pickers and &lt;textarea&gt;, <select
multiple>, ‘::details-content::before’ and ‘::details-content::after’, and
‘color-mix()’ with any number of
colors

      We’ve shipped several new web platform features:

      Plus a bunch of new DOM APIs:

      • ‘selectionchange’ events on <input> and <textarea> (@TimvdLippe, #44461)
      • Storage­Manager , in experimental mode (@Taym95, #43976)
      • active­Element on Document and Shadow­Root (@mrobinson, #43861)
      • crypto.subtle.supports() (@kkoyung, #43703) – Servo is the first major browser engine to support this!
      • cell­Padding , cell­Spacing , and align properties on HTML­Table­Element (@mrobinson, #43903) – previously supported in HTML only
      • related­Target on ‘focus’ and ‘blur’ events (@mrobinson, #43926)
      • transfer­From­Image­Bitmap() on Image­Bitmap­Rendering­Context (@Messi002, #43984)

      Servo’s support for text in Chinese , Japanese , and Korean languages has improved, with correct wrapping in the layout engine (@SharanRP, #43744), and CJK fonts now enabled in servoshell’s browser UI on Windows, Linux, and FreeBSD (@yezhizhen, @CynthiaOketch, @nortti0, #44055, #44138, #44514).

      Navigating to a JSON file as the top-level document now renders the JSON with an interactive pretty-printer (@webbeef, @TimvdLippe, #43702).

      April was a big milestone for Servo, with some automated tests failing because they had hard-coded cookie expiry dates set to April 2016 plus ten years. Surprise! We’re still here. Here’s to the next 100 years of Servo (@jdm, #44341).

      This is another big update, so here’s an outline:

      Security __ Crypto­Key now zeroes buffers containing key material after use (@kkoyung, #44597). With only a few exceptions, you can only access DOM APIs in another document if that document is in the same origin. But if that document is in the same site with a different port number, Servo currently allows these accesses even though it shouldn’t. We’ve fixed some (but not all) of these incorrect accesses, specifically those that involve binding a Window or Location method in this document with a this from the other document (@yvt, @jdm, #28583). We’ve fixed a bug where local­Storage and session­Storage were usable in sandboxed <iframe> and shared with every other sandboxed <iframe>, rather than throwing Security­Error (@Taym95, #44002). We’ve fixed a bug where local­Storage and session­Storage were shared between all < iframe srcdoc> documents, rather than isolated using the origin of the containing document (@niyabits, #43988, #44038). We’ve fixed a bug where IndexedDB was usable in sandboxed <iframe> and data: URL web workers (@Taym95, #44088). We’ve fixed a bug where pages in some IP address origins can evict cookies from other IP address origins (@officialasishkumar, #44152). Only evicting cookies was possible, not reading or writing them. We’ve fixed an out-of-bounds memory read in tex­Image3D() on Web­GL2­Rendering­Context (@simartin, #44270), and fixed some undefined behaviour in servoshell’s signal handler (@Narfinger, #43891). Work in progress IndexedDB is now enabled in servoshell’s experimental mode (@arihant2math, #44245). As always, embedders can enable it with Preferences::dom­_indexeddb­_enabled (@arihant2math, #44245, #44283). IndexedDB now uses Servo’s new “client storage” system, which is based on the Storage Standard and will allow us to have a unified on-disk format and quota management for all web platform features that persistently store data (@gterzian, #44374, #43900). We’ve also made key range queries more efficient (@arihant2math, #39009), landed improvements to IDB­Database, IDB­Object­Store, IDB­Cursor, IDB­Key­Range, IDB­Request, and to the handling of transactions, keys, values, and exceptions (@Taym95, #44128, #43901, #44009, #43914, #44161, #44183, #44059, #44215, #42998, #43805). We’ve made more progress on the Intersection­Observer API , under --pref dom­_intersection­_observer­_enabled (@stevennovaryo, @jdm, #42204). We’re continuing to implement document.exec­Command() for rich text editing (@TimvdLippe, #44529), under --pref dom­_exec­_command­_enabled. This release adds support for the ‘bold’ , ‘font­Name’ , ‘font­Size’ , ‘italic’ , ‘strikethrough’ , and ‘underline’ commands (@TimvdLippe, @jdm, @mrobinson, #44511, #43287, #44432, #44410, #44194, #44030, #44039, #44041, #44075, #44234, #44250, #44331, #44390, #44137, #44293, #44312, #44347). All of the features above are enabled in servoshell’s experimental mode. Servo can now build a very basic accessibility tree for web contents, under --pref accessibility­_enabled (@alice, @delan, @lukewarlow, #42338, #43558, #44437, #44438). This includes text runs, plus nine other non-interactive accessibility roles (@alice, @delan, #44255). We’ve also fixed a crash when reloading pages with accessibility enabled (@alice, #44473), and made accessibility tree updates more efficient (@alice, #44208). We’ve started implementing the Sanitizer API , under --pref dom­_sanitizer­_enabled (@kkoyung, #44198, #44290, #44335, #44421, #44452, #44481, #44585, #44594). We’ve also started implementing Shared­Worker , under --pref dom­_sharedworker­_enabled (@Taym95, #44375, #44440). We’re working on the Wake­Lock API too, under --pref dom­_wakelock­_enabled (@TG199, @rovertrack, #43617, #44343). servoshell

      servoshell for Android now has a revamped browser UI , including a new history view (@espy, #43795), the apk is 30% smaller (@jschwe, #44278, #44182), and we’ve fixed the black screen bug when closing settings or switching back from another app (@yezhizhen, #44327). You can now close tabs on OpenHarmony too (@Narfinger, #42713).

      servoshell 0.2.0 showing the revamped browser UI on Android. from left to
right: viewing a web page, the settings view, the history
view

      As for servoshell on desktop platforms, we’ve fixed some focus- and IME- related bugs (@mrobinson, #43872, #43932), and on Windows, we now install a normal shortcut without the strange behaviour of an “advertised” shortcut (@yezhizhen, #44223).

      For developers When using the Inspector tab in the Firefox DevTools , the Rules panel now includes declarations in ‘@layer’ rules (@arabson99, #43912). When logging expressions in the Console tab, and when hovering over symbols in the Debugger tab, you can now get more information about the contents of functions, arrays, objects, and other values (@atbrakhi, @eerii, #44172, #44173, #44022, #44233, #44196, #44181, #44064, #44023, #44164, #44369, #44262). When using the Debugger tab, you can now use the Scopes panel to inspect local and global variables (@eerii, @atbrakhi, #43792, #43791), you can now debug web worker scripts (@atbrakhi, #43981), and we’ve started implementing blackboxing , aka the Ignore source button (@freyacodes, #44142). We’ve also landed some initial support for the Style Editor tab (@rovertrack, #44517, #44462). We’re working towards re-enabling our automated DevTools tests in CI, which should make the feature more reliable (@freyacodes, #44577), and we’ve landed a small build reproducibility fix too (@jschwe, #44459). For developers of Servo itself, please note that the Cargo ‘release’ profile is no longer #[cfg(debug­_assertions)] (@jschwe, @mrobinson, #44177). If you’ve been using ‘release’ as a “faster ‘debug’ with assertions” build locally, consider switching to ‘checked-release’ or ‘medium’. The pull request template has been updated (@mrobinson, #44135). ‘Testing’ and ‘Fixes’ should go at the bottom of the PR description, and ‘Testing’ is about automated tests, not how you tested the PR locally. We’ve made more progress on the new dev container, which will provide an alternative to our usual procedures for setting up a Servo build environment (@jschwe, @sagudev, #44126, #44111, #44162, #44641, #44109). Keep an eye out for that in the book! In the meantime, did you know that you can use Lix or Nix to build Servo on Linux with a lot less hassle, even if you’re not using NixOS? For now at least, head to the NixOS page in the book to learn more. We’ve also fixed a regression that made --debug-mozjs and MOZJS­_FROM­_SOURCE builds take much longer to complete on Linux when not using Nix (@jschwe, #44346). We’ve fixed building Servo with the ‘jitspew’ feature in mozjs, allowing you to set IONFLAGS to enable JIT logging (@simonwuelker, #44010). We’ve also fixed build issues on Windows and FreeBSD (@zhangxichang, @mrobinson, #44264, #44591). Embedding API

      With this second monthly release of the Servo library, we have some quick notes about API stability and semver compatibility :

      We’ve fixed a build failure affecting embedders with a new or updated Cargo.lock (@jschwe, #44093), and landed several other changes to help us with the Servo library release process (@jschwe, @mukilan, #43972, #44642, #43182, #43866, #44086, #43797).

      Breaking changes:

      You can now load a URL with custom request headers by calling Web­View::load­_request (@Narfinger, @longvatrong111, @mrobinson, #43338).

      You can now retrieve cookies asynchronously by calling Site­Data­Manager::cookies­_for­_url­_async (@longvatrong111, #43794).

      The synchronous version of that method, Site­Data­Manager::cookies­_for­_url, was previously not callable because Cookie­Source was not exposed to the public API, but we’ve fixed that now (@TG199, #44124).

      You can now clear session cookies without clearing permanent cookies by calling Site­Data­Manager::clear­_session­_cookies (@longvatrong111, #44166).

      When intercepting requests with Servo­Delegate:: and Web­View­Delegate::load­_web­_resource, we now include a destination and referrer­_url in the Web­Resource­Request, which can be helpful if you’re implementing ad blocking (@webbeef, #44493).

      You can configure Servo to write all of its storage to a unique directory for that session by enabling Opts::temporary­_storage (@janvarga, #44433). Note that these unique directories currently persist after Servo exits, so it’s an isolation feature, not a privacy feature.

      Window­Rendering­Context::new and Software­Rendering­Context::new now return an error if the given size is less than 1x1 (@freyacodes, @mrobinson, #44011).

      We’ve improved our API docs for Web­View, Web­View­Builder, Web­View­Delegate, ServoDelegate, Prompt­Dialog, Web­Resource­Load, Web­Xr­Registry, Preferences, and servoshell’s EXPERIMENTAL­_PREFS (@simonwuelker, @TG199, @sabbCodes, @jdm, @rovertrack, #43892, #43787, #44171, #43947).

      We’ve also improved our API docs for Opts, Output­Options, Diagnostics­Logging, Pref­Value, servo::opts, and servo­_config (@mukilan, #43802).

      More on the web platform Tab navigation now works across < iframe> boundaries (@mrobinson, #44397), and Ctrl +Backspace (or ⌥`` ⌫) now deletes a whole word in input fields (@mrobinson, #43940). Tab characters are now rendered correctly in < pre> (and other elements with ‘white-space: pre’), with proper tab stops (@mrobinson, @SimonSapin, #44480). Spaces are now rendered correctly in 2D <canvas>, instead of twice as wide as they should be (@mrobinson, #43899). < a href> now correctly resolves the URL with the page encoding (@sabbCodes, #43822). We’ve improved the default appearance of < input type=file> (@sabbCodes, #44496) and < textarea placeholder> (@mrobinson, #43770). All keyboard events , mouse events , wheel events , and pointer events , other than ‘pointerenter’ and ‘pointerleave’ , now bubble out of shadow roots (@simonwuelker, @webbeef, #43799, #44094). ‘error’ events on Window now report the correct filename (source in onerror) and lineno (@Gae24, #43632). console.log() and friends now support printf-style formatting directives , although for now %c is ignored (@TG199, #43897). file: URLs are now considered secure contexts , so they can now use features like crypto.subtle and crypto.random­UUID (@simonwuelker, #43989). Exception messages have improved in Location, Static­Range, and the HTML­Element family of types (@arihant2math, @MuhammadMouostafa, @treetmitterglad, #44282, #43260, #43882). We’ve improved the conformance of fetch algorithms (@yezhizhen, #43970, #43798), focus and tab navigation (@mrobinson, #43842, #44029, #44360, #43859, #44535), form submission (@TG199, #43700), JS modules (@elomscansio, @Gae24, #43741, #44179, #44042), page navigation (@TimvdLippe, #43857), < svg view­Box> (@yezhizhen, #44420), ‘attr()’ (@Loirooriol, #43878), ‘:focus’ (@mrobinson, #43873), ‘font’ (@RichardTjokroutomo, #44061), ‘@keyframes’ (@simonwuelker, #43461), ‘@property’ (@Loirooriol, #43878), ‘load’ events (@jdm, @arabson99, #43807, #44046), fetch­Later() (@TimvdLippe, #43627), axes and buttons on Gamepad (@log101, @rovertrack, #44411, #44357), copy­Tex­Image­2D() on Web­GL­Rendering­Context (@simartin, @mrobinson, #43608), tex­Image3D() on Web­GL2­Rendering­Context (@simartin, #44367), environment­Blend­Mode on XR­Session (@msub2, #44155), mark() and measure() on Performance (@shubhamg13, @simonwuelker, #44471, #44199, #43990, #43753), and Performance­Resource­Timing (@shubhamg13, #44228). We’ve fixed bugs related to console logging (@sabbCodes, #44243), ‘animation’ (@mrobinson, #44299), ‘box-shadow’ (@yezhizhen, #44474, #44457), ‘display: contents’ (@Loirooriol, @mrobinson, #44551, #44299), ‘display: inline- flex’ (@SimonSapin, #44281), ‘display: table- cell’ (@Loirooriol, #44550), ‘display: table-row- group’ (@Veercodeprog, #43674), ‘overflow-x: clip’ and ‘overflow-y: clip’ (@Messi002, #43620), ‘position: absolute’ on grid items (@nicoburns, #44324), ‘word-spacing: ’ (@sabbCodes, #44031), remove­Child() on Document (@rovertrack, #44133), and URL.revoke­Object­URL() (@simonwuelker, @jdm, #43746, #43977, #44035). Performance and stability

      We’ve fixed some big inefficiencies in Servo. append­Child() with nested shadow roots is no longer O(2n) (@yezhizhen, @webbeef, #44016), and we’ve halved the time it takes to load the ECMAScript spec by fixing the O(whole DOM tree) processing of ‘id’ and ‘name’ attributes (@simonwuelker, #44120, #44127, #44117).

      Servo makes its first TLS connection in each session 30–60 ms faster (@jschwe, #44242), and we’ve instrumented the Servo and servoshell startup processes to find more opportunities for optimisation (@jschwe, #44443, #44456).

      Like most browser engines, Servo is a multi-threaded (and sometimes multi- process) system requiring a great deal of IPC messages to keep everything connected. Two key components of this system are the constellation thread, which manages the engine as a whole, and the script threads (or web processes), which render the web pages. Sending these messages can be expensive though, so to reduce unnecessary IPC traffic , we’ve landed an optimisation that allows script threads to selectively receive only the relevant messages from the constellation (@webbeef, #43124).

      We’ve reduced the memory usage of each Attr , Text , and Character­Data node in the DOM by 16 bytes (@mrobinson, @Loirooriol, #44074), and fixed a memory leak when deleting < video controls> or < audio controls> (@Messi002, #43983).

      Our about:memory page is more accurate now too, with new tracking of libc memory allocations on macOS, improved tracking of libc memory allocations on Linux (@jschwe, #44037), and more accurate tracking of Path­Buf and types in tokio, http, data­_url, and urlpattern (@Narfinger, #43858).

      Less memory usage isn’t always better in browser engines though, because there are many kinds of caches and other optimisations we can do to make browsing the web faster, at the expense of increased memory usage. For example, we can greatly speed up prototype checks for DOM objects by storing a number in each object that identifies the concrete type, at the expense of making each DOM object 64 bits larger (@webbeef, #44364).

      Layout can now reuse fragments in later reflows, in many cases that involve block layout or ‘position: absolute’ (@mrobinson, @lukewarlow, @Loirooriol, #42904, #44231). We’re also working on reusing shaping results in later reflows, and making inline layout more efficient (@mrobinson, #44370, #43974, #44436).

      We’ve landed several changes that should reduce the binary size of Servo (@rovertrack, @mrobinson, @nicoburns, @Narfinger, #44227, #44221, #44303, #44338, #44428, #44134).

      We’ve also reduced clones, allocations, borrow checks, GC rooting steps, and other operations in many parts of Servo (@rovertrack, @Narfinger, @Loirooriol, @yezhizhen, @simonwuelker, #44008, #44544, #44271, #44279, #43826, #44052, #44139).

      Several crashes have been fixed:

      We fixed a crash in servoshell when pressing keys like Ctrl+2 or ⌘2 with not enough tabs open (@mrobinson, #44070).

      DOM data structures (#[dom­_struct]) can refer to one another, with the help of garbage collection. But when DOM objects are being destroyed, those references can become invalid for a brief moment, depending on the order the GC finalizers run in. This can be unsound if those references are accessed, which is a very easy mistake to make if the type has an impl Drop. To help prevent that class of bug, we’re reworking our DOM types so that none of them have #[dom­_struct] and impl Drop at the same time (@willypuzzle, #44119, #44501, #44513).

      We’ve improved our static analysis for GC rooting (@officialasishkumar, #44489), and we’ve continued our long-running effort to use the Rust type system to make certain kinds of dynamic borrow failures impossible (@sagudev, @TimvdLippe, @Narfinger, @elomscansio, @Gae24, @rovertrack, @yezhizhen, @nodelpit, #43174, #43524, #43928, #43943, #43942, #43944, #43946, #43952, #43975, #44018, #44175, #44241, #44368, #44406, #44441, #44422, #44475, #44478, #44484, #44476, #44490, #44477, #44494, #44497, #44498, #44495, #44505, #44506, #44507, #44508, #44509, #44510, #44512, #44482, #44527, #44528, #44531, #44534, #44542, #44533, #44543, #44553, #44547, #44563, #44562, #44565, #44558, #44583, #44606, #44605, #44608, #44602, #44584, #44620, #44590, #44254, #44628, #44629, #44638, #44626, #44081).

      Thanks to a wide range of people, we’ve also landed a bunch of cleanups and refactors (@delan, @alice, @Skgland, @atbrakhi, @eerii, @sabbCodes, @jdm, @thebabalola, @CynthiaOketch, @kkoyung, @TimvdLippe, @rovertrack, @webbeef, @arabson99, @yezhizhen, @simonwuelker, @mrobinson, @nicoburns, @longvatrong111, @niyabits, @treetmitterglad, @foresterre, @mukilan, @elomscansio, @freyacodes, @StaySafe020, @TG199, #43772, #44006, #43860, #44121, #44160, #43884, #44154, #44569, #43939, #44003, #44110, #44122, #43824, #44635, #44103, #43978, #44092, #44114, #44277, #44454, #44274, #44237, #44232, #44167, #44214, #43820, #43825, #43810, #43838, #43841, #43847, #43875, #43876, #43889, #43893, #43896, #43881, #43906, #43913, #43908, #43917, #43910, #43921, #43924, #43925, #43907, #43923, #43916, #43909, #43911, #43957, #43969, #43967, #43915, #43954, #43963, #43959, #43955, #44067, #44068, #44071, #44084, #44265, #44115, #44358, #43848).

      Donations

      Thanks again for your generous support! We are now receiving 7349 USD/month (+2.5% from March) in recurring donations. This helps us cover the cost of our speedy CI and benchmarking servers, one of our latest Outreachy interns , and funding maintainer work that helps more people contribute to Servo.

      Servo is also on thanks.dev, and already 33 GitHub users (−4 from March) that depend on Servo are sponsoring us there. If you use Servo libraries like url, html5ever, selectors, or cssparser, signing up for thanks.dev could be a good way for you (or your employer) to give back to the community.

      We now have sponsorship tiers that allow you or your organisation to donate to the Servo project with public acknowlegement of your support. If you’re interested in this kind of sponsorship, please contact us at join@servo.org.

      7349 USD/month

      10000

      Use of donations is decided transparently via the Technical Steering Committee’s public funding request process , and active proposals are tracked in servo/project#187. For more details, head to our Sponsorship page.

  2. May 30, 2026
    1. 🔗 IDA Plugin Updates IDA Plugin Updates on 2026-05-30 rss

      IDA Plugin Updates on 2026-05-30

      New Releases:

      Activity:

      • augur
        • b016db2e: doc: IDADIR must be set at runtime for non-standard IDA locations
      • haruspex
        • 4b1b9bc0: doc: IDADIR must be set at runtime for non-standard IDA locations
      • ida-sigmaker
        • e881b66c: docs(ALGORITHM): add TOC, rejected-optimizations section, Phase 5/6 n…
        • b614aef3: perf: defer seeding for all-wildcard prefixes instead of full scan
        • daca3a21: test(perf): adversarial refine microbench gating Upgrades 1 & 2
        • 6f7ca890: perf: use seed_offsets kernel for index-backed seeding
        • db04edf4: feat: add seed_offsets Cython kernel for index-bucket mapping
        • 93711f65: Merge pull request #44 from mahmoudimus/docs/algorithm-reviewer-revis…
        • e9398b4e: ALGORITHM.md: state the novel application and key use case up front i…
        • 256a597c: ALGORITHM.md: incorporate reviewer critique
      • IDAPluginList
        • 4bc307b3: chore: Auto update IDA plugins (Updated: 19, Cloned: 0, Failed: 0)
      • idasql
        • 0e30c4ac: docs: correct Claude Code plugin install command
      • PseudoForge
      • rhabdomancer
        • 31e699c0: chore: add CLAUDE.md
        • c0bf84b0: doc: IDADIR must be set at runtime for non-standard IDA locations
        • ab021ae0: test: add integration tests for idempotency and custom configuration
    2. 🔗 r/LocalLLaMA Someone out there likely needs this rss

      Someone out there likely needs this | submitted by /u/Signal_Ad657
      [link] [comments]
      ---|---

    3. 🔗 r/Harrogate Looking to make friends rss

      I feel somewhat embarrassed writing this but hopefully it's worth it. Immediately off the bat, this isn't a dating thing. Genuinely trying to find some like-minded people to get a pint with maybe the odd hike or hanging jamming to music. Love a good long yap and I'll talk about much everything and anything. I'm a Harrogate local and 24 years old working full time. Shoot me questions in the comments if you'd like or message me asking more on who I am. It'd just be nice to get out of the house a bit more

      - bit of nerd

      -star wars

      -video games

      -board games

      -pints

      -music

      -hikes

      And much more. :)

      (Not a dating or hookup thing, happily taken)

      submitted by /u/Bigbrizzlebear
      [link] [comments]

    4. 🔗 r/reverseengineering I reverse engineered how Plex gates its Pass features, then wrote a tiny patch that flips them all on (Linux) rss
    5. 🔗 r/LocalLLaMA nvidia/Qwen3.6-35B-A3B-NVFP4 · Hugging Face rss

      nvidia/Qwen3.6-35B-A3B-NVFP4 ¡ Hugging Face | The NVIDIA Qwen3.6-35B-A3B-NVFP4 model is the quantized version of Alibaba's Qwen3.6-35B-A3B model, which is an auto-regressive language model that uses an optimized transformer architecture. For more information, please check here. The NVIDIA Qwen3.6-35B-A3B-NVFP4 model is quantized with Model Optimizer.

      Post Training Quantization

      This model was obtained by quantizing the weights of Qwen3.6-35B-A3B to NVFP4 data type, ready for inference with vLLM. Only the weights and activations of the linear operators within transformer blocks in MoE are quantized. This optimization reduces the number of bits per parameter from 16 to 4, reducing the disk size and GPU memory requirements by approximately 3.06x.

      Evaluation

      The accuracy benchmark results are presented in the table below: | Precision | MMLU Pro | GPQA Diamond | τ²-Bench Telecom | SciCode | AIME 2025 | AA-LCR | IFBench | MMMU PRO
      ---|---|---|---|---|---|---|---|---
      BF16 | 85.6 | 84.9 | 95.5 | 40.8 | 89.2 | 62.0 | 62.3 | 74.1
      NVFP4 | 85.0 | 84.8 | 94.7 | 40.6 | 88.8 | 62.0 | 62.8 | 74.5

      submitted by /u/pmttyji
      [link] [comments]

    6. 🔗 r/Harrogate Mobile data signal in Knaresborough is so bad. rss

      In town yesterday and it just flat out doesn't work. Not just slow but doesn't work for me a lot of the time.

      Is there anyone I can write to?

      I'm with Lebara who run off the Vodafone network. But I have friends with EE who said their signal is just as bad.

      submitted by /u/Famous_Yorkshire
      [link] [comments]

    7. 🔗 anthropics/claude-code v2.1.158 release

      What's changed

      • Auto mode is now available on Bedrock, Vertex, and Foundry for Opus 4.7 and Opus 4.8. Opt in by setting CLAUDE_CODE_ENABLE_AUTO_MODE=1
    8. 🔗 r/LocalLLaMA Is he crazy to say that? rss

      Is he crazy to say that? | submitted by /u/pmv143
      [link] [comments]
      ---|---

    9. 🔗 HexRaysSA/plugin-repository commits sync repo: +1 release, ~1 changed rss
      sync repo: +1 release, ~1 changed
      
      ## New releases
      - [IDASQL](https://github.com/allthingsida/idasql): 0.0.16
      
      ## Changes
      - [IDASQL](https://github.com/allthingsida/idasql):
        - 0.0.1: archive contents changed, download URL changed
      
    10. 🔗 r/LocalLLaMA I compared all specs of the major GPUs/machines that are being used here, because bandwidth is not everything. Some of ya'll need a reality check. rss

      I compared all specs of the major GPUs/machines that are being used here, because bandwidth is not everything. Some of ya'll need a reality check. | Clarification: This post was meant to curb the old and new Mac recommendations to new members/buyers, not to insult people with existing machines that are perfectly fine for their usecase. Edit: OKAY GUYS Pro 6k exists too, understood. M3 Ultra is also closer to 30k, not 12k (ouch). Extended table below: | Device | Price used | FP16 TFLOPS | VRAM | Bandwidth | $/TFLOP | $/GB | Power | W/TFLOP
      ---|---|---|---|---|---|---|---|---
      RTX PRO 6000 Blackwell WS | ~$10,000 | ~463 | 96GB | 1792 GB/s | ~$21.6 | ~$104.2 | 600W | ~1.30
      RTX PRO 6000 Blackwell Max-Q WS
      | ~$11,000 | ~380 | 96GB | 1792 GB/s | ~$28.9 | ~$114.6 | 300W | ~0.79
      Intel Arc Pro B70 | $949 | ~183.5 | 32GB | 608 GB/s | $5.2 | $29.7 | 290W | 1.58
      Radeon Instinct MI50 32GB | ~$535–560 used eBay | 26.5 | 32GB | 1000 GB/s | ~$20.2–21.1 | ~$16.7–17.5 | 300W | 11.32
      Radeon AI PRO R9700
      | $1,299 | 191.0 | 32GB | 640 GB/s | $6.8 | $40.6 | 300W | 1.57
      RTX 4060 Ti 16GB | $400 | ~88.3 | 16GB | 288 GB/s | $4.5 | $25.0 | 165W | 1.87
      RTX 5060 Ti 16GB
      | ~$550 | ~94.9 | 16GB | 448 GB/s | ~$5.8 | ~$34.4 | 180W | 1.90
      RTX 5070 Ti 16GB* | $1,000 | ~175.8 | 16GB | 896 GB/s | $5.7 | $62.5 | 300W | 1.71

      • again gpu's that support below FP16/BF16 precision and are 2x-4x faster with it

      Hot takes:
      - Mac studio is overpriced Raspberry Pi that is way more inefficient than people think (together with most macs). M5 MBP is better with the "tensor" matrix MMA, but not that much better value wise

      - Spark was actually decent when it was just 3-4k. Strix is obviously much better now
      - 3090 are complete overkill for single stream usage, V100s are much better value if you can find them cheap. P40 are very niche, but decent if you want exactly 48GB of vram, run moe and don't have money for Mi50s or V100s.
      - P100s are extremely underrated entry level LLM gpu's that are not talked about enough. 200 bucks (dual gpu) for a combined 32GB of 700GB/s memory and M3 Ultra compute is crazy.

      I understand that this sub is now filled with gamers who do nothing but ERP, but for people who do something actually productive (read as experimenting without investing high 5 figures into their setups), prefill is still very important and this is completely hidden by the "generate 1000 word story" benchmarks that most posts or big AI youtube channels do. Especially with multimodal models that eat up context like mad.

      I'm still collecting data for prefill and generation charts I'd like to do in the future... I also couldn't find much reliable power data, so if you could provide that from your own setups in the comments I'll be glad.

      Thanks for coming to my ted talk.

      submitted by /u/Ok_Top9254
      [link] [comments]

    11. 🔗 Mario Zechner How to build a shitty robot rss

      A work in progress post about building a shitty robot.

  3. May 29, 2026
    1. 🔗 IDA Plugin Updates IDA Plugin Updates on 2026-05-29 rss

      IDA Plugin Updates on 2026-05-29

      New Releases:

      Activity:

      • idasql
        • d6f50394: idasql v0.0.16: writable type tables, address resolution, pre-9.2 SDK…
        • cd78ac5c: plugin: restore IDA 9.0 compatibility (#30)
      • plugin-ida
        • 25ee0b29: chore: add uv cooldown (exclude-newer=7 days) (#13)
        • 699c5ca3: chore(deps): Bump step-security/harden-runner from 2.19.0 to 2.19.4 (…
    2. 🔗 r/LocalLLaMA Breaking the music supply constraint rss

      Breaking the music supply constraint | I just cancelled my music subscriptions to save some cash and wanted to share the self-hosted music supply chain that replaced them. A nice side effect of this setup is breaking the constraint of a finite supply catalog that is tailored for the masses:

      1. 2 x DGX Spark linked via ConnectX 7 running Plex and multiple Ace-Step 1.5 XL models in parallel for music generation with GePa prompt optimization. Also holds my organic music that the models can remix. TODO: a reinforcement learning from human feedback interface.
      2. iPad Pro running Prism as a Plex client for bitperfect and sample rate-matched audio.
      3. Schiit stack -> Hifiman Arya Stealths

      This effectively gives me an infinite supply of music for free, that is personalized and private. It's immensely satisfying listening to Shrimp Bizkit and Phlegminem on repeat, I much prefer this to the organic music created after 2011. My only problem is the loss of community, I have noone to share my new favorite songs and artists with because they're generated for me. If anyone wants to hop on to my Plex share to discuss, let me know! submitted by /u/entsnack
      [link] [comments]
      ---|---

    3. 🔗 anthropics/claude-code v2.1.157 release

      What's changed

      • Plugins in .claude/skills directories are now automatically loaded, no marketplace required
      • Added claude plugin init <name> to scaffold a new plugin in .claude/skills
      • Added autocomplete for /plugin arguments: subcommands, installed plugin names, and plugins from known marketplaces
      • claude agents: the agent field in settings.json is now honored for dispatched sessions, with --agent <name> to override it
      • EnterWorktree can now switch between Claude-managed worktrees mid-session
      • tool_decision telemetry events now include tool_parameters (bash commands, MCP/skill names) when OTEL_LOG_TOOL_DETAILS=1
      • Worktrees managed by Claude are now left unlocked when the agent finishes, so git worktree remove/prune can clean them up
      • Fixed unprocessable images (zero-byte, corrupt) attached via paste, MCP, or dialog crashing the request instead of becoming a text placeholder
      • Fixed sandbox network permission prompts appearing in auto and bypass-permissions mode when using the desktop app, IDE extensions, or SDK
      • Fixed claude agents completed sessions not retiring when an idle subagent was still parked or had leaked a backgrounded shell
      • Fixed claude agents pressing Esc not cancelling a slow "opening…", leaving the list unresponsive
      • Fixed background agent worktrees under .claude/worktrees/ being orphaned after the 30-day job retention sweep
      • Fixed background sessions re-attached after a sleep/wake not telling the model the correct date
      • Fixed copy-on-select in claude agents not reaching the system clipboard inside tmux with set-clipboard on (regression in 2.1.153)
      • Fixed --resume not reporting background subagents that were running when the previous Claude Code process exited
      • Fixed the --resume session picker leaving its contents on the terminal after exiting in fullscreen mode
      • Fixed --worktree and --worktree --tmux returning to the canonical repo root instead of the current linked worktree
      • Fixed the /model picker showing an incorrect "Newer version available" hint when the selected model is already the newest in its family; the pinned-model row now shows the model's description instead of its raw ID
      • Fixed literal markdown markers (backticks, asterisks) appearing in the in-progress message text in fullscreen mode
      • Fixed the terminal freezing after approving the managed-settings security dialog at startup
      • Fixed a rare duplicate line appearing in scrollback after the terminal UI redraws
      • Fixed right-click paste duplicating the clipboard in the VS Code, Cursor, and Windsurf integrated terminals
      • WSL: fixed image paste (alt+v keybinding), screenshot paste on Windows 11, and added support for dragging images from Windows Explorer
      • Improved performance of long and resumed conversations by eliminating redundant message-rendering recomputations
      • /terminal-setup now disables GPU acceleration in VS Code/Cursor/Windsurf integrated terminals to prevent garbled-text rendering
      • The Feature of the Week credit-claim status now appears as a notification in the status area instead of a line above the prompt
      • claude agents: slash-command autocomplete in the dispatch input now matches substrings
      • Removed the "bash commands will be sandboxed" startup banner — sandbox status still shows in /status and when a command is blocked
      • Removed the "/ide for …" startup hint toast
      • [IDE] Fixed clicking Stop while a background subagent is running not actually stopping it
      • [VSCode] Fixed the fast mode indicator not appearing on Opus 4.8
      • Pressing backspace right after a workflow trigger keyword now dismisses the workflow request (same as alt+w) instead of deleting a character
      • Added a "Workflow keyword trigger" setting in /config to stop the word "workflow" in a prompt from triggering a dynamic workflow
    4. 🔗 mahmoudimus/ida-sigmaker v1.8.0 release

      sigmaker.py - IDA Python Standalone Python Release

      Release Information

      What changed

      Changed

      • Find shortest unique signature for current function is faster again on large databases, and the gap widens as the database grows. The per-starting-point seed scan is replaced by a two-byte position index built once per search, so each starting point is seeded from the rarest byte run in its pattern in time proportional to that run's frequency, not the database size. About 2.48x over 1.7.3 on a 16 MB module. (#35)
      • The seed is now chosen from the most selective run, one byte or two. A single rare byte can be more selective than a common two-byte pair, so the search picks whichever run has the smallest index bucket. (#36)

      Internal

      • Two-byte bucket position index built in the Cython _speedups extension as a nogil counting sort; one-byte buckets telescope from it for free (a range view, no second index). (#35, #36)
      • Per-byte candidate refinement moved into the Cython extension (refine_offsets): in-place nogil compaction over a typed uint32 buffer with zero per-call allocation. Refinement on the largest function of a 16 MB module dropped from ~14 s to ~0.28 s; that function's total search fell from ~24 s to ~15.6 s. (#36)
      • _ByteIndex is a frozen slots dataclass; the runtime array module is aliased as py_stdlib_arr_mod to keep it distinct from the cimported C-level API. (#36)
      • Signatures produced are byte-identical to 1.7.3; only the speed of finding them changed. (#36)

      Documentation

      • New ALGORITHM.md deriving the match-set math, the counting-sort index, the selectivity proof, and what is novel about the approach. README gains a table of contents, a Performance section with benchmarks, and a library stability contract for downstream embedders. (#36)

      Description

      This is a standalone release of the IDA Pro signature maker plugin. The file sigmaker.py contains the complete plugin code that can be directly imported into IDA Pro.

      Installation

      1. Copy sigmaker.py to your IDA Pro plugins directory
      2. Restart IDA Pro
      3. Use Ctrl+Alt+S to access the Signature Maker menu

      License

      See the main repository for license information.

    5. 🔗 r/LocalLLaMA Fed up with vibe coders, dev sneaks data-nuking prompt injection into their code rss

      Fed up with vibe coders, dev sneaks data-nuking prompt injection into their code | I guess the lawyers are sharpening their pencils already... submitted by /u/DeltaSqueezer
      [link] [comments]
      ---|---

    6. 🔗 sacha chua :: living an awesome life Yay Emacs 32: Sacha and Prot Talk Emacs: May I recommend... rss

      In this livestream, I chatted with Prot about the May 2026 Emacs Carnival theme "May I recommend". It was a joint braindump of quick recommendations for people at different points in their Emacs journey, building on our conversation about newbies/starter kits and the newcomer experience all the way up to power users, Emacs Lisp coders, and package developers.

      View in the Internet Archive, watch or comment on YouTube, read the transcript online, download the transcript as a PDF or VTT, or e-mail me.

      Related links

      You can add the iCal for upcoming Yay Emacs episodes to your calendar. https://sachachua.com/topic/live/upcoming-livestreams.ics

      Find more Yay Emacs posts or join the fun: https://sachachua.com/topic/live

      Chapters

      • 0:00 Opening
      • 2:27 Tip: Less is more. Start small.
      • 4:07 Tip: Start with what is built in
      • 4:27 Skill: Figuring out the words to look for
      • 6:25 Tip: Be okay with starting over
      • 8:26 Skill: Learning to discover
      • 8:42 Tip: Read manuals for fun
      • 10:16 Tip: Use Emacs bookmarks to save your place in the manual
      • 10:43 Tip: Generally, investing time into navigation and note-taking workflows pays off
      • 12:19 Skill: Keyboard macros
      • 12:53 Skill: Modifying the behavior of code via hooks and advice
      • 13:15 Tip: Learn to think in terms of buffers and windows
      • 14:07 Skill: Reading the source code; Tip: Just jump in
      • 15:33 Tip: edebug is great for exploring code
      • 16:26 Tip: Reading tests can help you understand code, too.
      • 17:02 Skill: Idiomatic Elisp
      • 17:17 Tip: Write tests.
      • 17:52 Tip: When writing Emacs Lisp that expects a list, use plurals
      • 18:59 Tip: When naming, be verbose rather than terse
      • 19:46 Tip: Iterate on your workflow in small steps
      • 20:20 Tip: Make things more automatic, and use context-sensitive clues
      • 24:48 Skill: Thinking in terms of elements
      • 26:16 Skill: Reading other people's configuration and adapting ideas to yours
      • 27:07 Tip: Start with focusing on just one thing
      • 27:33 Blog posts and videos are useful
      • 28:09 Tip: Take notes as you learn, and ideally, share them too.
      • 28:54 Tip: Accept being a beginner.
      • 31:16 Group: Power users
      • 32:13 Tip: Browse through package lists
      • 32:25 Tip: Dive deeply into the packages you have: customization options, code, etc.
      • 32:41 Tip: find-library gets you to the source code, occur can help you browse it
      • 33:29 Tip: You can also browse through Customize
      • 33:48 Tip: Have fun with randomness and serendipity
      • 34:32 Tip: Check out people's workflow descriptions and stories
      • 35:42 Resources: manuals, Mastering Emacs, Emacs Lisp Elements
      • 37:29 Skill: Figuring out what's possible and making a habit of writing tiny functions
      • 37:45 Skill: Being mindful of what you do over and over again
      • 38:26 Tip: Keyboard macros can help you jumpstart custom functions
      • 39:11 Tip: Use C-h k (describe-key) to describe shortcuts or menu items
      • 40:04 Tip: You can set up M-x to show keyboard shortcuts too (Marginalia?)
      • 41:26 Resource: Emacs from Scratch series by System Crafters
      • 41:50 Tip: Old tutorials can still be useful, although don't treat them as the sole source of truth (things may have changed since then)
      • 42:55 Skill: Finding preferred resources
      • 44:12 Tip: If you find your tribe, look for ways to keep in touch with them
      • 45:00 Tip: Manage unequal RSS frequencies with folders or tags
      • 46:33 Tip: Doing more things in Emacs has compounding benefits
      • 48:31 Tip: Learn to think of it as just text
      • 49:46 Tip: Take notes along the way
      • 50:16 Tip: Explore different ways to navigate and act on things
      • 51:09 Tip: Learn to combine different building blocks
      • 52:47 Tip: Get the hang of keybinding conventions
      • 56:06 Tip: Use which-key for keybinding help
      • 57:41 Tip: Figure out your ergonomics

      Transcript

      Expand this to read the transcript

      0:00 Opening

      image from video 00:00:38.400Sacha: My typing is still going to be very loud, but that's okay.

      Prot: That's part of the charm.

      Sacha: Okay. All right. Here we go. Let's go live. Hello, everyone. This is Yay Emacs [32]. I forgot which number. Anyhow, I'm here with Prot because it's Emacs Carnival for May 2026, and the theme is "May I Recommend" because I like puns and couldn't pass up the chance to say "May." So "May I recommend..." is our topic, and our goal for this one is to brain dump a whole bunch of things that people might find useful in their Emacs learning journey. We've already talked about newbies and starter kits in the previous two conversations we've had in Sacha and Prot Talk Emacs. This time, we're going to focus more on *users* who are getting started with... They've decided this is going to be their everyday tool. They want to learn more about keyboard shortcuts and finding their way around, building the habits, finding their preferred resources. *Power users*, maybe, who are starting to look at different packages, these are maybe the people who are saying, okay, maybe let's try this package for working with Org Mode in addition to the basic stuff, or let's try doing email in Emacs. *Customizers*, who are beginning to get into Emacs Lisp to write functions. This is where you start to customize it a lot more to your tastes and your workflows. *Contributors*, people who are sharing their source code, maybe even turning it into packages, participating mailing lists and discussions. So this whole range of people all working on different skills at different levels. What I think we're going to do with this is we're just going to braindump a whole bunch of recommendations. You're welcome to ask questions, and I'll ask you questions as well. We'll just untangle everything and organize everything afterwards.

      Prot: That's great.

      Sacha: There we go. In this list of skills that people can develop, are you thinking of other skills that aren't on this list yet that do make a big difference to how people use and learn Emacs?

      Prot: I need to enlarge my screen a little bit. I think what you have there is good.

      2:27 Tip: Less is more. Start small.

      Prot: What I had in mind also is more of a meta-point, or more general thing, like an approach style, which is "less is more," if I were to condense it. Start small. Make sure you make it work when it's small. Extend it from there. Don't start big and try to simplify it, because that doesn't work.

      Sacha: I grouped that idea under managing time, notes, and attention and also breaking things down, because the overwhelming nature of things is something a lot of people struggle with, both Emacs and elsewhere. Even just that meta-skill of saying, "Okay, this is a small chunk that I'm going to focus on because I know that's what my brain can handle" versus "let's architect this entire thing" and you're six hours down the line and you're nowhere near the thing that you want it to do.

      Prot: And of course Emacs invites you for that because it's like, here are like a hundred powerful tools for you to combine in ways that nobody else has thought of before, right? So it's like asking you to do that, but it's a trap. You don't want to go down that route. Or at least don't go there too early.

      Sacha: Managing the rabbit hole. Yes, there are going to be a lot of temptations and some of those temptations are quite legitimate. Yeah, you do have to figure this part out in order to get this other thing that you wanted working. But sometimes it's just a trap.

      Prot: Yeah.

      Sacha: So that's managing. What other meta-skills here should we talk about as a framework so that when we dive into the specifics, we know we're covering a lot of the ground people need?

      4:07 Tip: Start with what is built in

      Prot: Not so much a meta skill, but consistent with this line of reasoning is as a good heuristic, start with what is built in and extend from there, because usually what is built in will give you a baseline of functionality. It works with a "less is more" approach.

      4:27 Skill: Figuring out the words to look for

      Sacha: I feel that sometimes figuring out the words to look for, finding out what it might be called in Emacs source or in the built-in packages... That's something that's hard to develop unless you're reading manuals and reading other people's posts because the terminology can be quite arcane.

      Prot: Oh yeah, for sure.

      Sacha: Getting a sense of what might be built in and what it might be called and where to look for it, I think, is definitely a skill.

      Prot: One good way to think of this is, what do I want to do? In the most simple form, if you forget about Emacs for a second, and you're like, what am I trying to do? I'm trying to write a blog, or I'm trying to deal with email correspondence, or I'm trying to manage my TODOs. In its most simplest form, how can I solve this problem? That can already help you formulate the questions.

      Sacha: Formulating the questions is actually really hard. Sometimes people don't even notice that there's a question that they can ask, and they don't know what kinds of solutions might address that problem actually. They get distracted by A, but actually it's B that will solve the problem. Considering the different kinds of solutions that can address the same problem, developing a sense of which ways are easier to do the Emacs way versus harder to do. Why make something really complicated when a built-in package or whatever can solve that problem in a more elegant way? All of these things require the development of intuition.

      Prot: Yes, yes, and with some experience, of course, that helps, for sure. But then it's the other, which you can also consider as a meta skill.

      6:25 Tip: Be okay with starting over

      Prot: I believe there was also a point of this, be okay with declaring bankruptcy in Emacs. Bankruptcy, I think... the essence of that is not really much bankruptcy, but be okay with trying something, which is an experiment, and then learning something from it, distilling the essence of that, and then trying something else. I think a sense of experimentation will help you build that skill of, okay, now I can intuitively figure out what works and what doesn't work.

      Sacha: I think that's a really interesting point because sometimes you get very attached to "there's this thing that I've started to build" and then you start bolting more and more things onto it, when really, sometimes the prototype is your way of understanding the problem. Then you take it all out and you say, okay, now that I understand a little bit more, what can I make? How do I change my workflow with that new understanding? Sometimes it's as extensive as declaring Emacs bankruptcy and starting again from scratch. Sometimes it's just maybe "The approach that I'm taking is not a fruitful one. I should go try something else."

      Prot: Yeah, exactly. You can only have that feedback loop if you try, so trial and error is the way to go.

      Sacha: @gcentauri has a question or a comment about discoverability, figuring out how to navigate Emacs in order to discover things. Where would we put that in this skill? This is figuring out the words as well, right? Isn't it?

      Prot: Yeah, by the way, I'm in the chat here.

      Sacha: Where did you read that?

      Prot: I see it here. It was off my screen. I see it now. And of course Christian... I'm reading the temperatures in Western Europe. They are terrible. Yes, I know.

      Sacha: Yeah, big heat wave.

      8:26 Skill: Learning to discover

      Sacha: So, figuring out discoverability, learning how to navigate Emacs. Emacs is lovely. It's self-documented, everything at your fingertips, but you've got to know how to get those fingers on them.

      8:42 Tip: Read manuals for fun

      Prot: The manual helps. It will present some of that. But of course, you have to read the manual. So you are in a situation where you have to have the skill of reading the manuals in order to discover, but to discover... So yeah, it's a tricky thing. You have to know where the manuals are.

      Sacha: Yeah, and you have to be unintimidated by them, I think. I got into it easy because I've always been used to reading books above my level. Even as a kid, I was reading my sister's data structures and algorithms books. I didn't understand anything the first time around. But after nine times through, you start to understand some of the concepts and how they go together. The more you read something, the more of those concepts start to make sense to you. You read it, you read other things around it or related to it, and then the jargon becomes less impenetrable. You begin to understand it. So one of my recommendations is I recommend reading the Emacs manual, the Org manual, all these book-shaped things for fun. Even if you don't think you're going to immediately use 90% of the things, every time you read it, you're going to learn something.

      Prot: Yeah. Plus, of course, you will know you are an Emacs user if you are reading manuals for fun.

      Sacha: How else are you going to find out about Org spreadsheets and whatnot, right? It's just too big to fit in your brain.

      Prot: Correct. Yeah, that's really good. You could even make it a habit of, okay, this day I will read one chapter from the manual.

      10:16 Tip: Use Emacs bookmarks to save your place in the manual

      Prot: Actually, to say something on this, if you learn about the bookmark mechanism of Emacs, you can bookmark info manuals. So if you are reading the manual from inside of Emacs, you can use the bookmark facility to be like, last point in the Emacs manual. You could have a bookmark that is a rolling bookmark, right? So you could be updating it whenever you go to the next chapter. This way, little by little, you can read the manual.

      10:43 Tip: Generally, investing time into navigation and note-taking workflows pays off

      Sacha: In general, figuring out your navigation and note-taking workflows so that they're super convenient for you, whether that's Denote or Org Mode Capture or whatever else that you're using... As you read, taking notes on the things that you find interesting in a way that makes it easy to jump back to more information is definitely worth the upfront investment of learning.

      Prot: Yeah, 100%.

      Sacha: @gcentauri confirms they are actually a true blue Emacs geek. "Was reading the manual right before bed and came across the forms library. No idea it existed." Read stuff, make it easier for you to jump back to the place that you left off or the parts that you found interesting. That's a great recommendation.

      Prot: Just to add another metaskill related to this. Don't read it before going to bed because if you discover something useful, you are not going to sleep.

      Sacha: I think the idea there is get really good at telling your brain, yes, that's really cool, but if you stay up until 1, you are going to regret it. So just add a TODO and let it go.

      Prot: Exactly.

      Sacha: This may have happened to me a number of times.

      Prot: Yeah, yeah, same. So, only read the manual in the morning or when you wake up.

      Sacha: Are there other metaskills that are not yet captured in this or do we start digging into each of these skills?

      Prot: I say we dig in and if we think of something we can always add it later.

      Sacha: All right. What strikes your attention here? Which of these things?

      Prot: No, no. You can go wherever. I don't mind. Anything will do well.

      12:19 Skill: Keyboard macros

      Sacha: There's a whole lot of stuff here in the customizer, packager thing around modifying or gluing together code that is not something easy for people to pick up because they're just not used to it in other programming languages or platforms or whatever. Things like: you could use keyboard macros to cobble together a quick workflow. You don't even have to write a big function. Just developing the intuition that, oh, this is a set of repeatable functions or repeatable commands is one thing,

      12:53 Skill: Modifying the behavior of code via hooks and advice

      Sacha: all the way to "this is how I use hooks and advice to either modify the behavior of something where the person who coded it has anticipated that a hook will be needed here, or advice in case they didn't plan for it at all." You're just going to override things yourself. How do people develop this sense of what's possible and how to do things?

      13:15 Tip: Learn to think in terms of buffers and windows

      Prot: Yeah, it's a difficult skill but it's something you develop by experience. The point to remember is that in Emacs, at its core, you have buffers and everything is a buffer and buffers are displayed in windows If you think in terms of that abstraction, something like a keyboard macro becomes a tool that will jump between buffers, will switch windows. It has no problem doing any of that. You are not limited in your thought to, okay, I have to work exactly where I am right now. I think that's a general approach that goes very far with what you do. Of course, when you are thinking of the advice and the hook, that I think is a little bit more advanced because you need to also have the skills to write advice. With hooks, maybe not. But for advice, you will need to understand exactly what is happening.

      14:07 Skill: Reading the source code; Tip: Just jump in

      Sacha: I have definitely jumped ahead here because this also requires the skill of reading people's code in order to find out there is a hook or there is some advice that you can do, or there's a variable and this is how you can let bind it to temporarily change its value during this part of the code. Let's talk about reading source. What sorts of things help people develop that skill of reading the source code?

      Prot: You have to just jump in at some point. Like, you might do it by accident when you are in a help buffer and either you misclick S, which goes to the source, or you follow the link from above. But anyway, the point is it's a good skill to just, a good habit rather, just jump in and try to read it even if you don't know any programming. Try to read it as if it's English and try to see what you can understand. And of course, some functions will be extremely difficult. Others will be more straightforward. So I think eventually by exposure through osmosis, as it were, you will already learn something.

      Sacha: I love the fact that our functions in variable names are often very long and it makes sense in English because we're not trying to squeeze into some very concise, very terse convention. Just put a full sentence in there. It's fine. We just use completion anyway. It's all good.

      15:33 Tip: edebug is great for exploring code

      Sacha: One of the tips that I'll put in here because people sometimes miss it is the power of Edebug. If people haven't come across Edebug yet, it's great because you can interactively step through what the code is actually doing and you can evaluate what the value is of this variable at this point. And every so often I had to go into the Edebug menu bar and remind myself, okay, you can set conditional breakpoints and all these other things that I have to remember that exist and can be used. But Edebug, if you're going to learn Emacs Lisp, learn Edebug.

      Prot: Edebug is really powerful for sure and it's especially useful when you have functions that are relatively long. I mean what they are doing like they have a lot of steps and you have to understand the flow. Like if it's a very short function maybe you don't benefit all that much from eDebug but in practice you will need it. It's very powerful.

      16:26 Tip: Reading tests can help you understand code, too.

      Sacha: And the other thing I want to point out is that sometimes packages have tests and reading the tests can give you even more of an idea of how this function is supposed to behave. It's not always the case, but when there are tests, they're great.

      Prot: In an ideal world, we will update our tests.

      Sacha: Alright, so that's reading source code. There's so much that's really interesting to read. Sometimes you come across interesting idioms for Emacs Lisp and you're like, oh yeah, that's a great way to iterate through all the buffers and match a certain thing, whatever.

      17:02 Skill: Idiomatic Elisp

      Sacha: And so if you're in this customizer phase of things and you want to move to the contributor level, learning idiomatic Elisp is definitely like, okay, it makes things a lot easier.

      17:17 Tip: Write tests.

      Sacha: Charlie says, "Edebug and ERT tests change the way I develop Elisp. No longer flying blind." Yeah, great. In particular, I tend to break things whenever I make changes, so it's really nice to be able to say, okay, I'm going to nail down this behavior, at least for now. With a little bit of thinking, sometimes you can write tests for things that you would do interactively. So you can test a whole lot more because you have buffers and windows than you might in other languages.

      Prot: Yeah, correct, correct. And you get to see it live.

      17:52 Tip: When writing Emacs Lisp that expects a list, use plurals

      Prot: Just to say on this point of when you are going through the tests and through everything, one basic thing which is in idiomatic Emacs Lisp is when you are writing the parameters of a function, if you are expecting a list, you use plural. For example, you have a function that goes through buffers. Your parameter is just called buffers. That alone should tell you that it's a list of stuff. You don't say "list of buffers," right? That's superfluous. You just say buffers. This automatically means it's a list. So that's very common. You will see this a lot.

      Sacha: Here I am, I've been calling my variables buffer-list. Sometimes figuring out what I should call a function or call an argument is a bit challenging, but I figure I'll just name it whatever comes to mind and then I can defalias it or do a search and replace afterwards.

      18:59 Tip: When naming, be verbose rather than terse

      Prot: When in doubt, of course, be verbose rather than terse.

      Sacha: Oh, yes. When you find yourself still using the wrong words to try to find it again, just add more aliases and you'll find it eventually.

      Prot: More verbose. More words. All the words.

      Sacha: All the words. All right. What are the things here do we want to dig into? Adopting is always an interesting challenge and it's a challenge at all levels here, right? From the user trying to figure out "How do I remember to use this keyboard shortcut?" to "I've written this new function, it's great, but I have to remember to use it." Do you have any recommendations around changing the workflow?

      19:46 Tip: Iterate on your workflow in small steps

      Prot: In accordance with what I said in the beginning, iteratively. Try to memorize one. You have this new function that, let's say, streamlines how you list files in a directory, whatever, I don't know. Use it. Don't have all 10 functions and try to remember them. Just use one. After two weeks, use the next one. After four weeks, use the third one, and so on. Little by little, make it something that you just do automatically, you don't think about it, with the recognition that you want to remember them all.

      20:20 Tip: Make things more automatic, and use context-sensitive clues

      Sacha: In fact, going on that point of automaticity, I also like making sure this stuff happens without me having to think about it. If there's a hook that I can take advantage of to just have it automatically turned on, or if there's a context menu I can add it to so that I know, okay, if I do this, then I'll see it in a shorter list. I can get to it more easily instead of having to remember how to find it and all these details. All these little ways to make it easier for myself to automatically enjoy the improvements, or at least have a chance of finding it again.

      Prot: Yeah, yeah. This is in the spirit of prefix keys, with the help of the which-key package, for example, or what Embark is doing. Of course, there are different approaches. Maybe you want to set up a transient and in the given mode, you just type question mark, for example, and it breaks up your transient with what you want to do. There are various strategies you can go about to do something like that. I lost your audio, just to say. Yeah, no problem. Let's see. Of course I can sing in the meantime, but I don't think the audience will like it. Let's see. Yeah, no problem. No stress. Of course we could do this. Don't forget that there was a time in history where cinema thrived with technology like this. So it will work. Okay, I can read a little bit from the chat. So something I love doing is after I've learned that one function at the late...

      Sacha: Can you hear me now? No. Test. Okay, okay, okay. Woohoo! Successful panicking. Alright. Great. Great. Magic? Something is happening? I don't know what is happening. My video is less important. It's fine. You may continue. Oh yeah, for sure.

      24:48 Skill: Thinking in terms of elements

      Sacha: Even just thinking, okay, here are the elements that it can work on and here are the actions that I want to associate with those elements. I guess it starts with the intuition of what are the things that I can address. And what I do is I just look at the embark source code and I'm like, oh yeah, okay, Org headings, that makes sense, and variables and all that stuff. I always like looking at people's setups. Okay, this one says you are now too quiet. Can you say something? Okay, okay, this is definitely a me problem. Hang on a second. Oh, okay, okay, okay, I think... Ah, technology. Why is it so fun? Test. Test. No, this is not right. No, no, no.

      Prot: Let me know if you can hear me now. And of course, in the meantime, I can comment on the weather. I don't know if I can be heard. But in Western Europe, the temperatures are record high. And here in the mountain of Cyprus, it's like 20 degrees Celsius max.

      Sacha: Okay. So did you hear any of the stream? Is Prot's audio okay now? You've got to keep talking, I guess.

      Prot: Yeah.

      Sacha: Oh, my goodness.

      Prot: It's completely different.

      26:16 Skill: Reading other people's configuration and adapting ideas to yours

      Prot: "We can hear him loud and clear." Wonderful.

      Sacha: Back to braindumping. Very good. So we talked about Embark and other things and practices and workflows. I learned by reading other people's configurations, but it does take a fair bit of intuition in the first place to realize this part of the configuration means this, and how to adapt that into my own workflow. Is there a way for people to develop that aside from just reading tons and tons of configs?

      Prot: At some point you just have to try. You just have to be like, "Okay, this package everybody raves about, they must be doing something good. I don't know what that is, so I have to try it and see for myself."

      27:07 Tip: Start with focusing on just one thing

      Prot: Then for something like Embark... We are just using it as an example, but I think it's a good example for other things. Something like Embark can do a million things, but you can also use it for just one thing, right? Find the one thing that you can use it for, use it for that, then figure out what is the second thing and take it from there. The same can be said for Org and all sorts of packages.

      27:33 Blog posts and videos are useful

      Sacha: I find that sometimes videos are useful for it in terms of seeing it in context, but on the other hand, sometimes I don't have the patience to watch a whole video. I particularly enjoy the posts that are both blog posts plus videos, so I can just skim the blog post, copy the code without having to pause and type things in manually, but also see how it works by somebody showing me how they use something.

      Prot: Yes. That's the idea.

      28:09 Tip: Take notes as you learn, and ideally, share them too.

      Sacha: I do want to sneak in this recommendation to share. I keep beating this drum. But whenever I write about something that I've learned, I always end up getting these comments from people who point out other things that I should check out too. So I highly recommend, whether you're a beginner or whether you're a power user of Emacs, try blogging. I am happy to add people's blogs to Planet Emacs Life so people can read your stuff. All the notes are great for both crystallizing what you know as well as possibly inviting other people to share other tips and comments that point out that what you just worked on is actually a built-in package and all you have to do is configure this. Happens to me often.

      28:54 Tip: Accept being a beginner.

      Prot: And what can help with blogging, especially once you are blogging about something that you know has a very high skill level, is to approach it in a diary-like way, where it's like, today I learned about such and such. I am not an expert, I am learning, and this is fun. That's your blog post. You don't have to present yourself as the foremost expert on the matter, because then of course you will have to wait many years to write that blog post.

      Sacha: I think that goes under this separate intuition thing for mindset and accepting the fact that no matter how many years of Emacs experience you have, you're going to be a beginner in 90% of the things that Emacs can do. So we can totally just accept the beginner's mind. There's no need to worry about imposter syndrome because we're all like this. We're all figuring things out. If you want, you can put in a disclaimer. You can say, "I'm totally a beginner. Read this for the idea and not the Emacs Lisp style," if you're embarrassed, you're self-conscious about sharing your code. But yeah, we're all just starting out, essentially. I like the fact that people in the community are so accessible. There's no one really saying, oh, I'm an expert. You should do it. You should do it this way and only this way, because we're all aware that again, we've done it this way, but there are probably five or six other implementations that could be even better that are really out there.

      Prot: Yeah, exactly. Exactly.

      Sacha: Charlie says, "The leverage of blogging is unique in the Emacs community. Incredibly supportive, knowledgeable, and social group of people." That's another encouragement to go try it. That is all good. In fact, there are a few days left in this May carnival for "May I Recommend." If other people have recommendations, I'd love to hear about them too. Okay, so let's talk about... Actually, what do you want to talk about? What do you want to talk about?

      Prot: Let's go and do something with the power users.

      31:16 Group: Power users

      Prot: With the power users, of course, you have a group that is, I would think, in some ways more diverse. Because of course there are different ways to become a power user. One, for example, is using Org more; another is using it as an IDE. So the common thread I would say here is that you are the kind of person who is digging deep. That's what you are as a power user. So if you want to become a power user, you have embedded as skills reading manuals and checking the source code, that sort of thing.

      Sacha: At this point, you're like, "Emacs is going to be my tool. There's a lot of depth to it." And this is where you start reading, okay, "How do I use Org Mode?" Or "How do I set up my IDE so that it's just the way that I want it?"

      32:13 Tip: Browse through package lists

      Sacha: For fun, I will sometimes look through the package lists just to see what's out there that I can easily reuse. But often, it isn't even a matter of adding additional packages to your configuration.

      32:25 Tip: Dive deeply into the packages you have: customization options, code, etc.

      Sacha: It could just be diving deeply into the ones that you do already have, looking for options, looking for little things that you can toggle on and off, or considering how the different functions can be integrated into your workflow.

      32:41 Tip: find-library gets you to the source code, occur can help you browse it

      Prot: And to this end, I will add something that I do frequently because it combines the elements of what we have already covered, which is M-x find-library. You select the package you are interested in. You go there, then you do M-x occur. And you search for defcustom with a parenthesis in front. "(defcustom". This will produce an occur buffer with all the user options. So you do two things now. You learn about the user options, and you are looking at some source code. That's one way I can start reading source code.

      Sacha: This goes back to why we don't just tell people... You don't like Customize, so the M-x customize + regular expression is off your list. Just look at the source code.

      Prot: You'll be happier. Yeah, exactly.

      33:29 Tip: You can also browse through Customize

      Sacha: Browsing through Customize is also an option because it'll tell you about the things. You don't have to use the Customize interface to set it, but I have come across very interesting options that way, just clicking around.

      Prot: Yeah, for sure.

      Sacha: @gcentauri's like, yeah, I'm bored, M-x list-packages.

      33:48 Tip: Have fun with randomness and serendipity

      Sacha: Sometimes I randomize these things. I think for EmacsConf, either last year or the year before, we had random packages being displayed as a screensaver. I know people have sometimes on their dashboards, they'll display random inspirational quotes. It could be a random Emacs package. I think at one point I had it display random interactive functions, just so I could stumble across more commands. Taking advantage of serendipity can be a fun way to squeeze in a little bit of learning.

      Prot: Nice, nice, yes. That's good.

      Sacha: All right, so Jason Torres says, "I use custom just to explore."

      34:32 Tip: Check out people's workflow descriptions and stories

      Sacha: Another recommendation I'd like to put in here is reading other people's workflow descriptions. Again, going back to blogs and videos and all of that. It's because a lot of these things are not obvious from looking at the source code, but when somebody tells you a story about what problem they had and how they combined pieces of different packages to solve a problem, then it becomes a lot more real.

      Prot: Yes. Plus, it puts you in the spirit of Emacs, which is you can be creative and piece together different elements of functionality and have a workflow that works for you.

      Sacha: Let's try plugging in, re-plugging in my webcam. Let's see what happens.

      Prot: Let's see, let's see. The moment of truth.

      Sacha: Everyone will just have to imagine my eyebrows of agreement. Okay, so that's the power user. This is how you get even better at it.

      35:42 Resources: manuals, Mastering Emacs, Emacs Lisp Elements

      Sacha: I think Mastering Emacs would probably be like a book recommendation in this area. And for customizing Emacs and actually writing Emacs Lisp, there's your Emacs Lisp Elements book. What other things would you recommend aside from, yeah, read the intro to Emacs Lisp and the Emacs Lisp Memo for fun?

      Prot: Of course, what you have listed there are all useful. The other one would be in the spirit of what we said earlier of trial and error. Learn how to, or rather get in the habit of writing little snippets of code. They don't have to be the best code of your life. Just something that gets the job done. Of course you can improve it later, but by getting in the flow of writing your own code, eventually what happens is you write better Emacs Lisp. You develop intuitions of what could go where, and eventually, before you know it, you are better at Emacs just because you were doing this little routine.

      Sacha: Noticing the questions. This is also a skill. This is also something that you develop. A lot of times people do not even know what's possible because they're so used to just taking for granted that this is a limitation of the system. So sometimes we have to see somebody else, you know, fly through the code without worrying about like, okay, I have to go do this and do that and whatever. Oh, somebody says it's OBS, thank you. @ashraz has pointed out that OBS has my webcam, which is why the browser couldn't find it. So I will think with that some more, but in any case, we will continue.

      37:29 Skill: Figuring out what's possible and making a habit of writing tiny functions

      Sacha: Yes, so figuring out what is possible and then writing a tiny function for it and developing that habit of not tolerating these little bits of friction, I think is a skill. It's a thing you can develop.

      37:45 Skill: Being mindful of what you do over and over again

      Prot: Yeah, and another skill which is along the lines of writing your own code but maybe also a meta-skill is: be mindful of what you do over and over again. For example, let's imagine now you have a command that switches to the other window and then blinks the cursor or whatever, right? And these are two commands and you do them all the time. You do the one, you do the other, okay? Now you can write one command, which is a wrapper of those two, and all it does is call interactively the first, call interactively the second. Just by piecing those together you already have your own little command.

      38:26 Tip: Keyboard macros can help you jumpstart custom functions

      Sacha: Oh, I definitely want to point out here that you can use keyboard macros to generate the Emacs Lisp for it. So even if you're not that comfortable with Emacs Lisp, or you don't remember what the keyboard shortcuts do, you can record a keyboard macro. So you've definitely learned how to do that. And then you can get it to print out the Emacs Lisp that the set of keyboard actions ran. Or at least the Emacs Lisp to repeat the same keyboard shortcuts and then it will all figure it out. Anyway, so that's there. You can save that sequence of commands as a Lisp function in your config. So that's one thing, using keyboard macros to jumpstart your Emacs Lisp.

      39:11 Tip: Use C-h k (describe-key) to describe shortcuts or menu items

      Sacha: And the second thing is using C-h-K or Describe Key to see what a given keyboard shortcut or menu item will actually run. So that's all very useful stuff for figuring out the Emacs list to do something you're doing interactively.

      Prot: I think that's the most used help command I do. C-h k. It's super useful all the time. It's very, very helpful. And not only you learn what command it calls, but also in which key map it is bound. So for example, C-c C-c in an Org buffer, it is telling you what the command is, and it is telling you this command is bound in the Org mode map. So if you want to change something, you know that you also have to be mindful of the key map. So there is your key map.

      40:04 Tip: You can set up M-x to show keyboard shortcuts too (Marginalia?)

      Sacha: Yes, it tells you other shortcuts. Oh, and along those lines, one of the M-x variants shows key bindings as well, which I recommend. If you're a power user, you'd like to become more of a power user, even a regular user, right? You want to start moving to using keyboard shortcuts for your more common commands and setting up your M-x command completion so that it hints at the keyboard shortcuts. Emacs by default also tells you about it after you run a command that had a shortcut. But at least that way, when you're looking through the command list you can see, "Oh yeah, this has a shortcut!" And then you can maybe even cancel out of your M-x and practice using that shortcut right away.

      Prot: Exactly.

      Sacha: And along those lines, I like using Marginalia and Consult because then I can see the command descriptions alongside the command name. So there's a little bit more detail there.

      Prot: Yeah, I think you meant Vertico and Marginalia.

      Sacha: Oh, yes. It's one of those things, yes. It just works with everything. So yes, Vertico for completions that show you a lot of detail, and then Marginalia to actually show the thing on the side, which is helpful.

      Prot: Consult is wonderful as well, of course.

      Sacha: Yes.

      41:26 Resource: Emacs from Scratch series by System Crafters

      Sacha: @ashraz would like to recommend the Emacs from Scratch series by System Crafters. They say it's a bit dated from 2020, but still mostly relevant in general. There are a lot of video resources out there.

      Prot: That's good. 2020, oh my goodness. It's been so long, I can't believe it.

      41:50 Tip: Old tutorials can still be useful, although don't treat them as the sole source of truth (things may have changed since then)

      Sacha: It's really interesting because I've been trying to organize the tutorial resources that people who are new to Emacs will come across. And a lot of times, some of the Org videos are from 10, 20 years ago. But they're still valid, so we have to make sure people don't immediately get turned off by the date in the video. But at the same time, they can start to tell the difference. Okay, this stuff is still applicable. But this stuff over here, it needs to be translated into how you do it in modern times. It's a little challenging for people to navigate this.

      Prot: Which of course points to another meta skill which is generally information related to Emacs is useful and it will work long into the future. But don't take a tutorial or a video as the source of truth. Always use it as a proxy. Okay, I get the idea. Now I will have to check the documentation and so on.

      42:55 Skill: Finding preferred resources

      Sacha: I think that part of the learning journey as a user is also finding your preferred resources. A lot of times, you're not going to learn everything the first time around. Everyone thinks in different ways. You do need to spend some time looking for the kinds of resources that jive with the way that you think, with the task that you want to do or the workflow you want to have. It's using the language at the right level for you, et cetera, et cetera. Even knowing, going in, that you're not going to find one-size-fits-all tutorial because Emacs has so many different workflow possibilities... Spending some time to figure out what you like as a tutorial or as a reference, and then going back to that again and again as your understanding develops, I think is a thing worth doing.

      Prot: Yes, exactly. That's the whole point of Emacs more broadly: that it accommodates the different kinds of people because it's so customizable. If something doesn't work for you, don't try to force yourself to work the way it is. Rather, change Emacs to work the way you think.

      44:12 Tip: If you find your tribe, look for ways to keep in touch with them

      Sacha: On a meta note, finding people who think the kind of way you do is super helpful, like the tribe within the tribe. For example, you've got this cluster of people who like using Denote because their brain works the same way that yours does when it comes to filing their notes. Once you find that connection, finding ways to keep up with what those people are doing, and often this is RSS because that's a great way to get the updates without getting buried in email. That can be a great way to keep stumbling across things that might help you.

      Prot: Yes, that's a very good point.

      45:00 Tip: Manage unequal RSS frequencies with folders or tags

      Prot: On the topic of RSS, just to say something that I learned many years ago the hard way: RSS works best if you subscribe to resources that don't post 30 or 50 or 100 articles a day. If you subscribe to the BBC or whatever, that will not work because it will crowd out the blog that posts once every month.

      Sacha: What I do with that is I have different folders.

      Prot: Folders, filters, etc.

      Sacha: Yeah, folders or tags or whatever. So all the microblogs or all the very prolific things go into one folder, which I generally ignore because it's hard to go through.

      Prot: Fair enough. Subscribe.

      Sacha: Yeah, the people who post once a day or once a week or once a month or once every blue moon, then it's easier to keep up with them because it's not buried in all of that stuff. You can look into your RSS readers to support for keywords maybe in order to do some more filtering and prioritization. This is one of the things that I've always envied about people who use Gnus for reading RSS. Because there's nnrss. Then you can use Gnus scoring to prioritize the RSS items automatically for you. But that's definitely a power user thing, because it's Gnus.

      Prot: I think that's a power user among power users. That's really an exception.

      46:33 Tip: Doing more things in Emacs has compounding benefits

      Sacha: Actually, that touches on an interesting thing about becoming more of a power user of Emacs. If you let Emacs assimilate more of your life, if you start to use Emacs for more and more things, you get not just linear improvements but compounding ones as the things that you have can interact with other things. Even just for the base case of if your to-do list is in Emacs and your coding is in Emacs, then you can create to-do items that link to your code, all the way to if your email is in Emacs, then you can make your to-do refer to your email and stuff like that.

      Prot: Exactly. That's where it gets really powerful.

      Sacha: If you want to get even deeper into the power of Emacs, try to push more of your life into it. I love seeing the things that people do with browsing the web in Emacs. What kinds of things do you do in Emacs that make you go like, this is where the power of having everything together works out really well.

      Prot: You already mentioned them, like email in Emacs together with your agenda, but also Dired, because you can mark files and attach them to the message composition buffer. You can run a M-x shell and your three marked files in Dired, you type w or 0 w and you get their path and then you can do something with them from a shell, if you cannot do it directly from calling a shell command from Dired. There are many ways like that. The keyboard macros where you can jump from a Dired buffer to a shell buffer, or from one buffer to another. All these little things. For me, it's very powerful. You use it all the time.

      48:31 Tip: Learn to think of it as just text

      Prot: At some point, you don't even think about it. It's just text laid out in windows, each of which shows a buffer. So at some point, it doesn't matter if it's email or programming or prose. At some point, they are all the same. So it doesn't matter at all.

      Sacha: Developing that mindset of "it's just text" and the facility for working with text, such as keyboard macros, or being able to jump around, or writing your own functions to manipulate it, or even just using isearch to go through it or using undo in different contexts. I think that's definitely something that people develop and when they develop that intuition, it really helps.

      Prot: Yes, exactly. In the beginning you won't think about those linkages. They won't be obvious to you. But just be mindful that they are there. They are possible. As you use Emacs, at some point you just feel naturally about them, and they happen. You're like, oh yeah, of course that was always possible. Of course, with the benefit of hindsight... In the beginning, you will be like, "Wow, I can do that!"

      49:46 Tip: Take notes along the way

      Sacha: That's the other reason why I want to encourage people to take notes along the way, ideally sharing them, of course, but even just for yourself, because a lot of times you will get to the point where this is just the way you've always done it. On the other hand, if you had those notes as you're figuring out how to do it, and you share those notes, then you're leaving these breadcrumbs for other people who are traveling down the same or similar path. That's something that would be very helpful for people.

      Prot: Yeah, exactly.

      50:16 Tip: Explore different ways to navigate and act on things

      Prot: Even if you don't have external packages... For example, a workflow that for me was so powerful that I was like "Yeah, this is the way to go" involved the grep and then editing the grep results. But even if you don't use a bespoke package for that, which of course is also built into Emacs now, the functionality, you can use the grep results just as a way to jump to the result. If you hit RET, it takes you to the buffer at the point where the result is. You can have a keyboard macro that jumps to the result, makes some edit, goes back, jumps to the next result and repeat, right? You can do that even without the package. The point is that you can collect results and edit them in like a second or a minute, whereas you would need literal hours to do that and it would be error-prone.

      51:09 Tip: Learn to combine different building blocks

      Sacha: Yeah, and this points to the skill of being able to see and work with different building blocks. You have a block for, this is how to navigate. There are different ways to navigate. You could navigate to something based on some matching text, or you can navigate to something based on a line. You can set up your windows so that you can switch between windows or whatever. Then if you can combine that with, okay, these are some building blocks for acting on something, or this is how I can use the kill ring to take it to... or this is how I can use registers so that I can save some text or save a position or whatever else. The more of these building blocks that you can develop slowly, because being able to internalize the concept takes time, then all these different ways that you combine it to solve a problem makes Emacs very powerful.

      Prot: Yeah, exactly. That's a good way to think of it, as building blocks.

      Sacha: I don't know how people will do that either, aside from read the manual for fun and watch Emacs videos and read other people's posts. Often I think, what if we make a skill tree, right? Because people like gamification... But then this is going to be a really ridiculous, large skill tree with arrows going all over the place.

      Prot: No, no, you don't want to do that. It will be the RPG that never ends. There is no final boss.

      Sacha: @yogi583 asks what is a built-in function's name to edit grep result in Emacs?

      Prot: I don't know but what I usually do is... Grep edit mode I think. It's new, right? It's new. It's built into Emacs 31 I believe.

      52:47 Tip: Get the hang of keybinding conventions

      Sacha: What I think of it is I go to the grep buffer and I press C-x C-q because that's the general "toggle read only"... That's another mental concept there, right? Getting a sense of the key binding conventions that might be translated into different actions in different places.

      Prot: Yes. There is an annex to the Emacs Lisp manual, the Emacs Lisp reference manual, which talks about the key binding conventions, which is very useful for people to read. Even after you read that, it's a little bit hard to reason about the key bindings if you are getting started, but trust the process. You will see the patterns as you go. Generally, you can expect C-x to be global key bindings, and C-c followed by control something to be major-mode-specific key bindings.

      Sacha: One of the things I like about reading other people's configs is that they'll rebind something and I'll be like, yeah, I can totally take advantage of that keybind because I'm not using the standard one as much.

      Prot: Let me tell you about one I used. Of course, there are many, but by default, you close Emacs with C-x C-c.

      Sacha: Who closes Emacs?

      Prot: Yeah, people who make mistakes in life, such as myself. So because I would fat finger that the whole time, you want to unbind C-x C-c and then do C-x C-c C-c then you can exit. I would do it by mistake the whole time and I would destroy whatever I was working.

      Sacha: Yeah, key binding design is this whole other thing that I haven't really mastered myself either. We've talked before about making the key bindings make sense. When they're mnemonic, they're easier for people to remember, right? But this is definitely something that I struggle with.

      Prot: So think of it this way, of course assuming there is a space for it or you unbind something. C-x something is a global key potentially with a prefix, as a prefix. C-x r is a prefix, C-x p is a prefix and they have global scope, right? If you are doing something that is global in nature, it should work everywhere. You may want to do the same if you are okay with overriding default key bindings, right? Otherwise, you want to do something that is more specific. C-c C-something for a mode. Again, optionally overriding what a major mode is doing. Then you have to work with that. Use mnemonics. Use words that make sense. For example, C-s is the default key for searching. M-s is the prefix for alternative search. Think of it. Alt-S, right? All the alternative kind of searches, such as M-s o, right? So you can now think of M-s and then g would be my grep. M-s and f would be my find and so on. You can think in concepts like that.

      56:06 Tip: Use which-key for keybinding help

      Sacha: When in doubt, keep which-key enabled so then it will remind you at least of what else you've had configured for that prefix. That's the other recommendation. which-key mode, it's built in now. Just go use it.

      Prot: Yeah, which-key mode is very useful. If you are using the Embark package, it has a key that will take over C-h. So actually that works even with default. If you type an incomplete key sequence, C-h will produce a listing with all the keys that complete that sequence. So it will be a help buffer that will tell you, okay, C-x, C-h, for example, will list everything that follows C-x. And it will name the command and all that. So that's also something to consider. I think if Embark were to add the which-key functionality where it's like C-h on a timer, I think then Embark would be a straight upgrade over which-key. In that regard. So Omar, if you are listening... Asking for a friend.

      Sacha: @gcentauri says, "I recommend learning how to define a key map and put it under a leader key. I have M-m as my personal key map and then the things I find very useful I add to my key map." For this one, I've been experimenting with bind-key, which makes all of this stuff much easier in terms of defining prefix key and adding a docstring and all those other lovely things.

      57:41 Tip: Figure out your ergonomics

      Sacha: I like your other meta tip about experimenting with how your keyboard is set up. So for example, even on my laptop... I have a ThinkPad. So even on my laptop keyboard, there's no QMK, but I can use Kanata, which you've also recommended elsewhere. to try experimenting with one-shot modifiers and home row mods or other things like that that I want to, making it easier to press key bindings that have different modifiers. I don't want to have to press ctrl and shift and super all at the same time. If I set up one-shot modifiers, I can just tap tap tap and it becomes easier to press.

      Prot: Yes, exactly. That opens up a lot of possibilities in terms of mnemonics, but also in terms of prefix combinations and all that. You can go a very long way.

      Sacha: And I think there's a meta thing here also about getting a sense of what would make it easier for you to be able to continue enjoying this long term? Because RSI is not conducive to enjoying Emacs long term.

      Prot: No. For sure. Something that I think I learned the hard way through pain is that you want to consider your desk, how you sit at the desk - you want to consider everything, not just the keyboard. For example, I have adopted a standing desk since forever. I do that all the time. I never sit, because it works better for me. I have the keyboard set up the way that makes sense to me. I can write all day. It's what I do. I don't have any pain. Whereas before I would sit on an awkward chair, the desk was not optimized, the keyboard was definitely not something I had thought of, and I had pain. It was really difficult, and I reached the point where I couldn't write. I was like, okay, I have to quit.

      Sacha: If Emacs is something that pays off better in the long term, it's good to have a long term.

      Prot: Exactly.

      Sacha: Speaking of my very short term, in about one minute, I'm going to go off and help with the kiddos' lunch break. I very much appreciated this brain dump. This is great. I'm going to do all the usual transcription and things like that, start pulling out some of these ideas. Chat, if you found anything super interesting that you would like fleshed out into a blog post, say it so we know what to focus on for priorities, right? This was a lot of fun. Are there any key recommendations you want people to make sure they check out or is it just generally like, everyone...?

      Prot: No, I think what you have here is good because, of course, you can always say more. So I will conclude with what I started. Less is more, seriously. For life, not just for email.

      Sacha: Your brain is surprisingly small. If you break what you learn down into tiny steps, you have a higher chance of it actually sticking. Once you get something in, then it makes things a little bit easier. You have a little bit more space to learn the next thing, and so on and so forth. Otherwise, if you bite off too much, you get overwhelmed.

      Prot: Very nice, very nice. And that ties into the lunch break. Yes.

      Sacha: All right. Thank you so much. I will skedaddle and yeah, I will do all the things afterwards. Thanks everyone also for dropping by and hanging out. All right. See you around.

      Prot: Take care. Take care. Goodbye. Goodbye.

      Chat

      • ChristianTietze: ​🥁
      • protesilaos: ​Hello world!
      • MichaelVash7886: ​hello Prot
      • ChristianTietze: ​In (comparatively) ice cold Germany we had ~30ÂşC this week and there's Prot with 3 layers of clothes 🙂
      • chelmikador: ​​Hello!!
      • gcentauri: ​Hello!
      • gcentauri: ​totally
      • gcentauri: ​nerd sniping minefield
      • gcentauri: ​Emacs gives us Discoverability, and learning which tools enhance it for you is really important. Consult for example, and Helpful
      • sachactube: ​​https://pad.emacsconf.org/yay-emacs
      • gcentauri: ​i was literally doing that last night before bed
      • gcentauri: ​i came across the Forms library I had no idea existed
      • CharlieBaker707: ​​edebug + ert tests changed the way I develop elisp! No longer flying blind 🤣
      • ChristianTietze: ​end-to-end tmux snapshots – you can assert on the modeline contents and other 'ui' of Emacs too, at least in terminal rendition of course
      • gcentauri: ​because in Lisp its lists all the way down :)
      • CharlieBaker707: ​​something I love doing is, after I've learned that 1 function, at a later point I'll meta-x for that package's namespace, then embark-collect into a buffer and explore what other user-facing exist.
      • sachactube: ​​ugh hang on
      • CharlieBaker707: ​Stole that trick from Prot ;-)
      • ChristianTietze: ​🎶
      • sachactube: ​​hahaha, you can just keep braindumping tips while I panic
      • sachactube: ​​I will continue to panic
      • blaiseutube: ​​don't panic
      • CharlieBaker707: ​we can hear you!
      • CharlieBaker707: ​but not Prot :-D
      • blaiseutube: ​​oooh much better!
      • yogi583: ​​we cant hear prot
      • blaiseutube: ​prot is too quiet
      • gcentauri: ​@sachactube - prots audio is very low
      • renaudbussieres: ​​Is Prot only in your headphones?
      • sachactube: ​​I will look into that
      • blaiseutube: ​his audio is completely different
      • chelmikador: ​​now!
      • yogi583: ​​we can hear him
      • blaiseutube: ​yes!!!
      • CharlieBaker707: ​​loud and clear Prot!
      • MichaelVash7886: ​​all set now
      • gcentauri: ​Yes!
      • gcentauri: ​good!
      • blaiseutube: ​perfect!
      • blaiseutube: ​ooooh, Cyprus is nice
      • blaiseutube: ​Massachusetts is also 20C
      • ashraz: ​​Is prot's sound only clipping for me a bit or also for others?
      • MichaelVash7886: ​​maybe a little but it's not bad on my end
      • sachactube: ​​That was me because I panicked about audio, returned to normal levels now
      • CharlieBaker707: ​​The leverage of blogging is unique in the Emacs community. Incredibly supportive, knowledgable, and social group of people.
      • gcentauri: ​We always need beginners to show us where things actually DONT make sense! A beginners mind see's all possibilities
      • gcentauri: ​yep. "i'm bored, M-x list-packages"
      • gcentauri: ​yeah i use Custom just to explore
      • gcentauri: ​Discoverability!
      • gcentauri: ​(btw this is shoshin from elsewhere)
      • renaudbussieres: ​​"M-x apropos-user-options" is another way to browser customizable options :)
      • gcentauri: ​@sachactube we can see you in the lower right, you've somehow gone to having your video floating
      • ashraz: ​​@sachactube Your webcam is shown as an overlay over the chat, which may be the reason why it cannot be shown a second time on Firefox
      • ashraz: ​​*Chrome
      • blaiseutube: ​​BRB
      • sachactube: ​​thanks!
      • blaiseutube: ​​…. seems like a "config profiler" would be handy, to produce a human readable summary of settings.
      • ashraz: ​​I also liked the Emacs From Scratch series by System Crafters. It's a bit dated (from 2020), but still mostly relevant in general, IIRC.
      • ashraz: ​​@blaiseutube Profiler as in loading time, or in "what is actually in that profile"?
      • gcentauri: ​is that Marginalia?
      • ashraz: ​​@gcentauri Aye, marginalia shows the shortcuts.
      • gcentauri: ​not Marginalia
      • gcentauri: ​i think maybe Vertico
      • ashraz: ​​2020 predates the minad-stack (vertico, marginalia, orderless, consult, corfu), it used ivy, swiper and company.
      • ashraz: ​​But the mindset is still in that series 🙂
      • valentinoslavkin6116: ​​Yeah, emacs from scratch is pretty good. Maybe it could explain a bit more the language or the use-package macro, but it works regardless
      • MichaelVash7886: ​yeah I haven't watched the series as so much changed since then
      • sachactube: ​​blaiseutube config profiler sounds interesting, what did you have in mind?
      • yogi583: ​​whats the builtin function's name to edit grep result in emacs?
      • gcentauri: ​Need multiple skill trees
      • gcentauri: ​different character classes
      • ashraz: ​​@gcentauri Also different positions on the alignment chart.
      • bledley99: ​​Lovely people, been watching/reading you two for years. Thanks for all you do. 🙌
      • gcentauri: ​I recommend learning how to define a keymap and put it under a leader key. I have M-m as my "personal-keymap" and then the things i find very useful i add to my keymap
      • gcentauri: ​and +1 which-key
      • ashraz: ​​See `D.2 Key Binding Conventions` in the manual for the conventions (for package maintainers)
      • ashraz: ​​*in the elisp manual, not the emacs one.
      • renaudbussieres: ​​I find "leader key" strategies better too, for example the C-x keymap, displayed with which-key, is too crowded and diverse to make sense
      • gcentauri: ​yes - i had to switch to xah-fly-keys because of RSI
      • gcentauri: ​but Emacs can change and adapt to YOU! which is important
      • MichaelVash7886: ​I want to look at Meow at some point for a leader key and modal editing
      • valentinoslavkin6116: ​​Meow is really great

      You can e-mail me at sacha@sachachua.com.

    7. 🔗 19h/ida-lifter v2.6.0 release

      Full Changelog : v2.5.0...v2.6.0

    8. 🔗 r/LocalLLaMA PSA rss

      PSA | submitted by /u/Signal_Ad657
      [link] [comments]
      ---|---

    9. 🔗 r/reverseengineering Ghidra 12.1.1 has been released! rss
    10. 🔗 MetaBrainz Picard 3 beta 3 released rss

      Today, we're making available another pre-release version for the upcoming MusicBrainz Picard 3. This beta release offers various bugfixes and improvements over the last beta. Most notably the release lookup and matching was improved, several cover art related issues were fixed, the UI got more responsive during file load and the log view became faster and allows better filtering.

      Download links and a detailed list of changes since Picard 3 beta 1 are available below. For a more detailed overview of what is new in Picard 3 please see the previous blog post Picard 3 Alpha Release.

      While we have all the major features implemented and with the latest bug fixes we are confident in the current code, this is still a pre-release and there might be bugs. If you use this, do so with care, backup your files and please report any issues you encounter.

      Some of the changes are also backward incompatible, hence we recommend you make a backup of your Picard.ini config file before trying the beta version. You can do so in Picard’s Options under Advanced > Maintenance.

      What’s new?

      Bugfixes

      • PICARD-2376 - Log view becomes unresponsive on long list
      • PICARD-3194 - Custom column %_musicbrainz_discids% or %compilation% only displays value on track level
      • PICARD-3256 - Preferred Releases always saved in alphabetic order
      • PICARD-3258 - tagger.remove_album crashes inside register_album_metadata_processor handler
      • PICARD-3265 - Translation locale selection does not sort locales by UI language
      • PICARD-3267 - macOS app claims to support macOS 11.0, but minimum supported version for Qt 6.11 is macOS 13.0
      • PICARD-3272 - "Never replace selected cover image types" ignored
      • PICARD-3274 - Crash after removing last item in standalone recordings
      • PICARD-3275 - Default optical drive always used regardless of which drive is selected in Lookup CD drop down
      • PICARD-3277 - Cover art to be saved as external files has no types and comments set
      • PICARD-3278 - Non-front CAA cover art images replace front cover
      • PICARD-3279 - Cover art column does not update for tracks
      • PICARD-3281 - Improve UI responsiveness during scan of many files
      • PICARD-3287 - Context menu is missing "Expand all", "Collapse all" and "Select all" entries
      • PICARD-3290 - Built-in player prevents file write access
      • PICARD-3294 - "Never replace cover image" options only run on image loading
      • PICARD-3295 - Track loses original cover art when file gets removed
      • PICARD-3297 - Cover art "Show more details" failing after clustering

      New Features

      • PICARD-2197 - Use artist aliases to find a more appropriate artist sort name for the artist credit

      Improvements

      • PICARD-3299 - New debug options "plugin_development" and "coverart"
      • PICARD-2867 - Improve matching and lookup by utilizing barcode
      • PICARD-3163 - Make using artist sortname for translation optional, disabled by default
      • PICARD-3261 - Simplify Unicode characters when saving tags with non-Unicode character set
      • PICARD-3262 - New picard-plugins --init command to initialize a new plugin directory
      • PICARD-3264 - Improved alias selection for artist, album and track translations
      • PICARD-3269 - Make ISWCs available as %_iswc% variable
      • PICARD-3283 - Add stop button for pending network requests
      • PICARD-3284 - Improve release matching with tiered scoring and identifier support
      • PICARD-3285 - Add a button to clear the network cache
      • PICARD-3286 - Log View dialog: performance issues, limited filtering, and UX improvements
      • PICARD-3289 - Allow user to set the default log level used when Picard is started
      • PICARD-3291 - Utilize barcode/catno/date from file tags for better release matching
      • PICARD-3296 - Adjust Haiku platform detection to changes in Haiku's latest Python versions
      • PICARD-3298 - Plugin options UI improvements

      Download

      We appreciate your interest in trying this new version. Use with care, backup your files and please use theMetaBrainz community forums and the ticket system to give feedback and report bugs.

      For Windows and macOS you can download the beta version from the Picard download page. Linux users can run from source or try the beta channel of the Picard snap package.

      The minimum supported macOS version for this beta is macOS 13.0 "Ventura". This is the same as for the previous beta, but there Picard wrongly reported to be compatible with macOS 11.0. We are looking into options to lower the macOS requirements for the final release of Picard 3, but this is not yet decided.

      Picard is free software and the source code is available on GitHub.

      For anyone wondering if they missed beta 2: We had the version updated for beta 2, but we never released it and instead had further changes that got now released as beta 3.

      Acknowledgements

      Code contributions by Bob Swift, Laurent Monin, OscarL and Philipp Wolfer. Translations were updated by Marc Riera (Catalan), mfmeulenbelt (Dutch), RT2231 (Japanese), salo.rock (Italian), Vaclovas Intas (Lithuanian) and Wonordel (Russian).

    11. 🔗 @binaryninja@infosec.exchange The Notebook in Sidekick 26.0 is where you turn chat work into something that mastodon

      The Notebook in Sidekick 26.0 is where you turn chat work into something that sticks. It is a persistent workspace where you track analysis goals and record outcomes. Sidekick reads it as context in Chat, so it can build on what you already established across turns and sessions. https://docs.sidekick.binary.ninja/guide/notebook.html

    12. 🔗 r/Harrogate Traffic lights in Killinghall. rss

      Stuck on red coming from Ripon end, queue back to the junction, bloke in the van just saying 'I know' when anyone tells him including me. Consequently took me over 15 minutes to get through & everyone behind is now irate & blasting their horns. 3 more useless biffers stood around at the other end laughing when anyone told them.

      Who the f**k is responsible for these inept dickheads?

      submitted by /u/E5evo
      [link] [comments]

    13. 🔗 r/Harrogate Hidden Victorian Spa Chamber under the Cairn Hotel rss

      Hidden Victorian Spa Chamber under the Cairn Hotel | 🏚️ The Cairn Hotel, located on Ripon Rosd in Harrogate, is a Victorian property dating back to the mid-1800s, starting life as a grand private residence. It became a hotel in 1890 and by the early 1900s was a popular hydrotherapy retreat known as The Cairn Hydro, boasting its own bathhouse and bathing chambers which rivalled the nearby Royal Baths at the height of Harrogate's 'spa town' fame. Today, the 135-room hotel is owned by the Newcastle-based Strathmore Hotels group. The original baths and spa features remain intact today, though derelict and permanently closed to the public. submitted by /u/LostPlacesUK
      [link] [comments]
      ---|---

    14. 🔗 r/LocalLLaMA llama: use f16 mask for FA to save VRAM by am17an · Pull Request #23764 · ggml-org/llama.cpp rss

      llama: use f16 mask for FA to save VRAM by am17an ¡ Pull Request #23764 ¡ ggml-org/llama.cpp | now you can download more VRAM ;) (by downloading new llama.cpp version) submitted by /u/jacek2023
      [link] [comments]
      ---|---

    15. 🔗 r/reverseengineering Technical Brief of Planck-99: 34ns Deterministic Malware Classification on MCU-class Hardware (Zero FPU, 27KB footprint) rss
    16. 🔗 tobi/qmd v2.5.3 release

      [2.5.3] - 2026-05-28

      Features

      • qmd get now accepts a :from:count suffix on a path or docid (e.g.
        qmd get "#abc123:120:40" reads 40 lines starting at line 120). Explicit
        --from/-l flags still override the suffix. The MCP get tool accepts the
        same suffix.

      • qmd get and qmd multi-get are now line-numbered by default and print
        the document's #docid and qmd:// path in the output header. Disable line
        numbers with --no-line-numbers. The MCP get/multi_get tools default
        lineNumbers to true to match.

      • qmd multi-get now includes the #docid in every output format
        (--md, --json, --csv, --xml, --files, and the default CLI view),
        consistent with qmd search.

      • qmd get and qmd multi-get accept --full-path, which replaces the
        qmd:// path + #docid with the document's on-disk filesystem path (handy for
        piping into Read/Edit/an editor). Falls back to the canonical qmd:// +
        docid header when the file no longer exists on disk.

      • qmd search / qmd query now show a clearer hit identifier: the default CLI
        view (and the new **file:** line in --md output) always prints the full
        qmd://collection/path URI so you can pipe it straight back into qmd get.

      • qmd search / qmd query accept --full-path with the same semantics as
        qmd get: the result label becomes the file's on-disk path — ./-prefixed
        relative path when the file lives in a subfolder of $PWD, absolute realpath
        otherwise — and the per-result #docid is dropped because the path is the
        identifier. The leading ./ is intentional so the output is unambiguously a
        filesystem path. Applies to all output formats.

      • qmd get and qmd multi-get now also use the ./-prefixed convention when
        --full-path renders a path under $PWD, matching search/query.

      • New --format <kind> flag selects the output format (cli | json | csv |
        md | xml | files) for search, query, and multi-get. The legacy
        boolean aliases (--json/--csv/--md/--xml/--files) still work but are
        no longer in --help; prefer --format.

      Fixes

      • Launcher: source-mode runner selection now prefers Node + tsx over Bun when
        both package-lock.json and bun.lock are present in the package root,
        mirroring the dist-mode "npm priority" rule. Fixes pnpm-global installs that
        copy the entire working tree (including .git and bun.lock) into the
        install dir and previously routed through Bun, causing ABI mismatches with
        the Node-built better-sqlite3 / sqlite-vec native modules.

      • Darwin Metal: llama-using commands (query, vsearch, embed) no longer
        dump a multi-kB GGML/Metal backtrace at process exit even when output
        succeeded. The libggml-metal static ggml_metal_device destructor asserts
        [rsets->data count] == 0 during __cxa_finalize_ranges, but the
        buffer-free path never calls the symmetric ggml_metal_device_rsets_rm
        to remove released rsets from the device collection (upstream
        ggml-org/llama.cpp#22593, one-line fix open as PR #22595). The assertion
        only fires when process.exit() skips Node's beforeExit hook, which is
        what node-llama-cpp uses to auto-dispose Metal contexts. Primary fix:
        finishSuccessfulCliCommand now sets process.exitCode = 0 and returns
        instead of calling process.exit(0), so beforeExit fires and the native
        binding cleans up before libc's static destructor runs. Defense-in-depth:
        the launcher (bin/qmd) and the npm test driver (scripts/test-all.mjs

        • the test:bun / test:unit package.json scripts) also set
          GGML_METAL_NO_RESIDENCY=1 on darwin before spawning node/bun, covering
          error paths and tests that still terminate via process.exit(). The env
          var must be set before node/bun start — libggml-metal reads it via libc
          getenv at module-load time, and Bun does not propagate process.env
          mutations to libc setenv — so it lives in the launcher rather than in
          test-preload. Residency sets give no measurable speedup for QMD's
          short-lived CLI workflow (benchmarked on M3 Pro). Opt back in with
          QMD_METAL_KEEP_RESIDENCY=1 for long-lived qmd processes (e.g. the MCP
          daemon may benefit on hot reload) or to triage the upstream fix.
          qmd doctor reports the mitigation state. Minimal reproduction:
          scripts/repro-metal-rsets-crash.mjs.

      Docs

      • qmd skill: emphasize reading line ranges with get's built-in
        :from:count suffix / --from/-l flags instead of piping through
        sed/head/tail; cite the docid and line numbers now present in retrieval
        output; and author structured intent:/lex:/vec:/hyde: queries yourself
        rather than relying on built-in query expansion.

      [2.5.2] - 2026-05-22

      Fixes

      • Launcher: Rewrite bin/qmd as a Node-based shebang polyglot to fix global npm installation execution failures on Windows (#668 / #452), while supporting seamless fallback to Bun in Node-less environments.

      [2.5.1] - 2026-05-20

      Changes

      • Release: publish from GitHub Actions via npm Trusted Publishing/OIDC instead of a long-lived NPM_TOKEN secret.

      [2.5.0] - 2026-05-19

      Changes

      • Dependencies: update core SQLite/config/chunking packages (better-sqlite3, yaml, web-tree-sitter, tree-sitter-go, and tree-sitter-python) while keeping incompatible zod, tsx, and vitest majors pinned.
      • Agent skills: add qmd skills list|get|path to serve version-matched runtime skill instructions from the installed CLI, and make qmd skill install write a stable discovery stub so installed agent skills do not go stale after QMD upgrades.
      • CLI: add qmd doctor for index/runtime diagnostics, including SQLite/sqlite-vec versions, embedding fingerprint freshness, mixed-fingerprint detection, safe legacy fingerprint adoption, and content-hash sampling.

      Fixes

      • Launcher: prefer runnable TypeScript source in git checkouts even when ignored dist/ artifacts exist, while packaged installs continue to run dist/.

      • GPU: keep node-llama-cpp's documented gpu: "auto" initialization as the primary path, then perform no-build packaged CUDA/Vulkan/Metal probes only if auto falls back to CPU.

      • CLI: move GPU/CPU runtime diagnostics out of qmd status; use qmd doctor for device probing and related environment guidance.

      • CLI: point unexpected command/setup failures toward qmd doctor so diagnostics are the default next step when QMD behaves incorrectly.

      • Doctor: explicitly warn when content_vectors contains multiple non-empty embedding fingerprint names, with the per-fingerprint document/chunk breakdown.

      • Embed: make the TTY progress line label byte-based input progress explicitly, show embedded chunks as a count, and shorten the displayed model name.

      • Embed: retain per-chunk failure details, retry failed chunks after later successful embeds and again when no other chunks remain, clear recovered errors, and cap retries to avoid endless loops.

      • Tests: expand the container smoke harness to cover npm-global, npx-style, and Bun-global install scenarios, always checking auto and QMD_FORCE_CPU=1 doctor modes, with opt-in tiny qmd embed and GPU probe runs for supported container runtimes.

      • Embedding: fingerprint vector metadata using the active embedding model and formatting/chunking parameters so stale vectors are treated as pending after search semantics change. Legacy content_vectors columns are migrated lazily on first vector-health/write use to preserve fast QMD startup.

      • Skill: expand the packaged QMD skill with retrieval-first workflows, structured query examples, wiki/source collection guidance, and safe fallbacks when model-backed search is unavailable.

      • Tests: make bun run test execute the local unit suite under both Node/Vitest and Bun (test:node + test:bun) so runtime-specific regressions are caught before CI.

      • Model config: centralize embedding/rerank/generation model resolution so qmd embed, status, query, vsearch, pull, SDK vector search, and bench use the same active .qmd/index.yaml model hints and environment fallbacks.

      • GPU/status: qmd status now uses the same embedding model identity as qmd embed when computing pending embeddings, so URI-backed embeddings are not incorrectly reported as pending under the legacy embeddinggemma alias.

      • GPU status: qmd status now always shows GPU mode/configuration without unsafe native probing, and CPU-fallback warnings point to QMD_STATUS_DEVICE_PROBE=1 qmd status for an actual backend probe. The no-GPU warning is emitted once per process instead of once per LLM instance during benchmarks.

      • GPU: add QMD_FORCE_CPU=1 / --no-gpu to bypass CUDA/Vulkan/Metal probing entirely, and route native llama.cpp stdout noise to stderr so JSON output stays parseable during search/query commands.

      • Snippet line numbers: qmd_query (MCP), HTTP /query, and qmd query
        (CLI JSON output and snippet headers) now return absolute source-file
        line numbers instead of chunk-local ones, so the line field can be
        passed back to qmd_get as fromLine without a separate lookup.
        Snippet selection remains scoped to the best matching chunk
        (preserves #149).

      • CLI: qmd query --full now emits the full document body in all output
        formats (json, csv, md, xml), restoring the documented behavior of the
        flag. Previously it returned only the best matching chunk (~3.6KB max
        per result). Output payload for --full queries is now proportional
        to total document size.

      • macOS Metal: qmd query --json now flushes successful JSON output and uses a safe immediate-exit path on Darwin to avoid ggml Metal finalizer aborts; other commands still dispose LLM contexts/models before the llama runtime. #368

      • Embedding: require complete chunk coverage before treating a document as
        embedded, remove partial vectors when chunk/session failures leave a
        document incomplete, and keep qmd status pending counts honest after
        interrupted long embed runs. #637 #378

      • Embedding: qmd embed -c <collection> now scopes pending-doc selection
        to the requested collection instead of embedding global pending work.
        Scoped --force clears only collection-owned vectors, preserves shared
        hashes referenced by sibling collections, and drops vectors_vec only
        when the scoped clear empties all vectors.

      • Hybrid search: weight RRF lists by query type so original FTS and original vector evidence get the intended 2x boost, instead of accidentally boosting the first lexical expansion. #591

      • MCP: seed llama.cpp/GGML quiet env vars before launching qmd mcp so native logs cannot pollute stdio JSON-RPC framing. #593

      • CLI: remove CommonJS require() calls from ESM index path normalization so qmd --index <path> no longer crashes with ERR_AMBIGUOUS_MODULE_SYNTAX on Node 22+. #634

      • Windows CUDA: serialize llama.cpp embedding/reranking contexts by default to avoid intermittent ggml-cuda.cu:98 crashes in qmd query; set QMD_EMBED_PARALLELISM to opt back into parallel contexts if your driver is stable. #519

      • MCP: make qmd mcp --index <name> use the selected index for both foreground and daemon HTTP servers instead of falling back to the default store. #343

      • Embedding: respect QMD_EMBED_MODEL consistently for vector indexing and vector-backed search, with default-model fallback when unset.

      • Config: use one home-directory resolver for YAML config and the default SQLite cache path, avoiding Windows CLI/MCP split-brain when HOME is unset.

      • GPU: respect explicit QMD_LLAMA_GPU=metal|vulkan|cuda backend overrides instead of always using auto GPU selection. #529

      • Fix: preserve original filename case in handelize(). The previous
        .toLowerCase() call made indexed paths unreachable on case-sensitive
        filesystems (Linux). qmd update automatically migrates legacy
        lowercase paths without re-embedding.

      • CLI: make qmd status skip native node-llama-cpp device probing by
        default so status stays safe on machines with broken or unsupported GPU
        drivers. Set QMD_STATUS_DEVICE_PROBE=1 to opt in.

      • CLI: lazy-load node-llama-cpp so lightweight commands such as
        qmd status do not import native ML dependencies or trigger llama.cpp
        builds on ARM/no-GPU machines. #491

      • Store: keep content rows referenced by inactive documents during orphan
        cleanup so qmd update preserves soft-deleted tombstones for removed
        files. #585

      • Packaging: install AST grammar WASM packages as required dependencies so
        Bun global installs include TypeScript/TSX/JavaScript grammars, and add a
        smoke:package-grammars verification command. #595

      • Launcher: add wrapper smoke coverage for scoped package, npm/npx,
        Homebrew/Linuxbrew, Bun global symlink layouts, and $BUN_INSTALL
        false-positive runtime selection regressions. #351 #353 #354 #356 #358 #359

    17. 🔗 r/LocalLLaMA Beware!! Users trying to fork and steal your projects rss

      Beware!! Users trying to fork and steal your projects | Context!
      User u/Worried_Goat_8604 claimed to have made a similar but unrelated project to my SmallCode. He framed it as "I made this before you, but we can collab if you make me co- founder". In reality, he made a low effort fork of MY project 2 days ago and is trying to peddle it off as his own!! Beware of people trying to takeover your project like this. It really is an unneeded stain on the open source community that scammers like this are out here trying to leech off other people's hard work! My repo: SmallCode
      His fork: LightAgent Edit, we got em boys https://github.com/noobezlol/lightagent/pull/3
      Thank you!! submitted by /u/Glittering_Focus1538
      [link] [comments]
      ---|---

    18. 🔗 mahmoudimus/ida-sigmaker v1.7.3 release

      sigmaker.py - IDA Python Standalone Python Release

      Release Information

      What changed

      Changed

      • Find shortest unique signature for current function is dramatically faster on large databases. The search now scans the database once per starting point to seed a set of candidate match offsets, then refines that set in memory as the signature grows, instead of re-scanning the whole database on every byte. A function that previously took minutes now finishes in seconds. (#33)
      • The liveMatches: count is back, and exact. Candidate refinement tracks the surviving match count for free at every step, so the Create unique signature wait box shows the real count again and the function-search wait box shows an exact inner count instead of the temporary 2+ placeholder. (#27, #33)

      Fixed

      • TheStart Profiling / Stop Profiling menu items now appear. They were attached at plugin init, before IDA builds its menus, so they silently never showed. They are now attached through the disassembly right-click popup, grouped with the main action under a SigMaker submenu. (#33)

      Internal

      • New SignatureSearcher.find_all_offsets (seed scan returning raw buffer offsets) and _refine_offsets (in-memory candidate refinement). Uniqueness checks below MIN_USEFUL_SIG_BYTES use a cheap early-bail probe so the enumerating seed scan is deferred until the pattern is long enough to be selective. (#33)
      • Cancellation polling in the scan loops is throttled (every 65536 matches) so idaapi.user_cancelled(), which pumps the UI event loop, does not dominate a scan over a common pattern. (#33)
      • Signatures produced are byte-identical to 1.7.2; the change is purely how quickly they are found and that exact match counts are restored. (#33)

      Description

      This is a standalone release of the IDA Pro signature maker plugin. The file sigmaker.py contains the complete plugin code that can be directly imported into IDA Pro.

      Installation

      1. Copy sigmaker.py to your IDA Pro plugins directory
      2. Restart IDA Pro
      3. Use Ctrl+Alt+S to access the Signature Maker menu

      License

      See the main repository for license information.

    19. 🔗 anthropics/claude-code v2.1.156 release

      What's changed

      • Fixed an issue when using Opus 4.8 where thinking blocks were modified, leading to API errors.
    20. 🔗 r/LocalLLaMA StepFun 3.7 Flash rss

      StepFun dropped Step 3.7 Flash, 196B total / 11B active MoE, runs locally on 128GB RAM

      It's a multimodal MoE (196B total params, only 11B active) with a built-in 1.8B ViT for vision.

      Benchmark highlights vs. other flash-tier models:

      - SWE-Bench Pro: 56.26% (beats DeepSeek V4 Flash at 55.6%, matches Gemini 3.5 Flash at 55.1%)

      - DeepSearchQA F1: 92.82%, competitive with GPT 5.5 (93.98%)

      - HLE w/ tools: 47.2%, solid for a flash-class model

      Essentially punches well above its active parameter weight on agentic and coding tasks. If you've got the RAM for it, looks like a genuinely interesting local option, especially for agent workflows.

      Available on OpenRouter and NVIDIA NIM if you don't want to self-host.

      submitted by /u/Everlier
      [link] [comments]

  4. May 28, 2026
    1. 🔗 IDA Plugin Updates IDA Plugin Updates on 2026-05-28 rss

      IDA Plugin Updates on 2026-05-28

      New Releases:

      Activity:

      • capa
        • a07b597e: build(deps): bump protobuf from 7.34.0 to 7.35.0 (#3089)
        • 987338d0: build(deps): bump ida-settings from 3.2.2 to 3.4.1 (#3088)
      • IDA-FastAnalysis
        • 7a335f71: Add zydis to target libraries for 8.x
      • idasql
        • 4f039bfb: IDASQL v0.0.15: multi-statement queries, canonical script envelope, d…
    2. 🔗 Simon Willison Claude Opus 4.8: "a modest but tangible improvement" rss

      Anthropic shipped Claude Opus 4.8 today. My favourite thing about it is this note in the release announcement:

      Users will find Opus 4.8 to be a modest but tangible improvement on its predecessor. There’s still more to be done: we’re working on developing and releasing models that provide many of the same capabilities as Opus at a lower cost.

      It's so refreshing to see an AI lab honestly describe a release as a minor incremental improvement over the previous model!

      Honesty seems to be a theme. Here's my other favorite note from that announcement:

      One of the most prominent improvements in Opus 4.8 is its honesty. We train all our models to be honest---for instance, to avoid making claims that they can't support. But a general problem with AI models is that they sometimes jump to conclusions, confidently claiming to have made progress in their work despite the evidence being thin. Early testers report that Opus 4.8 is more likely to flag uncertainties about its work and less likely to make unsupported claims. This is borne out in our evaluations, which show that Opus 4.8 is around four times less likely than its predecessor to allow flaws in code it has written to pass unremarked.

      That linked system card includes the following:

      Claude Opus 4.8 had the lowest incorrect-rate of the six models on every benchmark—the most direct measure of factual hallucination. It achieved this mainly by abstaining on questions about which it was uncertain rather than by answering more questions correctly.

      Model characteristics

      Not much has changed since 4.7.

      It's priced the same as Opus 4.5/4.6/4.7 - $5/million input and $25 per million output. "Fast mode" is twice that price, which is a significant reduction from their previous models - fast mode on 4.6/4.7 remains at $30/$150. Note that fast mode is only available to organizations that are part of the research preview, "Contact your account manager to request access".

      Both the reliable knowledge cutoff and the training data cutoff are January 2026, the same as for 4.7.

      The context window is still 1,000,000 tokens, and the max output is 128,000 tokens.

      The What's new in Claude Opus 4.8 document has some of the more interesting details. These caught my eye:

      Mid-conversation system messages. Claude Opus 4.8 accepts role: "system" messages immediately after a user turn in the messages array (subject to placement rules). This lets you append updated instructions later in a long-running conversation without restating the full system prompt, which preserves prompt cache hits on the earlier turns and reduces input cost on agentic loops.

      See also this update to the Anthropic Python SDK. Being able to steer the system prompt mid-conversation sounds really powerful. I was worried this would be incompatible with the abstraction provided by my own LLM library, which expects a single system prompt per conversation... but it turns out my recent redesign should handle that just fine.

      Lower prompt cache minimum. The minimum cacheable prompt length on Claude Opus 4.8 is 1,024 tokens, lower than on Claude Opus 4.7.

      I checked and 4.7's minimum was 4,096.

      And some pelicans

      Here are pelicans riding bicycles for all five thinking levels, low, medium, high, xhigh, and max:

      This time I ran them using the LLM CLI, exported the logs to Markdown and then had Claude Opus 4.8 build me an HTML tool that could render that Markdown with the svg fenced code blocks displayed as SVGs on the page.

      (I later had GPT-5.5 xhigh in Codex update that code to remove any XSS holes. I'm sure Claude could have done that if I'd asked, but GPT-5.5 is my code security blanket at the moment.)

      The max one was clearly the best, but it did take 25 input, 17,167 output tokens for a total cost of 43 cents!

      You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.

    3. 🔗 r/reverseengineering VMP 3.5+ Internal Architecture & Heap Dispatch Analysis rss
    4. 🔗 HexRaysSA/plugin-repository commits sync repo: +1 release, ~1 changed rss
      sync repo: +1 release, ~1 changed
      
      ## New releases
      - [IDASQL](https://github.com/allthingsida/idasql): 0.0.15
      
      ## Changes
      - [IDASQL](https://github.com/allthingsida/idasql):
        - 0.0.1: archive contents changed, download URL changed
      
    5. 🔗 r/LocalLLaMA I've just benchmarked myself: rss

      I've just benchmarked myself: | submitted by /u/JLeonsarmiento
      [link] [comments]
      ---|---

    6. 🔗 mahmoudimus/ida-sigmaker v1.7.2 release

      sigmaker.py - IDA Python Standalone Python Release

      Release Information

      What changed

      Added

      • Live wait-box progress for the Create unique signature and Find shortest unique signature for current function actions. The wait box updates as the search runs: current signature length and elapsed time for both, plus function bounds, current anchor, inner-search bounds, best size, and candidate count for the function search. (#27, #30)
      • Self-describing wait boxes. Every action's wait box now leads with the action name and a one-line explanation of what it is doing, so a screenshot always identifies which action produced it. (#30)
      • start_profiling / stop_profiling helpers, exposed as Edit/Plugins menu actions, for capturing a cProfile dump of a slow run from inside IDA. (#30)

      Changed

      • Find shortest unique signature for current function is dramatically faster. Uniqueness checks now stop at the second match instead of enumerating every match in the database, and the segment buffer is loaded once per search instead of once per growth step. A function search that previously took minutes on a large database now completes in seconds. (#31)
      • Wait-box refresh throttle default is now 1 second (previously 100 ms), so the box does not repaint faster than it can be read. (#27, #30)

      Removed

      • The liveMatches: count is temporarily removed from the Create unique signature wait box. Counting every match on every growth step was the search's bottleneck; the wait box still shows the growing length and elapsed time. A future release restores an exact count cheaply via incremental candidate refinement. (#27, #30)

      Internal

      • MinimalFunctionSignatureGenerator decodes each function instruction once up front and grows anchors over the cached data, instead of re-decoding per anchor. (#31)
      • SignatureSearcher.is_unique stops at the second match; count_matches still enumerates fully for callers that need the exact count (such as partial-on-cancel). (#31)
      • The compiled _speedups SIMD extension now loads from a sibling directory when the package-level import resolves to a namespace package without a matching compiled build (dev and symlink layouts). (#31)

      Description

      This is a standalone release of the IDA Pro signature maker plugin. The file sigmaker.py contains the complete plugin code that can be directly imported into IDA Pro.

      Installation

      1. Copy sigmaker.py to your IDA Pro plugins directory
      2. Restart IDA Pro
      3. Use Ctrl+Alt+S to access the Signature Maker menu

      License

      See the main repository for license information.

    7. 🔗 anthropics/claude-code v2.1.154 release

      What's changed

      • Opus 4.8 is here! Now defaults to high effort ¡ /effort xhigh for your hardest tasks
      • Introducing dynamic workflows: ask Claude to create a workflow and it orchestrates work across tens to hundreds of agents in the background, so you can take on larger, more complex tasks. Run /workflows to view your runs
      • Fast mode on Opus 4.8 is now available at a fraction of its previous cost: 2x the standard rate for 2.5x the speed
      • The lean system prompt is now the default for all models except Haiku, Sonnet, and Opus 4.7 and earlier
      • Claude now reserves the multiple-choice question prompt for decisions it genuinely cannot make itself, instead of asking when it already has enough context to proceed
      • /simplify now runs a cleanup-only review (reuse, simplification, efficiency, altitude) and applies the fixes, instead of running the full /code-review --fix bug-hunting review
      • Renamed the /effort slider labels from "Speed"/"Intelligence" to "Faster"/"Smarter" for clarity
      • claude agents: type ! <command> to run a shell command as a background session you can attach to and detach from. Also available as claude --bg --exec '<command>'
      • claude agents: /logout now signs you out instead of being sent to a background session
      • ←← to open the agents view now works on Bedrock, Vertex, Foundry, and with telemetry disabled
      • Claude in Chrome: pick which connected browser to use via /chrome → "Select browser…", or in-chat when a browser action runs with multiple connected
      • Plugins can now declare defaultEnabled: false in plugin.json or a marketplace entry; enable them with /plugin or claude plugin enable. Dependencies of enabled plugins are still enabled automatically
      • The /plugin Discover tab now pins plugins whose relevance signals match the current directory with a "suggested for this directory" annotation
      • Streaming tool execution is now always enabled, including when telemetry is disabled or on Bedrock/Vertex/Foundry (previously behind a feature flag)
      • Stdio MCP server subprocesses now receive CLAUDE_CODE_SESSION_ID and CLAUDECODE=1 in their environment
      • claude mcp list/get now show unapproved .mcp.json servers as ⏸ Pending approval instead of auto-approving and connecting when output is piped
      • /remote-control autocomplete now shows "Disconnect Remote Control" when Remote Control is already active
      • Added Claude Opus 4.8 support and 4.7 → 4.8 migration guidance to the /claude-api skill
      • Deprecated CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE (will be removed on 06/01). To use fast mode on Opus 4.6, switch with /model claude-opus-4-6[1m] and then /fast on
      • Improved the auto-mode classifier's detection of data exfiltration, particularly bulk transfers of repository contents
      • Fixed rm -rf $HOME not being blocked as a dangerous path when HOME has a trailing slash
      • Fixed $TMPDIR resolving to different directories in sandboxed vs unsandboxed Bash commands within the same session
      • Fixed unreadable highlighted-row text in claude agents when the Claude Code theme doesn't match the terminal background
      • Fixed background-agent completion notifications triggering premature "out of context" behavior on some 1M-context models
      • Fixed background-session classifier losing the user's goal when a scheduled /command fires
      • Fixed pinned background sessions respawning every minute after a Claude Code update, causing repeated agent-start notifications and process churn at idle
      • Fixed background sessions stuck at "blocked", "running", or "working" not retiring after the idle grace period
      • Fixed subagents in background sessions bypassing the worktree-isolation guard and writing to the shared checkout
      • Fixed orphaned claude --bg-pty-host processes spinning at 100% CPU after the daemon exits on macOS
      • Fixed number key shortcuts not working for options shown below the divider in option dialogs
      • Fixed worktree.baseRef: "head" resolving to the main checkout's HEAD instead of the current worktree's HEAD when spawning subagents or calling EnterWorktree from inside a linked worktree
      • Fixed a stray leading space on wrapped lines when the previous line ended exactly at the terminal width
      • Fixed intermittent terminal rendering corruption in VS Code by capping the number of distinct colors the thinking spinner produces
      • Fixed plan file names including [Image #N] / [Pasted text #N] placeholders when a plan-mode prompt starts with pasted images or text
      • Fixed a phantom expand/click affordance on colored tool output: short ANSI-colored lines that fit on screen no longer show a "ctrl+o to expand" hint
      • Fixed a single invalid allowedMcpServers/deniedMcpServers entry in managed settings discarding all managed-settings policy; the bad entry is now dropped with a claude doctor warning
      • Fixed API 400 errors on models that don't support the effort parameter when CLAUDE_CODE_ALWAYS_ENABLE_EFFORT is set
      • Windows: Fixed update failures caused by claude.exe being in use showing a generic error instead of telling you to close other sessions and retry
      • Removed the stale "& for background" hint from the shortcuts help panel
      • [VSCode] Auto mode no longer requires the bypass-permissions setting to appear in the mode picker, and a dismissable notice on the new-session screen explains auto mode the first time it's active
      • Fixed the task panel below the prompt showing a stray unselectable "main" row when only a workflow is running
      • Fixed /mcp tools list and tool detail rendering when MCP servers have long or multi-line tool names or long descriptions
      • Fixed the /model picker not showing fast mode pricing on the Default option for API (pay-as-you-go) users when fast mode is on
      • Fixed auto mode incorrectly blocking actions with "could not evaluate this action" when the safety classifier ran out of output tokens while reasoning
    8. 🔗 jesseduffield/lazygit v0.62.1 release

      This fixes a regression (crash) introduced in 0.62.0. For the full list of changes in 0.62, see here.

      What's Changed

      Fixes 🔧

      • Fix crash when keybindings are disabled that normally show in the status bar by @stefanhaller in #5655

      Docs 📖

      • Add docs for how to add the default, non-pager diff to the list of pagers by @stefanhaller in #5656

      Full Changelog : v0.62.0...v0.62.1

    9. 🔗 r/reverseengineering How 2004 RuneScape fit a multiplayer RPG into 56k dial-up rss
    10. 🔗 Cryptography & Security Newsletter ACME CAA Extensions to Become Mandatory rss

      The CA/Browser Forum has voted to make ACME CAA extensions mandatory starting in March 2027. This change is one of the last remaining pieces needed to support strong, cryptographically-validated domain validation in Web PKI. In this blog post, we discuss why Web PKI doesn't provide enough assurance for high-profile websites, and how DNSSEC, ACME, and CAA can be combined to achieve strong cryptographic validation of certificate issuance.

    11. 🔗 r/LocalLLaMA Zai replaced the network architecture running GLM-5.1 inference and the gains are pretty wild rss

      Zai replaced the network architecture running GLM-5.1 inference and the gains are pretty wild | Been following the infrastructure side of AI more lately and stumbled on this from Zai. They upgraded the network architecture on a thousand-GPU cluster running GLM-5.1 coding inference from the standard ROFT setup to something they built called ZCube, developed with Tsinghua University and HarnetsAI The numbers from production: - Switch and optical module costs down 33% - GPU inference throughput up 15% - P99 tail latency on first token dropped 40.6% Same GPUs, same software stack, same model. Just the network architecture changed The actual problem they were solving is interesting. With Prefill-Decode disaggregated inference, KV Cache transfers create highly asymmetric traffic between nodes. ROFT topology handles training workloads fine but with PD disaggregation the traffic patterns dont match the static rail mapping, so you get hotspots on specific Leaf switches and PFC backpressure building up ZCube addresses it by going fully flattened, removing the Spine layer entirely and using a complete bipartite interconnect between two switch groups. Eliminates a whole category of congestion that ROFT cant avoid by design The cost reduction while getting better performance is the part that stands out. Usually you pay more for better network hardware. Here they cut hardware costs by a third and got 15% more throughput out of the same GPUs submitted by /u/Scared-Biscotti2287
      [link] [comments]
      ---|---

    12. 🔗 r/reverseengineering reverse engineering need for speed most wanted for modding sdk rss
    13. 🔗 r/Harrogate Exploring the derelict Grove House on Skipton Rd rss

      Exploring the derelict Grove House on Skipton Rd | 🏚️ Grove House is a historic Grade II listed manor located on Skipton Road in Harrogate, North Yorkshire. Originally built as a coaching inn called the 'World's End Inn' in 1745, it served as a remote staging post and hostelry during the early days of Harrogate's spa town era. In the 1880s, Victorian inventor, industrialist, and mayor Samson Fox purchased the property. He expanded it significantly, turning the estate into an architectural marvel by adding elaborate interiors, a picture gallery, and Yorkshire's first private water-gas lighting system. The estate later transitioned to public use, serving as a hospital during the First World War. In 1926, the Royal Antediluvian Order of Buffaloes (RAOB) purchased the building, operating it as an orphanage until the late 1940s. Its use then shifted to a convalescent and residential care home for older members of the RAOB. The building was purchased by Springfield Healthcare who pledged a £15million revamp to convert the site into a major care village, however as of May 2026 no redevelopment has taken place. submitted by /u/LostPlacesUK
      [link] [comments]
      ---|---

    14. 🔗 r/Harrogate Car wash rss

      Any decent car wash teams in the area? Preferably where the team do it for you.

      submitted by /u/Evrul5206
      [link] [comments]

    15. 🔗 r/reverseengineering GitHub - cadela-dev/Anything-Reversal-Template: A Claude Code clean-room documentation workflow for reversing source structure into behavior-focused mirror docs. rss
    16. 🔗 r/reverseengineering Winbox server/client reverse engineered is opensource rss
    17. 🔗 r/LocalLLaMA Vulnerability found in framework used by VLLM, many MCP servers, and other LLM tools rss

      Vulnerability found in framework used by VLLM, many MCP servers, and other LLM tools | Worth taking a look to see if this affects any of you. Surprised nobody has posted it yet. submitted by /u/Hrethric
      [link] [comments]
      ---|---

    18. 🔗 anthropics/claude-code v2.1.153 release

      What's changed

      • Added skipLfs option to github/git plugin marketplace sources to skip Git LFS downloads during clone and update
      • Claude Code now shows a one-time notice when your npm global install can't auto-update; /doctor lists the fixes
      • Status line commands now receive COLUMNS and LINES environment variables so scripts can size output to the terminal width
      • claude agents: autocomplete in the dispatch input now suggests native slash commands and bundled skills, not just project skills
      • claude agents: PR column now shows PR #N for a single PR or N PRs for multiple
      • claude doctor now shows the result of your last update attempt
      • Combined the separate "needs authentication" startup notifications for MCP servers and connectors into a single message
      • macOS: background agents now appear as "Claude Code" in Privacy & Security and keep their permission grants across upgrades
      • Fixed stateful MCP servers without the optional GET SSE stream reconnect-looping on tools/list (regression in v2.1.147)
      • Fixed a regression where a custom API gateway could receive the user's Anthropic OAuth credential instead of the gateway's own token
      • Fixed subagent (Agent tool) frontmatter MCP servers ignoring --strict-mcp-config, --bare, remote mode, enterprise managed MCP config, and managed-settings MCP server allow/deny policies
      • --strict-mcp-config no longer strips inline mcpServers from explicitly-passed agent definitions (--agents / SDK agents), and blocked subagent MCP servers now surface a visible warning
      • Fixed the Windows PowerShell installer reporting "Installation complete!" when installation actually failed
      • Fixed claude update installing the latest version instead of the configured release channel's version for npm installations
      • Fixed excessive memory usage (multiple GB) when resuming a session by transcript file path on machines with many stored sessions
      • Fixed claude agents and claude --bg running on a stale daemon started before binary-takeover support, even after upgrading
      • Fixed a hang where the CLI could fail to exit when stdin was closed without EOF in stream-json mode, leaving a stale session marker behind
      • Fixed malformed file:// links in Claude's responses not being clickable in the terminal
      • Fixed claude --help rendering unwrapped output on terminals narrower than 92 columns
      • Fixed MCP tool progress notifications not rendering in the collapsed tool view
      • Fixed Agent tool with subagent_type: 'claude' running in an undocumented temporary worktree, which could silently discard outputs written to gitignored paths
      • /bg while Claude is responding now continues the response in the background session instead of dropping it
      • Fixed /btw keyboard shortcuts becoming unresponsive in background sessions while a task is running
      • Fixed background sessions writing temp files to $CLAUDE_JOB_DIR triggering a "sensitive file" permission prompt
      • Fixed recovering a background agent whose working directory was deleted showing a truncated stack trace instead of a clear error message
      • Fixed EnterWorktree not being available immediately in background sessions (previously required ToolSearch first)
      • Fixed cmd+k in iTerm2/Terminal.app not repainting attached background sessions
      • Fixed the IME candidate window appearing at the bottom of the screen instead of next to the input caret in attached background sessions on Windows
      • Fixed background-color bleed when attaching to a background agent from 256-color-only terminals after the agent had rendered file diffs
      • Fixed /copy and copy-on-select silently failing to update the system clipboard when attached to a background session inside tmux
      • Fixed opening claude agents with Remote Control enabled leaving zombie session entries on the Code tab after exiting
      • Fixed /rename in background sessions not updating the session banner immediately
      • Fixed Windows update rollback: if a Windows update fails, Claude Code now restores the original executable by copy and tells you how to recover
      • [VSCode] Fixed Claude Code processes not shutting down cleanly when VS Code closed on Windows, causing false "unclean exit" reports and orphaned MCP servers
      • /model now saves your selection as the default for new sessions (matching the IDE). Press s in the picker to switch models for the current session only.
      • If you customized the modelPicker:setAsDefault keybinding, rename it to modelPicker:thisSessionOnly in keybindings.json (the d action was replaced by s)
    19. 🔗 Console.dev newsletter Files SDK rss

      Description: Unified SDK for object and blob stores.

      What we like: Consistent API for whichever backing storage you use: S3, R2, Dropbox, Supabase etc. Supports core operations e.g. upload, copy, move, list. Every method is also a command with the built-in CLI. Hooks for onAction, onRetry, onError.

      What we dislike: JS / TS-only.

    20. 🔗 Console.dev newsletter Taphouse rss

      Description: Native macOS Homebrew GUI.

      What we like: Visual package browse and search. Manage services that ship with packages e.g. start/stop Redis, Postgres, etc. Easy to install and remove packages with a global view of everything installed. Lists disk usage and provides security audit alerts.

      What we dislike: Free version provides most of the functionality, but paid upgrade required for some features e.g. package health dashboard. macOS only.

    21. 🔗 Rust Blog Announcing Rust 1.96.0 rss

      The Rust team is happy to announce a new version of Rust, 1.96.0. Rust is a programming language empowering everyone to build reliable and efficient software.

      If you have a previous version of Rust installed via rustup, you can get 1.96.0 with:

      $ rustup update stable
      

      If you don't have it already, you can get rustup from the appropriate page on our website, and check out the detailed release notes for 1.96.0.

      If you'd like to help us out by testing future releases, you might consider updating locally to use the beta channel (rustup default beta) or the nightly channel (rustup default nightly). Please report any bugs you might come across!

      What's in 1.96.0 stable New Range* types Many users expect Range and related core::ops types to be Copy, but this is not the case: they implement Iterator directly, and it is a footgun to implement both Iterator and Copy on the same type so this has been avoided. RFC3550 proposed a set of replacement range types that implement IntoIterator rather than Iterator, meaning they can also be Copy. The standard library portion of that RFC is now stable, introducing: core::range::Range core::range::RangeFrom core::range::RangeInclusive Associated iterators A Rust version in the near future will also add core::range::RangeFull and core::range::RangeTo as re-exports from core::ops (these do not implement Iterator and already implement Copy), and core::range::legacy::* as the new home for the current ranges. Range syntax like 0..1 still produces the legacy types for now, but will be updated to core::range types in a future edition. With these stabilizations, it is now possible to store slice accessors in Copy types without splitting start and end: use core::range::Range; #[derive(Clone, Copy)] pub struct Span(Range<usize>); impl Span { pub fn of(self, s: &str) -> &str { &s[self.0] } } The new RangeInclusive also makes its fields public, unlike the legacy version which avoided exposing the exhausted iterator state. This isn't a concern with the new type since it must be converted to begin iteration. Library authors should consider making use of impl RangeBounds in public API, which accepts both legacy and new range types. If a concrete type is needed, prefer using new ranges as this will eventually become the default. Assert matching patterns The new macros assert_matches! and debug_assert_matches! check that a value matches a given pattern, panicking with a Debug representation of the value otherwise. These are essentially the same as assert!(matches!(..)) and debug_assert!(matches!(..)), but the printed value improves the possibility of diagnosing the failure. These new macros have not been added to the standard prelude, because they would collide with popular third-party crates that provide macros with the same name. Instead, they should be manually imported from core or std before use. use core::assert_matches; /// fn get_random_number() -> u32 { // chosen by a fair dice roll. // guaranteed to be random. 4 } fn main() { assert_matches!(get_random_number(), 1..=6); } Changes to WebAssembly targets

      WebAssembly targets no longer pass --allow-undefined to the linker which means that undefined symbols when linking are now a linker error instead of being converted to WebAssembly imports from the "env" module. This change prevents modules from linking unless all linking-related symbols are defined to catch bugs earlier and prevent accidental issues with symbol naming or similar.

      Undefined linking-related symbols are often indicative of build-time related bugs or misconfiguration. If, however, the old behavior is intended then it can be re-enabled with RUSTFLAGS=-Clink-arg=--allow-undefined or by editing the source code and using #[link(wasm_import_module = "env")] on the block defining the symbol.

      This change was previously announced on this blog, and now takes effect in Rust 1.96.

      Stabilized APIs

      Two Cargo advisories

      Rust 1.96 contains fixes for two vulnerabilities for users of third-party registries.

      • CVE-2026-5223 is a medium severity vulnerability regarding extraction of crate tarballs with symlinks.

      • CVE-2026-5222 is a low severity vulnerability regarding authentication with normalized URLs.

      Users of crates.io are not affected by either vulnerability.

      Other changes

      Check out everything that changed in Rust, Cargo, and Clippy.

      Contributors to 1.96.0

      Many people came together to create Rust 1.96.0. We couldn't have done it without all of you. Thanks!

    22. 🔗 Ampcode News Plugins, Everywhere rss

      Amp plugins can now show UI elements on the web, too.

      Supported are notifications, confirmation dialogs, input fields, and select elements.

      See the plugin documentation for examples of what's possible.