- â
- â
to read (pdf)
- I don't want your PRs anymore
- JitterDropper | OALABS Research
- DomainTools Investigations | DPRK Malware Modularity: Diversity and Functional Specialization
- EXHIB: A Benchmark for Realistic and Diverse Evaluation of Function Similarity in the Wild
- Neobrutalism components - Start making neobrutalism layouts today
- June 02, 2026
-
đ streamyfin/streamyfin v0.54.1 release
What's Changed
âš Highlights
- MPV player on Android & iOS with hardware decoding and PiP (with subtitles) (#1332), plus native Apple controls (#1411) and MPVKit 0.41 (#1604)
- Chapter markers and chapter list in the player (#1586)
- Local network auto-switch â automatically switches to your local server address (#1334)
- TV interface overhaul â uniform scaling, tvOS TopShelf extension (#1561), Android TV recommendations (#1575), and iOS TV builds enabled (#1422)
- Setting to disable auto-play next episode (#1342)
- Autorotate for landscape (#1265)
đŹ Player
- Caching progress shown in the seek bar (#1376)
- Progress throttling for MPV (#1366)
- Fixed progress bar / watch-time reporting (#1611, #1239)
- SubRip subtitle fixes for MPV (#1375)
- Stop external subs from auto-selecting when added (#1349)
- Disable subtitle embedding on iOS simulator (#1544)
- Don't cache background media-source requests (#1602)
- Android PiP fixes (#1605, #1628)
- Keep landscape when opening chapter list on iOS (#1624)
đș TV
- TV menu/back navigation and overlay focus fixes (#1559, #1558)
- TV password modal fix (#1598)
- TV native search component
đ Fixes
- Music videos and home videos now show in libraries (#1326)
- Close modal on Android back button (#1487)
- Clear stored user on logout (fixes empty home on relaunch) (#1622)
- Dedupe top people sections (#1623)
- Correct mimeType/UTI for log export (#1424)
- Downloads refactor â less prop drilling, improved layout (#1337)
đ§ Build & Infra
- Expo SDK 55 â 56 upgrade (#1594, #1600)
- iOS 26 / SDK 56 EAS build fixes (#1613)
- Android MPV Kotlin build fix (#1614)
- EAS build + auto-submit release workflow (#1616, #1632)
- Xcode build script (#1296)
đ Translations
- Ongoing Crowdin sync; new strings for "ends at" and action sheet options; Russian updates (#1474, #1475, #1427)
đ New Contributors
@quang-tran, @gallyamb, @a-collado, @stevebyatt10, @felixschndr, and @github-actions[bot] made their first contributions.
Full Changelog :
v0.51.0...v0.54.1 -
đ livestorejs/livestore v0.4.0 release
0.4.0 - 2026-06-02
Installing v0.4.0: Make sure all LiveStore packages use the same version:
pnpm add @livestore/livestore @livestore/adapter-web @livestore/wa-sqlite @livestore/react # Or for Cloudflare pnpm add @livestore/livestore @livestore/adapter-cloudflare @livestore/sync-cf
Highlights
- New Cloudflare adapter: Added the Workers/Durable Object adapter and rewrote the sync provider so LiveStore ships WebSocket, HTTP, and Durable Object RPC transports as first-party Cloudflare options (#528, #591).
- S2 sync backend: Map LiveStore's event log onto S2's durable stream store via
@livestore/sync-s2, unlocking scalable basins/streams, SSE live tails, and transport-safe batching for large sync workloads (#292, #709). - Schema-first tables: LiveStore now accepts Effect schema definitions as SQLite table definitions, removing duplicate column configuration in applications (#544).
- Cloudflare sync provider storage: Default storage is now Durable Object (DO) SQLite, with an explicit option to use D1 via a named binding. Examples and docs updated to the DOâbyâdefault posture (see issue #266, #693).
- MCP support: LiveStore now ships a CLI with a first-class MCP server so automation flows can connect to instances, query data, and commit events using the bundled tools (#705).
- React multi-store API: The multi-store API is now the primary React integration, replacing
<LiveStoreProvider>with<StoreRegistryProvider>anduseStore()with store options. The new API supports multiple stores, preloading, and caching out of the box. See the React integration docs (#841).
Breaking Changes
-
store.shutdownAPI: The shutdown method now returns an Effect instead of a Promise. Useyield* store.shutdown()inside Effects orawait store.shutdownPromise()when a Promise is needed.// Beforeawait store.shutdown()
// After (Effect API) yield * store.shutdown()
// Or use the Promise helper await store.shutdownPromise()
-
store.subscribecallback signature: The subscription callback is now passed as the second argument, with subscription options moved to an optional third argument object. Replace usages likestore.subscribe(query$, { onUpdate })withstore.subscribe(query$, onUpdate, options). -
QueryBuilder.first()behaviour:table.query.first()now returnsundefinedwhen no rows match. To keep the old behaviour, pass{ behaviour: "error" }, or supply a fallback.// Before: threw an error when no rows matchedconst user = table.query.first() // throws
// After: returns undefined when no rows match const user = table.query.first() // returns undefined
// To preserve old behaviour const strictUser = table.query.first({ behaviour: 'error' })
// Or provide a fallback value const fallbackUser = table.query.first({ behaviour: 'fallback', fallback: () => ({ id: 'default', name: 'Guest' }), })
-
Raw SQL event availability: The
livestore.RawSqlevent is no longer added automatically. Define it explicitly when needed (#469):import { Events, Schema } from '@livestore/livestore'const rawSqlEvent = Events.clientOnly({ name: 'livestore.RawSql', schema: Schema.Struct({ sql: Schema.String, bindValues: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.Any })), writeTables: Schema.optional(Schema.ReadonlySet(Schema.String)), }), })
-
wa-sqlite version alignment:
@livestore/wa-sqlitenow follows LiveStore's versioning scheme to keep adapters on matching releases.# Before: wa-sqlite had independent versioningpnpm add wa-sqlite@1.0.5
After: wa-sqlite follows LiveStore versioning
pnpm add @livestore/wa-sqlite@dev
This change affects projects that directly depend on wa-sqlite. Most users rely on it indirectly through LiveStore adapters and don't need to change anything.
- Cloudflare sync provider storage selection: Removed implicit D1 autoâselection and envâbased fallbacks. D1 must be selected explicitly via
storage: { _tag: 'd1', binding: 'DB' }on the sync Durable Object. The default is DO SQLite (see issue #266, #693).
Before (implicit D1 when env.DB was present):
export class SyncBackendDO extends makeDurableObject({ // storage engine autoâselected based on env }) {}After (explicit binding for D1):
// wrangler.toml // [[d1_databases]] // binding = "DB" // database_name = "your-db" // database_id = "..." // code export class SyncBackendDO extends makeDurableObject({ storage: { _tag: 'd1', binding: 'DB' }, }) {}To use the default DO SQLite, omit the
storageoption or pass{ _tag: 'do- sqlite' }.- Restructured
LiveStoreEventandEventSequenceNumberAPIs: Types are now organized into symmetricGlobal,Client, andInputnamespaces that clarify the distinction between sync backend format, client format, and events without sequence numbers (#855):
Old Name | New Name
---|---
LiveStoreEvent.AnyEncodedGlobal|LiveStoreEvent.Global.Encoded
LiveStoreEvent.AnyEncoded|LiveStoreEvent.Client.Encoded
LiveStoreEvent.AnyDecoded|LiveStoreEvent.Client.Decoded
LiveStoreEvent.PartialAnyEncoded|LiveStoreEvent.Input.Encoded
LiveStoreEvent.PartialAnyDecoded|LiveStoreEvent.Input.Decoded
LiveStoreEvent.EncodedWithMeta|LiveStoreEvent.Client.EncodedWithMeta
EventSequenceNumber.GlobalEventSequenceNumber|EventSequenceNumber.Global
EventSequenceNumber.globalEventSequenceNumber|EventSequenceNumber.Global.make
EventSequenceNumber.localEventSequenceNumber|EventSequenceNumber.Client.make
EventSequenceNumber.clientDefault|EventSequenceNumber.Client.DEFAULT
EventSequenceNumber.rebaseGenerationDefault|EventSequenceNumber.REBASE_GENERATION_DEFAULT
LiveStoreEvent.EventDefPartialSchema|LiveStoreEvent.EventDefInputSchema
LiveStoreEvent.makeEventDefPartialSchema|LiveStoreEvent.makeEventDefInputSchema// Before import { LiveStoreEvent, EventSequenceNumber } from '@livestore/livestore' const event: LiveStoreEvent.AnyEncoded = { ... } const globalSeq: EventSequenceNumber.GlobalEventSequenceNumber = 1 // After import { LiveStoreEvent, EventSequenceNumber } from '@livestore/livestore' const event: LiveStoreEvent.Client.Encoded = { ... } const globalSeq: EventSequenceNumber.Global = 1- Error class rename:
UnexpectedErrorhas been renamed toUnknownErrorfor better semantic clarity and consistency with Effect ecosystem naming conventions. The previous name conflicted with Effect's terminology where "unexpected errors" refer to defects, while this error type represents errors of unknown type from external libraries or infrastructure failures (See PR #823).
Update all references:
* Class name: `UnexpectedError` â `UnknownError` * Error tag: `'LiveStore.UnexpectedError'` â `'UnknownError'` * Static methods: `mapToUnexpectedError*` â `mapToUnknownError*` * Related type: `MergeResultUnexpectedError` â `MergeResultUnknownError` // Before import { UnexpectedError } from '@livestore/common' effect.pipe(UnexpectedError.mapToUnexpectedError) // After import { UnknownError } from '@livestore/common' effect.pipe(UnknownError.mapToUnknownError)- React integration API: The multi-store API is now the primary React integration, replacing
<LiveStoreProvider>and the olduseStore(). The new API usesStoreRegistry,<StoreRegistryProvider>, anduseStore()with store options. See the React integration docs for full details (#841).
Before | After
---|---
<LiveStoreProvider schema={...} adapter={...}>|<StoreRegistryProvider storeRegistry={...}>+storeOptions({ ... })
const { store } = useStore()|const store = useStore({ ... })
useQuery(query$)|store.useQuery(query$)// Before import { LiveStoreProvider, useStore, useQuery } from '@livestore/react' const App = () => ( <LiveStoreProvider schema={schema} adapter={adapter} batchUpdates={batchUpdates}> <MyComponent /> </LiveStoreProvider> ) const MyComponent = () => { const { store } = useStore() const todos = useQuery(visibleTodos$) // ... } // After import { StoreRegistry } from '@livestore/livestore' import { StoreRegistryProvider, useStore } from '@livestore/react' const useAppStore = () => useStore({ storeId: 'app-root', schema, adapter, batchUpdates, }) const App = () => { const [storeRegistry] = useState(() => new StoreRegistry()) return ( <Suspense fallback={<div>Loading...</div>}> <StoreRegistryProvider storeRegistry={storeRegistry}> <MyComponent /> </StoreRegistryProvider> </Suspense> ) } const MyComponent = () => { const store = useAppStore() const todos = store.useQuery(visibleTodos$) // ... }-
Removed top-level React hook exports:
useQuery,useQueryRef, anduseClientDocumentare no longer exported at the top level from@livestore/react. Use the store methods instead (#946):// Beforeimport { useQuery, useClientDocument } from '@livestore/react' const todos = useQuery(query$) const [state, setState] = useClientDocument(table)
// After import { useStore } from '@livestore/react'
const store = useStore(storeOptions) // or via a custom hook wrapping useStore() (e.g. useAppStore()) const todos = store.useQuery(query$) const [state, setState] = store.useClientDocument(table)
Type exports (
UseClientDocumentResult,Dispatch,SetStateAction, etc.) remain available.-
S2 proxy helper signature changes: The
getSSEHeadersandgetPushHeadersfunctions in@livestore/sync-s2/s2-proxy-helpersnow accept anS2Configobject instead of a token string. This enables s2-lite support via the newliteflag which adds theS2-Basinheader for self-hosted S2 deployments (#978).// Beforeimport * as S2Helpers from '@livestore/sync-s2/s2-proxy-helpers' const headers = S2Helpers.getSSEHeaders(token) const pushHeaders = S2Helpers.getPushHeaders(token)
// After const config: S2Helpers.S2Config = { basin: 'my-basin', token: 'my-token' } const headers = S2Helpers.getSSEHeaders(config) const pushHeaders = S2Helpers.getPushHeaders(config)
// For s2-lite (self-hosted), add the lite flag: const liteConfig: S2Helpers.S2Config = { basin: 'my-basin', token: 'unused', accountBase: 'http://localhost:4566/v1', basinBase: 'http://localhost:4566/v1', lite: true, // Adds S2-Basin header for s2-lite routing }
Changes
Platform adapters
LiveStore now runs natively on Cloudflare Workers through the
@livestore/adapter-cloudflarepackage. Durable Objects handle coordination and D1 provides persistence, enabling globally distributed applications with local-first behaviour. The adapter provides:- Stateful Durable Objects for LiveStore instances
- D1 database integration for event persistence
- Hibernate-friendly architecture to minimise compute costs
- Direct integration with the Cloudflare sync provider
See the Cloudflare adapter documentation for setup details and deployment guidance.
- Cloudflare adapter: Added a development-only reset persistence option to clear Durable Object state (#664).
- Node and Expo adapters: Added development-only reset persistence options to clear local state (#654).
- Web adapter: Archive development state databases with bounded retention to avoid OPFS exhaustion (#649, thanks @IGassmann).
Sync provider
The
@livestore/sync-cfpackage has been rewritten to offer three first-party transportsâWebSocket, HTTP, and Durable Object RPCâso Cloudflare deployments can choose the right balance of latency and infrastructure support:- WebSocket transport: Bidirectional real-time communication with automatic reconnection
- HTTP transport: Request/response sync with polling for environments that canât keep WebSocket connections open
- Durable Object RPC: Direct Durable Object calls that avoid network overhead entirely
Key improvements include streaming pull operations (faster initial sync), a two-phase sync (bulk transfer followed by real-time updates), improved error recovery, and comprehensive test coverage.
-
Storage engine configuration: Default storage is DO SQLite; configure D1 explicitly with
storage: { _tag: 'd1', binding: '<binding>' }. Removed envâbased fallback detection. Docs include a âStorage enginesâ section, and examples default to DO storage (see issue #266). -
DO SQLite insert batching: Adjusted insert chunk size to stay under parameter limits for large batches.
-
WebSocket transport: Introduced message chunking limits to stay under platform constraints (#687).
-
Reliability: Retry and backoff on push errors, restart push on advance, and add regression tests (#639).
-
Resilience: Improve sync provider robustness and align test helpers for CI and local development (#682, #646).
-
Header forwarding: Added
forwardHeadersoption tomakeDurableObject()for cookie-based authentication. Headers are stored in WebSocket attachments to survive hibernation and accessible viacontext.headersinonPush/onPullcallbacks (#929). -
Backend reset detection: LiveStore now detects when a sync backend has been reset and handles it based on the
onBackendIdMismatchoption inSyncOptions. Default behaviour ('reset') clears local storage and shuts down so the app can restart with fresh data. Alternative modes include'shutdown'(shut down without clearing) and'ignore'(continue with stale data). See Backend Reset Detection docs (#980).
S2 sync backend
LiveStore now ships
@livestore/sync-s2, a first-party integration with S2âthe stream store that exposes basins and append-only streams over HTTP and SSE. LiveStore maps eachstoreIdonto its own S2 stream while keeping LiveStore's logical sequencing inside the payload, so teams gain provider- managed durability, retention policies, and elastic fan-out without retooling their event model (#292). The provider still expects an authenticated proxy that provisions basins/streams, forwards LiveStore pushes and pulls, and translates S2 cursors back into LiveStore metadata.- Stream primitives: Helper utilities (
ensureBasin(),ensureStream(),makeS2StreamName()) manage S2 provisioning and naming so apps can wire up a single/api/s2entry point without manual HTTP plumbing (#292). - Live pull over SSE: The client understands S2's
batch,ping, anderrorSSE events, keeping live cursors in sync while avoiding dropped connections and manual tail loops (#292). - Transport-safe batching: Append helpers respect S2's 1 MiB / 1000-record limits, preventing 413 responses while you stream large batches into managed storage (#709).
- s2-lite support: Added support for s2-lite, the open-source self-hosted S2. Set
lite: trueinS2Configto enable header-based basin routing. CI tests now run against s2-lite, removing the dependency on hosted S2 credentials (#978).
See the S2 sync provider docs for full deployment guidance and operational notes.
Core Runtime & Storage
-
Event log lookup optimization: Improved event log lookup performance for large unsynced logs, speeding startup time (#1012).
-
DevTools protocol versioning: The app and DevTools now exchange an explicit protocol version during handshake, decoupling DevTools runtime compatibility from package versions. Newer or older DevTools builds connect cleanly to any LiveStore runtime that speaks the same protocol (#1232).
-
Unknown event handling: Schemas now ship an
unknownEventHandlingconfiguration so older clients can warn, ignore, fail, or forward telemetry when they see future events while keeping the eventlog intact (#353). -
Schema-first tables: LiveStore now accepts Effect schema definitions as SQLite table inputs, keeping type information and stored schema in the same place. For example:
// Define your schemaconst Recipe = Schema.Struct({ id: Schema.String.pipe(State.SQLite.withPrimaryKey), name: Schema.String, createdAt: Schema.String.pipe(State.SQLite.withDefault(() => 'CURRENT_TIMESTAMP')), })
// Create table with automatic column inference const recipes = State.SQLite.table({ name: 'recipes', schema: Recipe, })
This keeps the schema as a single source of truth, enforces types at compile time, and removes duplicate column definitions.
-
Materializer hash checks: Development builds compute hashes for materializer output and raise
MaterializerHashMismatchErrorwhen handlers diverge, catching non-pure implementations before they reach production.// This triggers warnings in developmentconst materializers = State.SQLite.materializers(events, { todoCreated: (payload) => { const id = nanoid() // Non-pure: different ID each call const timestamp = Date.now() // Non-pure: uses external state
return todos.insert({ id, ...payload, createdAt: timestamp, })},
// Pure materializer - no warnings userRegistered: (payload) => users.insert(payload), })
Pure materializers ensure deterministic replay during sync, improve test reliability, and make debugging predictable.
-
Event deprecation support: Mark entire events or individual fields as deprecated to guide schema evolution. When deprecated events are committed or deprecated fields have values, a warning is logged via Effect's logging system to help teams migrate away from legacy patterns (#956).
import { Events } from '@livestore/livestore'import { Schema } from 'effect' import { deprecated } from '@livestore/common/schema'
// Field-level deprecation const todoUpdated = Events.synced({ name: 'v1.TodoUpdated', schema: Schema.Struct({ id: Schema.String, title: Schema.optional(Schema.String).pipe(deprecated("Use 'text' instead")), text: Schema.optional(Schema.String), }), })
// Event-level deprecation const todoRenamed = Events.synced({ name: 'v1.TodoRenamed', schema: Schema.Struct({ id: Schema.String, name: Schema.String }), deprecated: "Use 'v1.TodoUpdated' instead", })
API & DX
-
Per-store
unusedCacheTimeinStoreRegistry: Each store managed by aStoreRegistrycan now specify its ownunusedCacheTimeviastoreOptions(), overriding the registry-level default. Short-lived ephemeral stores can be disposed quickly while persistent stores stay cached longer (#917). -
Store:
store.networkStatusnow surfaces sync backend connectivity so apps can read the latest status or subscribe directly; the signal is no longer re-exposed on client sessions (#394). -
LiveStoreSchema.Anytype alias simplifies schema composition across adapters. -
Query builder const assertions improve type inference, and
store.subscribe()now accepts query builders (#371, thanks @rgbkrk). -
Store.subscribe async iteration: The async iterator overload now exposes a first-class
AsyncIterablesofor awaitloops work without manual casts, and the new exportedQueryabletype documents the accepted inputs (#736). -
Queryable type export:
packages/@livestore/livestorenow re-exportsQueryable<TResult>so shared utilities and framework adapters can describe the exact shapes accepted bystore.subscribeandsubscribeStream(#736). -
Store operations after shutdown are rejected with a descriptive
UnknownError. Shutdown now returns an Effect (see breaking changes). -
Exact optional property types are enabled, surfacing missing optional handling at compile time (#600).
-
Effect
EqualandHashimplementations forLiveQueryDefandSignalDefimprove comparisons. -
Sync payload and store ID are exposed to
onPull/onPushhandlers (#451). -
Materializers receive each event's
clientId, simplifying multi-client workflows (#574). -
React peer dependency relaxed from exact to caret range for smoother upgrades (#621).
-
Effect integration: Added
Store.Tag(schema, storeId)API for idiomatic Effect usage. Returns a yieldableContext.Tagwith static accessors (query,commit,use) and alayer()factory method. The previousmakeStoreContext()andLiveStoreContextLayer()APIs are now deprecated:import { Store } from '@livestore/livestore/effect'// Before (deprecated) const MainStoreContext = makeStoreContext
()('main') const MainStore = MainStoreContext.Tag const MainStoreLayer = MainStoreContext.Layer({ schema, adapter, ... }) // After const TodoStore = Store.Tag(schema, 'todos') const TodoStoreLayer = TodoStore.layer({ adapter, batchUpdates })
// Use in Effect code - yield directly or use static accessors Effect.gen(function () { const { store } = yield TodoStore const todos = yield TodoStore.query(tables.todos.select()) yield TodoStore.commit(events.todoCreated({ id: '1', text: 'Buy milk' })) })
Bug fixes
Schema & Migration
- Fix client document schema migration with optimistic decoding (#588)
- Fix race condition in schema migration initialization (#566)
- Fix handling of optional fields without defaults in client documents (#487)
Query & Caching
- Fix query builder method order to preserve where clauses (#586)
- Fix Symbol values in QueryCache key generation
- Fix SQLite query builder clause order so LIMIT precedes OFFSET, preventing syntax errors (#882)
- Fix
useQueryreturning stale results after aStoreis disposed and recreated with the same(storeId, clientId, sessionId). TheuseRcResourcecache is now scoped perStoreinstance via aWeakMap, so a replaced store gets a fresh bucket and previously cachedLiveQueryinstances become GC-eligible (#1186, #1241).
SQLite & Storage
- Fix SQLite connections not closed on store disposal, preventing database reset after file deletion in the Expo adapter (#1171). Thanks @OrkhanAlikhanov for the detailed repro.
- Fix in-memory SQLite database connection handling in Expo adapter
- Fix OPFS file pool capacity exhaustion from old state databases (#569)
- Upgrade wa-sqlite to SQLite 3.50.4 (#581)
- WAL snapshot guard:
@livestore/sqlite-wasmnow aborts WAL-mode snapshot imports with an explicitSqliteError, preventing silent corruption when loading backups (#694). - Fix
changeset_applycrash during rebase rollback: The conflict callback was coerced to a null pointer when passed to WASM, causingRuntimeError: function signature mismatchduring concurrent multi-tab edits. Now wired through the C adapter relay pattern matching other callback APIs.xConflictandxFilterare explicit parameters on the public API (#998). Thanks, @slashv for the detailed reproduction and @acusti for the initial investigation.
Concurrency & Lifecycle
-
Fix
useStorehook-order violation in React strict mode by moving theretaineffect after theReact.use()suspension point (#1181) -
Fix background push fiber dying silently on non-
RejectedPushErrorfailures inClientSessionSyncProcessor, leaving sessions unable to push (#1133) -
Fix
toGlobal()leaking a debugtoJSONmethod onto the returnedGlobal.Encodedobject, causingJSON.stringifyto produce string seqNums instead of integers in custom sync backends (#1165). Thanks @OrkhanAlikhanov for diagnosing the root cause. -
Fix correct type assertion in withLock function
-
Fix finalizers execution order (#450)
-
Ensure large batches no longer leave follower sessions behind by reconciling leader/follower heads correctly (#362)
-
Detect sync backend identity mismatches after Cloudflare state resets and surface an actionable error instead of silent failure (#389)
-
Stop advancing the backend head when materializers crash so subsequent boots no longer fail (#409)
-
Prevent
store.subscribereentrancy crashes by restoring the reactive debug context after nested commits (#577, #656) -
Fix
subscribewithskipInitialRunto properly register reactive dependencies while suppressing the initial callback (#847) -
Fix event equality check failing when args key order differs, which caused duplicate events when syncing with backends that reorder JSON keys (e.g. PostgreSQL
jsonb) (#1160) -
Fix event equality check failing when args use
Schema.UndefinedOror looseSchema.optionaland the field is omitted at commit time, which caused the sync merge to falsely take the rebase path and triggerMaterializerHashMismatchErrorfor state-dependent materializers (#1217)
TypeScript & Build
- Fix TypeScript build issues and examples restructuring
- Fix TypeScript erasableSyntaxOnly compatibility issues (#459)
table.insert()now correctly omits nullable fields: Schema-derived table definitions previously required all fields ininsert()calls. Nullable columns (e.g.S.NullOr) are now correctly omittable, matching SQL semantics where nullable columns implicitly default toNULL(#1117).
Docs & Examples
- New example: CF Chat: A Cloudflare Durable Objects chat example demonstrates WebSocket sync, reactive message handling, and bot integrations across client React components and Durable Object services.
- Cloudflare examples now default to DO SQLite storage. D1 usage is documented via an explicit binding and a oneâline
storageoption in code. - Cloudflare Workers deployments:
mono examples deploynow provisions Worker targets so DO-backed demos stay current across prod and dev environments (#690, #735). - Add Netlify dev deployments for examples to simplify testing (#684).
- Svelte integration docs: Added the Svelte framework guide plus the Svelte TodoMVC example so
@livestore/svelteis documented alongside React and Solid. - Use Twoslash for select getting started snippets in docs (#658).
- TanStack Start examples:
web-linearlite,web-todomvc-sync-electric, andweb-todomvc-sync-s2now run on TanStack Start with Vite 7 compatibility fixes and Cloudflare runtime flags (#747). - Docs for coding agents: Documentation now serves agent-optimised Markdown so automations get concise answers without burning unnecessary tokens (#715).
- TypeScript-validated snippets: Most examples are now type checked through the Twoslash pipeline enabling in-docs intellisense (#715).
Experimental features
- LiveStore CLI for project scaffolding (experimental preview, not production-ready). Generated projects now link to the
mainbranch in the source LiveStore repository (#1206), and the CLI usesGITHUB_TOKENorGH_TOKENfor example downloads when available so rate-limited unauthenticated fetches are no longer the default (#1201).
Updated (peer) dependencies
- Effect updated to 3.17.14
- React updated to 19.1.1
- Vite updated to 7.1.7
- TypeScript 5.9.2 compatibility
Internal Changes
Updates in this section are primarily relevant to maintainers and contributors. They cover infrastructure, tooling, and other non-user-facing work that supports the release.
Core Runtime
- Encapsulated Store internals behind
StoreInternalsSymbol(movedboot,syncProcessor,effectContext,tableRefs,otel,sqliteDbWrapper,clientSession,activeQueries,reactivityGraph,isShutdown), reducing public surface and clarifying API boundaries (#814).
Testing Infrastructure
- Comprehensive sync provider test suite with property-based testing (#386)
- Node.js sync test infrastructure with Wrangler dev server integration (#594)
- Parallel CI test execution reducing test time significantly (#523)
- Cloudflare sync provider tests run against both storage engines (D1 and DO SQLite) using separate wrangler configs.
Development Tooling
- Strict peer dep composition: Added
@effect/vitesttoutilsEffectPeerDepsand@livestore/peer-deps, and deduplicated the peer-deps package to derive its dependency list from the canonicalutilsEffectPeerDepssource (#1107). - Hosted example link validation: Maintainers now have a shared deployment metadata source and
mono examples validate-linkscheck so docs and example deployments can catch stale first-party demo URLs before publishing (#1244). - Chrome DevTools extension assets restored: Restored
qrcode-generator2.0.4 in@livestore/utilsand included the Chrome DevTools extension assets in the release artifact flow so the published DevTools package contains the Chrome extension build alongside the Vite plugin (#1215). - Migration from ESLint to Biome for improved performance (#447)
- Automated dependency management with Renovate
- Pre-commit hooks via Husky (#522)
- Comprehensive dependency update script (#516)
- Add GitHub issue templates to improve issue quality (#602)
- Reworked the documentation tooling so maintainers continuously publish token-efficient, TypeScript-backed snippets that stay reliable for coding agents (#715)
- Snapshot release confirmation prompt: The
mono release snapshotcommand now prompts for confirmation before publishing. Pass--yesto skip the prompt in scripts and CI. The prompt is also auto-skipped whenCIis set (#1049).
wa-sqlite Integration
The wa-sqlite WebAssembly SQLite implementation has been integrated directly into the LiveStore monorepo as a git subtree under
packages/@livestore/wa- sqlite. This change provides several benefits:- Direct control over SQLite builds and customizations for LiveStore's needs
- Simplified dependency management and version alignment
- Ability to apply LiveStore-specific patches and optimizations
- Reduced external dependency risks and improved build reproducibility
Key changes:
- Integrated wa-sqlite as git subtree, replacing external npm dependency (#582)
- Ported build scripts and test infrastructure to LiveStore monorepo (#572)
- Updated to SQLite 3.50.4 with LiveStore-optimized configuration (#581)
- Fixed test setup issues and improved reliability (#583)
This integration lays the foundation for future SQLite optimizations specific to LiveStore's event-sourcing and sync requirements.
Todo
For remaining v0.4.0 work and known issues, see the v0.4.0 milestone on GitHub.
Open issues:
- Other tabs lag behind noticeably when committing large batches of events (#304)
- Vite DevTools consistently loses app connection (#331)
- Sync state memory leak: Unbounded pending events accumulation when no sync backend is used (#360)
- Type Annotations on schemas not portable (#383)
- store.shutdown() doesn't wait for pending writes to complete, causing data loss (#416)
- Consider mechanism to reject events on sync (#404)
- [Devtools] Clicking on session doesn't work (#474)
- Fix: Rolling back empty materializers currently fails
-
đ sacha chua :: living an awesome life La semaine du 25 au 31 mai rss
lundi 25
Ma fille était un peu triste parce que j'avais mangé mon petit-déjeuner avant qu'elle ne se réveille. Elle m'a demandé si je pouvais l'attendre pour que nous puissions manger ensemble.
J'ai emmené ma fille chez l'oculariste pour polir sa prothÚse oculaire. AprÚs le rendez-vous, elle a voulu rentrer au lieu d'aller chez College Optical pour commander des lunettes de soleil correctrices.
Pour le déjeuner et en guise de récompense pour le rendez-vous chez l'oculariste, nous avons mangé des nouilles instantanées. Ma fille m'a donné l'autre moitié de son sachet d'épices aux fruits de mer. Nous les avons enrichies avec du gùteau au poisson et aux algues. Elle a découvert qu'elle n'aimait pas le mochi à la crÚme glacée, donc elle a eu de la crÚme glacée à la place.
AprÚs l'école, elle n'a pas voulu aller au cours de gymnastique parce qu'elle était un peu fatiguée. Au lieu de cela, nous sommes allées au parc pour jouer avec une balle, une corde à sauter, un grand dé en mousse, et la pataugeoire là -bas.
Pour le dßner, ma fille a voulu du sushi au crabe comme au restaurant que nous avons essayé vendredi.
Mon mari, ma fille et moi avons jouĂ© au Scrabble. Maintenant ma fille peut trouver ses propres mots avec quelques indices. Nous avons jouĂ© juste pour le plaisir, donc nous n'avions pas comptĂ© les points. Pour notre premier jeu, elle a voulu Ă©changer des tuiles avec mon mari et moi, donc nous le lui avons permis. Pour notre deuxiĂšme jeu, mon mari a dĂ» aller faire autre chose, donc elle et moi avons jouĂ©. Elle a voulu inclure les noms PokĂ©mon, donc nous nous sommes amusĂ©es en plaçant les mots comme « Ekans », « Abo » et « Jolteon » (l'anglais et le français sont Ă©galement permis) mĂȘme si les mots anglais normaux sont aussi possibles.
mardi 26
J'ai terminé la transcription de ma conversation avec Matei qui est anthropologue. Je la lui ai envoyée pour relecture avant de la publier.
Un des chats de notre voisinage m'a rendu visite, donc je lui ai donné un bol d'eau.
Ma fille et moi sommes allées au parc pour jouer seules. Nous avons joué avec la balle et à la pataugeoire.
J'ai appris que la prononciation du verbe « interviewer » en français a deux sons « v ». C'était intrigant.
mercredi 27
L'école a eu un remplaçant, donc elle a choisi de sécher les cours. Le matin, elle et moi avons travaillé sur ses devoirs dehors. Elle était de bonne humeur. L'aprÚs-midi, elle était un peu triste parce qu'elle attendait une réponse de son amie, et elle s'est blottie sur le canapé. Une fois qu'elle a finalement reçu une réponse, j'ai emmené ma fille au parc pour jouer avec ses amies. Elle s'est trÚs amusée, donc j'ai eu vraiment du temps pour penser pendant qu'elle jouait.
J'ai finalement envoyé les factures pour le mois de mars et d'avril.
Ma mÚre est restée à la maison parce qu'elle avait fait une petite chute.
jeudi 28
J'ai discuté avec Protesilaos sur les recommandations sur Emacs pour divers utilisateurs.
Ma fille et moi avons joué au Scrabble sur le porche pendant la pause déjeuner. Nous avons aussi joué au Scrabble avec mon mari aprÚs le dßner. Nous avons commencé à compter les points, bien que nous ayons toujours joué en coopération.
vendredi 29
J'ai interviewé Omar Antolin Camarena sur sa configuration et ses flux de travail sur Emacs. J'ai travaillé sur la publication des transcriptions vers le format PDF. J'ai ajouté la fonctionnalité d'exclure des sections par format selon les étiquettes.
J'ai pratiqué la prononciation française.
J'ai emmené ma fille à un cours de rattrapage de gymnastique aérienne.
samedi 30
Ma fille s'est amusée toute seule à faire des bulles et à jouer avec de la mousse à raser.
Ma fille a voulu des vĂȘtements neufs et un jouet anti-stress, donc je l'ai emmenĂ©e dans diffĂ©rents magasins. Elle n'a pas aimĂ© le Thinking Putty au dĂ©but qu'elle a choisi parce qu'il a des paillettes. Nous sommes prudentes avec les paillettes pour Ă©viter de gratter son Ćil si elle le frotte. AprĂšs avoir jouĂ© avec le Putty, elle a dĂ©cidĂ© qu'elle l'aime, et elle va simplement bien se laver les mains.
Pour explorer de nouvelles saveurs, nous avons mangé chez KFC.
Pendant qu'elle regardait des émissions, j'ai ajouté une commande à mon logiciel pour effacer des images incorrectes afin que j'en téléverse une nouvelle.
Nous avons joué à Donjons et Dragons ensemble pour nous exercer au rÎle de meneuse de jeu. Mon roublard halfelin a vaincu un méphite, mais le mimique dans l'autre piÚce était trop pour moi. Du cÎté de ma fille, elle a aidé Cornflower avec les devoirs de la ferme.
Mon mari et moi avons discutĂ© des voyages. MĂȘme si voyager est bien recommandĂ© pour se dĂ©couvrir soi-mĂȘme, il y a d'autres façons de le faire, donc il vaut mieux bien rĂ©flĂ©chir. Pour le moment, je pense qu'il vaut mieux que j'aide ma fille Ă apprendre Ă apprĂ©cier ce qui est proche.
Ma fille a dit qu'elle a du cĂ©rumen, donc elle a utilisĂ© de l'huile minĂ©rale pour le dĂ©loger. Ăa a marchĂ©.
AprĂšs le dĂźner, j'ai fait les courses seule.
dimanche 31
Mon mari était trop frustré aujourd'hui, donc mon mari et ma fille étaient tous les deux grincheux. Je me demande ce qui se passe.
Quand mĂȘme, pendant qu'ils se dĂ©brouillaient, j'ai travaillĂ© sur les transcriptions de mes entretiens rĂ©cents. J'ai aussi poussĂ© des mises Ă jour de mon outil pour Ă©crire le sous-titrage. J'ai oubliĂ© de vĂ©rifier mes changements avec les tests, mais heureusement, il y avait juste un bug et le bug Ă©tait dans le test au lieu du code. J'ai aussi restaurĂ© les articles que j'ai accidentellement effacĂ©s. Ensuite, j'ai recherchĂ© des machines Ă coudre pour ma sĆur et mes niĂšces qui habitent aux Pays-Bas, parce que leur ancienne machine Ă©tait abĂźmĂ©e.
Ma fille s'est trĂšs amusĂ©e en jouant comme la meneuse de jeu dans un jeu de Donjons et Dragons avec sa tante. Elle veut ĂȘtre la meneuse de jeu pour un jeu avec ses tantes et ses cousines la semaine prochaine, donc sa tante lui a offert l'occasion de s'entraĂźner.
J'ai appelé ma mÚre. Elle m'a dit que ma tante lui demandait à plusieurs reprises si nous lui rendrions un jour visite. Eh ben, ma tante ne nous aidera pas à élever notre enfant si je suis malade, donc son opinion ne compte pas pour moi.
You can e-mail me at sacha@sachachua.com.
-
đ sacha chua :: living an awesome life La semaine du 18 au 24 mai rss
lundi 18
Je me suis rĂ©veillĂ©e trĂšs tĂŽt pour interroger ma sĆur qui est trĂšs malade d'un cancer. Nous voulons enregistrer des vidĂ©os pour ses jeunes filles et son mari. Sa fille aĂźnĂ©e a commencĂ© Ă l'interviewer, mais bien sĂ»r, il y a des sujets dont elles ne peuvent peut-ĂȘtre pas parler pour le moment. Je l'ai appelĂ©e sur Facebook Messenger et j'ai utilisĂ© OBS pour enregistrer l'appel. J'ai un flux de travail pour corriger et formater la transcription, et je suis ravie de l'utiliser pour ma famille.
Il faisait trÚs chaud. C'était notre premiÚre vague de chaleur intense cette année. J'ai emmené ma fille au parc Amos Waites pour jouer à la pataugeoire là -bas. Elle a vraiment aimé la robe-maillot que nous avons cousue. Elle adorait tourner dans le siÚge pivotant que notre parc à proximité n'a pas. Elle a tellement joué qu'elle s'est endormie sur le chemin du retour.
AprĂšs le dĂźner, ma fille et moi sommes allĂ©es Ă un autre parc pour regarder des feux d'artifice pour la fĂȘte de la Reine. Il y avait beaucoup de gens, donc je pense que c'Ă©tait un rassemblement habituel pour les jours de fĂȘte oĂč les feux d'artifice sont autorisĂ©s.
J'ai terminĂ© la rĂ©vision de la transcription de ma conversation avec Prot et Philip. Je pense que l'audio de Philip est parfois trop faible, mais je ne suis pas sĂ»re de pouvoir normaliser juste ces segments. Si j'ai une conversation avec un autre locuteur, je peux enregistrer les flux audio sĂ©parĂ©ment, mais dans une conversation entre trois locuteurs (Prot, Philip et moi), je ne peux pas complĂštement les sĂ©parer. En plus, je pense que je ne peux pas remplacer juste l'audio d'une vidĂ©o en diffusion sur YouTube. Peut-ĂȘtre que je peux mettre en ligne une nouvelle vidĂ©o et changer l'ancienne vidĂ©o en une vidĂ©o non rĂ©pertoriĂ©e.
à l'heure du coucher, ma fille et moi avons parlé de la neurodivergence, des mathématiques, et des facteurs humains comme les limitations de la boucle auditive comparée à la visualisation. J'adore lui parler de son cerveau.
mardi 19
J'ai essayé de virer de l'argent aux Philippines via Wise. C'était réussi.
Je me suis entraßnée aux virelangues. Oups, j'ai oublié de confirmer l'audio sur OBS, donc je ne peux pas l'analyser.
J'ai réécrit deux transcriptions pour les entretiens de ma sĆur.
J'ai emmené ma fille au parc pour jouer avec ses amies. J'ai oublié les glaces à l'eau, donc je suis revenue à la maison pour les retrouver.
Nous avons pratiqué les permutations et la division posée.
mercredi 20
J'ai réécrit encore des transcriptions pour les entretiens de mes niĂšces avec ma sĆur. J'ai configurĂ© un serveur dans notre rĂ©seau pour les hĂ©berger avec l'authentification basique.
L'école avait un remplaçant aujourd'hui. Il a accidentellement éjecté tous les élÚves de la salle de réunion virtuelle et tous ont dû attendre que l'enseignant corrige les permissions.
J'ai ajouté un gousset aux shorts de bain de ma fille.
J'ai emmené ma fille et son amie au parc pour jouer. Elles se sont amusées à me donner des décharges avec l'électricité statique. AprÚs que les autres amies de ma fille sont arrivées, ma fille semblait un peu surstimulée. Elle est partie seule et elle était grincheuse pour le reste de la journée, pauvre chérie.
jeudi 21
J'ai discutĂ© d'Emacs avec Raymond Zeitler sur une diffusion en direct. C'Ă©tait la premiĂšre fois que je lui parlais en vidĂ©o mĂȘme si nous correspondons depuis 18 ans via les commentaires sur mon blog.
Le dentiste a fait deux plombages. Il a proposĂ© un plan de traitement, mais c'est cher, donc je veux bien y rĂ©flĂ©chir avant de procĂ©der. Je pense que je veux gagner en confiance avec ce dentiste d'abord. On dirait que la restauration prĂ©coce est mieux que d'attendre pour les dents cariĂ©es selon les recherches, donc c'est bon, mais on dirait aussi que d'autres dentistes recommandent d'autres niveaux de traitement. J'aime les prĂ©cautions COVID que ce dentiste prend. Il y a d'autres dentistes (un peu loin) qui prennent aussi ce niveau de prĂ©cautions, mais ils disent probablement la mĂȘme recommandation (c'est la mĂȘme recherche), donc je ne cherche pas particuliĂšrement d'autre conseil. Je ne veux pas passer pour une vache Ă lait, tu sais?
vendredi 22
Je me suis réveillée tÎt pour une conversation sur la communauté Emacs et l'IA avec Matei Candea, un anthropologue. Il pense à faire une étude ethnographique, et je pense que c'est potentiellement intéressant.
J'ai terminé la transcription de ma conversation avec Raymond Zeitler sur Emacs. J'ai remarqué que j'utilisais le mauvais horodatage pour publier les chapitres à partir de la transcription, donc j'ai corrigé l'erreur.
Ma fille n'a pas voulu participer à l'école parce qu'il y a eu un remplaçant, donc elle a fait une pause.
J'étais fatiguée, donc j'ai fait une sieste.
J'ai emmené ma fille au cours de rattrapage de gymnastique. Elle a pris plaisir à apprendre la gymnastique aérienne. AprÚs le cours, ma fille a voulu aller au parc asperge (St. James Park) parce qu'il y a un grand toboggan. Elle s'est entraßnée à descendre le toboggan à de nombreuses reprises. AprÚs avoir fait ça, nous avons acheté du sushi. Elle a essayé la tempura de crevettes et elle l'a aimée.
samedi 23
Il a beaucoup plu et c'était trÚs venteux, donc nous sommes restées à la maison au lieu d'aller à la célébration de printemps à la ferme Riverdale.
Ma fille et moi avons joué à Stardew Valley avec le mod Tileman Reworked, qui me demande d'acheter les tuiles auxquelles je veux accéder. J'aime parfois jouer à des jeux avec des limites comme Minecraft Skyblock parce que les limites focalisent l'attention et la progression est trÚs différente. Ma fille préfÚre notre jeu précédent avec le mod Stardew Valley Expanded.
Pour le dßner, nous avons mangé du sotanghon, qui est une soupe aux nouilles et au poulet. Nous avons aussi essayé le taiyaki congelé. C'était pratique et acceptable, mais bien sûr le taiyaki chez Pat Mart est meilleur.
à l'heure du coucher, ma fille et moi avons discuté de la neurodivergence, de la double exceptionnalité, de l'apprentissage des élÚves doués, de la différence entre la récupération d'information et de la synthÚse. Nous avons aussi discuté de la faune, des maladies, des vaccins, et d'autres sujets.
dimanche 24
J'ai parlĂ© avec mon mari du TDAH. Il pense que je suis juste prĂ©occupĂ©e, et ce n'est pas grave. C'est bon. Je ne veux pas laisser ma vie ĂȘtre perturbĂ©e au point d'avoir des problĂšmes dans deux zones ou plus dans ma vie pour obtenir possiblement un diagnostic, ce qui ne m'aiderait probablement pas beaucoup plus. Quand mĂȘme, je peux continuer d'explorer comment je peux m'adapter Ă mon cerveau et ma situation.
Ma fille et moi avons préparé du lait au sucre brun et aux perles boba faites à la main.
Mon mari, ma fille et moi sommes allés aux Stockyards pour faire des courses. Nous avons acheté une boßte de mangues, des perles boba, des haricots azuki, et d'autres aliments. Nous avons préparé une fournée de mochis aux haricots azuki.
J'ai recherché quelques dessins pour les transcriptions. Je pense que je veux inclure les noms des interlocuteurs dans la marge gauche et les horodatages dans la marge droite. Je veux aussi réécrire la transcription pour supprimer les mots de remplissage.
Pour le dßner, nous avons mangé du curry japonais.
Je me suis couchée tard parce que sur Stardew, j'ai finalement accédé à la caisse chez Pierre pour acheter des graines dans la troisiÚme année. La progression est trÚs lente. Heureusement, le mod HibernationRedux me permet de sauter le temps pendant que j'attendais la croissance des arbres.
You can e-mail me at sacha@sachachua.com.
-
đ r/reverseengineering Resident Evil: Code Veronica X is now able 3D graphics from the decompiled source! rss
submitted by /u/MrFroz1995
[link] [comments] -
đ r/LocalLLaMA Minimax M3 appears to have no political censorship rss
| I'm currently working on a chinese/CCP AI bias benchmark, and this has stood out as an outlier. All the other Minimax models are censored as is typical for chinese LLMs. submitted by /u/DingyAtoll
[link] [comments]
---|--- -
đ Register Spill Building Software Is Learning rss
A few weeks ago I shared the following as an internal message with the Amp team. I showed it to a friend while talking about feedback loops and he told me to post this publicly. So here we go. Unedited, straight up copy & pasted from our Slack.
You know what's rare?
person a: "we need this feature" person b: "yes, let me build it" ... person b: "done." person a: "fantastic, exactly what I wanted."That's basically NEVER what happens. At least not when you're building something new. It might happen when you fix a bug or when you port something that already exists in another app to a new language or framework, ... Or when you're building after a spec.
But when there's no spec, and when you're building something new?
Here's how that works:
person a: "we need this feature" person b: "yes, let me build it" [...] person b: "done." person a: "hmm, actually, that's not what I meant. what I meant is: [...]"Or this:
person a: "we need this feature" person b: "yes, let me build it" [...] person b: "you know what... There's 3 ways to do this, actually, and I'm not sure what the best way to do this is?" person a: "ah, I see, I think given that we want to ship this tomorrow, let's go with way 1"Or:
person a: "we need this feature" person b: "yes, let me build it" [...] person b: "done." person a: "Don't like it"Now why does that happen, again and again and again?
Because building new software is learning! If you're building something new and you don't yet fully know how exactly it's supposed to work, you will learn what exactly it is that you're building as you're doing it. Let me repeat: building new software is learning.
So far, so good, right? But here's the very important bit, the one bit I want you to take with you into this week: there is no way in hell , absolutely zero chance, that you can build something new and avoid bumping into "that's not what I meant", or "now that I'm working on it I'm not actually sure", or "hmm, now that I use it, I don't like it". Because the only way you could avoid that would be to fully specify what you want up front and, well, guess what programming is? It's fully specifying what you want. You can't avoid it, because you can't define it yet, because building software is learning!
Now that was the bad news. Here's the good ones. You can reduce the time the
...from the examples above takes -- the time between the confident "yes, let me build this" and the humbled "oh, I see".And that, in turns out, is the most important thing you can do when you're building something new: reducing the time it takes you to go from "let me try something" to getting your ass whooped by reality.
If someone says "we need this feature", don't go "yes, let me build it" and hack on something for 4 weeks only for the other person to ultimately go "that's not what I meant." No. Instead, embrace that we need to learn , that we need to try and play around with this idea as fast as possible, in a way that lets us learn. To embrace that idea means that you try to figure out "what is it they mean" as fast as possible , with the minimal effort required, so you can LEARN what it is you're building.
Instead of going away for 4 weeks and hacking on something, you instead can do stuff like this:
-
... build a prototype, in 1hr, and show it to them, and they go "no, that's not what I meant, you should change this part here"
-
... write down a spec of how you'd approach it, in 30min, and show it to them, and they go "no that's not what I meant"
-
... cut up the thing in multiple things and ship one every day, so that every day what you built hits reality and you get to learn, because on day 2 someone says "know what, we should change..."
-
... reduce the scope, figure out what the things are that we're already sure about and skip those, and instead focus on the bits that we don't know yet -- that's where we need to learn. don't add 5 ways to login, if all we need to learn right now is 1.
-
... fake a demo video, show that around, get input on that - Quinn's done it many times
-
... write the news post that explains the idea -- why waste effort building something for a week if the idea can be captured in 3 paragraphs?
-
... write the example code that would go into the README, show that around, does that look like a good API? People don't need an SDK built if they dislike the API in the readme.
-
...
There's more options that I didn't list here. And you don't have to pick only one. In fact, for something big, you should probably do a few of these things. Or you vary them, or combine them, or ...
What exactly you do doesn't matter as much as constantly asking: how can I get feedback on what I'm trying to build as soon as possible? And "feedback" here is used in the widest sense possible. Feedback comes in all shapes and sizes: feedback from the CI system on main, feedback from colleagues, feedback from users, feedback from you once you actually use it.
And if you follow that question -- how can I get feedback as soon as possible, so I can learn? -- you'll also find out how to chop things up and how to ship them:
-
you won't get good feedback if you ship an "MVP" of an idea that's so obviously buggy that all you'll get is bug reports for 3 days, not actual feedback on how useful it is
-
you won't get good feedback if the people supposed to give you feedback have to jump through 8 hurdles to test it
-
you won't get good feedback if you keep your changes on a branch for 3 weeks, because by the time you merge your 27 commits and CI blows up you have 27 possible causes, vs. 1 if you had merged them one by one
-
want feedback on the design of your skateboard? sure, show them the deck, no need for wheels. want feedback on how your skateboard feels? you can't ship it to testers without wheels on it.
-
...
So. Here's what I want you to think about going into this week: how can I get feedback on what I'm building on as fast as possible? when is the last time I got valuable feedback on what I'm building? in what frequency do I get feedback on what I'm building? why is that frequency so low?
Because we're building something new, in a time when software is changing (background vocals: everything is changing), and no one has a clue what the fuck is going on - so the most important thing is to embrace that and as soon as possible, as often as possible, ship things on which we can get feedback on, in a way that gives us valuable feedback -- by CI, by production, by our teammates, by select users, by select customers, by all of our users.
Yes, italics and bold. Because building software is learning and we want to learn as much as possible.
Like italics and bold? Subscribe:
-
-
đ r/reverseengineering Built a decompiler for exotic legacy programming language opentext Gupta Team Developer rss
submitted by /u/Sita-Technologies
[link] [comments] -
đ Rust Blog Launching the Rust Foundation Maintainers Fund rss
If you want to financially support the development of Rust, please consider donating to the Rust Foundation Maintainers Fund.
A few months ago, the Rust Foundation announced the Rust Foundation Maintainers Fund (RFMF). Since then, the Rust Project has been closely cooperating with the Rust Foundation to determine how exactly this fund will be used to support Rust maintainers. This resulted in the acceptance of RFC #3931, which established the Funding team and the Maintainer in Residence program.
The primary goal of the Funding team is to ensure that maintainers who work on Rust and its toolchain will be properly supported. We will talk to Rust Project members to figure out their funding situation, meet Rust team leads to learn about their maintenance needs, approach companies to find opportunities for them to invest into Rust by supporting Rust maintainers, coordinate various funding efforts and ensure that the beneficial effects of funded maintenance are visibly promoted, with the help of the Content team.
Maintainer in Residence is a new program dedicated to financially supporting existing Rust Project maintainers1. Each Maintainer in Residence will be funded to maintain one or more critical parts of Rust, such as the compiler, the standard library, Cargo, Clippy or one of many other projects that the Rust Project develops and maintains. The funded work will include activities such as performing large-scale refactorings, code reviews, unblocking new features, issue triaging, mentoring other contributors and more, and will be split between priorities guided by the teams they are supporting and priorities of their own choosing within the Project. Where applicable, Maintainers in Residence are also encouraged to propose, champion, and drive forward Rust Project Goals.
The goal of this program is to provide stable and long-term funding so that maintainers can focus on important work that ensures the long-term health of Rust. The funding team will select Maintainers in Residence based on funding availability and maintenance needs within the Rust Project, and help ensure that they are successful. We expect that this will usually be a (near) full- time position, but that will depend on the nature of the work and the area of maintenance.
This program extends our existing support for Rust maintainers, such as the program management program and the compiler-ops program. An important development is that we now have a centralized mechanism for gathering donations from both individuals and companies, and a dedicated team that will help direct those funds to specific maintainers. You can find more details about the funding team and the Maintainer in Residence program in the RFC.
We expect to hire the first Maintainer in Residence in the upcoming months and announce it on this blog, so stay tuned!
How to contribute funds
If you are an individual who wants to help Rust succeed and thrive, you can donate to the RFMF through GitHub Sponsors2. Companies who would like to invest in better maintenance of Rust can also donate through GitHub Sponsors or they can contact the Rust Foundation directly.
The important thing is that all proceeds from this fund will be directly used to support Rust Project maintainers. We currently expect that to happen primarily through the Maintainer in Residence program, but it can also be done in the form of smaller-scale grants or other mechanisms, as determined by the Funding team. We will figure this out on the go, as this is also quite new for us.
We really appreciate each donation, however small, because with more money we can hire more maintainers to ensure that we can continue to develop Rust and that important improvements are not blocked on maintenance tasks. This is especially important at this time, where Rust is starting to get used more and more in the industry in various application areas, which increases the need for sustained maintenance. The importance of multiple funding sources is underscored by an unfortunate trend we currently observe, where key Rust maintainers are losing their funding for Rust work due to budget shifts. The Rust Foundation Maintainers Fund is designed to provide stable funding for Rust maintainers that is less dependent on sudden shifts in the job market and the IT industry.
As with most things, there is no one-size-fits-all solution, so there are multiple ways to support Rust financially. The RustNL Maintainers Team recently hired several Rust Project maintainers. Previously, we wrote about how you can support specific individuals working on Rust. And there are also Rust Project Goals in search of funding. We welcome all efforts that can help support Rust Project maintainers, who often do work that is near invisible and thankless, while at the same time incredibly important and necessary, on a volunteer basis.
Thank you for considering sponsoring the development and maintenance of Rust! You can find more information about funding Rust on our Funding page.
-
This program was inspired by the Developer in Residence concept used by the Python Software Foundation (PSF), with which we led several helpful discussions. Thank you, PSF! â©
-
Note that the fact that GitHub Sponsors is currently enabled on the
rustfoundationGitHub organization, and not therust-langorganization, is an implementation detail that might change in the future. All donations raised on this Sponsors page will be routed to the Rust Foundation Maintainers Fund and will be spent on directly supporting Rust Project maintainers. â©
-
-
đ Drew DeVault's blog Vim Classic 8.3.0 released rss
Following up on my earlier announcement that I was forking Vim, Iâm happy to announce the first release of my fork today: Vim Classic 8.3.0.
I have written a release announcement for vim-classic.org, which you can read here. Happy editing!
-
đ Ampcode News The End of Public Threads rss
Weâve removed public, internet-wide, discoverable thread sharing from Amp. You can still share threads within a workspace, or as
Unlistedto share them with anyone by unguessable URL.Why? Itâs getting too hard to review a thread to ensure it doesnât contain any snippets of sensitive files. Each model release means the agents get better, and as they get better they read more files into context. Public discoverable thread sharing is just too risky now. This decision is proactive and isnât prompted by any incident.
Public discoverable threads have served their purpose well. Last year, Mitchellâs Ghostty threads and other publicly shared Amp threads helped spread the word that coding agents were actually goodâand taught people how to use them.
Public user profiles (like ampcode.com/@sqs) still show your activity but no longer show any threads. Any existing
Public (Discoverable)threads are nowUnlisted, so your blog posts with thread links wonât break.
-
- June 01, 2026
-
đ IDA Plugin Updates IDA Plugin Updates on 2026-06-01 rss
IDA Plugin Updates on 2026-06-01
New Releases:
Activity:
- augur
- af5ab923: feat: prepare for release
- cd765425: doc: update CLAUDE.md
- ac69ea14: fix: remove the test step from windows and macos targets in ci
- 10be4097: test: add cargo test to macOS and Windows CI workflows
- 8b4fbaf5: fix: code formatting
- 54105844: doc: commit CLAUDE.md
- ae180618: test: add integration test
- 0c417c4f: refactor: extract an helper, use haruspex helpers, and add unit tests
- haruspex
- idawilli
- augur
-
đ r/LocalLLaMA Stop asking what model to run. There are literally only two. rss
Can we please ban the daily "I have an RTX 3060, what should I run?" slop threads? Itâs not complicated. As of right now, Hugging Face is empty and exactly two local models exist on this entire planet:
- Qwen 3.6 35b a3b
- Qwen 3.6 27b
That is the entire list. Your specs donât matter. Your use case doesnât matter.
Stop coping with your pristine, full-precision Q8s of tiny 1B models just because they "fit perfectly in your VRAM." You look ridiculous. Grab a heavily brain-damaged, ultra-low quant of the 35B, force-feed it to your GPU, and let your system RAM bleed. A garbage quant of a massive model is a bagillion times better than your precious micro-models anyway. Just cram it in.
And if you're going to whine that open source is dead because a local model won't instantly rewrite your entire enterprise codebase? Fine. Give up, pull out your credit card, and go spend your money on Claude Code like the rest of the contrarians.
Can we pin this so everyone can finally shut up and stop posting? Thanks.
Now, that has been solved lets go touch grass.
Edit: Damn I did not expect this to blow up, appreciate the people who actually got the bait. The comments coming from every which way reminds me of the time when reddit was not so sterile and buzzing before the bots showed up... made my day... I am going to be honest I totally expected to be downvoted to oblivion..
BUT FOR REAL THERE IS ONLY TWO MODELS THAT EXIST.. I am looking at you Gemma.
submitted by /u/Wrong_Mushroom_7350
[link] [comments] -
đ benji.dog IndieWeb Book Club: June 2026 - Broad Band: The Untold Story of the Women Who Made the Internet by Claire L. Evans rss
I am hosting this month's IndieWeb Book Club and I have chosen Broad Band: The Untold Story of the Women Who Made the Internet by Claire L. Evans.
It's been a few years since I have read this book and I remember enjoying learning not only about the people involved but also some of their specific motivations behind their ideas, companies, and projects. I don't think this book is meant to be in any way a fully comprehensive on all the people involved which is why I'd also love to hear about any other people or stories that could work alongside this book as further reading material.
To participate in the IndieWeb Book Club, write about this book and post it on your site. You can then let me know about your post either through email, webmention, or any other way to contact me you prefer.
I will add all entries below as they come in.
Additional Book Info
-
đ r/reverseengineering running custom firmware / patching the stock firmware of the soundcore headphones and running DOOM on it! rss
submitted by /u/NNonick
[link] [comments] -
đ r/LocalLLaMA RTX Spark does not have 600GB/s Bandwith rss
| Check the slides from Computex. Every outlet that reported 600GB/s is completely wrong. That is the NvLink speed like everyone here said. submitted by /u/rpiguy9907
[link] [comments]
---|--- -
đ @HexRaysSA@infosec.exchange By popular demand, we are extending our Spring Sale for our new on-demand mastodon
By popular demand, we are extending our Spring Sale for our new on-demand starter training.
This new training lets you go at your own pace and includes a handful of new practical exercises to sharpen your reversing skills.
Get 20% off with code STR20.
Offer expires 12 June 2026. -
đ Hex-Rays Blog What's new in the IDA Domain API? rss
What's new in the IDA Domain API?
It has been a while since our first post about the IDA Domain API, our *open- source* Python API designed to make scripting in IDA simpler, more consistent, and more approachable.

-
đ sacha chua :: living an awesome life Transcript of chat with Matei Candea about Emacs and AI rss
This is an edited transcript of my chat with Matei Candea, an anthropologist who is curious about the Emacs community and AI. Sharing it here with permission so that it becomes a thing I can refer to and in case it sparks further conversations. AI is a bit of a contentious topic, so I hope people will be patient and kind as we figure things out!
Related links:
- AI and scholarship: a manifesto | University of Cambridge
- Emacs and Vim in the Age of AI | (think)
- The Emacsification of Software â Quarrelsome (HN)
- The Lisp Curse
- EmacsConf
- EmacsWiki: Usergroups
- Emacs calendar
Expand for the transcriptMatei is an anthropologist; ethnographic researchMatei: I'm an anthropologist. What I actually do for work is to do ethnographic research, to interview people. I've written a lot about scientific communities. For instance, I've written articles on behavioral scientists who work with animals and how they think about knowledge and technology and stuff. Completely independently of that, I kind of got into Emacs and got really excited. About four years later, I was, like, wait a minute, why don't I do an ethnography of Emacs as a community? Sacha: Really cool people. Matei: Right? Really cool people.Curious about Emacs as a community in the time of AIMatei: I think what I'm really saying is Emacs as a community in the time of AI and how that's shifting or not shifting how people are using it, and what it does. I've spoken to Prot on Monday. That was the first interview I did, and we had a great chat. I basically asked him how he got into Emacs and what it meant to him and what his relationship is to the community and stuff, and then a bit about AI and then a bit about what he feels are the interactions between the two. That's broadly speaking what I would be interested in doing with you. If you think there's a broader conversation, we could live stream and have an actual chat about how people use Emacs. By the way, I'm very happy also to tell you where my own trajectory was that I got into Emacs weirdly and randomly about a year before ChatGPT really hit the mainstream. The thing that you read by me was written because me and Ella together were trying to figure out Cambridge's response to AI as a university. Like, what are we going to do about it? If I'm going to be talking about that, I need to know how it works. But I don't want to use AI in my own actual work or in my teaching, because I think it's a bit dodgy. I don't really like it. Why don't I just do it with this kind of side project I've got, which is learning Emacs, right? And the weird paradoxical thing was that I now basically kind of live in Emacs. My email is mu4e. If you saw my screen now, the notes are basically a narrowed Org buffer with questions. Everything's email. But I don't think I could have got there that fast if it hadn't been for the fact that I started asking ChatGPT, like, "Oh, this isn't working. Can you just write me a defun that does this?" I'm not completely vibe coding. I'm trying to learn Elisp at the same time, but I'm in this weird position where... Anyway, this is why for me it raised these questions of: what does learning Emacs in the time of AI mean? As you can probably gather from the manifesto, I'm not pushing it at all. I'm really ambivalent about the use of AI. Anyway, would you be happy to do an interview like I did with Prot? Sacha: Yeah, we can certainly do that. In addition to whatever I can share from my personal experiences, I think your interest in understanding and describing the community and the culture and how it's interacting with this AI thing, I think it'll offer a perspective that is different from what you usually see, because Emacs users have had this long tradition of fiddling with things and making it really malleable and fitting it to them and figuring this out in dialogue. It's figuring out in dialogue with themselves as they figure out their workflows, with the software as they learn from the code, with other people, with resources on the internet not necessarily attached to specific people. That's got a really long history. It's really interesting to see how AI both has plus sides and minus sides in this whole mix. It definitely, I think, will offer some insight that you won't hear with the frothy AI hype that other communities have. It's all very interesting. Matei: Amazing. Let's start with a general kind of interview thing.How did I first get into EmacsMatei: How did you first get into Emacs? Sacha: I was going through all the books in my university library about computer science. One of them was Unix Power Tools. I was like, there's this chapter on Emacs, and it mentions Tetris and other things. What is going on here? I tried it. It was great. I liked it. Then in fourth year or so, my screen stopped working. I didn't want to replace it. But there was Emacspeak. I was amazed. Lots of people had put together Emacs so I could use the computer with a broken screen. I could still read it periodically, if I tilted it and kind of looked at the low contrast thing⊠The speech synthesis worked just fine. I'm going to program this way. I'll plug into a monitor when I'm back in my room. But if I'm out and about, I have this other way to do it. Something that maybe most programs would not have anticipated, but because somebody had built it for themselves, it was something I could use. Beffore I got into Emacsspeak, I got into Planner Mode because I was a university student and I was taking notes. Planner Mode was an easy way for me to keep track of tasks. It was more flexible than other to-do managers. It's one of the packages that was popular before Org Mode. Matei: Right, right. Sacha: I started using that to write my blog. Blogs had just been invented around then. I was figuring out, how do I export RSS out of this? I was able to customize it to do that. I liked it so much I emailed John Wiegley, who had created Planner Mode. I said, hey, I can help you fix bugs. He said, great, you're the new maintainer now. Which was actually very good for me because I was a university student in the Philippines, and Philippines, and normally we don't get to work on anything really cool. Suddenly I was in this global community of people. There was a mailing list. People would send in questions or feature requests. I would share the things that I was working on. They were very, very patient with me. Like that one time, one of my changes accidentally deleted somebody's notes and they were still nice to me afterwards. The community has always been part of how I experience Emacs. Learning in public has also always been part of how I've been figuring out what I can do with it and changing it to fit my needs. It's very idiosyncratic as they are sometimes, has also always been part of my experience of Emacs. Matei: When did this start? Sacha: Very shortly after I started Emacs, I started blogging with it. My first blog post from that is 2001. Matei: Right. You were studying computer science? Sacha: I was studying computer science, yes. Matei: Are you a computer scientist now? What do you do when you're not doing Emacs? Sacha: Most of the time, I'm still focused on full-time parenting, which is why I'm going over to the freezer now to remember to put yogurt in the freezer. I do a tiny, tiny, tiny bit of consulting, but consulting, but for the last 10 years or so, I've just been focused on parenting. Playing with Emacs and being in touch with the Emacs community has been one of the ways that I've kind of kept sane. I've enjoyed the intellectual puzzles of: I have this thing that I want to do, how do I do it with code in ways that I can fit into five minutes here, ten minutes there of my life. Matei: Do you do any other coding or just Elisp? Sacha: JavaScript, Python on occasion. Some of my consulting involves making little JavaScript prototypes for ideas that my client has, but it's really just an hour a week, maybe less. But for fun, I still write a bit of JavaScript and Python. Emacs Lisp, however, is what I usually write because it's so much easier to do things when you've got the full editor with you. Matei: Yes, that makes sense. I've got a million questions, but I'm going to try and do them in order. You've said a little bit about this already, butWhat do you love about Emacs?Matei: what do you love about Emacs? Sacha: You can come up with a crazy idea and you can actually make it happen. So, for example, I've been doing a lot of conversations, interviewing people or working with my sister's interviews. I always like turning these into text because text is a lot more searchable. Chapters and things like that too, right, so that people can jump to just the part they're interested in. I don't know how other tools do it, but I love the fact that I can modify Org Mode so that I can capture timestamps. Wall-clock time is easier for me to work with. I can say, okay, while I'm typing, I just use an abbreviation to put in the timestamp that's the current time and my rough notes. I have another piece of code that translates that into offsets from the start of the video based on YouTube's live stream or the file name of the video. Then I can paste that into the subtitle file so that it automatically puts the chapters in roughly the right places. As I come up with little workflow ideas, I can actually implement them.CommunitySacha: I also love the community of it. Looking through the blog posts or as I put together Emacs News every week, there's always all these interesting examples from people who are asking the same questions about about "What is it I want to do?" and "How can I do it 0.5% better?" They write these little functions. I'm like, oh, that is a fantastic idea. I get to absorb that into my life. Because I'm seeing it in the context of their blog post or their video, you get a glimpse of other people's lives as expressed through code, because all of the code is very personal. That is one of the things that is good about the fact that people are using AI sometimes to generate this code. They can make things that things that punch above their weight. A newcomer to Emacs can have customized functions that let you fully appreciate its power. But on the other hand, if the AI is just generating this code, you don't get a sense of like, where's the blog post this is coming from? Or who would I talk to to keep up with other crazy ideas they come up with? You're limited to just your ideas. Then there's the whole thing about license-washing. Most of the people release their code under GPL because it's Emacs, but the large language models never mention that. They never say, you also have the right to go and share this and modify this and build on top of it and contribute back to the community. Sometimes it doesn't feel right, the code. It doesn't quite get the conventions and the idioms yet. So the things that I love about Emacs are generally the fact that it can fit me like a glove and it's got this community of people who are also exploring what is possible as crazy as ideas sometimes get. There's always some way to hack it in.Do you know how big the community is?Matei:Do you know how big the community is?
Sacha: I have no idea. We generally feel like it's a lot smaller than VS Code and probably a lot smaller than Vim. It depends, of course, on if you're talking about percentage, it depends also on... There's a lot of Clojure developers using it, because it's the standard Clojure way of doing things, but there are probably a lot fewer Java or JavaScript people using it because a lot of people are in VS Code instead. I used to do Google Analytics tracking on my website, but I stripped all of that out because cookies and tracking and all of that. When people ask me how many people read this stuff, I have no idea, but I do know that every time I look for Emacs News, I'm delighted by the breadth that I come across. To me, it feels like there's a thriving community that's large enough for my interests. Matei: Cool. You're the second person I've actually spoken to. The first person was Protesilaos. I'm struck by the fact that from a sample of two, I've got two people who are not based in the US, who are super international, and also who are not developers. Sacha: That is a fantastic thing about it. I love that we have researchers and sourdough bakers and knitters. Of course, the programming part is still there, but a lot of people end up getting into some kind of programming because of Emacs. Emacs is the only thing they ever code, and they don't even think of it as coding. It's just like, I do this, but I wanted to be able to do this, so I learned how to do Org Mode and source blocks, and that's all I can do, but it's great. I think that's really interesting because when you talk to people about their origin stories with Emacs⊠Sure, of course, you have the pockets of people who are like, I'm a computer science student and my professor said use this, so I'm using this, and so forth. But then you get these random high school music students who are like, oh, yeah, I just saw this video and I thought it looked really cool, so I taught myself how to do that. I don't know anybody else who uses it in real life, but I like it. Musicians using it live to do performance... Where are these people coming from? But they come across it, and it just strikes a chord with them, deep in their souls. It appeals to a certain tinkerer type, I guess. They just continue with it. They get stuck. Sometimes they leave and they come back, and all that stuff⊠But the breadth is one of my favorite things about Emacs. Matei: Do you think that most of the people in the community are probably developers? Because when you were saying the community, you compared it to Vim and VS Code, which is to think of it really as an IDE kind of thing. Sacha: That's usually what people talk about, right? Because usually when people are thinking, how popular is this, they're stacking it up against developer tools because those are the surveys that the development websites do. Stack Overflow or State of Clojure or whatever. They'll ask people, âWhat editor do you use?â But given Emacs' surprising popularity among people who are, for example, diagnosed with ADHD and find that Org Mode is the only way they can manage their brains⊠Matei: Is that a thing? That's really interesting. Sacha: In a number of Reddit threads that I've seen, people are like, yeah, I'm not a programmer, but Org Mode is the only way that I've figured out how to manage my brain. Or people will come to Emacs from something else specifically for Org Mode because of the way that it can help them manage their tasks or agenda, because they can sculpt it to fit what their specific workflow could be. It's amazing. Of course, we've got the writers and the researchers who are like, "I love publishing beautifully typeset things, but I don't like working with LaTeX all that much, so let me just figure out the template once." Matei: Yeah, totally. I really came to Emacs because I was looking for an outliner. I'd been writing in Markdown for a while. I was really getting sick of the heavy Word stuff. And I was, like, Org Mode, omg, it's amazing! Then from there, I was bitten.Do you have any frustrations with Emacs?Matei:Do you have any frustrations with Emacs?
Sacha: I would like to have more time in the day to fiddle with things. In terms of the balance between fiddling with my config and doing the thing that I want to do, if I sandwich it so that I do my 5 to 15 minutes of Emacs fiddling at the start, then I'm motivated to go through the task because I want to test that my improvement works. Then it becomes a good balance for me. I don't spend all the time feeling like I'm yak shaving, and I don't spend the time struggling with workflow because I didn't take the time to automate it. I would like to have more time, because I always come up with more ideas in the middle of something. I know this is possible. I just have to sit down and do it, and it'll be great. But okay, I have to wait till my next 5 to 15 minute window where I can fiddle with it again. The other thing that I've been trying to figure out is: how do you help people develop that intuition for how to do things, how to make Emacs do things? We see a lot of people come into the community. They might get stuck on some things. The tutorial is very useful, but it can be overwhelming. The whole Emacs thing can be very overwhelming for people. How you help people get through that part is something that's of great interest to me. Bringing it back to AI and large language models, the fact that people can sometimes have a conversation with this endlessly patient tutor where they might be too embarrassed to ask their questions on a mailing list or a forum, I think that's fantastic. But also, going to your manifesto's points about learning by doing and education and the eureka moment, we also don't want this quick and easy help to rob people of the understanding that they get from looking at it and tweaking the code or learning how to read through the source code themselves. There's just so much there that I would hate for people to just get stuck in the âplease generate this code for me" level rather than be able to learn this is how I start learning from other people's source code so that I can come up with more ideas. Matei: That's right. That's also what I think basically. Here's an interesting question.Would you ever leave Emacs?Matei:Would you ever leave Emacs?
Sacha: I cannot imagine an editor at the moment that would let me get away with nearly half of the things that I do, but maybe even less. Right now, I've got so many odd little customizations for it. For example, on my phone, I'll use Orgzly Revived to capture a quick note so that I can go back into Emacs later and do it. But even though I'm comfortable programming in JavaScript and Python, and there are lots of tools available there, the interactive interface part of things is something that I don't see any other program give me the same kind of platform of support or building blocks to play with. Who knows? If some day, this thing manages to support all of my hacks built on hacks and gives me that same kind of feedback loop, but it's also multithreaded and graphical and whatever, I might give it a try. But at the moment since I can get away with so much in Emacs and I know that people behind the scenes are working on adding even more to it, it's okay, long term. It's been around for 40 years. It'll be around for... Probably it'll outlive me. I don't have to worry too much about giving up on it.How important for you is the free software bit of Emacs?Matei:How important for you is the free software bit of Emacs?
I was on Mac when I got into Emacs. I went to GNU Emacs to download it and it said, we made this available to people on proprietary systems in order to teach you to free yourself. I was like, huh? I downloaded it and I'm now running Arch Linux. It definitely worked. Richard Stallman has downloaded himself into my brain. How much is the free software bit of it important to you in using Emacs? Sacha: I'm not a purist. I will happily be the interface using the non-free things. For example, when we were doing EmacsConf, the first few years before Whisper was around, I was the one doing like, okay, fine, YouTube has this subtitling thing that we can grab the stuff from. Yeah, it's a non-free service, but I will happily take advantage of it in order to make the information more free, and things like that. I use both free and non-free things, but I love the single-minded focus that a lot of people have on freedom and making sure that other people enjoy these rights. For example, in the Emacs community, a surprising number refuse to use JavaScript because a lot of JavaScript is non-free software. I want to make sure that my website still makes sense without JavaScript. EmacsConf, there are ways to participate even participate even without JavaScript. You can use MPV to watch the stream. It's all free software. You can use IRC to chat. All that stuff is very important to people, and that's great. I love the fact that for a lot of people, they really care about making sure other people can continue to enjoy these freedoms to modify things and to build on it. Every so often someone comes into the Emacs community and they're like, oh yeah, I want to make money making packages here. I'm going to put my package behind a paywall. You've got to send me a donation in order to use it. Then they get smacked down so hard. Usually the way it works is someone will then, you know, take a look at their README and say, okay, that looks vibe-coded. I can do it faster and I'll do it for free. That's the usual response to this stuff. Yeah, here's the thing that you're trying to sell, but it's free. Matei: So that never works. I was struck by this. It seems to be so absolutely immune to takeover by proprietary stuff. Sacha: I mean, it's a startup hustle mentality in other communities, but in Emacs, it does not fly. Mostly because people are, like, are, like, I know the tools you're using, I can do that better myself. There are people who do get sustained by donations from Emacs community members, but it generally is more of a "I appreciate your work and I will send you this voluntary donation" instead of your paywalling your stuff behind this thing, which feels very much against the ethos of the Emacs community. It's been interesting to see the AI hustle "software as a service or product type" thing try to infiltrate the Emacs community, and they are having none of it. Matei: Interesting. Why do you think it's so resilient to that? Sacha: Because we've had such a long tradition of sharing things for free, building on top of things that people have freely shared: not just like free as in beer, but free as in you've got the source code, you've got all the rights to do whatever you want with it, including for free. That's baked into the community. Any time someone comes in and tries to say, oh yeah, I've got this commercial packaging of Emacs, it's all rights reserved, people are like, yeah, there's probably a GPL violation right there, so let's go. Matei: Cool.How do you explain your passion for Emacs to non-Emacs users?Matei: How do you explain your passion for Emacs to non-Emacs users? Sacha: I don't usually. I love the fact that I can tinker with it, right? If it clicks for people, it clicks. But if it doesn't click for people and they don't necessarily want or need that, then it's okay for them to use something else. I love the fact that people are using or even shifting to other editors. For example, we've had a couple of people announce that they're leaving Emacs recently because vibe coding has made it possible for them to build native applications and they don't have to build it on top of Emacs anymore. They can finally get their Vim config set up the way that they wanted to because the LLM can generate that stuff for them. Whereas in Emacs, it would have been a lot easier to write it themselves, but now they can do it with VS Code or whatever. It's great because the more people are experimenting with interesting ideas, even outside Emacs, the more we get to steal those ideas and then bring them back. You see a lot of this sometimes. You see people re-implementing cool ideas from other editors or other tools. To me, it's totally okay if other people use something else, especially if they tell me the cool stuff that they think only that editor can do. Because I'm like, that sounds like an interesting feature. Do tell me more. There was an interesting talk by Jeremy Friesen in either last EmacsConf or the one before that, about mentoring and how he's no longer trying to push people to use Emacs. He wants to share the general workflow practices he's using. If he's pair programming with someone, he might say, how do you jump to a specific function definition? They might show him something, or they might realize that's a thing. I can go look in my editor how to do that. He might show, this is how I do it. That's the general idea. Sometimes when people start talking workflow, then talking workflow, then talking workflow, then people who are not using Emacs will go, "That looks really cool. How do I do that?" Then that?" Then you send them down the path of: get it installed, go through the tutorial, that sort of stuff. But it always helps to have that specific reason, the thing that they want to be able to do. For me, for example, I love the way that Org Mode lets me have my notes and the code and the links. It's all one big thing. I don't have to think about, oh, okay, I have to do everything in Python because that's what Jupyter does. I can do some of it in Emacs Lisp, and I can do some of it in shell scripts, and I can do some of it in JavaScript or Python. It's like all this big mess Org Babel kind of thing. Yeah, because your brain might not be in tune with all those different languages, but it works for me. If other people see that and they say, I want to do that too, then that's when you help them get into Emacs. But aside from that, I don't talk to people in elevators and say, have you heard the good news? Matei: I was wondering even more broadly than kind of people who are already coding with a different editor. To tell you a story... My cousin is also an anthropologist. He's an anthropologist in France. I've known for years that he was into Linux and free software and stuff. When I got into Emacs, he said, you know I've been doing Emacs for 10 years. I was like, what? How? What? And he'd never told me. I realize now, having been doing Emacs for four years, I can't talk to my colleagues and friends about it because they look over my shoulder and it's like, what are you doing? This looks like it's from the 1980s. Even trying to explain to people what Emacs is... I don't mean coders, I just mean people. My cousin said, yeah, I talk to people about free software all the time. I've never talked to anyone about Emacs. It's just so weird. Sacha: I think that's why the community is so important, right? I aggregate a lot of blogs on Planet Emacslife on Planet Emacslife so people can bump into each other. There are a lot of meetups, some of which we host on BigBlueButton... There are meetups, by the way. If you check under Emacs News, there's actually a very active London meetup. Matei: I haven't yet.To what extent do people meet in person with Emacs?Matei: To what extent do people meet in person with Emacs? Sacha: Apparently, a lot of people meet in person whenever they're lucky enough to get a sense that there are actually other people in their general geographic location who are interested in this. But there are also a lot of people who meet online. Org Meetup has a meetup every month that has about 20 people in it. Emacs Berlin has a meetup that's hybrid, and so it's both in person and online. There's Emacs Asia Pacific. There's a whole list of meetups in Emacs News, which is that newsletter that I do every week. I list upcoming events, and there's also a link there to the calendar as well as to the user groups page which lists by region. There are a lot of people getting together about Emacs because a lot of times, you learn about Emacs by looking over someone's shoulder, physical or virtual, right? This is how you learn about things that you would not have even thought of asking an AI about. They're doing a demonstration or they're doing a video, and you're like, what is that thing that you just did? They had no plans to talk about it because it's just something they take for granted. It's a keyword shortcut or a command. It's just part of the workflow. They don't think about it anymore. Or it's even as simple as "What's that theme? What's that font?" Because people can see it, can see somebody doing stuff with Emacs, they get inspired to learn more and to adopt that into their workflow. That is one of the things that I love about how people learn Emacs. It's very convivial, right? Matei: Yeah.Learning in publicMatei: You said the phrase earlier: learning in public. In one sense, that sounds scary. Learning in public, making mistakes in public and stuff. You said it as a really good thing. Tell me more about learning in public. Sacha: My favorite kinds of blog posts is when I'm proud of myself for figuring out something clever. Like, okay, here's this function function to do this thing. I had to figure it out. It was hard. It took like a day or two to do it. Then someone comes by in the comments and says, oh yeah, that's built in. Matei: Yeah, I've been there. Sacha: "You just change this variable." It happens so often. The reason is because Emacs is so big, right? There are variables and functions that I would not think of coming across. Maybe I'm not using the right words to search for them, or whatever. If you add to that the entire package ecosystem and as well as the things that are not people's packaged code, snippets in people's config and whatnot... Chances are someone has come across the same problem that I'm thinking about and has come up with a more elegant solution for it. If I'm not using the same words, I might not find it. One of the things that I like about large language models is that even if I use my words, sometimes it will suggest something that does that translation, right? It's an approximate search. But even if I don't have that, if I'm writing about something, then I have that opportunity for somebody to say, oh yeah, you should check this out. Or several years later, someone might also say, that is exactly what I was trying to do. I'm taking your code. I've built something on top of it to make it even better. For me, writing about what I'm learning with Emacs is a great way to learn even more from the community. I keep trying to convince people, yes, please, even if you're a beginner, write about what you're learning, because it's a great way to crystallize that knowledge for yourself, become part of the community and part of the conversations, and learn about things that you would not have thought of asking about. Matei: Well, I'm following your example. I'm trying to write my config in Org Babel at the moment, partly as a way to say, wait a minute, what is this thing? How does it work? It's so useful. But one thing I was wondering, and it's partly also just a practical question,DisclaimersMatei: I've never tried to contribute or to post anything on anything, partly because I worry that my stuff is crap. Sacha: If you put a disclaimer, that way they know they're reading it for the idea, but not necessarily the Emacs Lisp style. That's fine with me too. There are a lot of people who are like, you know, it's got too many emojis in it, I'm not going to read that. I'm going to focus my time reading something else that's been handcrafted and all that stuff. That's fine too. There's room for all sorts of people and all sorts of approaches to this. Sometimes even just the idea of something is already valuable, that valuable, that somebody thought of saying, hey, my workflow would be better if it could just do this. If there's a screenshot, even better, right? You can see how it works. Screenshot or video or animated GIF. Because then they can go and write the code that they would have to do anyway. Because of course, they've got their own personalized setup. You know, the code that you write will not mesh perfectly with their particular setup. There's this whole⊠There's this Lisp curse essay that's sort of related to⊠Matei: I was going to ask you about that. Sacha: We've all got our ecosystems of our own code and absorbing something into it is sometimes hard. But if you start with even just the idea that somebody else has written about, whether or not you take their actual code for it or use their code as a building block, that is already useful and interesting. Again, you don't have to be Bozhidar Batsov or Omar Antolin to be able to contribute at that level. Even at the beginner level, you could just be like, I just need to do this thing and it's driving me crazy to do it manually all the time. Then I'm like, you can do that non-manually? Oh yeah, we should do that. Matei: Cool. Just to come back to the question about talking to other people about Emacs, do you ever talk to people who are not programmers?Do you ever talk to family and friends about Emacs?Matei: Do you ever talk to family and friends about Emacs? Do you ever have to explain what this thing is that you're doing or do you just not? Sacha: Well, my kiddo is 10, and she's like, can you set me up a kid Emacs? Because she sees me like... Yes! Clearly something of great interest to me. I said, maybe. She does a little bit of vibe coding with Claude as she generates interactive stories. She was trying to track down a syntax error at some point. I was like, can I just install Emacs on your computer so I can do... And she said no. My husband uses Vim. Org Mode at some point, so he found the appropriate Vim plug-in for it. That was amazing. I don't talk to people about editor choices. I just do the stuff that I do. When I write about it, sometimes people will come across it, again, coming from completely different backgrounds. They'll be like, oh yeah, I also need to edit transcripts. What is this Emacs thing? And I'm like, well, it's a very long road, but it's a lot of fun and it's worth it. If you do want to get into it, here's some ways to get started. I don't know. But you can look at the videos first to see whether it might be something that resonates with you. Matei: Yeah. No, I'm the same. I'm very cautious. I've seen that. The learning curve thing is so cool. My kids are like, your computer used to be so pretty when it was a Mac and now it just looks really ugly. I'm like, oh, if you knew. It's so much more beautiful now, but never mind. Cool. We've talked a lot about AI actually already.Do you ever use AI in chatbots for anything else?Matei: Do you ever use AI in chatbots for anything else? Sacha: Well, I'm learning French at the moment. In this case, the kind of the regression to the mean that AI does is very useful for me because I need to know, what is the common word choice here? How do I get the grammar to do the thing? I don't really want to spend an hour of a relatively expensive tutor's time picking apart my subject-verb agreement or my nouns agreeing in plurality with the verbs and stuff like that. It's reasonably acceptable to use large language models for language feedback. That makes sense. In terms of coding, I'm not there yet. Quite a few people are very enthusiastic about it. Even in Emacs, some people are like, "I don't write my code anymore. I just vibe the whole thing." I love the way that it gets a lot of people to make things that they would not otherwise have the time or effort or experience to do, but on the other hand also, it hallucinates a lot of things. It gets me excited: oh there's a variable or function specifically for this? No! It doesn't exist. I can make it exist, so it's a little less frustrating for me, because I can say, you know, that does make sense. I can write that. I can fill in the blanks for it. But 9 times out of 10, I'll be like, no, no, go back and do the proper search. One out of 10 times, it'll tell me, oh yeah, there is this function and it will exist, exist, then I'm like, okay, great, I want to use that, because I wouldn't have otherwise come across it. But I cannot use it to generate a lot of code because I get this urge to just rewrite things to fit the way I want. I just use it like⊠it suggests ideas. It acts kind of like a search engine that gets things wrong most of the time. I'll just take the interesting parts of that and do it myself. Aside from that, I haven't really dug into it to the extent that other people have. I am happy to take a step back and see how this all shakes out because with the shake-up in pricing and all the externalized costs that are slowly being factored in, I'm not going to build a house of cards on it. Matei: Yeah, that's very wise, I think. How do you feel about the fact that these models have been trained on all these free conversations? They just suck up all this stuff that people have been doing for 40 years. Is that a problem in and of itself? Sacha: It's interesting in the particular case of Emacs. As I mentioned, the vast majority of Emacs Lisp is released under either the GPL or the MIT license or even public domain because people in Emacs really care about sharing stuff and they want other people to do it. It's not like, oh, we've got this proprietary code and it's been stolen away from us, it's us, it's not available for other people. The fact that we're treating AI-generated code as non-copyrightable, it's okay that it's sort of out there. It would be nice to be able to say, hey, this stuff is GPL, so if you're going to build on it, please share it under the same licenses. But in terms of the way that many people use it for personal configuration and learning, I'm okay with that. I know that other people in the community have stronger stances, and that's also okay. Because there's no attribution, there's no link back to the person. The licensing doesn't require [lots of] attribution. You don't have to say, oh yeah, this config was inspired by these people and at these links. You don't have to do that, but it would be nice to be able to follow those links back to the people. That would be nice. The ability for more people to learn from this stuff is good. If we can encourage them to share what they're figuring out with other people, that's also good. Matei: So is the problem less about kind of taking intellectual property and more aboutNot breaking connections to peopleMatei: breaking connections to people or like breaking these traceable connections to other people in the community? Sacha: That's the part that I'm interested in and care about, because I feel the community experience of Emacs is very interesting. All the other stuff, there are people who are far smarter than me and have focused on... This is above my pay grade, right? Actually working out intellectual property, what that means. A lot of people think about copyright and copyleft and that stuff. I will leave that to them to sort all of the ethics after that one. I just care about making sure people can feel like they're learning, feel like they're welcome, and can find the ways forward both with assistance of large language models if they want to, but also connecting with real people who they can learn from too. Matei: Yeah, super. I think that's sort of the questions I had, really. I'm sure I'm going to have a million other questions. I might email you back about this. Did you have any questions for me?Education and ethics and eurekaSacha: I love now knowing that you were writing your manifesto with that experience of being an Emacs user in mind, because the way that the education and ethics and eureka was like, that actually lines up precisely with the Emacs community and what it's like and what we care about. I would love to explore this in future conversations and see how we can help people navigate this time. There's a lot of froth about AI, and the business world is losing their heads over this collectively. The programmers in industry either find it useful but also, in general, seem to have a fairly worse experience. This is not where we should be using this. This is not how this is supposed to be turning out. It should not be leading to more unhappiness, but it is. It would be interesting to sort out both in the society level, but also in the individual level, as people make their own choices about what to use and how much to use it for, and also the impact, even if they're not making those choices themselves. I think the general sense now, for at least Emacs and Org Mode, is "we're not going to accept LLM-generated contributions because we've got to have a person who can stand behind the code." We so far have been safe from the inundation of generated pull requests that are plaguing other open source projects. It's definitely something to watch out for. But there is some tension. People are proud of their vibe-coded projects, but on the other hand, people are like, well, it takes 5 minutes or 15 minutes to generate this, and because it's not really maintainable, people will lose interest in it after their 15 minutes of fame on Reddit with their nice screenshots and all that. It's not going to keep moving forward. Matei: Is that kind of like a⊠version of the Curse of Lisp written large? Everyone's just going to write their own programs at home and no one's going to be talking to each other anymore. Sacha: It is very similar to that. that. It can be a problem. It can be an opportunity. It's not one or the other yet. We're figuring out as a community and as individuals how to navigate this. We have this long history of people not actually being able to adopt to adopt someone else's code off the shelf. It's amazing when someone actually puts together a package that can cut across a large variety of use cases. It takes a lot of work to get there, but things like Magit and Org Mode, how do these things happen? Yeah, it's fantastic. I love the fact that we can look at things like consult and vertico... The fact that they can work for a lot of people is amazing. It's actually pretty rare in the Emacs community. But for the most part, we are in our little fiefdoms and we have to make an effort to do that kind of connection. Whether or not the other person is using vibe-coded code doesn't matter that much. There's still that barrier. Higher barrier if you're dealing with vibe code because they don't understand it and you don't understand it and the code is hard to read. The ideas can be transmitted over blog posts and videos. But at the same time, the fact that more people like you can use this to start to experience the power of Emacs, the customizability of it, and can then go on to imagine, hey, is this what software could be? Can it be personal? Can it be malleable? Can I say, "No company is going to anticipate this particular need, but I can make it for myself."? I think that's really worth it. If the tools will help us get there, and if we can find our own balance of ethics that are okay with this... Some people might say, no, definitely not for me, even if it gives me the power. Some people were like, I just want to get this stuff working. That's cool, too. We get to see how that all works out. Matei: It's interesting. I've written this paper for which I gave a talk in Oxford a couple of weeks ago about this, really for anthropologists. It's anthropologists. It's very interesting that a lot of the things we were talking about today, I thought that might be the case on some of these things. It's partly thinking about the way in which AI, ChatGPT, whatever, kind of interferes, becomes like a broker between the community and the individual. So the good side of it is that you're never going to be told to go and read the manual, right? It's always going to say, "Yeah, sure, that's great." But the bad thing is, you're never going to go and read the manual. That's the problem, right? But what I said at the end of it and I don't know whether this resonates at all, but I said now that I'm becoming aware that this is a problem, the paradox that I got into Emacs for the community and yet, in a way, I'm being moved away from the community. Increasingly, now, I will ask not "write this code for me" but "explain to me why this code doesn't work" or "explain to me why my problem could be done differently," and even more than that, not even "explain to me this" but "suggest to me how I could post this on a forum." I'm a bit worried about posting on a forum in case someone turns around and says, that's stupid. Claude or someone can say, if you write it like that, some people might find it interesting. Does that feel like a different kind of use of AI maybe? Sacha: It does, and I encourage the more reflective use of it. For example, you might say, instead of generating this code, you might say, can you help me figure out what it is that I actually want to have in my workflow? Can you ask me questions to help me figure out how to do this or how to break it down into smaller tasks? Then that might be a more useful way of doing it. Sometimes people respond better when something is asking them questions. That is possibly an interesting use of AI. Matei: Amazing. Sacha, thank you so much for your time.Future conversationsMatei: Having had this conversation, do you think there's matter here for some kind of live stream or something, maybe with other people who want to talk about this stuff? Sacha: In fact, if you wanted to take this recording and plop it somewhere public, I am totally fine with that. Learning out loud is how we have these conversations grow, right? The conversation is like this brain dump of ideas, and if we want to start unpacking those ideas and exploring them through all the multifaceted perspectives that we have in the Emacs community, other anthropologists or people who are interested in the philosophy of it, there's people who have so much deep experience in things that I have no idea. I would love for them to be able to say, let's take this facet of this conversation and build on it and explore that one. I am totally okay with both sharing this conversation, if you want to, as well as having other conversations that other people might be able to ripple out from. Matei: Fantastic. I mentioned to Protesilaos that we're going to have this chat, and he said, you know, if you want to at some point organize a discussion over this kind of stuff, he'd be very happy to be involved. Sacha: I've been experimenting with making myself ask people for help. Prot has coaching sessions. If our schedules can line up, then I can schedule a three-way conversation. It can be live and we can build on the ideas that you might have or follow-up questions that you might have, and then we can see if other people do as well. So that could be good. I'm looking forward to hearing about your insights. I would love to see where this goes. I think the Emacs community is definitely worth studying. I think that there are insights here that you might not otherwise come across in more specialized, more focused... Like, just developers or whatever, or more focused on closed source. There's something interesting about this mix of Emacs and AI and plain text and all that stuff. I would love to see where this goes. Matei: Amazing. Thank you very much. Sacha: All right. Bye. Matei: Bye.If you want to chat about Emacs and AI, you can or check out Matei Candea | Anthropology.
You can e-mail me at sacha@sachachua.com.
-
đ @binaryninja@infosec.exchange In Sidekick 26.0, Indexes give you a persistent work queue for reverse mastodon
In Sidekick 26.0, Indexes give you a persistent work queue for reverse engineering! Create one from a BNQL query, then keep adding as you find more. Sidekick can also write to indexes during analysis. Later, use the index to filter down, pin what matters, and jump straight to each location. https://docs.sidekick.binary.ninja/guide/indexes.html
-
đ r/LocalLLaMA I trusted random person on this subreddit and bought 3080 20gb made of chinesium rss
| I don't know how long it will last, but it works, and I want 2 more now. submitted by /u/SwimmerJazzlike
[link] [comments]
---|--- -
đ sacha chua :: living an awesome life Emacs Carnival May 2026 wrap-up: "May I recommend..." rss
: Thanks to everyone who participated! I've included the links below.
It's May and I like puns, so I'm going to suggest "May I recommend…" as our Emacs Carnival theme this month, building on lively conversations about people's favourite packages on lobste.rs, Reddit, and Hacker News. Let's go beyond packages and talk workflows, tips, practices, perspectives… whatever you'd recommend!
It was pretty nice having a wiki page that people could edit without needing to wait for me, so if you write about this topic, feel free to edit the wiki page and add your link. If you run into problems doing that, please e-mail me and I can add the link for you.
People have already started sharing their recommendations:
- May Emacs Carnival, Carlos Pajuelo
- May I Recommend EWM, Dilip
- What we talk about when we talk about recommending Emacs packages, David Dimagid
- May I recommend⊠escaping the minibuffer, Alessio Vanni
- May I recommend… vibemacsing?, by Giampaolo Guiducci
- May I recommend… to only add items to your init files you understand and document?, by MartinStemplinger
- May I recommend… Stop messing around and get work done., by Curtis McHale
- May I recommend declaring bankruptcy from time to time, by Case Duckworth
- May I recommend eww for Emacs's innovative UI?, by Omar AntolĂn Camarena
- May I recommend… understanding Emacs's patterns, by Charlie Holland
- May I recommend using your thumbs on Meanwhiling
- May I recommend thinking of Emacs as your Fortress of Solitude, by Martin Sosic
- Sacha and Prot Talk Emacs: May I Recommend…
- May I recommend… Treating Emacs as Emacs, by SouthFox
- May I recommend: lesser known org-modes, by tusharhero
- May I Recommend: org2blog, journaling & reading hacks, by Wenshan Ren
- May I recommend… less stretching for your common commands, by Neil M
(Still got ideas, just a bit late? Let me know and I can add it here as well as to Emacs News!)
You can e-mail me at sacha@sachachua.com.
-
đ r/LocalLLaMA i dedicate this meme to you r/LocalLLaMA rss
| submitted by /u/LPFchan
[link] [comments]
---|--- -
đ sacha chua :: living an awesome life 2026-06-01 Emacs news rss
There were 17 posts in the in the May carnival topic "May I recommend", very cool! Looking for something to write about next? Check out the June theme Underappreciated Emacs Built-ins hosted by Ross A. Baker.
- Help wanted:
- Upcoming events (iCal file, Org):
- Emacs.si (in person): Emacs.si meetup #6 2026 (v #ĆŸivo) https://dogodki.kompot.si/events/67d716c3-6c04-4530-9c1a-f67aa44d31bc Mon Jun 1 1900 CET
- Emacs Paris: S: Emacs workshop in Paris (online) https://emacs-doctor.com/ Thu Jun 4 0830 America/Vancouver - 1030 America/Chicago - 1130 America/Toronto - 1530 Etc/GMT - 1730 Europe/Berlin - 2100 Asia/Kolkata - 2330 Asia/Singapore
- EmacsATX: Emacs Social https://www.meetup.com/emacsatx/events/314809959/ Thu Jun 4 1600 America/Vancouver - 1800 America/Chicago - 1900 America/Toronto - 2300 Etc/GMT – Fri Jun 5 0100 Europe/Berlin - 0430 Asia/Kolkata - 0700 Asia/Singapore
- M-x Research: TBA https://m-x-research.github.io/ Fri Jun 5 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/GMT - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 Asia/Singapore
- Emacs Berlin: In-Person-Only Emacs-Berlin Stammtisch https://emacs-berlin.org/ Tue Jun 9 1900 Europe/Berlin
- OrgMeetup (virtual) https://orgmode.org/worg/orgmeetup.html Wed Jun 10 0900 America/Vancouver - 1100 America/Chicago - 1200 America/Toronto - 1600 Etc/GMT - 1800 Europe/Berlin - 2130 Asia/Kolkata – Thu Jun 11 0000 Asia/Singapore
- Atelier Emacs Montpellier (in person) https://lebib.org/date/atelier-emacs Fri Jun 12 1800 Europe/Paris
- Emacs configuration:
- Emacs Lisp:
- Appearance:
- Navigation:
- Writing:
- Denote:
- Org Mode:
- I Replaced Obsidian with Doom Emacs & Org Mode (14:37, Reddit)
- Refining Org-mode Deadlines - Wai Hon's Blog (@whhone)
- Speeding up org-agenda by keeping org-agenda-files to a minimum
- tusharhero: May I recommend: lesser known org-modes: org-num-mode, org-toggle-pretty-entities (@tusharhero@mathstodon.xyz)
- May I Recommend: org2blog, journaling & reading hacks, by Wenshan Ren
- Import, export, and integration:
- Memacs: added module for getting PodcastAddict episods into Org Mode (@publicvoit@graz.social)
- tnalpgge/ox-wikidot: org-mode exporter for Wikidot markup - Codeberg.org (@nasunasu@bsd.network)
- TAONAW - Emacs and Org Mode: Journelly and OSM for Emacs are good together - OpenStreetMap locations
- Notes from #29 bbb:OrgMeetup on Wed, March 11, 19:00 UTC+3 (@yantar92@fosstodon.org)
- Org development: etc/ORG-NEWS: Announce about internal changes in org-colview
- Coding:
- Tip about using show-paren-context-when-offscreen (@kickingvegas@sfba.social)
- Tip about using magit-git-show-refs (@shoshin@buzz.cicadas.surf)
- James Dyer: Stashing a Single File, and Why I Was Too Quick to Blame vc-mode!
- Tip about using phpantom_lsp to improve performance of php-mode - @django@kowelenz.social
- Mail, news, and chat:
- Fun:
- AI:
- Whatâs the least painful Emacs + AI coding agent setup right now?
- Built a lightweight, zero-dependency interactive file aggregator (with token estimates) to gather LLM context (Reddit)
- Turning agents on their head: LLM help for human authorship (Reddit)
- Announcing space-tree: Workspace Management Trees in Emacs (Github, YouTube 27:56, Reddit, HN)
- Community:
- May I recommend… Treating Emacs as Emacs â ççžćè”°çŁ (@SouthFox@foxsay.southfox.me)
- Sacha Chua: Yay Emacs 32: Sacha and Prot Talk Emacs: May I recommend… (Prot, YouTube 01:01:41)
- Emacs Chat 24: Omar Antolin Camarena (YouTube 01:08:11)
- Emacs with Dr. Howell - FediverseTV (@jameshowell@fediscience.org)
- From GNU Emacs to code gouv fr (38:59) - Bastien Guerry
- Shibuya.lisp lispmeetup #118 2026-05-28 (01:42:20)
- Other:
- Carnival for June: Ross A. Baker: Underappreciated Emacs built-ins (@ross@rossabaker.com)
- real-backup-mode: a package to backup files at each save point, never lose your changes again (Reddit, EmacsWiki)
- Marcin Borkowski: Ignoring pdfs when auto-reverting files (Irreal)
- Raymond Zeitler: Emacs view- Commands
- Emacs bra size calculator - pulusound (@ahihi@anticapitalist.party, HN, lobste.rs, programming.dev)
- Emacs development:
- New packages:
- elot: Emacs Literate Ontology Tool (ELOT) (MELPA)
- f90-ts-mode: Tree-sitter based Fortran 90 mode (MELPA)
- lsp-ltex-plus: Grammar and spell checking for LaTeX, Markdown, Org and more (MELPA)
- mac-ime: Seamless macOS IME integration without any IME patches (MELPA)
- ox-zola: Org export to Zola static site generator (MELPA)
- phony: Speech bindings for Elisp (MELPA)
- sysml-mode: Major mode for SysML v2 (Systems Modeling Language) (MELPA)
Links from reddit.com/r/emacs, r/orgmode, r/spacemacs, Mastodon #emacs, Bluesky #emacs, Hacker News, lobste.rs, programming.dev, lemmy.world, lemmy.ml, planet.emacslife.com, YouTube, the Emacs NEWS file, Emacs Calendar, and emacs-devel. Thanks to AndrĂ©s RamĂrez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at sacha@sachachua.com. Thank you!
You can e-mail me at sacha@sachachua.com.
-
đ r/LocalLLaMA Entire world: We need more GPUs. Meanwhile, Jensen Huang: rss
| submitted by /u/Nunki08
[link] [comments]
---|--- -
đ r/reverseengineering /r/ReverseEngineering's Weekly Questions Thread rss
To reduce the amount of noise from questions, we have disabled self-posts in favor of a unified questions thread every week. Feel free to ask any question about reverse engineering here. If your question is about how to use a specific tool, or is specific to some particular target, you will have better luck on the Reverse Engineering StackExchange. See also /r/AskReverseEngineering.
submitted by /u/AutoModerator
[link] [comments] -
đ r/LocalLLaMA NVIDIA announces Nemotron 3 Ultra rss
| submitted by /u/themixtergames
[link] [comments]
---|--- -
đ doomemacs/doomemacs v2.1.1 release
v2.1.1
-
đ backnotprop/plannotator v0.19.26 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.19.25 | Amp plugin production fixes, Mermaid rendering fix, Settings AI-tip flicker fix
v0.19.24 | Amp integration, configurable data directory, Auto Mode permission option, Pi plan approval fix
v0.19.23 | Droid integration, Windows Pi AI fix, quieter update indicator
v0.19.22 | Safari copy fix in plan viewer, CLAUDE_CONFIG_DIR support for session logs
v0.19.21 | Ask AI in plan review and annotate mode, shared AI runtime, origin-aware provider defaults
v0.19.20 | Interactive goal setup UI, OpenCode submit_plan fixes, browser no-op sentinel handling for Claude agents
v0.19.18 | Edit-based submit_plan for OpenCode, Pi namespace migration, Codex annotate-last fix, OpenCode commands dir fix
v0.19.17 | Reworked goal setup skill (interview-driven flow), CLI --version flag
v0.19.16 | Code navigation with peek view (Cmd/Ctrl+click tokens in diffs)
v0.19.15 | Commit-based diff base, jj evolution diffs, GitLab reliability fixes, OpenCode command intercept fix
v0.19.14 | Visual explainer skill update, PFM code-file hover previews, Graphviz, diff tab size and line bg intensity, hooks settings tab
What's New in v0.19.26
v0.19.26 is a patch release with six changes. Five are bug fixes carried forward from v0.19.25 (Amp plugin production fixes, Mermaid rendering, Settings flicker), and one improves the update notification UX. Two external contributors, one first-timer.
Update Notification Improvements
The previous update indicator was a small red dot on the Options button that was easy to miss. This release adds three layers of visibility. A toast notification appears briefly after the page loads, directing users to the Options menu. The "Options" label in the toolbar now shimmers when an update is available, using the same animated gradient effect shown inside the dropdown. The "Copy update command" button inside the menu is now a filled primary-color button instead of an understated text link.
The toast auto-dismisses after four seconds and only fires once per session. Opening the Options menu still clears the dot and shimmer as before. Both the plan review and code review apps received the same treatment.
Amp Plugin Production Fixes
The Amp integration shipped in v0.19.24 worked in development but failed in production when installed globally. Three issues surfaced once users installed the plugin to
~/.config/amp/plugins/:The plugin resolved the
plannotatorbinary via PATH lookup, which in Amp's Bun-shaped runtime could resolve to the wrong executable. It now checks the standard installer paths (~/.local/bin/plannotatoron Linux/macOS,%LOCALAPPDATA%\plannotatoron Windows) before falling back to PATH. APLANNOTATOR_BINenvironment variable is also available for custom installs.Amp's
ctx.$helper reported the plugin directory rather than the active workspace, so Plannotator commands ran from the wrong working directory. The plugin now reads Amp's CLI log to resolve the real workspace root.Amp sets
BUN_BE_BUN=1in the plugin environment. The standalone Plannotator binary inherited this variable and behaved likebuninstead of executing its own commands, failing withScript not found "annotate". The plugin now strips this variable before spawning the binary.Mermaid Diagram Rendering Fix
Mermaid diagrams had several visual regressions: blocks rendered at incorrect sizes, zoom level reset on every parent re-render, and the pinpoint drag handle attached to the wrong target. The root cause was that the parent Viewer component re-injected the rendered SVG via
dangerouslySetInnerHTMLfour to five times during mount and again on every re-render, wiping any imperative DOM changes the Mermaid component had applied after render (sizing attributes, viewBox adjustments, zoom state).The fix has two parts. First, the component is wrapped in
React.memowith a custom comparator that only re-renders when the diagram content changes, blocking parent-triggered re-renders entirely. Second, the sizing attributes (max-width,preserveAspectRatio,height) are now baked directly into the SVG markup string before it enters React state, so even when a legitimate re- render does inject the HTML, the attributes survive. The SVG normalization logic was extracted into a separate dependency-free module (mermaidSvg.ts) to keep it unit-testable without pulling in the browser-only mermaid library.- #819, contributed by @HyunmoAhn
Settings AI-Tip Input Flicker Fix
The lightbulb button in Settings that opens the AI instruction tip editor caused intense flickering on open. The slide-in animation used a
max-height: 0 â 60pxkeyframe, which is a layout property. Inside the scroll viewport, this triggered a layout feedback loop: the browser recalculated layout, which restarted the animation, which triggered another layout, roughly 40 times per second. The fix switches the keyframe toopacityandtransform(translateY), which are compositor-only properties that don't participate in layout.
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: Run
/pluginin Claude Code, find plannotator , and click "Update now".OpenCode: Clear cache and restart:
rm -rf ~/.bun/install/cache/@plannotatorThen in
opencode.json:{ "plugin": ["@plannotator/opencode@latest"] }Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionDroid: Install via the plugin marketplace:
droid plugin marketplace add backnotprop/plannotator droid plugin install plannotator@plannotatorAmp: Install the CLI first, then copy the plugin:
mkdir -p ~/.config/amp/plugins curl -fsSL https://raw.githubusercontent.com/backnotprop/plannotator/main/apps/amp-plugin/plannotator.ts \ -o ~/.config/amp/plugins/plannotator.ts
What's Changed
- fix: Amp plugin binary resolution by @backnotprop in #810
- fix: Amp plugin workspace cwd by @backnotprop in #811
- fix: Amp plugin Bun env leak by @backnotprop in #812
- fix: Mermaid block sizing, zoom retention, and pinpoint drag by @HyunmoAhn in #819
- fix: flickering AI-tip input in label settings by @j-token in #830
- feat: improve update notification with toast, shimmer, and prominent button by @backnotprop
New Contributors
- @HyunmoAhn made their first contribution in #819
Contributors
@HyunmoAhn diagnosed and fixed the Mermaid rendering regressions, tracing the root cause to repeated
dangerouslySetInnerHTMLinjections from the parent component. The PR included a full test suite for the extracted SVG normalization logic. @j-token returned with a fix for the Settings AI-tip flicker, identifying themax-heightanimation as the source of the layout feedback loop. @jj-valentine filed #829 with a clear reproduction path and a preliminary code-level diagnosis that pointed directly at the animation keyframes.Full Changelog :
v0.19.25...v0.19.26 -
đ backnotprop/plannotator v0.19.25 release
Follow @plannotator on X for updates
Missed recent releases? Release | Highlights
---|---
v0.19.24 | Amp integration, configurable data directory, Auto Mode permission option, Pi plan approval fix
v0.19.23 | Droid integration, Windows Pi AI fix, quieter update indicator
v0.19.22 | Safari copy fix in plan viewer, CLAUDE_CONFIG_DIR support for session logs
v0.19.21 | Ask AI in plan review and annotate mode, shared AI runtime, origin-aware provider defaults
v0.19.20 | Interactive goal setup UI, OpenCode submit_plan fixes, browser no-op sentinel handling for Claude agents
v0.19.18 | Edit-based submit_plan for OpenCode, Pi namespace migration, Codex annotate-last fix, OpenCode commands dir fix
v0.19.17 | Reworked goal setup skill (interview-driven flow), CLI --version flag
v0.19.16 | Code navigation with peek view (Cmd/Ctrl+click tokens in diffs)
v0.19.15 | Commit-based diff base, jj evolution diffs, GitLab reliability fixes, OpenCode command intercept fix
v0.19.14 | Visual explainer skill update, PFM code-file hover previews, Graphviz, diff tab size and line bg intensity, hooks settings tab
v0.19.11 | Jujutsu (jj) VCS backend, slimmer hunk separators, collapse viewed files, multi-line gutter selection fix
What's New in v0.19.25
v0.19.25 is a patch release with five bug fixes. Three address production issues with the Amp plugin introduced in v0.19.24, one fixes Mermaid diagram rendering, and one fixes a UI flicker in Settings. Two PRs are from external contributors, including one first-timer.
Amp Plugin Production Fixes
The Amp integration shipped in v0.19.24 worked in development but failed in production when installed globally. Three issues surfaced once users installed the plugin to
~/.config/amp/plugins/:The plugin resolved the
plannotatorbinary via PATH lookup, which in Amp's Bun-shaped runtime could resolve to the wrong executable. It now checks the standard installer paths (~/.local/bin/plannotatoron Linux/macOS,%LOCALAPPDATA%\plannotatoron Windows) before falling back to PATH. APLANNOTATOR_BINenvironment variable is also available for custom installs.Amp's
ctx.$helper reported the plugin directory rather than the active workspace, so Plannotator commands ran from the wrong working directory. The plugin now reads Amp's CLI log to resolve the real workspace root.Amp sets
BUN_BE_BUN=1in the plugin environment. The standalone Plannotator binary inherited this variable and behaved likebuninstead of executing its own commands, failing withScript not found "annotate". The plugin now strips this variable before spawning the binary.Mermaid Diagram Rendering Fix
Mermaid diagrams had several visual regressions: blocks rendered at incorrect sizes, zoom level reset on every parent re-render, and the pinpoint drag handle attached to the wrong target. The root cause was that the parent Viewer component re-injected the rendered SVG via
dangerouslySetInnerHTMLfour to five times during mount and again on every re-render, wiping any imperative DOM changes the Mermaid component had applied after render (sizing attributes, viewBox adjustments, zoom state).The fix has two parts. First, the component is wrapped in
React.memowith a custom comparator that only re-renders when the diagram content changes, blocking parent-triggered re-renders entirely. Second, the sizing attributes (max-width,preserveAspectRatio,height) are now baked directly into the SVG markup string before it enters React state, so even when a legitimate re- render does inject the HTML, the attributes survive. The SVG normalization logic was extracted into a separate dependency-free module (mermaidSvg.ts) to keep it unit-testable without pulling in the browser-only mermaid library.- #819, contributed by @HyunmoAhn
Settings AI-Tip Input Flicker Fix
The lightbulb button in Settings that opens the AI instruction tip editor caused intense flickering on open. The slide-in animation used a
max-height: 0 â 60pxkeyframe, which is a layout property. Inside the scroll viewport, this triggered a layout feedback loop: the browser recalculated layout, which restarted the animation, which triggered another layout, roughly 40 times per second. The fix switches the keyframe toopacityandtransform(translateY), which are compositor-only properties that don't participate in layout.
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: Run
/pluginin Claude Code, find plannotator , and click "Update now".OpenCode: Clear cache and restart:
rm -rf ~/.bun/install/cache/@plannotatorThen in
opencode.json:{ "plugin": ["@plannotator/opencode@latest"] }Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionDroid: Install via the plugin marketplace:
droid plugin marketplace add backnotprop/plannotator droid plugin install plannotator@plannotatorAmp: Install the CLI first, then copy the plugin:
mkdir -p ~/.config/amp/plugins curl -fsSL https://raw.githubusercontent.com/backnotprop/plannotator/main/apps/amp-plugin/plannotator.ts \ -o ~/.config/amp/plugins/plannotator.ts
What's Changed
- fix: Amp plugin binary resolution by @backnotprop in #810
- fix: Amp plugin workspace cwd by @backnotprop in #811
- fix: Amp plugin Bun env leak by @backnotprop in #812
- fix: Mermaid block sizing, zoom retention, and pinpoint drag by @HyunmoAhn in #819
- fix: flickering AI-tip input in label settings by @j-token in #830
New Contributors
- @HyunmoAhn made their first contribution in #819
Contributors
@HyunmoAhn diagnosed and fixed the Mermaid rendering regressions, tracing the root cause to repeated
dangerouslySetInnerHTMLinjections from the parent component. The PR included a full test suite for the extracted SVG normalization logic. @j-token returned with a fix for the Settings AI-tip flicker, identifying themax-heightanimation as the source of the layout feedback loop. @jj-valentine filed #829 with a clear reproduction path and a preliminary code-level diagnosis that pointed directly at the animation keyframes.Full Changelog :
v0.19.24...v0.19.25 -
đ HexRaysSA/plugin-repository commits sync repo: +2 releases rss
sync repo: +2 releases ## New releases - [haruspex](https://github.com/0xdea/haruspex): 0.9.2 - [rhabdomancer](https://github.com/0xdea/rhabdomancer): 0.9.2 -
đ r/LocalLLaMA MiniMax M3 - Coding & Agentic Frontier, 1M Context, Multimodal rss
| submitted by /u/dryadofelysium
[link] [comments]
---|--- -
đ jank blog Tracing rays with jank rss
I've continued my optimization work through May and today I'll be reporting the status of the next benchmark: a little Clojure ray tracer. Before jumping into the details, I want to say thank you to my Github sponsors and to Clojurists Together for sponsoring me this whole year. Thank you!
-
- May 31, 2026
-
đ IDA Plugin Updates IDA Plugin Updates on 2026-05-31 rss
IDA Plugin Updates on 2026-05-31
New Releases:
Activity:
- augur
- haruspex
- ida-fusion-mcp
- idawilli
- 25f7cb9d: Update global_struct_dissector.py
- rhabdomancer
-
đ sacha chua :: living an awesome life La semaine du 18 au 24 mai rss
lundi 18
Je me suis rĂ©veillĂ©e trĂšs tĂŽt pour interroger ma sĆur qui est trĂšs malade d'un cancer. Nous voulons enregistrer des vidĂ©os pour ses jeunes filles et son mari. Sa fille aĂźnĂ©e a commencĂ© Ă l'interviewer, mais bien sĂ»r, il y a des sujets dont elles ne peuvent peut-ĂȘtre pas parler pour le moment. Je l'ai appelĂ©e sur Facebook Messenger et j'ai utilisĂ© OBS pour enregistrer l'appel. J'ai un flux de travail pour corriger et formater la transcription, et je suis ravie de l'utiliser pour ma famille.
Il faisait trÚs chaud. C'était notre premiÚre vague de chaleur intense cette année. J'ai emmené ma fille au parc Amos Waites pour jouer à la pataugeoire là -bas. Elle a vraiment aimé la robe-maillot que nous avons cousue. Elle adorait tourner dans le siÚge pivotant que notre parc à proximité n'a pas. Elle a tellement joué qu'elle s'est endormie sur le chemin du retour.
AprĂšs le dĂźner, ma fille et moi sommes allĂ©es Ă un autre parc pour regarder des feux d'artifice pour la fĂȘte de la Reine. Il y avait beaucoup de gens, donc je pense que c'Ă©tait un rassemblement habituel pour les jours de fĂȘte oĂč les feux d'artifice sont autorisĂ©s.
J'ai terminĂ© la rĂ©vision de la transcription de ma conversation avec Prot et Philip. Je pense que l'audio de Philip est parfois trop faible, mais je ne suis pas sĂ»re de pouvoir normaliser juste ces segments. Si j'ai une conversation avec un autre locuteur, je peux enregistrer les flux audio sĂ©parĂ©ment, mais dans une conversation entre trois locuteurs (Prot, Philip et moi), je ne peux pas complĂštement les sĂ©parer. En plus, je pense que je ne peux pas remplacer juste l'audio d'une vidĂ©o en diffusion sur YouTube. Peut-ĂȘtre que je peux mettre en ligne une nouvelle vidĂ©o et changer l'ancienne vidĂ©o en une vidĂ©o non rĂ©pertoriĂ©e.
à l'heure du coucher, ma fille et moi avons parlé de la neurodivergence, des mathématiques, et des facteurs humains comme les limitations de la boucle auditive comparée à la visualisation. J'adore lui parler de son cerveau.
mardi 19
J'ai essayé de virer de l'argent aux Philippines via Wise. C'était réussi.
Je me suis entraßnée aux virelangues. Oups, j'ai oublié de confirmer l'audio sur OBS, donc je ne peux pas l'analyser.
J'ai réécrit deux transcriptions pour les entretiens de ma sĆur.
J'ai emmené ma fille au parc pour jouer avec ses amies. J'ai oublié les glaces à l'eau, donc je suis revenue à la maison pour les retrouver.
Nous avons pratiqué les permutations et la division posée.
mercredi 20
J'ai réécrit encore des transcriptions pour les entretiens de mes niĂšces avec ma sĆur. J'ai configurĂ© un serveur dans notre rĂ©seau pour les hĂ©berger avec l'authentification basique.
L'école avait un remplaçant aujourd'hui. Il a accidentellement éjecté tous les élÚves de la salle de réunion virtuelle et tous ont dû attendre que l'enseignant corrige les permissions.
J'ai ajouté un gousset aux shorts de bain de ma fille.
J'ai emmené ma fille et son amie au parc pour jouer. Elles se sont amusées à me donner des décharges avec l'électricité statique. AprÚs que les autres amies de ma fille sont arrivées, ma fille semblait un peu surstimulée. Elle est partie seule et elle était grincheuse pour le reste de la journée, pauvre chérie.
jeudi 21
J'ai discutĂ© d'Emacs avec Raymond Zeitler sur une diffusion en direct. C'Ă©tait la premiĂšre fois que je lui parlais en vidĂ©o mĂȘme si nous correspondons depuis 18 ans via les commentaires sur mon blog.
Le dentiste a fait deux plombages. Il a proposĂ© un plan de traitement, mais c'est cher, donc je veux bien y rĂ©flĂ©chir avant de procĂ©der. Je pense que je veux gagner en confiance avec ce dentiste d'abord. On dirait que la restauration prĂ©coce est mieux que d'attendre pour les dents cariĂ©es selon les recherches, donc c'est bon, mais on dirait aussi que d'autres dentistes recommandent d'autres niveaux de traitement. J'aime les prĂ©cautions COVID que ce dentiste prend. Il y a d'autres dentistes (un peu loin) qui prennent aussi ce niveau de prĂ©cautions, mais ils disent probablement la mĂȘme recommandation (c'est la mĂȘme recherche), donc je ne cherche pas particuliĂšrement d'autre conseil. Je ne veux pas passer pour une vache Ă lait, tu sais?
vendredi 22
Je me suis réveillée tÎt pour une conversation sur la communauté Emacs et l'IA avec Matei Candea, un anthropologue. Il pense à faire une étude ethnographique, et je pense que c'est potentiellement intéressant.
J'ai terminé la transcription de ma conversation avec Raymond Zeitler sur Emacs. J'ai remarqué que j'utilisais le mauvais horodatage pour publier les chapitres à partir de la transcription, donc j'ai corrigé l'erreur.
Ma fille n'a pas voulu participer à l'école parce qu'il y a eu un remplaçant, donc elle a fait une pause.
J'étais fatiguée, donc j'ai fait une sieste.
J'ai emmené ma fille au cours de rattrapage de gymnastique. Elle a pris plaisir à apprendre la gymnastique aérienne. AprÚs le cours, ma fille a voulu aller au parc asperge (St. James Park) parce qu'il y a un grand toboggan. Elle s'est entraßnée à descendre le toboggan à de nombreuses reprises. AprÚs avoir fait ça, nous avons acheté du sushi. Elle a essayé la tempura de crevettes et elle l'a aimée.
samedi 23
Il a beaucoup plu et c'était trÚs venteux, donc nous sommes restées à la maison au lieu d'aller à la célébration de printemps à la ferme Riverdale.
Ma fille et moi avons joué à Stardew Valley avec le mod Tileman Reworked, qui me demande d'acheter les tuiles auxquelles je veux accéder. J'aime parfois jouer à des jeux avec des limites comme Minecraft Skyblock parce que les limites focalisent l'attention et la progression est trÚs différente. Ma fille préfÚre notre jeu précédent avec le mod Stardew Valley Expanded.
Pour le dßner, nous avons mangé du sotanghon, qui est une soupe aux nouilles et au poulet. Nous avons aussi essayé le taiyaki congelé. C'était pratique et acceptable, mais bien sûr le taiyaki chez Pat Mart est meilleur.
à l'heure du coucher, ma fille et moi avons discuté de la neurodivergence, de la double exceptionnalité, de l'apprentissage des élÚves doués, de la différence entre la récupération d'information et de la synthÚse. Nous avons aussi discuté de la faune, des maladies, des vaccins, et d'autres sujets.
dimanche 24
J'ai parlĂ© avec mon mari du TDAH. Il pense que je suis juste prĂ©occupĂ©e, et ce n'est pas grave. C'est bon. Je ne veux pas laisser ma vie ĂȘtre perturbĂ©e au point d'avoir des problĂšmes dans deux zones ou plus dans ma vie pour obtenir possiblement un diagnostic, ce qui ne m'aiderait probablement pas beaucoup plus. Quand mĂȘme, je peux continuer d'explorer comment je peux m'adapter Ă mon cerveau et ma situation.
Ma fille et moi avons préparé du lait au sucre brun et aux perles boba faites à la main.
Mon mari, ma fille et moi sommes allés aux Stockyards pour faire des courses. Nous avons acheté une boßte de mangues, des perles boba, des haricots azuki, et d'autres aliments. Nous avons préparé une fournée de mochis aux haricots azuki.
J'ai recherché quelques dessins pour les transcriptions. Je pense que je veux inclure les noms des interlocuteurs dans la marge gauche et les horodatages dans la marge droite. Je veux aussi réécrire la transcription pour supprimer les mots de remplissage.
Pour le dßner, nous avons mangé du curry japonais.
Je me suis couchée tard parce que sur Stardew, j'ai finalement accédé à la caisse chez Pierre pour acheter des graines dans la troisiÚme année. La progression est trÚs lente. Heureusement, le mod HibernationRedux me permet de sauter le temps pendant que j'attendais la croissance des arbres.
You can e-mail me at sacha@sachachua.com.
-
đ sacha chua :: living an awesome life Karthik's notes on Emacs Chat 24: Omar Antolin Camarena rss
Here's a guest post from Karthik Chikmagalur in response to Emacs Chat 24: Omar Antolin Camarena.
- 16:00 - Omar's embark-on-last-message is gold! I implemented it and have already used it a dozen times in an hour.
17:00 - Omar mentions his tmp package for creating throwaway buffers. I use the scratch package for this.
M-x scratchwill open up a scratch buffer. If you had a region selected, that will be copied to the scratch buffer. By default, it will use the same major mode as the buffer you calling it from. CallingM-x scratchwith a prefix arg will let you pick the major mode you want.I have some additional customizations to try to automagically pick a major mode based on what I have selected: https://github.com/karthink/.emacs.d/blob/3deed38c0e02e95fdfab6812c494b1736b945a1e/lisp/utilities.el#L36
Also related is the edit-indirect package, which I'm sure you're aware of. I think of it as scratch's dual: scratch is for when I want to edit something without regard to its provenance,
edit-indirectis for editing the source (exactly likeorg-edit-special).I also try to automagically guess which major mode a piece of text should be edited in.
edit-indirectedits something that looks like a lisp form inlisp-interaction-mode, even if the origin is (say) this email composition buffer: https://github.com/karthink/.emacs.d/blob/3deed38c0e02e95fdfab6812c494b1736b945a1e/lisp/utilities.el#L6721:20 - You mention that you sometimes want to insert something into the minibuffer when you're in the minibuffer, but you end up inserting into the main buffer instead. Omar agreed that there is no easy fix for this.
Omar, Daniel Mendler and I actually discussed this years ago and came up with a separate command to do this:
(defun minibuffer-replace-input (&optional arg) "Replace original minibuffer input. When a recursive minibuffer is active, insert the current string into the original minibuffer input. With prefix ARG, replace it instead." (interactive "P") (when (and (minibufferp) (> (minibuffer-depth) 1)) (let* ((replacement (minibuffer-contents))) (unwind-protect (minibuffer-quit-recursive-edit) (run-at-time 0 nil (lambda (rep) (when arg (delete-minibuffer-contents)) (insert rep) (pulse-momentary-highlight-one-line)) replacement)))))I don't need it every day, but when I do it's very handy.
29:40 - Omar mentions that he prefers to have lots of commands to mark specific text objects instead of hammering
expand-region(orexpreg-expand). There is a (now) old package called easy-kill which does this, allowing you to define marking commands for different objects at point (e.g. s for sexp, w for word, l for line, d for defun etc). It's easy to add support for more objects because I think it integrates withthing-at-point. The marking command provided by this package is actually calledeasy-mark.But
easy-kill/easy-markis actually the best of both marking styles, because you can useSPCto cycle between marking all the different text objects at point. I've further integrated this with expand-region so that at any point in theeasy-killmark process I can expand the region as well: https://github.com/karthink/.emacs.d/blob/3deed38c0e02e95fdfab6812c494b1736b945a1e/lisp/setup-editing-extra.el#L250- 36:00 - Didn't know Omar is the reason
vertico-grid-modeexists. That's fortunate, I use it all the time! - 44:00 - Omar's point about improving ffap to improve Embark's default action on files is great, really speaks to my sensibilities about composing features in Emacs in a way that provides multiplicative benefits.
- 48:00 -
NOPE! I useCANCELLEDas aTODOkwd in Org, but the fact that it's not 4 letters long has bothered me forever.NOPEis much better. 58:30 - Re: Omar's toggle map: this is something I think many users end up writing? Mine is a transient map:
that grows extra columns in specific major-modes:
But I appreciate that Omar uses a regular keymap instead of a visual menu, that's the Embark way. Transient menus are frustratingly non-composable with other Emacs features.
- 1:00:00 -
isearch-delete-wrongis actually built-into ISearch? PressingC-gonce should delete the non-matching part. It's possible he's customizedC-gto quit Isearch right away. - 1:07:30 - I didn't understand Omar's practice of using embark-dwim to
preview the result of any minibuffer command, like
org-ql-find. Is this something you were able to reproduce?- I've been using dot-mode for almost as long as Emacs, to the point where I've often made the mistake of assuming it was an included feature. It uses simple heuristics, but works surprisingly well at capturing your intent on what the "bounds of an edit" should be in Emacs.
Omar mentioned that he stopped using multiple-cursors because the immediate feedback from all cursors inspired false confidence, as off-screen cursors could do something unexpected. I use a personal fork of a package called macrursors that's somewhere in between multiple-cursors and keyboard macros:
https://github.com/corytertel/macrursors Fork: https://github.com/karthink/macrursors
It's inspired by both multiple-cursors and meow's
beacon-mode. It places cursors at the locations where the keyboard macro will be executed, but executes the full keyboard macro at each location at once, without immediate updates. This addresses the "false confidence" issue, but it does three other things that are very handy:- You can bound the region inside which cursors should be placed. The
scope can be the paragraph, like in Omar's example, but also any
other text object (defun, line etc), and you can cycle between the
scopes or expand it with
expand-region. - You can place cursors from most common actions, like at ISearch or Avy candidates (selectively or all at once), or at all text objects of a certain type inside the bounds.
You can "narrow" the buffer to only the cursor locations, fitting and verifying more of them on screen. When the macro runs, the selective display in the buffer persists for a second so you can scan the results:
https://share.karthinks.com/macrursors-isearch-hideshow-demo.mp4
Steps:
- Start ISearch and search for
cl-defmethod - Create cursors from all ISearch matches
- Selectively display only the cursors
- Show more context around the cursors
- Make a change (involving a kmacro counter)
- Finish. (The selective display persists for a second.)
- Examine the changes.
- Start ISearch and search for
It uses undo amalgamation by default so you can undo all the cursor changes except the original one in one step. Of course, your changes are stored in the kmacro ring so you can now apply them as regular keyboard macros too.
Most of these features are probably present in multiple-cursors at this point, although I'm not sure about bounding cursor ranges with
macrursors-select. But this has replaced the usual keyboard macro workflow for me, and not many people are aware of macrursors so I thought I'd mention it.- You can bound the region inside which cursors should be placed. The
scope can be the paragraph, like in Omar's example, but also any
other text object (defun, line etc), and you can cycle between the
scopes or expand it with
Thanks to Karthik for his notes! If you have any comments, please feel free to email him.
You can e-mail me at sacha@sachachua.com.
-
đ r/LocalLLaMA (YT) PewDiePie released his harness/webui rss
| At the very least it's interesting to have a non-programmer's take on this (though he did study mechanical engineering and did some web development iirc) https://pewdiepie-archdaemon.github.io/odysseus/ submitted by /u/Dany0
[link] [comments]
---|--- -
đ MetaBrainz Picard 3 beta 4 fixes startup issues on macOS rss
We have released Picard 3 beta 4. The recently released beta 3 did crash on macOS and when running the
picard-pluginscommand line tool, both has been fixed in this. In addition beta 4 fixes display issues in the new log view.Download links and a detailed list of changes since Picard 3 beta 3 are available below. For a more detailed overview of what is new in Picard 3 please see the previous blog post Picard 3 Alpha Release.
While we have all the major features implemented and with the latest bug fixes we are confident in the current code, this is still a pre-release and there might be bugs. If you use this, do so with care, backup your files and please report any issues you encounter.
Some of the changes are also backward incompatible, hence we recommend you make a backup of your Picard.ini config file before trying the beta version. You can do so in Picardâs Options under Advanced > Maintenance.
Whatâs new?
Bugfixes
- PICARD-3300 - Fails to launch on macOS: "Expected an instance of Tagger"
- PICARD-3301 - Visual glitch in log viewer for multi line output
- PICARD-3304 - picard-plugins fails to launch with "Expected an instance of Tagger"
Improvements
- PICARD-3303 - Add syntax highlighting to Log Detail dialog
Download
We appreciate your interest in trying this new version. Use with care, backup your files and please use theMetaBrainz community forums and the ticket system to give feedback and report bugs.
For Windows and macOS you can download the beta version from the Picard download page. Linux users can run from source or try the beta channel of the Picard snap package.
Picard is free software and the source code is available on GitHub.
For anyone wondering if they missed beta 2: We had the version updated for beta 2, but we never released it and instead had further changes that got now released as beta 3.
Acknowledgements
Code contributions by Laurent Monin and Philipp Wolfer. Translations were updated by Nebulain (Chinese (Simplified Han script)).
-
đ r/reverseengineering ThinkPad firmware reverse-engineering toolchain: archived Lenovo BIOS â named SoC pads, EC analysis, CVE diffs, coreboot/OpenCore port scaffolding rss
submitted by /u/Intelligent_Bet_4413
[link] [comments] -
đ Register Spill Joy & Curiosity #88 rss
It's been a fantastic week. The Amp team met in San Francisco and together we hung out in a beautiful house, drank coffee and diet coke, ate way too many snacks, and hacked on Amp.
A single timezone, many overlapping hours, synchronous communication with even the option to tap someone on the shoulder. You could feel the clock rate of the team go up. Our #shipped channel was busy. What a team!
But I didn't get a lot of reading in. And now the sun is up, the coffee's finished, and I'm going for a run.
-
Amp Neo is now Amp. It's out, for everyone. Generally available, fully released; the infrastructure scaled, the clients resilient. It's been tested on three cross Pacific flights already. Go and try it. Try the plugins, try the remote control. I'm very proud of this architecture and this team and that we made this work -- infinitely scalable agents, running everywhere. And it's only the start.
-
Fantastic little post by Patrick: Fast is better than slow. There's between ten and fifteen things I want to quote here, so go read the whole thing instead.
-
Then go and read the section about being fast on nat.org and and Patrick Collison's Fast page.
-
Benedict Evans on Predicting AI job exposure: "The counter-argument to all of this would be to say that, yes, well done, there are important exceptions, as there always are, but directionally and in aggregate, it is 'surely' correct to say that jobs that involve a lot of repetitive clerical work are most exposed, and this is how many jobs that is, and by how much. That sounds good, but you don't know if the exceptions are bigger than the rule. Suppose we'd looked at the internet in 1995 and said that this would destroy the value of physical distribution for media - this was 'directionally correct', but in practice that meant totally different things for record companies, newspapers, TV companies and movie studios. Are you trying to say something that has some predictive value, or just observing a truism? On average, we're all dead. Half of the jobs you've analysed might be entirely unaffected, and there might be other big pools of jobs to be transformed that you miss entirely. You don't know."
-
The new Ferrari Luce has been revealed. It's the Ferrari designed by Jony Ive and Marc Newson. I'm not a big car guy, so I don't have a strong opinion on whether it looks good or not, but after everybody else had a strong opinion I went through the list of Ferrari models and remembered that I don't like the look of most Ferraris.
-
"If you're the kind of person who is skeptical that AI coding is good for anything, then I doubt this post will persuade you. But if you're the kind of developer who uses agents to write multi-hundred-line PRs that you barely understand yourself, I'd invite you to slow down a bit and try this other, slower style of 'vibe coding.'"
-
I honestly don't know what to think of this, one for the Curiosity column: I Am Retiring from Tech to Live Offline.
-
This post by Jeff Geerling made me want to go buy a MacBook Neo. But I don't need one. Maybe my kids do?
-
"Have you ever read that Hacker News comment by the early FedEx employee about how they chose Memphis as the location for their headquarters?" "No. It's a Hacker News comment?" "Yes, it is, let me find that for you." Here it is.
-
I've used the term "thundering herd" approximately three hundred times in the last few weeks and realized that I kinda assumed everyone knows what it is. So if you don't, click that link. Another piece of terminology that I assumed everyone knows: pets vs. cattle. But: why would they? So, if you don't know what someone could mean when they use the terms pets and cattle when talking about infrastructure: go and read this.
-
I really, really need to understand jj revsets more. I learned that jjui lets me hit shift-l and change the revset very easily, but I never know exactly what I'm looking for. So I'm linking to this excellent post here hoping that it'll get me to learn revsets. (Send me your favorite revset aliases, please.)
-
Simon Willison: I think Anthropic and OpenAI have found product-market fit.
-
Lovely idea: apartment birds, heard recently. Built by Teddy.
-
Insignificant Bullets, Evil Poachers, and L.A. Culture. Always fun to read Herzog.
-
My Name Is David Chang, and I Hate Fancy Beer. If I could, I'd print this out and shove it into everyone's face whenever they ask me why I don't like IPAs. Actually, you know what, I just might and put it in my wallet, just in case. The whole point of beer is that it's simple. Four ingredients and that's it. My stance: if you think a normal beer is boring, you might just not like beer then. Go and do your own thing then, but don't call it beer. Why? Imagine you're really into bread. Say you love a really good sourdough bread. You not only love the taste, but also how it's made, how traditional it is, how simple. But then someone comes along and goes "sourdough bread? boring!" and puts fucking raisins in it and sells it as Craft Bread and when you decline the dumb raisin bread people ask you "wait, I thought you liked bread?"
Did you also grab Bud Light in the supermarket and said "When in RomeâŠ"? You should subscribe:
-
-
đ Confessions of a Code Addict How Large Is the Virtual Address Space? rss
This video is a continuation of our virtual memory series, based on the article/book I wrote on the same topic.
In the previous video, we talked about what virtual memory is and why we need it. This week, we look at the size of the virtual memory space. Since virtual memory is accessed through virtual addresses, a natural question is: how much memory can a program actually address?
This video answers that question, along with a few related ones:
-
Deriving the size of the virtual address space from first principles
-
Why the virtual address space is split between user space and kernel space
-
What canonical virtual addresses are
In the next video, we will talk about the address space layout of a process.
In the meantime, you can read the full article if you haven't already.
Update on the Ebook Version
I also want to give a quick update on the virtual memory ebook. I've updated the PDF for a smoother on-screen reading experience with better color schemes and fonts. Apart from that, I've also created an EPUB version for those who prefer that format. You can get both from the link below. Happy reading!
-
-
đ r/LocalLLaMA Stepfun 3.7 Flash is very good rss
| If you can fit Stepfun 3.7 Flash into RAM, try it! It's feeling close to GLM 5.1 quality in terms of aesthetics, and around 80% in terms of 3D world understanding. However since it's only 25% of the params of GLM 5.1, and it has built in vision, it's feeling like nothing else comes close for the RAM just now. This was the official Q4_X_S quant. Prompt: "Task: create a beautiful, relaxing flight simulator in a single html page" submitted by /u/-dysangel-
[link] [comments]
---|--- -
đ @brandur The Minimum Viable Unit of Saleable Software rss
Last week I wrote about leaving Stainless and my intention to work on building my side project River into a small, sustainable business. When I sent that letter, a few people asked about my thought process in trying to run a software company in the age of AI: "Are you crazy?! Anything you ship can be instantly displaced by an internal package built by an LLM!" Having become as much of an LLM convert as anyone at this point, I acknowledge that it's a very fair question. Indeed I might be crazy, but I'll talk through my thought process, and you can decide.
Let me start with an anecdote. This morning I was browsing the internet's most wretched hive of engagement farmers and master solicitors of fake information and fictional anecdotes, LinkedIn. One user there posted about how his company had been spending $400/mo on Atlassian's Jira. He'd felt personally slighted by this outrageous bill, so he'd had his team build a new internal task tracker using Claude. Gone was Jira and the $400/mo spend, replaced by a custom package that could be tooled out in any way they needed via continued refinement by an LLM.
We've been talking about buy vs. build in software circles for years, but last year the calculus changed. It used to be that build was a very expensive proposition, especially given the state of engineering salaries and scarcity of great people. One could expect huge upfront cost, schedule overruns, and an infinitely deep rabbit hole to slide down. The general wisdom had always been to build only inside your core domain and avoid getting sidetracked by peripheral projects. Once your company reached enormous size, and the cost of those distractions disappeared comfortably into its margins, then maybe they'd be worth doing.
But LLMs changed all of that. Suddenly it was quite possible to produce substantial pieces of software by getting models to do the work.
Cheap != zero
While LLMs have made software considerably cheaper to build, they haven't brought it to zero. Good LLM-built systems still involve a feedback loop, where an operator has the model work for a while, makes adjustments based on results, asks for another pass, refines further, and so on, taking dozens of loops to get to a satisfactory result that's an optimal compromise between time spent and quality.
And like before, maintenance will be an ongoing cost. Especially for more complex packages, there's always going to be a feature to add or bug to fix. LLMs will make those changes easier to make, but don't make them free, with the most expensive element being the part-time labor of the human in the equation who oversees and verifies results.
Back to our $400/mo Atlassian anecdote above: after considering the initial build effort, including refinement passes, and the ongoing LLM-driven maintenance, does it pass the smell test, like at all? A task tracker's still a complex piece of software, and even with gratuitous use of LLMs, you'd expect to spend at a minimum a few weeks on the initial push (charitably). From there, its internal owner will switch to bug fixes and feature development.
Let's try to come up with some rough numbers to quantify the situation. Let's say we have an engineer making $200k/year and working 40 hours a week (pretend for a second 9/9/6 was blessedly never conceived). That's $16.7k/mo, $3,850/week, or $96/hour:
salary = 200_000.0 { month: salary / 12, week: salary / 52, hour: salary / 52 / 40, }.each { |k, v| puts "%-6s $%0.2f" % ["#{k}:", v] } month: $16666.67 week: $3846.15 hour: $96.15To counterbalance the $400/mo that would've been paid to Atlassian, the engineer can spend no more than 4 hours a month (400 / 96) prompting features/fixes on their homegrown Jira clone, or looking after its database, or whatever, not including context switching overhead. Even with LLM help, that's completely unrealistic already, but let's be charitable and say they can get it down to 2 hours a month. It'd still take 37 months to break even after those initial 2 weeks of effort (number of months to make back Atlassian's $400/mo minus 2 hours/mo maintenance effort = 2 * 3846.15 / (400 - 2 * 96.15)).
Don't get me wrong, I hate Jira just as much as anyone who's ever used it and have a nearly uncontrollable urge to want to rebuild it too, but the math here doesn't pencil out 1.
The build threshold
But does that always hold true? Let's take the other side for a second by examining a much higher-priced SaaS product. Gemini reports that the price of a fully loaded Salesforce seat is ~$500/mo. Say you need 50 seats, that's $25k/mo!
For that price you could have 1.5x engineering resources (25 / 16.7) working on your clone full time. Once again, a CRM's a reasonably complex piece of software and a rebuild wouldn't be trivial, but no matter how you construe it, this is closer to a "build" decision, even for a smaller company. (And with Salesforce down 30% YTD, the markets seem to believe it too.)
The zone of viability
I'm contending (and/or hoping) that for a software package of arbitrary complexity, there's a zone of viability in which when priced within reason, it'll make sense to buy over build, even given the existence of the powerful LLMs that've become our daily companions:
Software in the zone of viability satisfies two conditions:
-
There's sufficient novelty as to make a rebuild-by-LLM non-trivial, and with some ongoing maintenance burden.
-
Pricing is not so exorbitant as to strongly encourage rebuild-by-LLM.
As long as continued pricing within reason keeps software within the zone of viability, the total paid in licensing is less than the cumulative expense of prompting its initial push and sustaining its continued existence.
Somewhere along the zone of viability is the minimum viable unit of saleable software , below which a rebuild is the same or less effort compared to going through the purchasing process for a third party and not cost-effective over the long run.
| Ongoing price | Ongoing spend | Engineer equivalent hours/mo | Equivalent engineering resources | Buy | Build
---|---|---|---|---|---|---
Jira | $400/mo | $400/mo | 4.2 hours | 0.02 engineers | â |
Salesforce | $500/seat/mo | $25k/mo | 260 hours | 1.5 engineers | | â
River as a plausible business
For the last few years Blake's worked on a small business based on our open- source project River, a job queue for Go and Postgres, and for at least the next few months, I'll be taking over full-time. This self-serving blog post is a long way of saying that I hope that despite the world having crossed the LLM horizon, River comes in over the minimum viable unit of saleable software and is still a plausible company in the modern age.
In terms of novelty, River's an open-source project that makes almost all job- related features (periodic jobs, scheduled jobs, unique jobs, web UI, âŠ) available for free, but reserves some advanced features (workflows, sequential jobs, concurrently-limited jobs, âŠ) and billing capability (billing by invoice) for a Pro version that we charge for. An LLM could reproduce the latter features, but we've put enough thought into their API design and performance properties that it'd take some work to get back to something of similar fidelity.
In terms of price, we used a sublinearly scaling pricing model based on team size rather than headcount, starting at $125/mo for up to 20 developers, and scaling up to a multiple of that for an unlimited site license. So for a small-to-medium development team, $125/mo is the all-in cost across everyone.
So back to the question at the top: did I get this right? Who knows. For now I'm betting my livelihood on it, and the coming months will tell.
A note on the photo at the top: This is a natural feature called "Zlatnite Mostove" ("The Golden Bridges") in the Vitosha mountains near Sofia, Bulgaria where I hiked recently after attending Balkan Ruby. The field of rocks is called a "bridge" because it covers an active river underneath it. This post is partly about River and that's a river, so I'm banking on enough of a connection to be justifiable.
-
-
đ r/reverseengineering TinyLoad v7 - what i added :D (in memory protection using VEH and alot more) rss
submitted by /u/GuiltyAd2976
[link] [comments] -
đ r/reverseengineering Snowboard Kids 2 is 100% Decompiled rss
submitted by /u/swe129
[link] [comments] -
đ r/LocalLLaMA It's funny how everything changes, yet somehow stays the same. rss
| submitted by /u/bigattichouse
[link] [comments]
---|--- -
đ r/reverseengineering usbsnoop â sniff and decode USB device traffic system-wide with eBPF, for reversing proprietary protocols (control/SCSI/HID, no bus analyzer) rss
submitted by /u/R_E_T_R_O
[link] [comments] -
đ Servo Blog April in Servo: new Android UI, focus, forms, security fixes, and more! rss
Servo 0.2.0 contains all of the changes we landed in April, which came out to yet another record 534 commits (March: 530). For security fixes, see § Security.
Note: the GitHub release is available now, but the crates.io release is not yet complete. We expect to publish it some time next week.
Weâve shipped several new web platform features:
- < select multiple> (@lukewarlow, @mrobinson, #43189)
- < template shadowrootslotassignment> (@simonwuelker, #44246)
- < video> playback on OpenHarmony (@rayguo17, #43208)
- âminimum-scaleâ and âmaximum-scaleâ values in < meta name=viewport> (@shubhamg13, #40098, #43715)
- âcolor-mix()â with any number of
values (@Loirooriol, #43890) - â &::beforeâ and â &::afterâ in â::details-contentâ (@Loirooriol, #43878)
- ârevert-ruleâ (@Loirooriol, #43878)
- âtab-sizeâ (@mrobinson, @SimonSapin, #44480)
- âtext-align: match-parentâ (@TG199, #44073)
- new Worker() with blob URLs (@jdm, #44004)
- getÂContext(
"webgl") on OffscreenÂCanvas (@niyabits, #44159) - the detail property on PerformanceÂMark and PerformanceÂMeasure (@shubhamg13, #44289, #44272)
Plus a bunch of new DOM APIs:
- âselectionchangeâ events on <input> and <textarea> (@TimvdLippe, #44461)
- StorageÂManager , in experimental mode (@Taym95, #43976)
- activeÂElement on Document and ShadowÂRoot (@mrobinson, #43861)
- crypto.subtle.supports() (@kkoyung, #43703) â Servo is the first major browser engine to support this!
- cellÂPadding , cellÂSpacing , and align properties on HTMLÂTableÂElement (@mrobinson, #43903) â previously supported in HTML only
- relatedÂTarget on âfocusâ and âblurâ events (@mrobinson, #43926)
- transferÂFromÂImageÂBitmap() on ImageÂBitmapÂRenderingÂContext (@Messi002, #43984)
Servoâs support for text in Chinese , Japanese , and Korean languages has improved, with correct wrapping in the layout engine (@SharanRP, #43744), and CJK fonts now enabled in servoshellâs browser UI on Windows, Linux, and FreeBSD (@yezhizhen, @CynthiaOketch, @nortti0, #44055, #44138, #44514).
Navigating to a JSON file as the top-level document now renders the JSON with an interactive pretty-printer (@webbeef, @TimvdLippe, #43702).
April was a big milestone for Servo, with some automated tests failing because they had hard-coded cookie expiry dates set to April 2016 plus ten years. Surprise! Weâre still here. Hereâs to the next 100 years of Servo (@jdm, #44341).
This is another big update, so hereâs an outline:
Security __ CryptoÂKey now zeroes buffers containing key material after use (@kkoyung, #44597). With only a few exceptions, you can only access DOM APIs in another document if that document is in the same origin. But if that document is in the same site with a different port number, Servo currently allows these accesses even though it shouldnât. Weâve fixed some (but not all) of these incorrect accesses, specifically those that involve binding a Window or Location method in this document with a this from the other document (@yvt, @jdm, #28583). Weâve fixed a bug where localÂStorage and sessionÂStorage were usable in sandboxed <iframe> and shared with every other sandboxed <iframe>, rather than throwing SecurityÂError (@Taym95, #44002). Weâve fixed a bug where localÂStorage and sessionÂStorage were shared between all < iframe srcdoc> documents, rather than isolated using the origin of the containing document (@niyabits, #43988, #44038). Weâve fixed a bug where IndexedDB was usable in sandboxed <iframe> and data: URL web workers (@Taym95, #44088). Weâve fixed a bug where pages in some IP address origins can evict cookies from other IP address origins (@officialasishkumar, #44152). Only evicting cookies was possible, not reading or writing them. Weâve fixed an out-of-bounds memory read in texÂImage3D() on WebÂGL2ÂRenderingÂContext (@simartin, #44270), and fixed some undefined behaviour in servoshellâs signal handler (@Narfinger, #43891). Work in progress IndexedDB is now enabled in servoshellâs experimental mode (@arihant2math, #44245). As always, embedders can enable it with Preferences::domÂ_indexeddbÂ_enabled (@arihant2math, #44245, #44283). IndexedDB now uses Servoâs new âclient storageâ system, which is based on the Storage Standard and will allow us to have a unified on-disk format and quota management for all web platform features that persistently store data (@gterzian, #44374, #43900). Weâve also made key range queries more efficient (@arihant2math, #39009), landed improvements to IDBÂDatabase, IDBÂObjectÂStore, IDBÂCursor, IDBÂKeyÂRange, IDBÂRequest, and to the handling of transactions, keys, values, and exceptions (@Taym95, #44128, #43901, #44009, #43914, #44161, #44183, #44059, #44215, #42998, #43805). Weâve made more progress on the IntersectionÂObserver API , under --pref domÂ_intersectionÂ_observerÂ_enabled (@stevennovaryo, @jdm, #42204). Weâre continuing to implement document.execÂCommand() for rich text editing (@TimvdLippe, #44529), under --pref domÂ_execÂ_commandÂ_enabled. This release adds support for the âboldâ , âfontÂNameâ , âfontÂSizeâ , âitalicâ , âstrikethroughâ , and âunderlineâ commands (@TimvdLippe, @jdm, @mrobinson, #44511, #43287, #44432, #44410, #44194, #44030, #44039, #44041, #44075, #44234, #44250, #44331, #44390, #44137, #44293, #44312, #44347). All of the features above are enabled in servoshellâs experimental mode. Servo can now build a very basic accessibility tree for web contents, under --pref accessibilityÂ_enabled (@alice, @delan, @lukewarlow, #42338, #43558, #44437, #44438). This includes text runs, plus nine other non-interactive accessibility roles (@alice, @delan, #44255). Weâve also fixed a crash when reloading pages with accessibility enabled (@alice, #44473), and made accessibility tree updates more efficient (@alice, #44208). Weâve started implementing the Sanitizer API , under --pref domÂ_sanitizerÂ_enabled (@kkoyung, #44198, #44290, #44335, #44421, #44452, #44481, #44585, #44594). Weâve also started implementing SharedÂWorker , under --pref domÂ_sharedworkerÂ_enabled (@Taym95, #44375, #44440). Weâre working on the WakeÂLock API too, under --pref domÂ_wakelockÂ_enabled (@TG199, @rovertrack, #43617, #44343). servoshell
servoshell for Android now has a revamped browser UI , including a new history view (@espy, #43795), the apk is 30% smaller (@jschwe, #44278, #44182), and weâve fixed the black screen bug when closing settings or switching back from another app (@yezhizhen, #44327). You can now close tabs on OpenHarmony too (@Narfinger, #42713).
As for servoshell on desktop platforms, weâve fixed some focus- and IME- related bugs (@mrobinson, #43872, #43932), and on Windows, we now install a normal shortcut without the strange behaviour of an âadvertisedâ shortcut (@yezhizhen, #44223).
For developers When using the Inspector tab in the Firefox DevTools , the Rules panel now includes declarations in â@layerâ rules (@arabson99, #43912). When logging expressions in the Console tab, and when hovering over symbols in the Debugger tab, you can now get more information about the contents of functions, arrays, objects, and other values (@atbrakhi, @eerii, #44172, #44173, #44022, #44233, #44196, #44181, #44064, #44023, #44164, #44369, #44262). When using the Debugger tab, you can now use the Scopes panel to inspect local and global variables (@eerii, @atbrakhi, #43792, #43791), you can now debug web worker scripts (@atbrakhi, #43981), and weâve started implementing blackboxing , aka the Ignore source button (@freyacodes, #44142). Weâve also landed some initial support for the Style Editor tab (@rovertrack, #44517, #44462). Weâre working towards re-enabling our automated DevTools tests in CI, which should make the feature more reliable (@freyacodes, #44577), and weâve landed a small build reproducibility fix too (@jschwe, #44459). For developers of Servo itself, please note that the Cargo âreleaseâ profile is no longer #[cfg(debugÂ_assertions)] (@jschwe, @mrobinson, #44177). If youâve been using âreleaseâ as a âfaster âdebugâ with assertionsâ build locally, consider switching to âchecked-releaseâ or âmediumâ. The pull request template has been updated (@mrobinson, #44135). âTestingâ and âFixesâ should go at the bottom of the PR description, and âTestingâ is about automated tests, not how you tested the PR locally. Weâve made more progress on the new dev container, which will provide an alternative to our usual procedures for setting up a Servo build environment (@jschwe, @sagudev, #44126, #44111, #44162, #44641, #44109). Keep an eye out for that in the book! In the meantime, did you know that you can use Lix or Nix to build Servo on Linux with a lot less hassle, even if youâre not using NixOS? For now at least, head to the NixOS page in the book to learn more. Weâve also fixed a regression that made --debug-mozjs and MOZJSÂ_FROMÂ_SOURCE builds take much longer to complete on Linux when not using Nix (@jschwe, #44346). Weâve fixed building Servo with the âjitspewâ feature in mozjs, allowing you to set IONFLAGS to enable JIT logging (@simonwuelker, #44010). Weâve also fixed build issues on Windows and FreeBSD (@zhangxichang, @mrobinson, #44264, #44591). Embedding API
With this second monthly release of the Servo library, we have some quick notes about API stability and semver compatibility :
-
Theâservoâ package follows Cargoâs rules for semver compatibility. 0.1.1 is compatible with version 0.1.0, but 0.2.0 is a breaking update.
-
Until we integrate semver analysis into our release process, each monthly release will have a breaking version number, while non-breaking version numbers may be used for LTS updates.
-
In general, dependencies of âservoâ , like âservo-baseâ and âservo-scriptâ, do not use semver. Any release may include breaking changes.
Weâve fixed a build failure affecting embedders with a new or updated Cargo.lock (@jschwe, #44093), and landed several other changes to help us with the Servo library release process (@jschwe, @mukilan, #43972, #44642, #43182, #43866, #44086, #43797).
Breaking changes:
-
WebÂView::animatingnow takes&selfinstead ofself, so you can call it without cloning the handle (@JavaDerg, #44253) -
Servo::siteÂ_dataÂ_managernow returns&SiteDataManagerinstead ofRef<'_, SiteDataManager>(@sabbCodes, #44116) -
WebÂViewÂDelegate::playÂ_gamepadÂ_hapticÂ_effectandstopÂ_gamepadÂ_hapticÂ_effecthave been removed (@mrobinson, #43895), but they have not worked since February 2026 â useGamepadÂDelegateinstead
You can now load a URL with custom request headers by calling
WebÂView::loadÂ_request(@Narfinger, @longvatrong111, @mrobinson, #43338).You can now retrieve cookies asynchronously by calling
SiteÂDataÂManager::cookiesÂ_forÂ_urlÂ_async(@longvatrong111, #43794).The synchronous version of that method,
SiteÂDataÂManager::cookiesÂ_forÂ_url, was previously not callable becauseCookieÂSourcewas not exposed to the public API, but weâve fixed that now (@TG199, #44124).You can now clear session cookies without clearing permanent cookies by calling
SiteÂDataÂManager::clearÂ_sessionÂ_cookies(@longvatrong111, #44166).When intercepting requests with
ServoÂDelegate:: andWebÂViewÂDelegate::loadÂ_webÂ_resource, we now include adestinationandreferrerÂ_urlin theWebÂResourceÂRequest, which can be helpful if youâre implementing ad blocking (@webbeef, #44493).You can configure Servo to write all of its storage to a unique directory for that session by enabling
Opts::temporaryÂ_storage(@janvarga, #44433). Note that these unique directories currently persist after Servo exits, so itâs an isolation feature, not a privacy feature.WindowÂRenderingÂContext::newandSoftwareÂRenderingÂContext::newnow return an error if the givensizeis less than 1x1 (@freyacodes, @mrobinson, #44011).Weâve improved our API docs for
WebÂView,WebÂViewÂBuilder,WebÂViewÂDelegate,ServoDelegate,PromptÂDialog,WebÂResourceÂLoad,WebÂXrÂRegistry,Preferences, and servoshellâsEXPERIMENTALÂ_PREFS(@simonwuelker, @TG199, @sabbCodes, @jdm, @rovertrack, #43892, #43787, #44171, #43947).Weâve also improved our API docs for
Opts,OutputÂOptions,DiagnosticsÂLogging,PrefÂValue,servo::opts, andservoÂ_config(@mukilan, #43802).More on the web platform Tab navigation now works across < iframe> boundaries (@mrobinson, #44397), and Ctrl +Backspace (or â„`` â«) now deletes a whole word in input fields (@mrobinson, #43940). Tab characters are now rendered correctly in < pre> (and other elements with âwhite-space: preâ), with proper tab stops (@mrobinson, @SimonSapin, #44480). Spaces are now rendered correctly in 2D <canvas>, instead of twice as wide as they should be (@mrobinson, #43899). < a href> now correctly resolves the URL with the page encoding (@sabbCodes, #43822). Weâve improved the default appearance of < input type=file> (@sabbCodes, #44496) and < textarea placeholder> (@mrobinson, #43770). All keyboard events , mouse events , wheel events , and pointer events , other than âpointerenterâ and âpointerleaveâ , now bubble out of shadow roots (@simonwuelker, @webbeef, #43799, #44094). âerrorâ events on Window now report the correct filename (source in onerror) and lineno (@Gae24, #43632). console.log() and friends now support printf-style formatting directives , although for now %c is ignored (@TG199, #43897). file: URLs are now considered secure contexts , so they can now use features like crypto.subtle and crypto.randomÂUUID (@simonwuelker, #43989). Exception messages have improved in Location, StaticÂRange, and the HTMLÂElement family of types (@arihant2math, @MuhammadMouostafa, @treetmitterglad, #44282, #43260, #43882). Weâve improved the conformance of fetch algorithms (@yezhizhen, #43970, #43798), focus and tab navigation (@mrobinson, #43842, #44029, #44360, #43859, #44535), form submission (@TG199, #43700), JS modules (@elomscansio, @Gae24, #43741, #44179, #44042), page navigation (@TimvdLippe, #43857), < svg viewÂBox> (@yezhizhen, #44420), âattr()â (@Loirooriol, #43878), â:focusâ (@mrobinson, #43873), âfontâ (@RichardTjokroutomo, #44061), â@keyframesâ (@simonwuelker, #43461), â@propertyâ (@Loirooriol, #43878), âloadâ events (@jdm, @arabson99, #43807, #44046), fetchÂLater() (@TimvdLippe, #43627), axes and buttons on Gamepad (@log101, @rovertrack, #44411, #44357), copyÂTexÂImageÂ2D() on WebÂGLÂRenderingÂContext (@simartin, @mrobinson, #43608), texÂImage3D() on WebÂGL2ÂRenderingÂContext (@simartin, #44367), environmentÂBlendÂMode on XRÂSession (@msub2, #44155), mark() and measure() on Performance (@shubhamg13, @simonwuelker, #44471, #44199, #43990, #43753), and PerformanceÂResourceÂTiming (@shubhamg13, #44228). Weâve fixed bugs related to console logging (@sabbCodes, #44243), âanimationâ (@mrobinson, #44299), âbox-shadowâ (@yezhizhen, #44474, #44457), âdisplay: contentsâ (@Loirooriol, @mrobinson, #44551, #44299), âdisplay: inline- flexâ (@SimonSapin, #44281), âdisplay: table- cellâ (@Loirooriol, #44550), âdisplay: table-row- groupâ (@Veercodeprog, #43674), âoverflow-x: clipâ and âoverflow-y: clipâ (@Messi002, #43620), âposition: absoluteâ on grid items (@nicoburns, #44324), âword-spacing: â (@sabbCodes, #44031), removeÂChild() on Document (@rovertrack, #44133), and URL.revokeÂObjectÂURL() (@simonwuelker, @jdm, #43746, #43977, #44035). Performance and stability
Weâve fixed some big inefficiencies in Servo. appendÂChild() with nested shadow roots is no longer O(2n) (@yezhizhen, @webbeef, #44016), and weâve halved the time it takes to load the ECMAScript spec by fixing the O(whole DOM tree) processing of âidâ and ânameâ attributes (@simonwuelker, #44120, #44127, #44117).
Servo makes its first TLS connection in each session 30â60 ms faster (@jschwe, #44242), and weâve instrumented the Servo and servoshell startup processes to find more opportunities for optimisation (@jschwe, #44443, #44456).
Like most browser engines, Servo is a multi-threaded (and sometimes multi- process) system requiring a great deal of IPC messages to keep everything connected. Two key components of this system are the constellation thread, which manages the engine as a whole, and the script threads (or web processes), which render the web pages. Sending these messages can be expensive though, so to reduce unnecessary IPC traffic , weâve landed an optimisation that allows script threads to selectively receive only the relevant messages from the constellation (@webbeef, #43124).
Weâve reduced the memory usage of each Attr , Text , and CharacterÂData node in the DOM by 16 bytes (@mrobinson, @Loirooriol, #44074), and fixed a memory leak when deleting < video controls> or < audio controls> (@Messi002, #43983).
Our about:memory page is more accurate now too, with new tracking of libc memory allocations on macOS, improved tracking of libc memory allocations on Linux (@jschwe, #44037), and more accurate tracking of PathÂBuf and types in
tokio,http,dataÂ_url, andurlpattern(@Narfinger, #43858).Less memory usage isnât always better in browser engines though, because there are many kinds of caches and other optimisations we can do to make browsing the web faster, at the expense of increased memory usage. For example, we can greatly speed up prototype checks for DOM objects by storing a number in each object that identifies the concrete type, at the expense of making each DOM object 64 bits larger (@webbeef, #44364).
Layout can now reuse fragments in later reflows, in many cases that involve block layout or âposition: absoluteâ (@mrobinson, @lukewarlow, @Loirooriol, #42904, #44231). Weâre also working on reusing shaping results in later reflows, and making inline layout more efficient (@mrobinson, #44370, #43974, #44436).
Weâve landed several changes that should reduce the binary size of Servo (@rovertrack, @mrobinson, @nicoburns, @Narfinger, #44227, #44221, #44303, #44338, #44428, #44134).
Weâve also reduced clones, allocations, borrow checks, GC rooting steps, and other operations in many parts of Servo (@rovertrack, @Narfinger, @Loirooriol, @yezhizhen, @simonwuelker, #44008, #44544, #44271, #44279, #43826, #44052, #44139).
Several crashes have been fixed:
- in compressedÂTexÂSubÂImage2D() on WebÂGLÂRenderingÂContext (@thebabalola, #44050)
- in console.log() (@thebabalola, #43844)
- in getÂData() on DataÂTransfer (@SimonSapin, #44607)
- in remove() on Element (@SimonSapin, #44435)
- in replaceÂWith() on Element (@yezhizhen, #44503)
- in
--debug-mozjsbuilds (@jdm, #44386, #44573, #44581) - in flex and grid layout (@mrobinson, @nicoburns, #44424, #44203)
- in layout queries like
offsetÂHeight(@mrobinson, #44560) - in the devtools Debugger tab, when stepping and when inspecting nested values (@atbrakhi, @eerii, #44024, #43995)
- when removing <colgroup> from the DOM (@Loirooriol, #43846)
- when running garbage collection (@drasticactions, #43933)
- when running servoshell with a
u64--pref(@yezhizhen, #44079) - when shadow roots are deeply nested, or when calling attachÂShadow() removes elements from the flat tree (@yezhizhen, @mrobinson, #43888, #43930, #44259)
- when web storage features fail to write to disk or encounter SQLite errors (@arihant2math, @sabbCodes, #43918, #43949)
We fixed a crash in servoshell when pressing keys like Ctrl+2 or â2 with not enough tabs open (@mrobinson, #44070).
DOM data structures (
#[domÂ_struct]) can refer to one another, with the help of garbage collection. But when DOM objects are being destroyed, those references can become invalid for a brief moment, depending on the order the GC finalizers run in. This can be unsound if those references are accessed, which is a very easy mistake to make if the type has animpl Drop. To help prevent that class of bug, weâre reworking our DOM types so that none of them have#[domÂ_struct]andimpl Dropat the same time (@willypuzzle, #44119, #44501, #44513).Weâve improved our static analysis for GC rooting (@officialasishkumar, #44489), and weâve continued our long-running effort to use the Rust type system to make certain kinds of dynamic borrow failures impossible (@sagudev, @TimvdLippe, @Narfinger, @elomscansio, @Gae24, @rovertrack, @yezhizhen, @nodelpit, #43174, #43524, #43928, #43943, #43942, #43944, #43946, #43952, #43975, #44018, #44175, #44241, #44368, #44406, #44441, #44422, #44475, #44478, #44484, #44476, #44490, #44477, #44494, #44497, #44498, #44495, #44505, #44506, #44507, #44508, #44509, #44510, #44512, #44482, #44527, #44528, #44531, #44534, #44542, #44533, #44543, #44553, #44547, #44563, #44562, #44565, #44558, #44583, #44606, #44605, #44608, #44602, #44584, #44620, #44590, #44254, #44628, #44629, #44638, #44626, #44081).
Thanks to a wide range of people, weâve also landed a bunch of cleanups and refactors (@delan, @alice, @Skgland, @atbrakhi, @eerii, @sabbCodes, @jdm, @thebabalola, @CynthiaOketch, @kkoyung, @TimvdLippe, @rovertrack, @webbeef, @arabson99, @yezhizhen, @simonwuelker, @mrobinson, @nicoburns, @longvatrong111, @niyabits, @treetmitterglad, @foresterre, @mukilan, @elomscansio, @freyacodes, @StaySafe020, @TG199, #43772, #44006, #43860, #44121, #44160, #43884, #44154, #44569, #43939, #44003, #44110, #44122, #43824, #44635, #44103, #43978, #44092, #44114, #44277, #44454, #44274, #44237, #44232, #44167, #44214, #43820, #43825, #43810, #43838, #43841, #43847, #43875, #43876, #43889, #43893, #43896, #43881, #43906, #43913, #43908, #43917, #43910, #43921, #43924, #43925, #43907, #43923, #43916, #43909, #43911, #43957, #43969, #43967, #43915, #43954, #43963, #43959, #43955, #44067, #44068, #44071, #44084, #44265, #44115, #44358, #43848).
Donations
Thanks again for your generous support! We are now receiving 7349 USD/month (+2.5% from March) in recurring donations. This helps us cover the cost of our speedy CI and benchmarking servers, one of our latest Outreachy interns , and funding maintainer work that helps more people contribute to Servo.
Servo is also on thanks.dev, and already 33 GitHub users (â4 from March) that depend on Servo are sponsoring us there. If you use Servo libraries like url, html5ever, selectors, or cssparser, signing up for thanks.dev could be a good way for you (or your employer) to give back to the community.
We now have sponsorship tiers that allow you or your organisation to donate to the Servo project with public acknowlegement of your support. If youâre interested in this kind of sponsorship, please contact us at join@servo.org.
7349 USD/month
10000
Use of donations is decided transparently via the Technical Steering Committeeâs public funding request process , and active proposals are tracked in servo/project#187. For more details, head to our Sponsorship page.
-
- May 30, 2026
-
đ IDA Plugin Updates IDA Plugin Updates on 2026-05-30 rss
IDA Plugin Updates on 2026-05-30
New Releases:
Activity:
- augur
- b016db2e: doc: IDADIR must be set at runtime for non-standard IDA locations
- haruspex
- 4b1b9bc0: doc: IDADIR must be set at runtime for non-standard IDA locations
- ida-sigmaker
- e881b66c: docs(ALGORITHM): add TOC, rejected-optimizations section, Phase 5/6 nâŠ
- b614aef3: perf: defer seeding for all-wildcard prefixes instead of full scan
- daca3a21: test(perf): adversarial refine microbench gating Upgrades 1 & 2
- 6f7ca890: perf: use seed_offsets kernel for index-backed seeding
- db04edf4: feat: add seed_offsets Cython kernel for index-bucket mapping
- 93711f65: Merge pull request #44 from mahmoudimus/docs/algorithm-reviewer-revisâŠ
- e9398b4e: ALGORITHM.md: state the novel application and key use case up front iâŠ
- 256a597c: ALGORITHM.md: incorporate reviewer critique
- IDAPluginList
- 4bc307b3: chore: Auto update IDA plugins (Updated: 19, Cloned: 0, Failed: 0)
- idasql
- 0e30c4ac: docs: correct Claude Code plugin install command
- PseudoForge
- rhabdomancer
- augur
-
đ r/LocalLLaMA Someone out there likely needs this rss
| submitted by /u/Signal_Ad657
[link] [comments]
---|--- -
đ r/Harrogate Looking to make friends rss
I feel somewhat embarrassed writing this but hopefully it's worth it. Immediately off the bat, this isn't a dating thing. Genuinely trying to find some like-minded people to get a pint with maybe the odd hike or hanging jamming to music. Love a good long yap and I'll talk about much everything and anything. I'm a Harrogate local and 24 years old working full time. Shoot me questions in the comments if you'd like or message me asking more on who I am. It'd just be nice to get out of the house a bit more
- bit of nerd
-star wars
-video games
-board games
-pints
-music
-hikes
And much more. :)
(Not a dating or hookup thing, happily taken)
submitted by /u/Bigbrizzlebear
[link] [comments] -
đ r/reverseengineering I reverse engineered how Plex gates its Pass features, then wrote a tiny patch that flips them all on (Linux) rss
submitted by /u/Boring-Ad-5924
[link] [comments] -
đ r/LocalLLaMA nvidia/Qwen3.6-35B-A3B-NVFP4 · Hugging Face rss
| The NVIDIA Qwen3.6-35B-A3B-NVFP4 model is the quantized version of Alibaba's Qwen3.6-35B-A3B model, which is an auto-regressive language model that uses an optimized transformer architecture. For more information, please check here. The NVIDIA Qwen3.6-35B-A3B-NVFP4 model is quantized with Model Optimizer.Post Training Quantization
This model was obtained by quantizing the weights of Qwen3.6-35B-A3B to NVFP4 data type, ready for inference with vLLM. Only the weights and activations of the linear operators within transformer blocks in MoE are quantized. This optimization reduces the number of bits per parameter from 16 to 4, reducing the disk size and GPU memory requirements by approximately 3.06x.
Evaluation
The accuracy benchmark results are presented in the table below: | Precision | MMLU Pro | GPQA Diamond | ÏÂČ-Bench Telecom | SciCode | AIME 2025 | AA-LCR | IFBench | MMMU PRO
---|---|---|---|---|---|---|---|---
BF16 | 85.6 | 84.9 | 95.5 | 40.8 | 89.2 | 62.0 | 62.3 | 74.1
NVFP4 | 85.0 | 84.8 | 94.7 | 40.6 | 88.8 | 62.0 | 62.8 | 74.5submitted by /u/pmttyji
[link] [comments] -
đ r/Harrogate Mobile data signal in Knaresborough is so bad. rss
In town yesterday and it just flat out doesn't work. Not just slow but doesn't work for me a lot of the time.
Is there anyone I can write to?
I'm with Lebara who run off the Vodafone network. But I have friends with EE who said their signal is just as bad.
submitted by /u/Famous_Yorkshire
[link] [comments] -
đ r/LocalLLaMA Is he crazy to say that? rss
| submitted by /u/pmv143
[link] [comments]
---|--- -
đ HexRaysSA/plugin-repository commits sync repo: +1 release, ~1 changed rss
sync repo: +1 release, ~1 changed ## New releases - [IDASQL](https://github.com/allthingsida/idasql): 0.0.16 ## Changes - [IDASQL](https://github.com/allthingsida/idasql): - 0.0.1: archive contents changed, download URL changed -
đ r/LocalLLaMA I compared all specs of the major GPUs/machines that are being used here, because bandwidth is not everything. Some of ya'll need a reality check. rss
| Clarification: This post was meant to curb the old and new Mac recommendations to new members/buyers, not to insult people with existing machines that are perfectly fine for their usecase. Edit: OKAY GUYS Pro 6k exists too, understood. M3 Ultra is also closer to 30k, not 12k (ouch). Extended table below: | Device | Price used | FP16 TFLOPS | VRAM | Bandwidth | $/TFLOP | $/GB | Power | W/TFLOP
---|---|---|---|---|---|---|---|---
RTX PRO 6000 Blackwell WS | ~$10,000 | ~463 | 96GB | 1792 GB/s | ~$21.6 | ~$104.2 | 600W | ~1.30
RTX PRO 6000 Blackwell Max-Q WS | ~$11,000 | ~380 | 96GB | 1792 GB/s | ~$28.9 | ~$114.6 | 300W | ~0.79
Intel Arc Pro B70 | $949 | ~183.5 | 32GB | 608 GB/s | $5.2 | $29.7 | 290W | 1.58
Radeon Instinct MI50 32GB | ~$535â560 used eBay | 26.5 | 32GB | 1000 GB/s | ~$20.2â21.1 | ~$16.7â17.5 | 300W | 11.32
Radeon AI PRO R9700 | $1,299 | 191.0 | 32GB | 640 GB/s | $6.8 | $40.6 | 300W | 1.57
RTX 4060 Ti 16GB | $400 | ~88.3 | 16GB | 288 GB/s | $4.5 | $25.0 | 165W | 1.87
RTX 5060 Ti 16GB | ~$550 | ~94.9 | 16GB | 448 GB/s | ~$5.8 | ~$34.4 | 180W | 1.90
RTX 5070 Ti 16GB* | $1,000 | ~175.8 | 16GB | 896 GB/s | $5.7 | $62.5 | 300W | 1.71- again gpu's that support below FP16/BF16 precision and are 2x-4x faster with it
Hot takes:
- Mac studio is overpriced Raspberry Pi that is way more inefficient than people think (together with most macs). M5 MBP is better with the "tensor" matrix MMA, but not that much better value wise- Spark was actually decent when it was just 3-4k. Strix is obviously much better now
- 3090 are complete overkill for single stream usage, V100s are much better value if you can find them cheap. P40 are very niche, but decent if you want exactly 48GB of vram, run moe and don't have money for Mi50s or V100s.
- P100s are extremely underrated entry level LLM gpu's that are not talked about enough. 200 bucks (dual gpu) for a combined 32GB of 700GB/s memory and M3 Ultra compute is crazy.I understand that this sub is now filled with gamers who do nothing but ERP, but for people who do something actually productive (read as experimenting without investing high 5 figures into their setups), prefill is still very important and this is completely hidden by the "generate 1000 word story" benchmarks that most posts or big AI youtube channels do. Especially with multimodal models that eat up context like mad.
I'm still collecting data for prefill and generation charts I'd like to do in the future... I also couldn't find much reliable power data, so if you could provide that from your own setups in the comments I'll be glad.
Thanks for coming to my ted talk.
submitted by /u/Ok_Top9254
[link] [comments] -
đ Mario Zechner How to build a shitty robot rss
A work in progress post about building a shitty robot.
-

