- β
- β
to read (pdf)
- Neobrutalism components - Start making neobrutalism layouts today
- Debunking zswap and zram myths
- Building a Pipeline for Agentic Malware Analysis | Tim Blazytko
- Study of Binaries Created with Rust through Reverse Engineering - JPCERT/CC Eyes | JPCERT Coordination Center official Blog
- Letting AI Actively Manage Its Own Context | ζ倩ηδΉδΊ
- March 27, 2026
-
π The Pragmatic Engineer Is the FDE role becoming less desirable? rss
Hi, this is Gergely with a bonus, free issue of the Pragmatic Engineer Newsletter. In every issue, I cover Big Tech and startups through the lens of senior engineers and engineering leaders. Today, we cover one out of four topics from last week 's The Pulse issue. Full subscribers received the article below seven days ago. If you 've been forwarded this email, you can subscribe here .
An interesting trend highlighted by The Wall Street Journal: companies want to hire for FDE roles, but devs are just not that interested:
"Job postings on Indeed grew more than 10-fold in 2025 compared with 2024. The number of public company transcripts mentioning the role jumped to 50 from eight over the same period, according to data from AlphaSense.
The only problem? Few engineers want the job, which has historically been seen as demanding, undesirable, and less prestigious than product-focused engineering roles.
"Everyone wants them and there's only maybe 10% of the market that wants that role," said Patrick Kellenberger, president and chief operating officer at Betts Recruiting."
Last summer, we covered the rise of the FDE role, and looked into what it's like. Back then, this is how I visualized what was then a very hot role:
My
2025 visualization of the FDE roleAt the companies where I interviewed FDE folks - OpenAI and Ramp - the role seemed to live up to this visualization. However, I've since talked with two engineers who took FDE roles and were disappointed. This is how they saw it, in practice:
Reality
of the FDE role: less software engineering, and even less platform
engineeringThe role seems akin to a "sales engineer" where FDEs help close the deals, or a solutions engineer (or even consultant), where FDEs deploy to a customer to build them a solution. They don't contribute back into the platform, and don't do much that's considered "software engineering" beyond integrating software which the product team built.
Some engineers figure out the nature of the role during the interview process and pass on it. Meanwhile, some others take the job and later quit. Here's what a dev told me who accept an FDE role at a company, but didn't find what they expected:
"This FDE job was a typical IT services mindset. The company wanted to use me more on the engagement lead side, and nothing on software development. It's not what I signed up for, and I didn't like the vibe and culture. I quit 4 weeks later."
In today's job market, if there's high demand for a role which pays decently but attracts little interest from engineers, there's always a reason!
Read the full issue of last week's The Pulse, or check out this week's The Pulse.
Catch up with recent The Pragmatic Engineer issues:
- Building WhatsApp with Jean Lee (podcast): Jean Lee, engineer #19 at WhatsApp, on scaling the app with a tiny team, the Facebook acquisition, and what it reveals about the future of engineering.
- The Pulse: What will the Staff Engineer role look like in 2027 and beyond?**** What happens to the Staff engineer role when agents write more code? Actually, they could be more in demand than ever!
- From IDEs to AI Agents with Steve Yegge (podcast): Steve Yegge on how AI is reshaping software engineering, the rise of "vibe coding," and why developers must adapt to a rapidly changing craft.
-
π r/Leeds the city at dusk rss
submitted by /u/whtmynm
[link] [comments] -
π r/Leeds Can't park there mate rss
The new busses are looking a bit different
submitted by /u/AvinchMC
[link] [comments] -
π Textualize/textual The Select Release release
This release enhances text selection, with auto-scrolling, and the ability to select across container widgets.
This work was sponsored by Mistral AI.
[8.2.0] - 2026-03-27
Added
-
π milankovo/ida-drop-all-the-files v1.4.0 release
Full Changelog :
v1.3.0...v1.4.0 -
π backnotprop/plannotator v0.15.5 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.15.2 | Compound Planning skill, folder annotation,/plannotator-archiveslash command, skill installation via platform installers
v0.15.0 | Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity
v0.14.5 | GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 | GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring, file header gap fix
v0.14.3 | PR context panel, diff search in code review, OpenCode permission normalization, landing page redesign
v0.14.2 | OpenCode plan mode prompt replacement, Windows non-ASCII path fix, Pi link fix
v0.14.1 | Single submit_plan with auto-detect, viewed-file draft persistence, Bear nested tag fix
v0.14.0 | PR review via GitHub URL,/plannotator-lastfor annotating agent messages, OpenCode plan mode permissions fix, VS Code SSH proxy fix
v0.13.1 | OpenCode plan mode rewrite, Obsidian save fix
v0.13.0 | Built-in themes, annotatable plan diffs, file-scoped code review comments, Octarine integration, unified review core, Pi remote sessions
v0.12.0 | Quick annotation labels, mobile compatibility, Graphviz rendering, markdown images with lightbox, linked doc navigation in annotate mode
What's New in v0.15.5
v0.15.5 is a community release. 8 PRs, 5 from external contributors, 4 of them first-timers.
GitHub Viewed File Sync
When reviewing a PR, Plannotator now syncs with GitHub's native "Viewed" checkmarks. On load, the file tree fetches each file's
viewerViewedStatevia GraphQL and pre-populates the viewed checkboxes. Toggling a file's viewed state in Plannotator fires a background mutation to mark or unmark it on GitHub. Your progress carries over between Plannotator and GitHub's PR page.GitLab PRs are unaffected β GitLab's viewed state is localStorage-only with no API.
Custom Display Name
Previously, annotations were attributed to an auto-generated tater identity (e.g., "Rustic Potato"). You can now set a custom display name in the settings panel. A "Use git name" button pulls from
git config user.namefor quick setup.This release also introduces
~/.plannotator/config.jsonas a persistent configuration file. Settings written here take precedence over cookies, giving a stable config layer that survives port changes and browser sessions.- #399, closing #396 reported by @MarceloPrado
Expand/Collapse All in File Tree
The code review file tree sidebar now has expand all and collapse all buttons in the header. Useful when reviewing PRs with deeply nested directory structures.
Search Performance in Code Review
Typing in the diff search bar previously rebuilt every
<mark>highlight on every keystroke. For large diffs this caused visible lag. Highlights are now debounced by 100ms, and stepping through matches (Enter/Shift+Enter) swaps two elements' styles in O(1) instead of rebuilding the entire set.- #407, closing #405 reported by @dillonoconnor
Additional Changes
- WSL update command fix. The update banner now detects WSL and shows the Unix install command instead of the Windows one (#395 by @alexandresilvestri)
- Project slug fix for dots and underscores.
projectSlugFromCwd()now matches Claude Code's actual algorithm, replacing all non-alphanumeric characters (not just/) with-. This fixesannotate-lastfailures for working directories with dots or underscores in the path (#401 by @aletar89) - Pi tool-scope import fix. The published Pi package was missing
tool-scope.ts, causing a load failure. Fixed the import extension and added the file to the package manifest (#392 by @jasonodonnell, closing #391 reported by @iefnaf) - Pi compound planning skill. The compound planning skill is now bundled in the published Pi package, so Pi users get it automatically on install
- Diff type switcher docs. Documented all five diff type options in the code review docs (#398, closing #397 reported by @UberMouse)
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: Run
/pluginin Claude Code, find plannotator , and click "Update now".OpenCode: Clear cache and restart:
rm -rf ~/.bun/install/cache/@plannotatorThen in
opencode.json:{ "plugin": ["@plannotator/opencode@latest"] }Pi: Install or update the extension:
pi install npm:@plannotator/pi-extension
What's Changed
- fix: Pi plan tool scoping import by @jasonodonnell in #392
- feat: sync GitHub viewed files by @rockneurotiko in #393
- fix: Unix update command for WSL users by @alexandresilvestri in #395
- docs: document diff type switcher in code review by @backnotprop in #398
- feat: custom display name + config file foundation by @backnotprop in #399
- fix: project slug derivation for paths with dots and underscores by @aletar89 in #401
- feat(review): add expand/collapse all buttons to file tree sidebar by @yonihorn in #403
- perf(review): debounce search highlights and O(1) active match swap by @backnotprop in #407
New Contributors
- @jasonodonnell made their first contribution in #392
- @alexandresilvestri made their first contribution in #395
- @aletar89 made their first contribution in #401
- @yonihorn made their first contribution in #403
Community
@rockneurotiko contributed the GitHub viewed file sync (#393), bridging Plannotator's review UI with GitHub's native progress tracking. @yonihorn added the expand/collapse all buttons to the file tree (#403). @alexandresilvestri fixed the update banner for WSL users (#395). @aletar89 fixed project slug derivation for paths with dots and underscores (#401). @jasonodonnell fixed the Pi tool-scope import (#392).
On the issue side:
- @iefnaf reported the missing
tool-scope.tsin #391 - @gwynnnplaine and @marandaneto confirmed the issue and provided additional context
- @MarceloPrado requested custom display names in #396
- @UberMouse requested diff type documentation in #397
- @dillonoconnor reported the search performance issue in #405
Full Changelog :
v0.15.2...v0.15.5 -
π badlogic/pi-mono v0.63.1 release
Added
- Added
gemini-3.1-pro-preview-customtoolsmodel availability for thegoogle-vertexprovider (#2610 by @gordonhwc)
Fixed
- Documented
tool_callinput mutation as supported extension API behavior, clarified that post-mutation inputs are not re-validated, and added regression coverage for executing mutated tool arguments (#2611) - Fixed repeated compactions dropping messages that were kept by an earlier compaction by re-summarizing from the previous kept boundary and recalculating
tokensBeforefrom the rebuilt session context (#2608) - Fixed interactive compaction UI updates so
ctx.compact()rebuilds the chat through unified compaction events, manual compaction no longer duplicates the summary block, and thetrigger-compactexample only fires when context usage crosses its threshold (#2617) - Fixed interactive compaction completion to append a synthetic compaction summary after rebuilding the chat so the latest compaction remains visible at the bottom
- Fixed skill discovery to stop recursing once a directory contains
SKILL.md, and to ignore root*.mdfiles in.agents/skillswhile keeping root markdown skill files supported in~/.pi/agent/skills,.pi/skills, and packageskills/directories (#2603) - Fixed edit tool diff rendering for multi-edit operations with large unchanged gaps so distant edits collapse intermediate context instead of dumping the full unchanged middle block
- Fixed edit tool error rendering to avoid repeating the same exact-match failure in both the preview and result blocks
- Fixed auto-compaction overflow recovery for Ollama models when the backend returns explicit
prompt too long; exceeded max context length ...errors instead of silently truncating input (#2626) - Fixed built-in tool overrides that reuse built-in parameter schemas to still honor custom
renderCallandrenderResultrenderers in the interactive TUI, restoring theminimal-modeexample (#2595)
- Added
-
π badlogic/pi-mono v0.63.0 release
Breaking Changes
ModelRegistry.getApiKey(model)has been replaced bygetApiKeyAndHeaders(model)becausemodels.jsonauth and header values can now resolve dynamically on every request. Extensions and SDK integrations that previously fetched only an API key must now fetch request auth per call and forward bothapiKeyandheaders. UsegetApiKeyForProvider(provider)only when you explicitly want provider-level API key lookup without model headers orauthHeaderhandling (#1835)- Removed deprecated direct
minimaxandminimax-cnmodel IDs, keeping onlyMiniMax-M2.7andMiniMax-M2.7-highspeed. Update pinned model IDs to one of those supported direct MiniMax models, or use another provider route that still exposes the older IDs (#2596 by @liyuan97)
Migration Notes
Before:
const apiKey = await ctx.modelRegistry.getApiKey(model); return streamSimple(model, messages, { apiKey });After:
const auth = await ctx.modelRegistry.getApiKeyAndHeaders(model); if (!auth.ok) throw new Error(auth.error); return streamSimple(model, messages, { apiKey: auth.apiKey, headers: auth.headers, });Added
- Added
sessionDirsetting support in global and projectsettings.jsonso session storage can be configured without passing--session-diron every invocation (#2598 by @smcllns) - Added a startup onboarding hint in the interactive header telling users pi can explain its own features and documentation (#2620 by @ferologics)
- Added
edittool multi-edit support so one call can update multiple separate, disjoint regions in the same file while matching all replacements against the original file content - Added support for
PI_TUI_WRITE_LOGdirectory paths, creating a unique log file (tui-<timestamp>-<pid>.log) per instance for easier debugging of multiple pi sessions (#2508 by @mrexodia)
Changed
Fixed
- Fixed file mutation queue ordering so concurrent
editandwriteoperations targeting the same file stay serialized in request order instead of being reordered during queue-key resolution - Fixed
models.jsonshell-command auth and headers to resolve at request time instead of being cached into long-lived model state. pi now leaves TTL, caching, and recovery policy to user-provided wrapper commands because arbitrary shell commands need provider-specific strategies (#1835) - Fixed Google and Vertex cost calculation to subtract cached prompt tokens from billable input tokens instead of double-counting them when providers report
cachedContentTokenCount(#2588 by @sparkleMing) - Added missing
ajvdirect dependency; previously relied on transitive install via@mariozechner/pi-aiwhich broke standalone installs (#2252) - Fixed
/exportHTML backgrounds to honortheme.export.pageBg,cardBg, andinfoBginstead of always deriving them fromuserMessageBg(#2565) - Fixed interactive bash execution collapsed previews to recompute visual line wrapping at render time, so previews respect the current terminal width after resizes and split-pane width changes (#2569)
- Fixed RPC
get_session_statsto exposecontextUsage, so headless clients can read actual current context-window usage instead of deriving it from token totals (#2550) - Fixed
pi updatefor git packages to fetch only the tracked target branch with--no-tags, reducing unrelated branch and tag noise while preserving force-push-safe updates (#2548) - Fixed print and JSON modes to emit
session_shutdownbefore exit, so extensions can release long-lived resources and non-interactive runs terminate cleanly (#2576) - Fixed GitHub Copilot OpenAI Responses requests to omit the
reasoningfield entirely when no reasoning effort is requested, avoiding400errors from Copilotgpt-5-minirejectingreasoning: { effort: "none" }during internal summary calls (#2567) - Fixed blockquote text color breaking after inline links (and other inline elements) due to missing style restoration prefix
- Fixed slash-command Tab completion from immediately chaining into argument autocomplete after completing the command name, restoring flows like
/modelthat submit into a selector dialog (#2577) - Fixed stale content and incorrect viewport tracking after TUI content shrinks or transient components inflate the working area (#2126 by @Perlence)
- Fixed
@autocomplete to debounce editor-triggered searches, cancel in-flightfdlookups cleanly, and keep suggestions visible while results refresh (#1278)
-
π HexRaysSA/plugin-repository commits sync plugin-repository.json rss
sync plugin-repository.json No plugin changes detected -
π exe.dev Everyone is building a software factory rss
We are all grappling with what it means to be an organization with agentic tools. We are seeing a Cambrian explosion of workflows in how to produce software. It is unwise, right now, to declare The Solution and enforce it. Developer Productivity teams that are pushing a workflow on their users are being counterproductive. Instead, the moment calls for experimentation and for giving people the agency to experiment, to learn, to iterate.
The key is the compute primitive. Youβand everyone else on your teamβneed to have plentiful, performant, trivial-to-provision VMs that can be accessed from your phone or anywhere, that can be shared securely, that integrate nicely, and that can be trusted with your data. Given this, you'll find an explosion of agents, automations, UIs, workflows, notifications, bots, claws, and so on. The successful ones will evolve to be the bones of your software factory.
This is not a One Size Fits All moment. This is an Everyone's Workflow is Different moment.
We went around the office recently, and talked through our workflows. 7 people. 9 workflows. (Not a joke!) Everyone's are different. Everyone's are wonderful. There's the newsletter that visits our Slack and tells us what's going on in support rotation. There's the integration with our Clickhouse logs. There's the background agent fighting the noble fight against test flakes. There are multi-agent orchestrators. There's an "inbox" view that gathers agent conversation state from all the VMs and sorts them by recency and annotates whether they've been pushed. There's vanilla Claude Code. There's the pi coding agent. There's our own coding agent, Shelley.
The only common denominator? We're all using VMs to isolate, try, share, iterate, parallelize. So many VMs.
-
- March 26, 2026
-
π IDA Plugin Updates IDA Plugin Updates on 2026-03-26 rss
IDA Plugin Updates on 2026-03-26
New Releases:
Activity:
- augur
- 229654f8: test: improve integration tests
- capa
- Greffe
- deb8bd6f: Autocomplete in Del()
- haruspex
- 5442fe2f: test: improve integration tests
- hrtng
- 3c2438e5: refresh all widgets after "Refactoring";
- ida-domain
- 7de2e5c1: Extend microcode module (#65)
- plugin-ida
- 89b0becb: Merge pull request #108 from RevEngAI/feat-PLU-256
- 56cb7843: chore: bump package version
- ed47fd57: Merge pull request #107 from RevEngAI/feat-PLU-256
- 4e481e23: chore: bump package version
- 10b07b25: Merge pull request #106 from RevEngAI/feat-PLU-256
- 58a4724d: feat(PLU-256): plugin boundary changes
- python-elpida_core.py
- 2f5cb3d8: Reduce aggressive external request patterns (anti-abuse)
- 9412a821: Pause BODY loop during Live Audit to prevent OOM crash
- 1adbf746: Strip trailing newline from REPLICATE_API_TOKEN
- 72d5ced6: Fix Live Audit results lost on Vision button click
- 40bd18fe: Add Replicate Flux vision generator to Live Audit
- 38a894aa: A16 governance integration: keywords (20), IANUS support, UI 16 axiomβ¦
- 15637da8: Add A16 + missing A11-A14 across BODY: embeddings (11β16), banner, d1β¦
- 37cf4d9f: Fix D15 provider parity: HF openrouterβconvergence to match root
- b052e016: Diplomat layer + A16 Responsive Integrity ratification + cleanup
- rhabdomancer
- 71f97710: test: improve integration tests
- augur
-
π r/Leeds Wire Nightclub rss
I took this whilst in the queue at 1.00 in the morning, the week before COVID lockdown. Seemed to capture the chilled club vibe nicely.
submitted by /u/ApprehensiveArm5689
[link] [comments] -
π r/Yorkshire Progress rss
| submitted by /u/Inevitable-Debt4312
[link] [comments]
---|--- -
π larsderidder/context-lens v0.7.3 release
-
π larsderidder/context-lens v0.7.2 release
New Features
-
Context pruning β drop individual messages from the LLM's context mid-session. Click β on any message in the Messages tab; the proxy strips it from all future requests. Pruned messages show as dimmed ghosts with their original content.
-
Copilot CLI support β
context-lens copilotwraps GitHub Copilot CLI. -
Redundant tool call detection β flags re-fetches, stuck-on-error loops, and repeated identical tool calls in Findings.
Improvements
- Pi sessions now get stable conversation IDs via URL session tags
- Always inject anthropic provider into pi's models.json
- Rewrite all external pi providers through proxy (not just a hardcoded list)
Bug Fixes
-
-
π larsderidder/context-lens v0.7.1 release
New Features
-
Context pruning β drop individual messages from the LLM's context mid-session. Click β on any message in the Messages tab; the proxy strips it from all future requests. Pruned messages show as dimmed ghosts with their original content. Permanent, no undo.
-
Copilot CLI support β
context-lens copilotwraps GitHub Copilot CLI. -
Redundant tool call detection β flags re-fetches, stuck-on-error loops, and repeated identical tool calls in Findings.
Improvements
- Pi sessions now get stable conversation IDs via URL session tags
- Always inject anthropic provider into pi's models.json (fixes sessions bypassing the proxy)
- Rewrite all external pi providers through proxy, not just a hardcoded list
Bug Fixes
- Fix pi sessions not being captured when anthropic provider wasn't in models.json
- Fix Windows browser opening in MSYS2/Git Bash
- Warn when mitmproxy CA cert is not trusted in macOS Keychain (Codex)
-
-
π r/Harrogate Bramham Drive HG2 area rss
Hi everyone, I'm looking at possibly buying a flat in the Bramham Drive area. Had a look online and seen slightly elevated levels of crime. Can anybody shine a light on the area for me please? What's it like there and should I be concerned?
Thanks a lot
submitted by /u/blkhlznrevltionz
[link] [comments] -
π r/reverseengineering r2gopclntabParser: A radare2-based Go gopclntab parser for recovering function symbols from Go binaries, including fully stripped ones. rss
submitted by /u/asherdl02
[link] [comments] -
π r/york Kickabout Community rss
| Enjoy a friendly football game to break up the week. Kickabout Community supports independent 5-a-side and 7-a-side adult football games across York. Weβre a volunteer-run group of organisers, making football accessible for players of all ability, gender, age, and fitness levels. π Join Kickabout Community here: https://chat.whatsapp.com/CSt29p06AGLL1E91uu5Eze π Pitches used: β’ York Sports Village β’ University of York Sports Centre β’ PlayFootball Clifton Moor β’ Energise Acomb π· Subs: Β£3-4 per session (covering pitch hire, balls, and bibs) We are not a business and not profit-making. Any surplus funds are for player socials or charitable donations. submitted by /u/Chance_Board_5424
[link] [comments]
---|--- -
π r/Leeds Woodhouse firework rss
Does anyone living near Woodhouse know what the firework happening right now is about? It sounds like world war 3.
submitted by /u/CraftyBrie
[link] [comments] -
π r/york Sarah Ferguson stripped of Freedom of City of York title rss
| submitted by /u/Kagedeah
[link] [comments]
---|--- -
π r/Leeds The Empire Cafe illustration rss
I've been drawing pictures of Leeds now for like 10 years but I'm still not bored of drawing the city at night! Here's Empire Cafe on Fish Street :)
submitted by /u/zacrosso_art
[link] [comments] -
π r/Yorkshire Had a grand day out today in Pickering, too early in season for the castle, museum and railway, but had lots to do and visit rss
| submitted by /u/arioandy
[link] [comments]
---|--- -
π r/Leeds Leeds Photos rss
I bought a new camera in a bid to use my phone less, found I quite enjoy taking photos. I don't have much of a clue what I'm doing but took these recently.
submitted by /u/Phil-pot
[link] [comments] -
π r/reverseengineering Latest Akamai v3 deobfuscator static reversal of dynamic per request rss
submitted by /u/alex_pushing40
[link] [comments] -
π r/york Daffodils rss
I've never given much thought to the daffodils that are everywhere in York at this time of year, but is there a reason, historical or otherwise why there are so many in so many places throughout the city?
submitted by /u/Shoddy-Television530
[link] [comments] -
π r/Leeds A nostalgic long read about clubbing in Leeds in the noughties - hopefully itβs of interest to some of you! rss
submitted by /u/Andyc1421
[link] [comments] -
π r/york First time visiting rss
I (M22) going to York for the first time between the 30th of March and 1st of April. Is there anything I should definitely check out which I might not of heard about (I am not bringing my car with me so it will all have to be quite local)? And is there anything I should know/be aware of before I go? (Such as do I need to book tickets for the dungeons or can I pay at the entrance).
I am always open to meet new people too, so if anyone would like to join me for museums or attractions, feel free to shoot me a message.
Thank you so much for all your help!
submitted by /u/SneakingALook
[link] [comments] -
π r/LocalLLaMA Mistral AI to release Voxtral TTS, a 3-billion-parameter text-to-speech model with open weights that the company says outperformed ElevenLabs Flash v2.5 in human preference tests. The model runs on about 3 GB of RAM, achieves 90-millisecond time-to-first-audio, supports nine languages. rss
| VentureBeat: Mistral AI just released a text-to-speech model it says beats ElevenLabs β and it's giving away the weights for free: https://venturebeat.com/orchestration/mistral-ai-just-released-a-text-to-speech-model-it-says-beats-elevenlabs-and Mistral AI unlisted video on YouTube: Voxtral TTS. Find your voice.: https://www.youtube.com/watch?v=_N-ZGjGSVls Mistral new 404: https://mistral.ai/news/voxtral-tts submitted by /u/Nunki08
[link] [comments]
---|--- -
π r/Harrogate Shocking behaviour... rss
| They look like such nice ladies, too... submitted by /u/LurkishEmpire
[link] [comments]
---|--- -
π r/york Best Margs in York? rss
Iβm on the hunt. The hunt for good margaritas. Iβve only really discovered this cocktail in the last 12 months but for a few reasons Iβve drank most of the ones Iβve tried in other cities rather than my own.
When theyβre good. Holy hell theyβre amazing. When theyβre bad, itβs beyond disappointing.
Recently Iβve tried a few places in York (where Iβm born and bred) and been disappointed each time.
- Evil eye was average at best
- Fossgate social was ok, the spicy was better than the standard.
Iβve not found one in York thatβs been comparable to the good ones Iβve had elsewhere yet.
An easy way Iβve found to dismiss a large cohort is if they use table salt rather than crystal salt. Letβs get the basics right please York garrrr.
Soβ¦gives me the locations of decent margs in York centre please! Iβm not looking for βxxx might be decentβ Iβd like first hand recommendations based off experience - thanks pals.
submitted by /u/robbo909
[link] [comments] -
π r/LocalLLaMA RotorQuant: 10-19x faster alternative to TurboQuant via Clifford rotors (44x fewer params) rss
| Kinda sounds ridiculous - but I reimagined / reinvented turboquant with Clifford Algebra Vector Quantization on both implemented on cuda + metalshaders - https://github.com/tonbistudio/turboquant-pytorch/pull/4 https://github.com/TheTom/turboquant_plus/pull/34 https://preview.redd.it/mqwnea8iidrg1.png?width=2604&format=png&auto=webp&s=597710bff942ea68180f162ed147e134d33c9639 https://preview.redd.it/n9hjiq6iidrg1.png?width=2652&format=png&auto=webp&s=1ec464ada80dfff65ae7017ab9b834190ace2987 The idea: Replace the dΓd random orthogonal matrix Ξ with Clifford rotors in Cl(3,0). Instead of a dense matmul (16,384 FMAs for d=128), chunk the vector into groups of 3 dims and rotate each with a 4-parameter rotor via the sandwich product RvRΜ (~100 FMAs total). Results on Qwen2.5-3B-Instruct KV cache: - Cosine similarity: 0.990 (vs TurboQuant's 0.991) β effectively identical
- 44Γ fewer parameters (372 vs 16,399 for d=128)
- Fused CUDA kernel: 10-19Γ faster than cuBLAS matmul on RTX PRO 4000
- Fused Metal shader: 9-31Γ faster on Apple M4
- Perfect 9/9 needle-in-haystack at all bit-widths The key insight: for pure vectors, the rotor sandwich is equivalent to a sparse 3Γ3 rotation β the fused kernel keeps everything in registers with no memory round-trips, which is why it beats the BLAS GEMM despite TurboQuant's matmul being highly optimized. The tradeoff is higher synthetic MSE on random unit vectors (the block-diagonal rotation doesn't induce the exact Beta distribution). But with QJL correction, real-model attention fidelity is identical β and sometimes better on top-1/top-5 retrieval. Paper: https://www.scrya.com/rotorquant/ Code: https://github.com/scrya-com/rotorquant PDF: https://www.scrya.com/rotorquant.pdf submitted by /u/Revolutionary_Ask154
[link] [comments]
---|--- -
π r/wiesbaden Ramen InnenstadtnΓ€he rss
Hallo zusammen,
Ich bin letzten Monat nach Wiesbaden gezogen und suche momentan noch einen guten Ramen-Laden am Besten in der Innenstadt. Ich habe bisher 1-2 ausprobiert, aber war noch nicht wirklich begeistert.
Habt ihr Empfehlungen?
Bonuspunkte, wenn man sich am Anfang selbst die Zutaten individuell auswΓ€hlen kann anstatt nur vorgefertigter MenΓΌs.
Danke euch!
submitted by /u/Amarku
[link] [comments] -
π r/Yorkshire Caught this moment at Whitby Abbey last summer rss
| Just one of those moments where everything lined up submitted by /u/Effective_Sink_3934
[link] [comments]
---|--- -
π r/Yorkshire First Puffins of 2026β¦ RSPB Bempton Cliffs rss
| submitted by /u/aspiranthighlander
[link] [comments]
---|--- -
π r/reverseengineering My DAP couldn't display Arabic text, so I reverse engineered the firmware format to fix it rss
submitted by /u/BusElectronic4225
[link] [comments] -
π Andrew Healey's Blog Building a Runtime with QuickJS rss
Building a tiny JavaScript runtime on top of QuickJS with timers, file I/O, and an event loop.
-
π Rust Blog Announcing Rust 1.94.1 rss
The Rust team has published a new point release of Rust, 1.94.1. Rust is a programming language that is empowering everyone to build reliable and efficient software.
If you have a previous version of Rust installed via rustup, getting Rust 1.94.1 is as easy as:
rustup update stableIf you don't have it already, you can get
rustupfrom the appropriate page on our website.What's in 1.94.1
Rust 1.94.1 resolves three regressions that were introduced in the 1.94.0 release.
- Fix
std::thread::spawnon wasm32-wasip1-threads - Remove new methods added to
std::os::windows::fs::OpenOptionsExtThe new methods were unstable, but the trait itself is not sealed and so cannot be extended with non-default methods. - Clippy: fix ICE in
match_same_arms - Cargo: downgrade curl-sys to 0.4.83 This fixes certificate validation error for some users on some versions of FreeBSD. See this issue for more details.
And a security fix:
- Cargo: Update tar to 0.4.45 This resolves CVE-2026-33055 and CVE-2026-33056. Users of crates.io are not affected. See blog for more details.
Contributors to 1.94.1
Many people came together to create Rust 1.94.1. We couldn't have done it without all of you. Thanks!
- Fix
-
π Console.dev newsletter EmailMD rss
Description: Generate emails from Markdown.
What we like: Uses Markdown templates to generate email output that works across mail clients. Customizable themes and fonts. Includes common components e.g. buttons, tables, images, callouts, hero. Wraps mjml which handles the compatible conversions.
What we dislike: Built with TypeScript which makes it difficult to use from other languages.
-
π Console.dev newsletter Pyodide rss
Description: Run Python in the browser.
What we like: Ports CPython to Wasm so it can run in the browser. Any pip package that has a wheel is supported. Includes a JS FFI so you can work directly with the browser (Pyodide already gets access to web APIs).
What we dislike: Wasm/browser environment is single threaded so multi-threading or multi-processing isnβt supported. Also has relatively low memory limits due to Wasm limitations.
-
π Ampcode News GPTβ5.4 in Deep rss
GPT-5.4 now powers Amp's deep mode.
It's the best model in the world right now.
It's faster than GPT-5.3-Codex and still as great at coding.
But, out of the box, GPT-5.4 was too chatty. That's not what we want for
deep; it's not a pair programmer, it's supposed to go off and solve the problem.So we tuned GPT-5.4 to behave like GPT-5.3-Codex.
Once we had that, we started to use it exclusively; even for interactive tasks. We run it at very high reasoning (
deep^3) and still prefer it when we need fast interaction and fast reaction. It takes steering better than GPT-5.3-Codex.To use it: open the command palette with
Ctrl-Oand run the commandmode: use deepin the Amp CLI, or selectdeepmode in the Amp editor extension's prompt field. By default it usesdeep^2, you can switch todeep^3by hittingOpt-D.
-
- March 25, 2026
-
π IDA Plugin Updates IDA Plugin Updates on 2026-03-25 rss
IDA Plugin Updates on 2026-03-25
New Releases:
- fa v1.0.11
- ghidra-chinese 20260325 - 23527117029
- qscripts QScripts v1.2.7
- scriptwatch ScriptWatch v1.0.0
Activity:
- augur
- binsync
- fa
- ghidra
- ghidra-chinese
- haruspex
- ida-domain
- 41bba9b4: Split test files (#64)
- ida-sdk
- 72a4a4b9: docs: idapython: Added docstrings to patch final python files
- PyClassInformer
- 5c110efd: Avoided an IDA crash on IDA 9.3
- python-elpida_core.py
- 4e9f8f96: Add debug logging to Discord listener for webhook diagnosis
- 2c2e08e5: Fix: allow external webhooks (Pipedream etc.) in Guest Chamber
- 2b212cee: Allow external bot/app messages in Guest Chamber (Pipedream, etc.)
- 5e54f412: Discord Guest Listener: read #guest-chamber messages into Parliament
- b89afad7: Guest Chamber: real answers, not governance verdicts
- ebe08120: Guest Chamber: route human questions through Parliament
- 82c2a452: Fix OOM: optimize _load_memory() with deque(maxlen=50), bump Fargate β¦
- qscripts
- rhabdomancer
- scriptwatch
- 001a814f: initial commit
-
π r/york Tonightβs sun starting to set over York rss
| submitted by /u/York_shireman
[link] [comments]
---|--- -
π 3Blue1Brown (YouTube) The subset sum puzzle rss
Part of a series of monthly puzzlers. Stay subscribed to see the solution
-
π r/york Sunday roast rss
Can anyone tell me how to book a Sunday roast at the Ackhorne?? If they even still do them.
Iβm coming down from Scotland in two weeks, York is my home away from home and for the first time we are staying in til the Monday so we can experience a York Sunday roast. The ackhorne has been highly recommend but I cannot for the life of me find how to book!
submitted by /u/Heavy-Assumption-202
[link] [comments] -
π r/york Big White Flash in the Sky rss
Did anyone in York see this? It happened at like ten past eight, the whole sky went white like what you'd get with sheet lightening, but there was no thunder and it doesn't match the weather.
submitted by /u/Inner_Writing7083
[link] [comments] -
π Jeremy Fielding (YouTube) Inside National Geographic's Wonder Lab rss
A behind the scenes look at what happens when you add engineering to world class photography. πGet the biggest Insta360 discount of the season NOW! πThe first 10 orders will get the X5:15% OFF (up to $100 OFF!)+ Free Mic Air: https://bit.ly/JeremyFieldingX5
If you want to join my community of makers and Tinkers consider getting a YouTube membership π https://www.youtube.com/@JeremyFieldingSr/join
If you want to chip in a few bucks to support these projects and teaching videos, please visit my Patreon page or Buy Me a Coffee. π https://www.patreon.com/jeremyfieldingsr π https://www.buymeacoffee.com/jeremyfielding
Social media, websites, and other channel
Instagram https://www.instagram.com/jeremy_fielding/?hl=en Twitter πhttps://twitter.com/jeremy_fielding TikTok πhttps://www.tiktok.com/@jeremy_fielding0 LinkedIn πhttps://www.linkedin.com/in/jeremy-fielding-749b55250/ My websites π https://www.jeremyfielding.com πhttps://www.fatherhoodengineered.com My other channel Fatherhood engineered channel π https://www.youtube.com/channel/UC_jX1r7deAcCJ_fTtM9x8ZA
Notes: Anand Varma Email : aavarma@gmail.com Website https://www.varmaphoto.com/ National Geographic photo of the year 2025 https://www.nationalgeographic.com/photography/graphics/pictures-of-the-year-2025
Technical corrections
Nothing yet
-
π r/wiesbaden Red shopping cart rss
Ok, wer von euch war das?
submitted by /u/Fright-Train-Rider
[link] [comments] -
π r/york How do you (residents of York) find your experiences with your GPβs? rss
Just out of curiosity I wanted to know how people felt about their experiences with seeing their GP. Did you find them knowledgeable, helpful, or successful with treating your issue. Do you feel that when you become unwell that your GP is a safe place for you to get the correct treatment/ diagnosis?
submitted by /u/Comfortable_End7154
[link] [comments] -
π r/Leeds Anyone moved into Casa Abbey, Kirkstall? rss
Me and my friend are supposed to move in soon (haven't signed tenancy agreement yet). We went to 2 viewings and everything looked good.
But recently saw some really bad reviews on Google etc. and wanted to know how other people's experiences have been so far
Just worried about moving and then getting a ton of problems. So far I've seen issues with plaster beetles and heating...
If there's anyone who has moved into the apartments/ 2 bed flats specifically, please share how it's been going so far!
I'm having doubts π
submitted by /u/mooniebao
[link] [comments] -
π Locklin on science Very small engines rss
One of the interesting things to contemplate is the scale of the internal combustion engine. It’s a very human scale device; pistons the size of fists, Valves about as wide as knuckles. It’s the kind of thing a man with normal sized machine tools can make. Most internal combustion engines in the world are on […]
-
π r/Yorkshire Is this AI slop? It doesn't appear to be Robin Hood's Bay, or Whitby rss
| I found this photo here and I couldn't find any streets which looked like this on google maps. I recognised the cliffs near Ravenscar, but idk I felt this was an adjusted image of New Road? Just wanted to ask the locals here. submitted by /u/askepticalbureaucrat
[link] [comments]
---|--- -
π r/york Best place to go for healthy breakfast? rss
So im visiting in a few weeks, and am looking for places that do relatively healthy breakfasts in the city center. Has anyone got any suggestions of places that would fit the bill? Thanks
submitted by /u/AcrylicandWater
[link] [comments] -
π r/york Finding it incredibly hard to find a part time job as a student rss
I am a second year university of york student and I have been trying to find a job since November. I got a Christmas temp job at the christmas market, got trained up, and then got told they had hired too many people and got let go. Since then I have applied to literally countless jobs on indeed, and sent emails to pubs and cafes. I have previously worked in a pub for 1.5 years before uni. I have been to 5 job interviews since around February, with 1 being greggs, 1 being a cafe, and 3 in pubs / bars. 2 of the bars just ignored me post interview and never even got back to me. I feel like ive got terrible luck and I am genuinely struggling with money.
submitted by /u/lingeringLlama07
[link] [comments] -
π r/reverseengineering CounterPoint: Using Hardware Event Counters to Refute and Refine Microarchitectural Assumptions rss
submitted by /u/mttd
[link] [comments] -
π r/york Looking for the artist who crafted and sold this ring 20 years ago rss
| I purchased this ring at a gorgeous shop in York ages ago, and it has held up really well for 20 years of daily wear. Does anyone recognize their "MG" stamp? submitted by /u/MeaninglessCollie
[link] [comments]
---|--- -
π r/Leeds What is this place in Harehills? rss
New to Leeds. Keep walking past this βCoffee Expressβ in Harehills. No Google presence, no reviews, just a sign and a pitch-black doorway. Always curious and want to walk in, but it also looks rather uninviting and a low-key dodgy.
Has anyone actually been inside or knows what is this place?
submitted by /u/Active-Response9478
[link] [comments] -
π r/LocalLLaMA Intel will sell a cheap GPU with 32GB VRAM next week rss
It seems Intel will release a GPU with 32 GB of VRAM on March 31, which they would sell directly for $949.
Bandwidth would be 608 GB/s (a little less than an NVIDIA 5070), and wattage would be 290W.
Probably/hopefully very good for local AI and models like Qwen 3.5 27B at 4 bit quantization.
I'm definitely rooting for Intel, as I have a big percentage of my investment in their stock.
submitted by /u/happybydefault
[link] [comments] -
π Anton Zhiyanov Porting Go's io package to C rss
Creating a subset of Go that translates to C was never my end goal. I liked writing C code with Go, but without the standard library it felt pretty limited. So, the next logical step was to port Go's stdlib to C.
Of course, this isn't something I could do all at once. So I started with the standard library packages that had the fewest dependencies, and one of them was the
iopackage. This post is about how that went.io package β’ Slices β’ Multiple returns β’ Errors β’ Interfaces β’ Type assertion β’ Specialized readers β’ Copy β’ Wrapping up
The io package
iois one of the core Go packages. It introduces the concepts of readers and writers , which are also common in other programming languages.In Go, a reader is anything that can read some raw data (bytes) from a source into a slice:
type Reader interface { Read(p []byte) (n int, err error) }A writer is anything that can take some raw data from a slice and write it to a destination:
type Writer interface { Write(p []byte) (n int, err error) }The
iopackage defines many other interfaces, likeSeekerandCloser, as well as combinations likeReadWriterandWriteCloser. It also provides several functions, the most well-known beingCopy, which copies all data from a source (represented by a reader) to a destination (represented by a writer):func Copy(dst Writer, src Reader) (written int64, err error)C, of course, doesn't have interfaces. But before I get into that, I had to make several other design decisions.
Slices
In general, a slice is a linear container that holds N elements of type T. Typically, a slice is a view of some underlying data. In Go, a slice consists of a pointer to a block of allocated memory, a length (the number of elements in the slice), and a capacity (the total number of elements that can fit in the backing memory before the runtime needs to re-allocate):
type slice struct { array unsafe.Pointer len int cap int }Interfaces in the
iopackage work with fixed-length slices (readers and writers should never append to a slice), and they only use byte slices. So, the simplest way to represent this in C could be:typedef struct { uint8_t* ptr; size_t len; } Bytes;But since I needed a general-purpose slice type, I decided to do it the Go way instead:
typedef struct { void* ptr; size_t len; size_t cap; } so_Slice;Plus a bound-checking helper to access slice elements:
#define so_at(T, s, i) (*so_at_ptr(T, s, i)) #define so_at_ptr(T, s, i) ({ \ so_Slice _s_at = (s); \ size_t _i = (size_t)(i); \ if (_i >= _s_at.len) \ so_panic("index out of bounds"); \ (T*)_s_at.ptr + _i; \ })Usage example:
// go nums := make([]int, 3) nums[0] = 11 nums[1] = 22 nums[2] = 33 n1 := nums[1] // c so_Slice nums = so_make_slice(int, 3, 3); so_at(int, nums, 0) = 11; so_at(int, nums, 1) = 22; so_at(int, nums, 2) = 33; so_int n1 = so_at(int, nums, 1);So far, so good.
Multiple returns
Let's look at the
Readmethod again:Read(p []byte) (n int, err error)It returns two values: an
intand anerror. C functions can only return one value, so I needed to figure out how to handle this.The classic approach would be to pass output parameters by pointer, like
read(p, &n, &err)orn = read(p, &err). But that doesn't compose well and looks nothing like Go. Instead, I went with a result struct:typedef union { bool as_bool; so_int as_int; int64_t as_i64; so_String as_string; so_Slice as_slice; void* as_ptr; // ... other types } so_Value; typedef struct { so_Value val; so_Error err; } so_Result;The
so_Valueunion can store any primitive type, as well as strings, slices, and pointers. Theso_Resulttype combines a value with an error. So, ourReadmethod (let's assume it's just a regular function for now):func Read(p []byte) (n int, err error)Translates to:
so_Result Read(so_Slice p);And the caller can access the result like this:
so_Result res = Read(p); if (res.err) { so_panic(res.err->msg); } so_println("read", res.val.as_int, "bytes");Errors
For the error type itself, I went with a simple pointer to an immutable string:
struct so_Error_ { const char* msg; }; typedef struct so_Error_* so_Error;Plus a constructor macro:
#define errors_New(s) (&(struct so_Error_){s})I wanted to avoid heap allocations as much as possible, so decided not to support dynamic errors. Only sentinel errors are used, and they're defined at the file level like this:
so_Error io_EOF = errors_New("EOF"); so_Error io_ErrOffset = errors_New("io: invalid offset");Errors are compared by pointer identity (
==), not by string content β just like sentinel errors in Go. Anilerror is aNULLpointer. This keeps error handling cheap and straightforward.Interfaces
This was the big one. In Go, an interface is a type that specifies a set of methods. Any concrete type that implements those methods satisfies the interface β no explicit declaration needed. In C, there's no such mechanism.
For interfaces, I decided to use "fat" structs with function pointers. That way, Go's
io.Reader:type Reader interface { Read(p []byte) (n int, err error) }Becomes an
io_Readerstruct in C:typedef struct { void* self; so_Result (*Read)(void* self, so_Slice p); } io_Reader;The
selfpointer holds the concrete value, and each method becomes a function pointer that takesselfas its first argument. This is less efficient than using a static method table, especially if the interface has a lot of methods, but it's simpler. So I decided it was good enough for the first version.Now functions can work with interfaces without knowing the specific implementation:
// ReadFull reads exactly len(buf) bytes from r into buf. so_Result io_ReadFull(io_Reader r, so_Slice buf) { so_int n = 0; so_Error err = NULL; for (; n < so_len(buf) && err == NULL;) { so_Slice curBuf = so_slice(so_byte, buf, n, buf.len); so_Result res = r.Read(r.self, curBuf); err = res.err; n += res.val.as_int; } // ... } // A custom reader. typedef struct { so_Slice b; } reader; static so_Result reader_Read(void* self, so_Slice p) { // ... } int main(void) { // We'll read from a string literal. so_String str = so_str("hello world"); reader rdr = (reader){.b = so_string_bytes(str)}; // Wrap the specific reader into an interface. io_Reader r = (io_Reader){ .self = &rdr, .Read = reader_Read, }; // Read the first 4 bytes from the string into a buffer. so_Slice buf = so_make_slice(so_byte, 4, 4); // ReadFull doesn't care about the specific reader implementation - // it could read from a file, the network, or anything else. so_Result res = io_ReadFull(r, buf); }Calling a method on the interface just goes through the function pointer:
// r.Read(buf) becomes: r.Read(r.self, buf);Type assertion
Go's interface is more than just a value wrapper with a method table. It also stores type information about the value it holds:
type iface struct { tab *itab data unsafe.Pointer // specific value } type itab struct { Inter *InterfaceType // method table Type *Type // type information // ... }Since the runtime knows the exact type inside the interface, it can try to "upgrade" the interface (for example, a regular
Reader) to another interface (likeWriterTo) using a type assertion :// copyBuffer copies from src to dst using the provided buffer // until either EOF is reached on src or an error occurs. func copyBuffer(dst Writer, src Reader, buf []byte) (written int64, err error) { // If the reader has a WriteTo method, use it to do the copy. if wt, ok := src.(WriterTo); ok { // try "upgrading" to WriterTo return wt.WriteTo(dst) } // src is not a WriterTo, proceed with the default copy implementation.The last thing I wanted to do was reinvent Go's dynamic type system in C, so dropping this feature was an easy decision.
There's another kind of type assertion, though β when we unwrap the interface to get the value of a specific type:
// Does r (a Reader) hold a pointer to a value of concrete type LimitedReader? // If true, lr will get the unwrapped pointer. lr, ok := r.(*LimitedReader)And this kind of assertion is quite possible in C. All we have to do is compare function pointers:
// Are r.Read and LimitedReader_Read the same function? bool ok = (r.Read == LimitedReader_Read); if (ok) { io_LimitedReader* lr = r.self; }If two different types happened to share the same method implementation, this would break. In practice, each concrete type has its own methods, so the function pointer serves as a reliable type tag.
Specialized readers
After I decided on the interface approach, porting the actual
iotypes was pretty easy. For example,LimitedReaderwraps a reader and stops with EOF after reading N bytes:type LimitedReader struct { R Reader N int64 } func (l *LimitedReader) Read(p []byte) (int, error) { if l.N <= 0 { return 0, EOF } if int64(len(p)) > l.N { p = p[0:l.N] } n, err := l.R.Read(p) l.N -= int64(n) return n, err }The logic is straightforward: if there are no bytes left, return EOF. Otherwise, if the buffer is bigger than the remaining size, shorten it. Then, call the underlying reader, and decrease the remaining size.
Here's what the ported C code looks like:
typedef struct { io_Reader R; int64_t N; } io_LimitedReader; so_Result io_LimitedReader_Read(void* self, so_Slice p) { io_LimitedReader* l = self; if (l->N <= 0) { return (so_Result){.val.as_int = 0, .err = io_EOF}; } if ((int64_t)(so_len(p)) > l->N) { p = so_slice(so_byte, p, 0, l->N); } so_Result res = l->R.Read(l->R.self, p); so_int n = res.val.as_int; l->N -= (int64_t)(n); return (so_Result){.val.as_int = n, .err = res.err}; }A bit more verbose, but nothing special. The multiple return values, the interface call with
l.R.Read, and the slice handling are all implemented as described in previous sections.Copy
Copyis where everything comes together. Here's the simplified Go version:// Copy copies from src to dst until either // EOF is reached on src or an error occurs. func Copy(dst Writer, src Reader) (written int64, err error) { // Allocate a temporary buffer for copying. size := 32 * 1024 buf := make([]byte, size) // Copy from src to dst using the buffer. for { nr, er := src.Read(buf) if nr > 0 { nw, ew := dst.Write(buf[0:nr]) written += int64(nw) if ew != nil { err = ew break } } if er != nil { if er != EOF { err = er } break } } return written, err }In Go,
Copyallocates its buffer on the heap withmake([]byte, size). I could take a similar approach in C β makeCopytake an allocator and use it to create the buffer like this:so_Result io_Copy(mem_Allocator a, io_Writer dst, io_Reader src) { so_int size = 32 * 1024; so_Slice buf = mem_AllocSlice(so_byte, a, size, size); // ... }But since this is just a temporary buffer that only exists during the function call, I decided stack allocation was a better choice:
so_Result io_Copy(io_Writer dst, io_Reader src) { so_int size = 8 * 1024; so_Slice buf = so_make_slice(so_byte, size, size); // ... }so_make_sliceallocates memory on a stack with a bounds-checking macro that wraps C'salloca. It moves the stack pointer and gives you a chunk of memory that's automatically freed when the function returns.People often avoid using
allocabecause it can cause a stack overflow, but using a bounds-checking wrapper fixes this issue. Another common concern withallocais that it's not block-scoped β the memory stays allocated until the function exits. However, since we only allocate once, this isn't a problem.Here's the simplified C version of
Copy:so_Result io_Copy(io_Writer dst, io_Reader src) { so_int size = 8 * 1024; // smaller buffer, 8 KiB so_Slice buf = so_make_slice(so_byte, size, size); int64_t written = 0; so_Error err = NULL; for (;;) { so_Result resr = src.Read(src.self, buf); so_int nr = resr.val.as_int; if (nr > 0) { so_Result resw = dst.Write(dst.self, so_slice(so_byte, buf, 0, nr)); so_int nw = resw.val.as_int; written += (int64_t)(nw); if (resw.err != NULL) { err = resw.err; break; } } if (resr.err != NULL) { if (resr.err != io_EOF) { err = resr.err; } break; } } return (so_Result){.val.as_i64 = written, .err = err}; }Here, you can see all the parts from this post working together: a function accepting interfaces, slices passed to interface methods, a result type wrapping multiple return values, error sentinels compared by identity, and a stack-allocated buffer used for the copy.
Wrapping up
Porting Go's
iopackage to C meant solving a few problems: representing slices, handling multiple return values, modeling errors, and implementing interfaces using function pointers. None of this needed anything fancy β just structs, unions, functions, and some macros. The resulting C code is more verbose than Go, but it's structurally similar, easy enough to read, and this approach should work well for other Go packages too.The
iopackage isn't very useful on its own β it mainly defines interfaces and doesn't provide concrete implementations. So, the next two packages to port were naturallybytesandstringsβ I'll talk about those in the next post.In the meantime, if you'd like to write Go that translates to C β with no runtime and manual memory management β I invite you to try Solod. The
iopackage is included, of course. -
π r/reverseengineering Announcing ida-mcp 2.0: A Headless MCP Server for IDA Pro rss
submitted by /u/jtsylve
[link] [comments] -
π r/york Does anyone want/need any pallets rss
| Posted on the FB free york page, and thought id also post here, incase people dont have FB 3 pallets, free to collect Tang Hall area submitted by /u/anus-cannon
[link] [comments]
---|--- -
π HexRaysSA/plugin-repository commits sync repo: +1 release rss
sync repo: +1 release ## New releases - [BinSync](https://github.com/binsync/binsync): 5.13.0 -
π r/Yorkshire Rolls-Royce invests Β£19.3m in aim to double Rotherham factory output rss
| submitted by /u/willfiresoon
[link] [comments]
---|--- -
π r/york Best pubs/bars for smokers? (nice beer gardens etc) rss
Going for a meal and a few afternoon drinks to central York with my best friend soon, only thing is he's a very heavy smoker- I pick the wrong place and I don't see him much as I'm sat in,βwhilst he is always stood outside the front door having his next smoke!
We're both in our 40s, so no clubs or teen hangouts please. Thank you. β
submitted by /u/map01302
[link] [comments] -
π r/york Charging Port Cleaning rss
Hi, my steamdeck only charges at certain angles and I think the charging port needs cleaning. Can anyone recommend anywhere that can do this for me? If it were my phone I'd go anywhere but don't want to risk the deck being broken.
submitted by /u/victorianas
[link] [comments] -
π r/wiesbaden Freude finden rss
Yo, ich bin Ayman, 21, und habe in der Stadt noch keinen Anschluss. Ich suche ein paar Freunde im Alter von 19 bis 29
submitted by /u/Superb_Gas7119
[link] [comments] -
π r/wiesbaden No Tyrants Protest this Saturday, Schlossplatz from 1:00 to 3:00 PM rss
I will also be making a speech.
submitted by /u/ramona_rox
[link] [comments] -
π r/Leeds Our Hero Nathan Newby π«‘ rss
I know it's already been spoken about, but this man is incredible. He saved many lives.
BBC News - Patient hugged armed man to prevent bomb attack at Leeds hospital - BBC News https://www.bbc.co.uk/news/articles/c9q58xq9lxzo?app-referrer=push- notification
submitted by /u/Johnbo_
[link] [comments] -
π r/york Life in York? rss
I'm considering working at the university of York. If I move to York, what's it like there as compared to my hometown Milton Keynes?
submitted by /u/Beautiful_Shine_6787
[link] [comments] -
π backnotprop/plannotator v0.15.2 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.15.0 | Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity
v0.14.5 | GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 | GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring, file header gap fix
v0.14.3 | PR context panel, diff search in code review, OpenCode permission normalization, landing page redesign
v0.14.2 | OpenCode plan mode prompt replacement, Windows non-ASCII path fix, Pi link fix
v0.14.1 | Single submit_plan with auto-detect, viewed-file draft persistence, Bear nested tag fix
v0.14.0 | PR review via GitHub URL,/plannotator-lastfor annotating agent messages, OpenCode plan mode permissions fix, VS Code SSH proxy fix
v0.13.1 | OpenCode plan mode rewrite, Obsidian save fix
v0.13.0 | Built-in themes, annotatable plan diffs, file-scoped code review comments, Octarine integration, unified review core, Pi remote sessions
v0.12.0 | Quick annotation labels, mobile compatibility, Graphviz rendering, markdown images with lightbox, linked doc navigation in annotate mode
v0.11.4 | Git add from code review, bidirectional scroll navigation, clipboard paste for annotation images, VS Code IPC port stability
What's New in v0.15.2
v0.15.2 introduces Compound Planning, adds folder annotation, the
/plannotator-archiveslash command, and fixes Pi's plan tool scoping. 5 PRs, 1 from an external contributor.Compound Planning: Learn From Your Own Planning Patterns
Skill:
/plannotator-compoundDemo: https://x.com/plannotator/status/2036607307979886984
Compound Planning is a new skill that surfaces your own insights: what kinds of plans get denied, what feedback you give most often, how your planning has evolved over time. The goal is to consistently refine and optimize the planning that works best for you, and eventually create an automated feedback loop between your review patterns and your agent's planning behavior.
This is the first step toward a system where your agent gets better at planning for you specifically , based on your actual history of approvals, denials, and annotations.
The platform install scripts now install Plannotator's skill (just 1 for now) automatically alongside the binary.
Annotate Entire Folders
plannotator annotatenow accepts a directory path. Instead of opening a single file, it starts the annotate server with the sidebar Files tab pre- loaded, showing all markdown files in that directory. The viewer starts empty with a prompt to select a file. This lets you review and annotate an entire folder of docs, specs, or notes in one session.Works in both the Bun hook and the Pi extension.
/plannotator-archiveSlash CommandThe plan archive browser was previously only accessible via the CLI (
plannotator archive) and the Pi extension. This release adds/plannotator- archiveas a slash command for Claude Code and OpenCode, so all three runtimes can browse saved plan decisions the same way. The archive is read- only: it opens the browser, you browse your plans, and it closes when you're done.Additional Changes
- Pi plan tool scoping. The Pi extension's plan submission tool was renamed to
plannotator_submit_planand is now hidden outside of planning mode. Previously, the tool was visible globally, which could confuse the agent. The fix also properly restores the pre-plan tool set when planning ends (#387 by @dmmulroy, closing #386) - Pi AI backbone bundling. The
@plannotator/aipackage was missing from published Pi packages because it's a private workspace dependency. AI files are now copied intogenerated/ai/at build time, matching the existing pattern for shared utilities. Pi users installing from npm now get AI features in code review.
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: Run
/pluginin Claude Code, find plannotator , and click "Update now".OpenCode: Clear cache and restart:
rm -rf ~/.bun/install/cache/@plannotatorThen in
opencode.json:{ "plugin": ["@plannotator/opencode@latest"] }Pi: Install or update the extension:
pi install npm:@plannotator/pi-extension
What's Changed
- fix: Pi plan tool scoping by @dmmulroy in #387
- feat: add /plannotator-archive slash command by @backnotprop in #388
- feat: support folder annotation via plannotator annotate
by @backnotprop in #389 - feat: install skills via git sparse-checkout in platform install scripts by @backnotprop in #390
- fix(pi): bundle AI backbone into generated/ for published package by @backnotprop in 1175ef6
Community
@dmmulroy authored the Pi plan tool scoping fix (#387), which he also reported in #386. This is his third contribution to the project.
Full Changelog :
v0.15.0...v0.15.2 - Pi plan tool scoping. The Pi extension's plan submission tool was renamed to
-
π r/LocalLLaMA Throwback to my proudest impulse buy ever, which has let me enjoy this hobby 10x more rss
| Can you beleive I almost bought two of them?? (oh, and they gave me 10% cashback for Prime Day) submitted by /u/gigaflops_
[link] [comments]
---|--- -
π Cal Paterson "Disregard that!" attacks rss
Why you shouldn't share your context window with others
-
π Mario Zechner Thoughts on slowing the fuck down rss
Thoughts on slowing the fuck down
-
π Drew DeVault's blog A eulogy for Vim rss
Vim is important to me. I’m using it to write the words you’re reading right now. In fact, almost every word I have ever committed to posterity, through this blog, in my code, all of the docs I’ve written, emails I’ve sent, and more, almost all of it has passed through Vim.
My relationship with the software is intimate, almost as if it were an extra limb. I don’t think about what I’m doing when I use it. All of Vim’s modes and keybindings are deeply ingrained in my muscle memory. Using it just feels like my thoughts flowing from my head, into my fingers, into a Vim-shaped extension of my body, and out into the world. The unique and profound nature of my relationship with this software is not lost on me.

I didn’t know Bram Moolenaar. We never met, nor exchanged correspondence. But, after I moved to the Netherlands, Bram’s home country, in a strange way I felt a little bit closer to him. He passed away a couple of years after I moved here, and his funeral was held not far from where I lived at the time. When that happened, I experienced an odd kind of mourning. He was still young, and he had affected my own life profoundly. He was a stranger, and I never got to thank him.
The people he entrusted Vim to were not strangers, they knew Bram and worked with him often, and he trusted them. It’s not my place to judge their work as disrespectful to his memory, or out of line with what he would have wanted. Even knowing Bram only through Vim, I know he and I disagreed often. However, the most personal thing I know about Bram, and that many people remember about him, was his altruistic commitment to a single cause: providing education and healthcare to Ugandan children in need. So, at the very least, I know that he cared.
I won’t speculate on how he would have felt about generative AI, but I can say that GenAI is something I care about. It causes a lot of problems for a lot of people. It drives rising energy prices in poor communities, disrupts wildlife and fresh water supplies, increases pollution, and stresses global supply chains. It re-enforces the horrible, dangerous working conditions that miners in many African countries are enduring to supply rare metals like Cobalt for the billions of new chips that this boom demands. And at a moment when the climate demands immediate action to reduce our footprint on this planet, the AI boom is driving data centers to consume a full 1.5% of the world’s total energy production in order to eliminate jobs and replace them with a robot that lies.
Meanwhile, this whole circus is enabling the rising tide of fascism around the world, not only by supercharging propaganda but also by directly financially supporting fascist policies and policymakers. All this to enrich the few, centralize power, reduce competition, and underwrite an enormous bubble that, once it bursts, will ruin the lives of millions of the world’s poor and marginalized classes.
I don’t think it’s cute that someone vibe coded “battleship” in VimScript. I think it’s more important that we stop collectively pretending that we don’t understand how awful all of this is. I don’t want to use software which has slop in it. I do what I can to avoid it, and sadly even Vim now comes under scrutiny in that effort as both Vim and NeoVim are relying on LLMs to develop the software.
So this is how, a few years after Bram’s passing, I find myself in another unusual moment of mourning: mourning Vim itself. What an odd feeling.
To keep my conscience clear, and continue to enjoy the relationship I have with this amazing piece of software, I have forked Vim. You can find my fork here: Vim Classic.
The choice of which version to use as the basis for a fork was a bit difficult. The last version of Vim released during Bram’s lifetime was Vim 9.0. To me, that seems like a good starting point. But, in the end, I chose to base my fork on Vim 8.2.0148 instead. Patch 148 was the patch immediately prior to the introduction of Vim9 Script, Vim 9.0’s flagship feature.
I’m sure Bram worked hard on Vim9 script, and I want to honor that. At the same time, it was still very new when he passed away, and the job of fully realizing its potential was handed down to the current maintainers. Its absence from Vim Classic is an honest assessment that I don’t have the time or energy to try to sort out all of the work on Vim9 which followed in Bram’s footsteps, and decide what stays and what goes. It seems like a useful line to draw in the sand: Vim Classic is compatible with legacy plugins, but not the newfangled stuff.
Since forking from this base, I have backported a handful of patches, most of which address CVEs discovered after this release, but others which address minor bug fixes. I also penned a handful of original patches which bring the codebase from this time up to snuff for building it on newer toolchains. My old vimrc needed very few changes to work on this version of Vim, and all of my plugins work with the exception of fzf.vim, which I would like to fix at some point (or maybe a sympathetic reader is willing to work on backporting the necessary changes).
I plan to use this for a little while, look for sore points and rough edges, collect feedback from other users, and then tag a little release soon. Going forward, maintenance will be slow and quiet. I welcome your patches, particularly to help with maintaining the runtime scripts, stuff like making sure new language features end up in the syntax files. I’ll also gladly accept new bug fixes, and maybe even a few new features if a good case can be made for including them. Backporting small patches from Vim upstream will be considered, with extra scrutiny.
In short, I invite you to use Vim Classic, if you feel the same way as me, and to maintain it with me, contributing the patches you need to support your own use cases.
-
- March 24, 2026
-
π IDA Plugin Updates IDA Plugin Updates on 2026-03-24 rss
IDA Plugin Updates on 2026-03-24
New Releases:
Activity:
- augur
- 2b6f8984: chore: update dependencies
- binsync
- e0efc65e: Bump to remove dep connection to LiteLLM
- fifam
- e9cf4a13: weather -> climate conversion
- ghidra
- ghidra-chinese
- Greffe
- HappyIDA
- haruspex
- 85e6f66e: chore: update dependencies
- ida-cyberchef
- 48b5fa31: v0.2.0
- ff93b54a: ci: install pyside6
- c3d593b0: ruff check I
- f240a18d: ruff format check
- 60f37a4e: init: more direct Qt imports
- 8a1e7eb6: ruff check
- 8a0de6d4: add linting config
- d74ddf4d: Surface invalid manual input state
- d5d1eb61: pyproject: move pyside to extras group "qt"
- cbe25c0f: remove some xfails
- ida-domain
- c1e7bdc0: docs: fix docstring_style from sphinx to google (#62)
- ida-hcli
- ida-sdk
- 1aa34408: Update ida-cmake submodule (fix bootstrap path)
- idamagicstrings
- 24c7b5b7: Removed dashes
- pharos
- playlist
- 5fabb285: de todito
- python-elpida_core.py
- rhabdomancer
- 36357d7d: chore: update dependencies
- Rikugan
- augur
-
π r/Harrogate Great food suggestions rss
Hello. I'm looking for restaurant recommendations for my friend and I on Saturday evening? Something with great starters ideally, as I love a starter over a dessert! Something not too fancy. Just friends going out for good food.
Many thanks in advance βΊοΈ
submitted by /u/Chronic_Eyeroller_
[link] [comments] -
π r/LocalLLaMA Prices finally coming down? π₯Ίπ rss
| submitted by /u/PsychologicalSock239
[link] [comments]
---|--- -
π r/Yorkshire Gannets fencingβ¦ Bempton Cliffs rss
| submitted by /u/aspiranthighlander
[link] [comments]
---|--- -
π r/Yorkshire Where to live in Yorkshire? rss
Hello,
My husband is from Oldham and he has been living in California and Colorado for the past 11-12 years since graduating Uni. We me in California and moved to Colorado 5 years ago. He's over our hustle culture and wants to return to England, and be closer to his family. WE just don't have help out here, not even for your occasional date night. My family is too spread out all over the US and its all places we just wouldn't live - whether that is because of high cost, weather or politics. Then I think he has just gone so long without his own support system, its important that we have that for him and our kids.
He is a British citizen, and our kids our dual. I'll be applying for the spousal visa. So we don't need to get into the immigration stuff.
Essentially we are trying to figure out where to live in Yorkshire. We don't want to go past York, as that is too far from his family in Oldham and then his sister lives in York, so we would like to be able to see her and then also be able to meet up with both sides of the family easily still.
We are looking for:
- Good schools (we have primary aged children)
- Safe communities (we want to know our kids are safe walking to and from school or that I can jog solo, or hike solo)
- Strong sense of community but not so strong that people are cold or rude
- Strong sense of English culture and history (After my husband being away for so long, thatβs become important to my husband, for our kids to grow up connected to that side of their identity.)
- Budget to buy Β£250,000 (preferably below that, no flats)
- Budget to rent: Β£1,200 or less (also would prefer no flats)
- Walkable to school, grocery, and or high street. This is negotiable as we are used to driving everywhere but walking to everything is just nice.
- Close to a motorway or train, could be one or the other, so this too is negotiable if the town/city/village is walkable with lots of shops.
- Politically, we wouldn't identify either left, right or green. We just want balanced and normal.
- Religion, we aren't really religious. But we likely live by some flavor of Christianity? If anything I'd say we are more so agnostic? Like that's great if there is a god, and if there's not a god, we still just believe in being good people. So we're open to going to church, we just don't like the whole in your face productions that American churches sort of put on.
- Work/Jobs: I am flexible, I am happy doing almost anything. I have done the whole corporate and office jobs, they make me miserable. My husband has his Bachelors in Physical Education and he is currently the director of a youth soccer club. He oversees an entire age range for our region. He'd like to stay in youth sports/sports as a career but know that may not translate. So he is then open to working in some other field and would still like to coach at least one team in his free time.We know every place has its pros & cons. Just hoping for genuine recommendations from people who actually know the region.
We have asked this question in some other groups and a few suggestions we have had were:
- Todmorden, Hebden Bridge, Holmfirth, Wakefield, Barnsley and a few others.
Part of the issue is, many people will make a suggestion and not say what is good or bad. Or someone will make a suggestion of a place to avoid but just say its sh!t.
Then people have also said for our budget we won't find much but we are looking on Rightmove and we see a ton of stuff available below Β£250,000. Which again, coming from the states, we can't get into anything at $300,000, and if we did find something then its a fixer upper, there are HOA fees and if we don't put 20% down then we have to pay property mortgage insurance - which is separate from actual homeowners insurance, which that's becoming increasingly unaffordable and some companies are leaving the state altogether.
So we'd love to hear your suggestions and why or why not. We'd obviously like to check most our boxes but its okay if it doesn't check every once. Top two priorities would be safe community and good schools.
Thank you in advance!
submitted by /u/arg2325
[link] [comments] -
π News Minimalist π’ Scientists move antimatter by truck for the first time + 13 more stories rss
In the last 7 days Gemini read 205818 top news stories. After removing previously covered events, there are 14 articles with a significance score over 5.5.

[5.8] Scientists successfully transport antimatter in a truck at CERN βnos.nl(Dutch) (+6)
Scientists at CERN successfully transported antimatter by truck for the first time, marking a breakthrough that enables moving these volatile particles to external laboratories for advanced precision research.
The test utilized a specialized one-ton container carrying 92 antiprotons suspended in electromagnetic fields at extreme sub-zero temperatures. This technology prevents the particles from annihilating upon contact with regular matter during transit, ensuring they remain stable despite the truck's movement.
Future trips to sites like DΓΌsseldorf aim to investigate why matter dominates the universe. Researchers are now developing long-range power sources to support the ten-hour journeys required for international transport.
[6.2] Australia and the EU finalize comprehensive trade agreement after eight years of negotiations βrfi.fr(+56)
The European Union and Australia signed a landmark free-trade agreement Tuesday, concluding eight years of negotiations to diversify markets and secure critical mineral supplies amid rising global trade tensions.
The deal increases Australian beef exports while resolving disputes over protected geographical names like prosecco and feta. Additionally, both parties established a security partnership to enhance defense cooperation and reduce economic over-reliance on major powers like China for essential raw materials.
EU officials estimate regional exports will grow significantly, while the pact could boost Australiaβs GDP by billions. The agreement addresses energy vulnerabilities and supply chain risks exacerbated by the ongoing Middle East conflict.
Highly covered news with significance over 5.5
[5.7] China now exports more cars to Europe than Europe exports to China β nordkurier.de (German) (+2)
[5.6] FCC bans sale of most wireless routers in the US over security concerns β 9to5mc.com (+19)
[6.7] New mass spectrometry prototype analyzes billions of molecules simultaneously β rockefeller.edu (+2)
[5.6] US and Indonesia sign trade deal for critical minerals and fossil fuels β usnews.com (+4)
[6.6] Lab-grown food pipe offers new hope for young patients β bbc.com (+6)
[6.0] Brazil enacts law to protect minors from harmful online content β apnews.com (+9)
[5.6] New Israeli law grants rabbinical courts power over civil disputes, raising fears of a theocratic state β ar.timesofisrael.com (Arabic) (+2)
[5.6] US judge strikes down Pentagon press coverage restrictions β npr.org (+24)
[5.5] Johnson & Johnson gains US approval for new daily psoriasis pill β statnews.com (+8)
[6.4] Lab-grown muscle propels swimming robot to record speed β news.nus.edu.sg (+2)
[5.8] Bavarian authorities shut down 373,000 darknet sites in major operation β science.orf.at (German) (+10)
[5.5] One in eight U.S. adults use GLP-1 drugs for weight loss and other health benefits β latimes.com (+6)
Thanks for reading!
β Vadim
You can create your own significance-based RSS feed with premium.
-
π r/york Are bluebells out yet anywhere? rss
Does anyone know? We've had a bit of sun now (until tonight lol).
submitted by /u/Massive-Medicine5413
[link] [comments] -
π r/LocalLLaMA Best model that can beat Claude opus that runs on 32MB of vram? rss
Hi everyone! I want to get in to vibe coding to make my very own ai wrapper, what are the best models that can run on 32MB of vram? I have a GeForce 256, and an intel pentium 3, i want to be able to run a model on ollama that can AT LEAST match or beat Claude opus, any recommendations?
submitted by /u/PrestigiousEmu4485
[link] [comments] -
π r/Yorkshire Government announces 40 new school-based nurseries in Yorkshire to help cut childcare costs rss
The Department for Education announced yesterday that a further 331 schools across the country have been successful in applying for a share of Β£45 million funding to build or expand nurseries on their site.
This includes 40 schools in Yorkshire β full list available on the gov.uk website.
Local Authority | School Name
---|---
Barnsley | Brierley Church of England Voluntary Controlled Primary School
Calderdale | Trinity Academy Whitehill
Doncaster | Canon Popham CofE Primary Academy
| Castle Academy
East Riding of Yorkshire | Market Weighton Infant School
| St Mary & St Joseph Catholic Primary School - a Catholic voluntary academy
| St Mary's Catholic Primary School - a Catholic voluntary academy
Kingston upon Hull, City of | Francis Askew Primary School
| St Richard's VC Academy
Leeds | Allerton Bywater Primary School
| Blackgates Primary Academy
| Christ Church Upper Armley Church of England Primary School
| Collingham Lady Elizabeth Hastings Church of England Voluntary Aided Primary School
| Greenhill Primary School
| Holy Name Catholic Voluntary Academy
| Kippax North Primary School
| Middleton Primary School
North Yorkshire | Aiskew, Leeming Bar Church of England Primary School
| Bentham Community Primary School
| Brompton and Sawdon Community Primary School
| Brompton-on-Swale Church of England Primary School
| Brougham Street Nursery School
| Hensall Community Primary School
| Pickhill Church of England Primary School
| Settrington All Saints' Church of England Voluntary Controlled Primary School
| St Mary's Catholic Primary School - a Catholic voluntary academy
| St Peter's Catholic Primary School - a Catholic voluntary academy
| Willow Tree Community Primary School
Rotherham | Roughwood Primary School
| Thurcroft Infant School
| Woodsetts Primary School
Sheffield | Beighton Nursery Infant School
| Bradfield Dungworth Primary School
| Clifford All Saints CofE Primary School
| Hillsborough Primary School
| Pye Bank CofE Primary School
Wakefield | Carleton Park Junior and Infant School
| Crigglestone Nursery School
| Orchard Head Junior and Infant and Nursery School
York | St Aelred's Catholic Primary School - a Catholic Voluntary AcademyNew figures published yesterday show around a million parents now use the governmentβs funded childcare offer. But the data also reveals lower take-up in poorer communities, highlighting the need to target new places where families face the biggest barriers to accessing childcare.
School-based nurseries already play a major role in filling those gaps, making up around 35% of childcare provision in the most deprived areas, compared with 16% in the least deprived.
Find out more: https://www.gov.uk/government/news/new-school-nurseries-to- help-cut-childcare-costs-in-poorest-areas
submitted by /u/UKGovNews
[link] [comments] -
π r/LocalLLaMA [Developing situation] LiteLLM compromised rss
-
π r/LocalLLaMA LM Studio may possibly be infected with sophisticated malware. rss
| NO VIRUS LM studio has stated it was a false positive and Microsoft dealt with it I'm no expert, just a tinkerer who messed with models at home, so correct me if this is a false positive, but it doesn't look that way to me. Anyone else get this? showed up 3 times when i did a full search on my main drive. I was able to delete them with windows defender, but might do a clean install or go to linux after this and do my tinkering in VMs. It seems this virus messes with updates possibly, because I had to go into commandline and change some update folder names to get windows to search for updates. Dont get why people are downvoting me. i loved this app before this and still might use it in VMs, just wanted to give fair warning is all. gosh the internet has gotten so weird. edit LM Studio responded that it was a false alarm on microslops side. Looks like we're safe. submitted by /u/mooncatx3
[link] [comments]
---|--- -
π r/LocalLLaMA Created a SillyTavern extension that brings NPC's to life in any game rss
| Using SillyTavern as the backend for all the RP means it can work with almost any game, with just a small mod acting as a bridge between them. Right now Iβm using Cydonia as the RP model and Qwen 3.5 0.8B as the game master. Everything is running locally. The idea is that you can take any game, download its entire wiki, and feed it into SillyTavern. Then every character has their own full lore, relationships, opinions, etc., and can respond appropriately. On top of that, every voice is automatically cloned using the gameβs files and mapped to each NPC. The NPCs can also be fed as much information per turn as you want about the game world - like their current location, player stats, player HP, etc. All RP happens inside SillyTavern, and the model is never even told itβs part of a game world. Paired with a locally run RP-tuned model like Cydonia, this gives great results with low latency, as well as strong narration of physical actions. A second pass is then run over each message using a small model (currently Qwen 3.5 0.8B) with structured output. This maps responses to actual in-game actions exposed by your mod. For example, in this video I approached an NPC and only sent β shoots at you β. The NPC then narrated themselves shooting back at me. Qwen 3.5 reads this conversation and decides that the correct action is for the NPC to shoot back at the player. Essentially, the tiny model acts as a game master, deciding which actions should map to which functions in-game. This means the RP can flow freely without being constrained to a strict structure, which leads to much better results. In older games, this could add a lot more life even without the conversational aspect. NPCs simply reacting to your actions adds a ton of depth. Not sure why this isnβt more popular. My guess is that most people donβt realise how good highly specialised, fine-tuned RP models can be compared to base models. I was honestly blown away when I started experimenting with them while building this. submitted by /u/goodive123
[link] [comments]
---|--- -
π r/LocalLLaMA Litellm 1.82.7 and 1.82.8 on PyPI are compromised, do not update! rss
We just have been compromised, thousands of peoples likely are as well, more details updated here: https://futuresearch.ai/blog/litellm-pypi-supply-chain- attack/
Update: My awesome colleague Callum McMahon, who discovered this, wrote an explainer and postmortem going into greater detail: https://futuresearch.ai/blog/no-prompt-injection-required
submitted by /u/kotrfa
[link] [comments] -
π r/wiesbaden Uranium glass rss
Hello, I am visiting Wiesbaden for few days and I would like to buy some uranium glass. Are there any shops with glass or some cool antiques I can find? Thank you
submitted by /u/barborka47
[link] [comments] -
π HexRaysSA/plugin-repository commits sync repo: +1 plugin, +2 releases rss
sync repo: +1 plugin, +2 releases ## New plugins - [idamagicstrings](https://github.com/joxeankoret/idamagicstrings) (1.2.0) ## New releases - [ida-cyberchef](https://github.com/HexRaysSA/ida-cyberchef): 0.2.0 -
π r/Yorkshire Different moods of Whitby rss
| submitted by /u/angryestbadger
[link] [comments]
---|--- -
π r/Leeds Town Hall in the Snow rss
submitted by /u/angryestbadger
[link] [comments] -
π r/Yorkshire Fountains Abbey in the sun rss
| submitted by /u/angryestbadger
[link] [comments]
---|--- -
π r/Yorkshire Views over Scar House rss
| submitted by /u/angryestbadger
[link] [comments]
---|--- -
π r/reverseengineering Reverse Engineering a "Zombie" Smart Scale: My journey with QardioBase2 after the app vanished. rss
submitted by /u/Reversed-Engineer-01
[link] [comments] -
π backnotprop/plannotator v0.15.0 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.14.5 | GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 | GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring, file header gap fix
v0.14.3 | PR context panel, diff search in code review, OpenCode permission normalization, landing page redesign
v0.14.2 | OpenCode plan mode prompt replacement, Windows non-ASCII path fix, Pi link fix
v0.14.1 | Single submit_plan with auto-detect, viewed-file draft persistence, Bear nested tag fix
v0.14.0 | PR review via GitHub URL,/plannotator-lastfor annotating agent messages, OpenCode plan mode permissions fix, VS Code SSH proxy fix
v0.13.1 | OpenCode plan mode rewrite, Obsidian save fix
v0.13.0 | Built-in themes, annotatable plan diffs, file-scoped code review comments, Octarine integration, unified review core, Pi remote sessions
v0.12.0 | Quick annotation labels, mobile compatibility, Graphviz rendering, markdown images with lightbox, linked doc navigation in annotate mode
v0.11.4 | Git add from code review, bidirectional scroll navigation, clipboard paste for annotation images, VS Code IPC port stability
v0.11.3 | Expandable diff context, hierarchical folder tree, redesigned worktree controls, supply chain hardening
What's New in v0.15.0
v0.15.0 adds live AI chat to code review, the ability to browse all your previous plans, a folder-based file viewer for referencing docs (e.g. Superpowers) during annotation, and full feature parity for the Pi extension. 11 PRs, 2 from external contributors, 1 first-time.
Live AI Chat in Code Review
You can now talk to an AI directly inside the code review UI. Select lines in a diff and click "Ask AI" to get context-aware explanations about what the code does and why it changed. Or open the AI sidebar tab to ask general questions about the changeset. Responses stream in real-time with full markdown rendering.
Plannotator works with the coding tools you already have installed. On startup, it checks which tools are available on your machine β Claude Code, Codex, Pi, OpenCode β and offers them as providers. You choose which one to use and which model to use with it in Settings. That choice persists across sessions. You can switch providers at any time. The only requirement is that the tool is installed and authenticated locally; Plannotator doesn't handle login or API keys itself.
Under the hood, each tool is accessed through a provider-agnostic layer (
@plannotator/ai) that handles session lifecycle, streaming, and tool execution uniformly. Claude and Codex communicate via subprocess, Pi via RPC over JSONL/stdio, and OpenCode via HTTP + SSE. The OpenCode provider supports forked sessions, runtime permission approvals, and dynamic model discovery from connected providers.Browse All Previous Plans
You can now view every plan you've approved or denied. The
plannotator archivecommand opens a read-only browser of your plan history, with approved/denied badges and timestamps. During normal plan review, a new Archive sidebar tab gives you the same view without leaving the session, so you can reference past decisions while reviewing a new plan.This replaces the old "Other Plans" UI and removes the dead
/api/plan/historyendpoint.- #369, closing #362 reported by @andreivladmatei
Attach Folders for Reference During Review
A new Files tab in the sidebar gives you access to all markdown files in your project. Click any file to open it as a linked document with full annotation support. If you have docs, specs, or notes in directories outside the project root, add them in Settings and they show up as additional sections. Useful for power users who want their full documentation library at hand while reviewing or annotating plans.
Works in both plan mode and annotate mode. Directory sections are collapsible, and common non-content directories (node_modules, .git, dist, build, etc.) are excluded.
- #378, closing #367 requested by @andymac4182
Resizable Split Pane in Code Review
The split diff viewer now has a draggable divider between left and right panes. Drag to resize; the ratio is clamped to 20-80% and persisted via cookie storage. Double-click the handle to reset to 50/50. The implementation uses CSS custom properties that inherit into Pierre's shadow DOM, so resizing triggers zero re-renders of the diff component. The handle is hidden for add- only or delete-only files where Pierre renders a single column.
Pi Extension: Full Feature Parity
The Pi extension was missing a significant number of features that Claude Code and OpenCode users had access to. PR review, note-taking integrations (Obsidian, Bear, Octarine), plan saving with version history, editor annotations, the file browser, linked doc resolution with security checks, and the AI backbone were all absent or partially implemented. This release closes that gap entirely. Pi users now have access to every feature available on the other platforms.
The server was rewritten from a monolithic
server.tsinto a modular architecture split across domain-specific modules (serverPlan.ts,serverReview.ts,serverAnnotate.ts, plus shared handlers, reference resolution, annotations, integrations, PR support, and networking). Agenerated/directory holds shared code copied frompackages/shared/at build time, so both Bun and Pi consume the same logic for storage, drafts, file resolution, and integrations.A line-by-line parity audit then verified every endpoint, response shape, error case, and conditional across all three server types. This uncovered and fixed: missing error handling on several endpoints, a broken
detectProjectNameSyncthat silently failed, a missingpasteApiUrlin Bun's annotate server that broke short URL sharing, and stale naming inconsistencies. An automated route parity test now runs in CI to prevent drift going forward.Additional Changes
- OpenPackage manifest. Adds
openpackage.ymlfor installation viaopkg install plannotator(#368 by @TiagoJacinto) - Duplicate code review header fix (Pi). The
# Code Review Feedbackheading appeared twice when the Pi extension submitted review feedback. The wrapper no longer adds a redundant header (#370 by @dmmulroy) - Duplicate code review header fix (OpenCode). Same issue in the OpenCode plugin (#375, closing #374 reported by @nulladdict)
- Empty submit in annotate mode. The annotate UI no longer blocks submission when there are no annotations. Linked doc annotations are now counted in validation, fixing a case where annotations on linked documents couldn't be submitted (#376, closing #371 and #373 reported by @bman654)
- Sidebar resize handle fix. The left sidebar handle was visible on hover but couldn't be grabbed due to a touch area regression from v0.14.5. Fixed with asymmetric positioning that avoids covering scrollbars.
- Linked doc border styling. The border around linked documents (Obsidian files, project files, archive plans) is now thinner and more subtle β 1px at 40% opacity instead of the previous 2px solid primary.
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: Run
/pluginin Claude Code, find plannotator , and click "Update now".OpenCode: Clear cache and restart:
rm -rf ~/.bun/install/cache/@plannotatorThen in
opencode.json:{ "plugin": ["@plannotator/opencode@latest"] }Pi: Install or update the extension:
pi install npm:@plannotator/pi-extension
What's Changed
- feat(ai): AI backbone + inline chat for code review by @backnotprop in #363
- Add OpenPackage manifest by @TiagoJacinto in #368
- feat: plan archive browser by @backnotprop in #369
- fix: remove duplicate 'Code Review' header in pi extension review feedback by @dmmulroy in #370
- fix: remove duplicate 'Code Review' header in opencode plugin by @backnotprop in #375
- fix: allow empty submit and count linked doc annotations in annotate mode by @backnotprop in #376
- feat(ai): Pi provider via RPC subprocess by @backnotprop in #377
- feat: markdown file browser sidebar tab by @backnotprop in #378
- feat(ai): OpenCode provider via HTTP + SSE by @backnotprop in #379
- feat(pi): complete Pi server rewrite β modular architecture, full Bun parity, shared code extraction by @backnotprop in #382
- feat: resizable split pane for code review diff viewer by @backnotprop in #383
New Contributors
- @TiagoJacinto made their first contribution in #368
Contributors
@TiagoJacinto added the OpenPackage manifest (#368), enabling installation via
opkg. First contribution to the project.@dmmulroy fixed the duplicate code review header in the Pi extension (#370), a follow-up to his paste URL wiring work in v0.14.4.
Community members who reported issues that drove changes in this release:
- @andreivladmatei: #362 (plan archive feature request)
- @andymac4182: #367 (file browser / folder annotation request)
- @bman654: #371 and #373 (annotate mode submission bugs)
- @nulladdict: #374 (duplicate header in OpenCode review feedback)
Full Changelog :
v0.14.5...v0.15.0 -
π r/Leeds Just moved from Brazil and looking for the best coffee spots! βοΈπ§π· rss
Hi everyone! I recently arrived in leeds and I'm still trying to find my way around. I'm looking for a cozy cafΓ© where I can sit, read a bit, or just enjoy a good espresso. Any hidden gems you guys would recommend? Not a fan of the big chains, I prefer local spots! Thanks in advance. β¨
submitted by /u/Standard_Ad_2739
[link] [comments] -
π sacha chua :: living an awesome life Categorizing Emacs News items by voice in Org Mode rss
I'm having fun exploring which things might actually be easier to do by voice than by typing. For example, after I wrote some code to expand yasnippets by voice, I realized that it was easier to:
- press my shortcut,
- say "okay, define interactive function",
- and then press my shortcut again,
than to:
- mentally say it,
- get the first initials,
- type in "dfi",
- and press Tab to expand.
Another area where I do this kind of mental translation for keyboard shortcuts is when I categorize dozens of Emacs-related links each week for Emacs News. I used to do this by hand. Then I wrote a function to try to guess the category based on regular expressions (
my-emacs-news-guess-categoryin emacs-news/index.org, which is large). Then I set up a menu that lets me press numbers corresponding to the most frequent categories and use tab completion for the rest. 1 is Emacs Lisp, 2 is Emacs development, 3 is Emacs configuration, 4 is appearance, 5 is navigation, and so on. It's not very efficient, but some of it has at least gotten into muscle memory, which is also part of why it's hard to change the mapping. I don't come across that many links for Emacs development or Spacemacs, and I could probably change them to something else, but… Anyway.
Figure 1: Screenshot of my menu for categorizing links I wanted to see if I could categorize links by voice instead. I might not always be able to count on being able to type a lot, and it's always fun to experiment with other modes of input. Here's a demonstration showing how Emacs can automatically open the URLs, wait for voice input, and categorize the links using a reasonably close match. The
*Messages*buffer displays the recognized output to help with debugging.Screencast with audio: categorizing links by voiceThis is how it works:
- It starts an
ffmpegrecording process. - It starts Silero voice activity detection.
- When it detects that speech has ended, it use
curlto send the WAV to an OpenAI-compatible server (in my case, Speaches with theSystran/faster-whisper-base.enmodel) for transcription, along with a prompt to try to influence the recognition. - It compares the result with the candidates using
string-distancefor an approximate match. It calls the code to move the current item to the right category, creating the category if needed.
Since this doesn't always result in the right match, I added an Undo command. I also have a Delete command for removing the current item, Scroll Up and Scroll Down, and a way to quit.
Initial thoughts
I used it to categorize lots of links in this week's Emacs News, and I think it's promising. I loved the way my hands didn't have to hover over the number keys or move between those and the characters. Using voice activity detection meant that I could just keep dictating categories instead of pressing keyboard shortcuts or using the foot pedal I recently dusted off. There's a slight delay, of course, but I think it's worth it. If this settles down and becomes a solid part of my workflow, I might even be able to knit or hand-sew while doing this step, or simply do some stretching exercises.
What about using streaming speech recognition? I've written some code to use streaming speech recognition, but the performance wasn't good enough when I tried it on my laptop (Lenovo P52 released in 2018, no configured GPU under Linux). The streaming server dropped audio segments in order to try to catch up. I'd rather have everything transcribed at the level of the model I want, even if I have to wait a little while. I also tried using the Web Speech API in Google Chrome for real-time speech transcription, but it's a little finicky. I'm happy with the performance I get from either manually queueing speech segments or using VAD and then using batch speech recognition with a model that's kept in memory (which is why I use a local server instead of a command-line tool). Come to think of it, I should try this with a higher-quality model like medium or large, just in case the latency turns out to be not that much more for this use case.
What about external voice control systems like Talon Voice or Cursorless? They seem like neat ideas and lots of people use them. I think hacking something into Emacs with full access to its internals could be lots of fun too.
A lot of people have experimented with voice input for Emacs over the years. It could be fun to pick up ideas for commands and grammars. Some examples:
- Using Python to Code by Voice - YouTube (2013)
- jgarvin/mandimus: Use speech recognition to command your computer and Emacs. Β· GitHub
- ErikPrantare/cursorfree.el: Edit and navigate from anywhere in the buffer Β· GitHub
- ~lepisma/emacs-speech-input - uses the idea of a voice cursor, uses an LLM to execute editing instructions
What about automating myself out of this loop? I've considered training a classifier or sending the list to a large language model to categorize links in order to set more reasonable defaults, but I think I'd still want manual control, since the fun is in getting a sense of all the cool things that people are tinkering around with in the Emacs community. I found that with voice control, it was easier for me to say the category than to look for the category it suggested and then say "Okay" to accept the default. If I display the suggested category in a buffer with very large text (and possibly category-specific background colours), then I can quickly glance at it or use my peripheral vision. But yeah, it's probably easier to look at a page and say "Org Mode" than to look at the page, look at the default text, see if it matches Org Mode, and then say okay if it is.
Ideas for next steps
I wonder how to line up several categories. I could probably rattle off a few without waiting for the next one to load, and just pause when I'm not sure. Maybe while there's a reasonably good match within the first 1-3 words, I'll take candidates from the front of the queue. Or I could delimit it with another easily-recognized word, like "next".
I want to make a more synchronous version of this idea so that I can have a speech-enabled drop-in replacement that I can use as my
y-or-n-pwhile still being able to typeyorn. This probably involves usingsit-forand polling to see if it's done. And then I can use that to play Twenty Questions, but also to do more serious stuff. It would also be nice to have replacements forread-stringandcompleting-read, since those block Emacs until the user enters something.I might take a side-trip into a conversational interface for M-x doctor and M-x dunnet, because why not. Naturally, it also makes sense to voice-enable agent-shell and gptel interactions.
I'd like to figure out a number- or word-based completion mechanism so that I can control Reddit link replacement as well, since I want to select from a list of links from the page. Maybe something similar to the way voicemacs adds numbers to helm and company or how flexi-choose.el works.
I'm also thinking about how I can shift seamlessly between typing and speaking, like when I want to edit a link title. Maybe I can check if I'm in the minibuffer and what kind of minibuffer I'm in, perhaps like the way Embark does.
It would be really cool to define speech commands by reusing the keymap structure that menus also use. This is how to define a menu in Emacs Lisp:
(easy-menu-define words-menu global-map "Menu for word navigation commands." '("Words" ["Forward word" forward-word] ["Backward word" backward-word]))and this is how to set just one binding:
(keymap-set-after my-menu "<drink>" '("Drink" . drink-command) 'eat)That makes sense to reuse for speech commands. I'd also like to be able to specify aliases while hiding them or collapsing them for a "What can I say" help view… Also, if keymaps work, then maybe minor modes or transient maps could work? This sort of feels like it should be the voice equivalent of a transient map.
The code so far
(defun my-emacs-news-categorize-with-voice (&optional skip-browse) (interactive (list current-prefix-arg)) (unless skip-browse (my-spookfox-browse)) (speech-input-cancel-recording) (let ((default (if (fboundp 'my-emacs-news-guess-category) (my-emacs-news-guess-category)))) (speech-input-from-list (if default (format "Category (%s): " default) "Category: ") '(("Org Mode" "Org" "Org Mode") "Other" "Emacs Lisp" "Coding" ("Emacs configuration" "Config" "Configuration") ("Appearance" "Appearance") ("Default" "Okay" "Default") "Community" "AI" "Writing" ("Reddit" "Read it" "Reddit") "Shells" "Navigation" "Fun" ("Dired" "Directory" "Dir ed") ("Mail, news, and chat" "News" "Mail" "Chat") "Multimedia" "Scroll down" "Scroll up" "Web" "Delete" "Skip" "Undo" ("Quit" "Quit" "Cancel" "All done")) (lambda (result text) (message "Recognized %s original %s" result text) (pcase result ("Undo" (undo) (my-emacs-news-categorize-with-voice t)) ("Skip" (forward-line) (my-emacs-news-categorize-with-voice)) ("Quit" (message "All done.") (speech-input-cancel-recording)) ("Reddit" (my-emacs-news-replace-reddit-link) (my-emacs-news-categorize-with-voice t)) ("Scroll down" (my-spookfox-scroll-down) (my-emacs-news-categorize-with-voice t)) ("Scroll up" (my-spookfox-scroll-up) (my-emacs-news-categorize-with-voice t)) ("Delete" (delete-line) (undo-boundary) (my-emacs-news-categorize-with-voice)) ("Default" (my-org-move-current-item-to-category (concat default ":")) (undo-boundary) (my-emacs-news-categorize-with-voice)) (_ (my-org-move-current-item-to-category (concat result ":")) (undo-boundary) (my-emacs-news-categorize-with-voice)))) t)))It uses Spookfox to control Firefox from Emacs:
(defun my-spookfox-scroll-down () (interactive) (spookfox-js-injection-eval-in-active-tab "window.scrollBy(0, document.documentElement.clientHeight);" t)) (defun my-spookfox-scroll-up () (interactive) (spookfox-js-injection-eval-in-active-tab "window.scrollBy(0, -document.documentElement.clientHeight);"))(defun my-spookfox-background-tab (url &rest args) "Open URL as a background tab." (if spookfox--connected-clients (spookfox-tabs--request (cl-first spookfox--connected-clients) "OPEN_TAB" `(:url ,url)) (browse-url url)))It also uses these functions for categorizing Org Mode items:
(defun my-org-move-current-item-to-category (category) "Move current list item under CATEGORY earlier in the list. CATEGORY can be a string or a list of the form (text indent regexp). Point should be on the next line to process, even if a new category has been inserted." (interactive (list (completing-read "Category: " (my-org-get-list-categories)))) (when category (let* ((col (current-column)) (item (point-at-bol)) (struct (org-list-struct)) (category-text (if (stringp category) category (elt category 0))) (category-indent (if (stringp category) 2 (+ 2 (elt category 1)))) (category-regexp (if (stringp category) category (elt category 2))) (end (elt (car (last struct)) 6)) (pos (point)) s) (setq s (org-remove-indentation (buffer-substring-no-properties item (org-list-get-item-end item struct)))) (save-excursion (if (string= category-text "x") (org-list-send-item item 'delete struct) (goto-char (caar struct)) (if (re-search-forward (concat "^ *- +" category-regexp) end t) (progn ;; needs a patch to ol.el to check if stringp (org-list-send-item item (point-at-bol) struct) (org-move-item-down) (org-indent-item)) (goto-char end) (org-list-insert-item (point-at-bol) struct (org-list-prevs-alist struct)) (let ((old-struct (copy-tree struct))) (org-list-set-ind (point-at-bol) struct 0) (org-list-struct-fix-bul struct (org-list-prevs-alist struct)) (org-list-struct-apply-struct struct old-struct)) (goto-char (point-at-eol)) (insert category-text) (org-list-send-item item 'end struct) (org-indent-item) (org-indent-item)) (recenter)))))) (defun my-org-guess-list-category (&optional categories) (interactive) (require 'cl-lib) (unless categories (setq categories (my-helm-org-list-categories-init-candidates))) (let* ((beg (line-beginning-position)) (end (line-end-position)) (string (buffer-substring-no-properties beg end)) (found (cl-member string categories :test (lambda (string cat-entry) (unless (string= (car cat-entry) "x") (string-match (regexp-quote (downcase (car cat-entry))) string)))))) (when (car found) (my-org-move-current-item-to-category (cdr (car found))) t)))For the
speech-inputfunctions, experimental code is at https://codeberg.org/sachac/speech-input .You can comment on Mastodon or e-mail me at sacha@sachachua.com.
-