From 8e62b657cc9a4233de4cbf3578b8a89c321f2530 Mon Sep 17 00:00:00 2001 From: "Tommy D. Rossi" Date: Sun, 4 Jan 2026 16:09:32 +0100 Subject: [PATCH] fix: query playwriter tab group by title instead of caching ID - Remove global playwriterGroupId cache that could become stale - Query chrome.tabGroups by title on each sync instead - Use batch chrome.tabs.ungroup() with array of IDs instead of loops - Fixes issue where group wasn't created after debugger detach/reattach --- extension/src/background.ts | 55 +- .../assets/aria-labels-google-snapshot.txt | 2 +- .../aria-labels-hacker-news-snapshot.txt | 1080 ++++++++--------- 3 files changed, 567 insertions(+), 570 deletions(-) diff --git a/extension/src/background.ts b/extension/src/background.ts index e1ce2aa..016cc7e 100644 --- a/extension/src/background.ts +++ b/extension/src/background.ts @@ -14,7 +14,6 @@ function sleep(ms: number): Promise { let childSessions: Map = new Map() let nextSessionId = 1 -let playwriterGroupId: number | null = null let tabGroupQueue: Promise = Promise.resolve() class ConnectionManager { @@ -427,63 +426,60 @@ async function syncTabGroup(): Promise { .filter(([_, info]) => info.state === 'connected') .map(([tabId]) => tabId) + // Always query by title - no cached ID that can go stale const existingGroups = await chrome.tabGroups.query({ title: 'playwriter' }) - // Check for no connected tabs FIRST, before setting playwriterGroupId - // This prevents a race condition where onTabUpdated sees playwriterGroupId !== null + // If no connected tabs, clear any existing playwriter groups if (connectedTabIds.length === 0) { for (const group of existingGroups) { const tabsInGroup = await chrome.tabs.query({ groupId: group.id }) - for (const tab of tabsInGroup) { - if (tab.id) { - await chrome.tabs.ungroup(tab.id) - } + const tabIdsToUngroup = tabsInGroup.map((t) => t.id).filter((id): id is number => id !== undefined) + if (tabIdsToUngroup.length > 0) { + await chrome.tabs.ungroup(tabIdsToUngroup) } logger.debug('Cleared playwriter group:', group.id) } - playwriterGroupId = null return } + // Consolidate duplicate groups into one + let groupId: number | undefined = existingGroups[0]?.id if (existingGroups.length > 1) { const [keep, ...duplicates] = existingGroups + groupId = keep.id for (const group of duplicates) { const tabsInDupe = await chrome.tabs.query({ groupId: group.id }) - for (const tab of tabsInDupe) { - if (tab.id) { - await chrome.tabs.ungroup(tab.id) - } + const tabIdsToUngroup = tabsInDupe.map((t) => t.id).filter((id): id is number => id !== undefined) + if (tabIdsToUngroup.length > 0) { + await chrome.tabs.ungroup(tabIdsToUngroup) } logger.debug('Removed duplicate playwriter group:', group.id) } - playwriterGroupId = keep.id - } else if (existingGroups.length === 1) { - playwriterGroupId = existingGroups[0].id } const allTabs = await chrome.tabs.query({}) - const tabsInGroup = allTabs.filter((t) => t.groupId === playwriterGroupId && t.id !== undefined) + const tabsInGroup = allTabs.filter((t) => t.groupId === groupId && t.id !== undefined) const tabIdsInGroup = new Set(tabsInGroup.map((t) => t.id!)) const tabsToAdd = connectedTabIds.filter((id) => !tabIdsInGroup.has(id)) const tabsToRemove = Array.from(tabIdsInGroup).filter((id) => !connectedTabIds.includes(id)) - for (const tabId of tabsToRemove) { + if (tabsToRemove.length > 0) { try { - await chrome.tabs.ungroup(tabId) - logger.debug('Removed tab from group:', tabId) + await chrome.tabs.ungroup(tabsToRemove) + logger.debug('Removed tabs from group:', tabsToRemove) } catch (e: any) { - logger.debug('Failed to ungroup tab:', tabId, e.message) + logger.debug('Failed to ungroup tabs:', tabsToRemove, e.message) } } if (tabsToAdd.length > 0) { - if (playwriterGroupId === null) { - playwriterGroupId = await chrome.tabs.group({ tabIds: tabsToAdd }) - await chrome.tabGroups.update(playwriterGroupId, { title: 'playwriter', color: 'green' }) - logger.debug('Created tab group:', playwriterGroupId, 'with tabs:', tabsToAdd) + if (groupId === undefined) { + const newGroupId = await chrome.tabs.group({ tabIds: tabsToAdd }) + await chrome.tabGroups.update(newGroupId, { title: 'playwriter', color: 'green' }) + logger.debug('Created tab group:', newGroupId, 'with tabs:', tabsToAdd) } else { - await chrome.tabs.group({ tabIds: tabsToAdd, groupId: playwriterGroupId }) + await chrome.tabs.group({ tabIds: tabsToAdd, groupId }) logger.debug('Added tabs to existing group:', tabsToAdd) } } @@ -876,7 +872,6 @@ async function toggleExtensionForActiveTab(): Promise<{ isConnected: boolean; st async function disconnectEverything(): Promise { // Queue disconnect operation to serialize with other tab group operations tabGroupQueue = tabGroupQueue.then(async () => { - playwriterGroupId = null const { tabs } = store.getState() for (const tabId of tabs.keys()) { await disconnectTab(tabId) @@ -1164,12 +1159,14 @@ chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { if (changeInfo.groupId !== undefined) { // Queue tab group operations to serialize with syncTabGroup and disconnectEverything tabGroupQueue = tabGroupQueue.then(async () => { - // Re-check conditions after queue - state may have changed - if (playwriterGroupId === null) { + // Query for playwriter group by title - no stale cached ID + const existingGroups = await chrome.tabGroups.query({ title: 'playwriter' }) + const groupId = existingGroups[0]?.id + if (groupId === undefined) { return } const { tabs } = store.getState() - if (changeInfo.groupId === playwriterGroupId) { + if (changeInfo.groupId === groupId) { if (!tabs.has(tabId) && !isRestrictedUrl(tab.url)) { logger.debug('Tab manually added to playwriter group:', tabId) await connectTab(tabId) diff --git a/playwriter/src/assets/aria-labels-google-snapshot.txt b/playwriter/src/assets/aria-labels-google-snapshot.txt index 12b4fbd..a036d9f 100644 --- a/playwriter/src/assets/aria-labels-google-snapshot.txt +++ b/playwriter/src/assets/aria-labels-google-snapshot.txt @@ -31,7 +31,7 @@ - generic [ref=e55]: - text: "Google offered in:" - link [ref=e56] [cursor=pointer]: - - /url: https://www.google.com/setprefs?sig=0_SUYEzrSi8XZY6OXPbGayYpDBmR0%3D&hl=it&source=homepage&sa=X&ved=0ahUKEwjv3IDE0fGRAxXk2ckDHd3hHMQQ2ZgBCBU + - /url: https://www.google.com/setprefs?sig=0_46HrevRB93iEOCE9jEsq18qNx-Q%3D&hl=it&source=homepage&sa=X&ved=0ahUKEwjGpZr4lPKRAxXcFTQIHQEtATMQ2ZgBCBU - text: Italiano - contentinfo [ref=e58]: - generic [ref=e59]: Italy diff --git a/playwriter/src/assets/aria-labels-hacker-news-snapshot.txt b/playwriter/src/assets/aria-labels-hacker-news-snapshot.txt index 0735a35..75405a0 100644 --- a/playwriter/src/assets/aria-labels-hacker-news-snapshot.txt +++ b/playwriter/src/assets/aria-labels-hacker-news-snapshot.txt @@ -41,965 +41,965 @@ - cell [ref=e29]: - table [ref=e30]: - rowgroup [ref=e31]: - - 'row "1. upvote Neural Networks: Zero to Hero (karpathy.ai)" [ref=e32]': + - row "1. upvote Street Fighter II, the World Warrier (2021) (fabiensanglard.net)" [ref=e32]: - cell "1." [ref=e33] - cell "upvote" [ref=e34]: - link "upvote" [ref=e36] [cursor=pointer]: - - /url: vote?id=46485090&how=up&goto=news + - /url: vote?id=46488278&how=up&goto=news - generic "upvote" [ref=e37] - - 'cell "Neural Networks: Zero to Hero (karpathy.ai)" [ref=e38]': + - cell "Street Fighter II, the World Warrier (2021) (fabiensanglard.net)" [ref=e38]: - generic [ref=e39]: - - 'link "Neural Networks: Zero to Hero" [ref=e40] [cursor=pointer]': - - /url: https://karpathy.ai/zero-to-hero.html + - link "Street Fighter II, the World Warrier (2021)" [ref=e40] [cursor=pointer]: + - /url: https://fabiensanglard.net/sf2_warrier/ - generic [ref=e41]: - text: ( - - link "karpathy.ai" [ref=e42] [cursor=pointer]: - - /url: from?site=karpathy.ai + - link "fabiensanglard.net" [ref=e42] [cursor=pointer]: + - /url: from?site=fabiensanglard.net - text: ) - - row "269 points by suioir 5 hours ago | hide | 17 comments" [ref=e43]: + - row "34 points by birdculture 36 minutes ago | hide | 3 comments" [ref=e43]: - cell [ref=e44] - - cell "269 points by suioir 5 hours ago | hide | 17 comments" [ref=e45]: + - cell "34 points by birdculture 36 minutes ago | hide | 3 comments" [ref=e45]: - generic [ref=e46]: - - text: 269 points by - - link "suioir" [ref=e47] [cursor=pointer]: - - /url: user?id=suioir - - generic "2026-01-04T05:02:16 1767502936" [ref=e48]: - - link "5 hours ago" [ref=e49] [cursor=pointer]: - - /url: item?id=46485090 + - text: 34 points by + - link "birdculture" [ref=e47] [cursor=pointer]: + - /url: user?id=birdculture + - generic "2026-01-04T14:30:29 1767537029" [ref=e48]: + - link "36 minutes ago" [ref=e49] [cursor=pointer]: + - /url: item?id=46488278 - text: "|" - link "hide" [ref=e50] [cursor=pointer]: - - /url: hide?id=46485090&goto=news + - /url: hide?id=46488278&goto=news - text: "|" - - link "17 comments" [ref=e51] [cursor=pointer]: - - /url: item?id=46485090 + - link "3 comments" [ref=e51] [cursor=pointer]: + - /url: item?id=46488278 - row [ref=e52] - - row "2. upvote The Gentle Seduction (skyhunter.com)" [ref=e53]: + - row "2. upvote Maybe comments should explain 'what' (2017) (hillelwayne.com)" [ref=e53]: - cell "2." [ref=e54] - cell "upvote" [ref=e55]: - link "upvote" [ref=e57] [cursor=pointer]: - - /url: vote?id=46486135&how=up&goto=news + - /url: vote?id=46486780&how=up&goto=news - generic "upvote" [ref=e58] - - cell "The Gentle Seduction (skyhunter.com)" [ref=e59]: + - cell "Maybe comments should explain 'what' (2017) (hillelwayne.com)" [ref=e59]: - generic [ref=e60]: - - link "The Gentle Seduction" [ref=e61] [cursor=pointer]: - - /url: http://www.skyhunter.com/marcs/GentleSeduction.html + - link "Maybe comments should explain 'what' (2017)" [ref=e61] [cursor=pointer]: + - /url: https://www.hillelwayne.com/post/what-comments/ - generic [ref=e62]: - text: ( - - link "skyhunter.com" [ref=e63] [cursor=pointer]: - - /url: from?site=skyhunter.com + - link "hillelwayne.com" [ref=e63] [cursor=pointer]: + - /url: from?site=hillelwayne.com - text: ) - - row "24 points by JumpCrisscross 1 hour ago | hide | 2 comments" [ref=e64]: + - row "108 points by zahrevsky 4 hours ago | hide | 99 comments" [ref=e64]: - cell [ref=e65] - - cell "24 points by JumpCrisscross 1 hour ago | hide | 2 comments" [ref=e66]: + - cell "108 points by zahrevsky 4 hours ago | hide | 99 comments" [ref=e66]: - generic [ref=e67]: - - text: 24 points by - - link "JumpCrisscross" [ref=e68] [cursor=pointer]: - - /url: user?id=JumpCrisscross - - generic "2026-01-04T08:35:42 1767515742" [ref=e69]: - - link "1 hour ago" [ref=e70] [cursor=pointer]: - - /url: item?id=46486135 + - text: 108 points by + - link "zahrevsky" [ref=e68] [cursor=pointer]: + - /url: user?id=zahrevsky + - generic "2026-01-04T10:43:38 1767523418" [ref=e69]: + - link "4 hours ago" [ref=e70] [cursor=pointer]: + - /url: item?id=46486780 - text: "|" - link "hide" [ref=e71] [cursor=pointer]: - - /url: hide?id=46486135&goto=news + - /url: hide?id=46486780&goto=news - text: "|" - - link "2 comments" [ref=e72] [cursor=pointer]: - - /url: item?id=46486135 + - link "99 comments" [ref=e72] [cursor=pointer]: + - /url: item?id=46486780 - row [ref=e73] - - row "3. upvote Total monthly number of StackOverflow questions over time (data.stackexchange.com)" [ref=e74]: + - row "3. upvote Nike's Crisis and the Economics of Brand Decay (philippdubach.com)" [ref=e74]: - cell "3." [ref=e75] - cell "upvote" [ref=e76]: - link "upvote" [ref=e78] [cursor=pointer]: - - /url: vote?id=46482345&how=up&goto=news + - /url: vote?id=46487889&how=up&goto=news - generic "upvote" [ref=e79] - - cell "Total monthly number of StackOverflow questions over time (data.stackexchange.com)" [ref=e80]: + - cell "Nike's Crisis and the Economics of Brand Decay (philippdubach.com)" [ref=e80]: - generic [ref=e81]: - - link "Total monthly number of StackOverflow questions over time" [ref=e82] [cursor=pointer]: - - /url: https://data.stackexchange.com/stackoverflow/query/1926661#graph + - link "Nike's Crisis and the Economics of Brand Decay" [ref=e82] [cursor=pointer]: + - /url: https://philippdubach.com/posts/nikes-crisis-and-the-economics-of-brand-decay/ - generic [ref=e83]: - text: ( - - link "data.stackexchange.com" [ref=e84] [cursor=pointer]: - - /url: from?site=data.stackexchange.com + - link "philippdubach.com" [ref=e84] [cursor=pointer]: + - /url: from?site=philippdubach.com - text: ) - - row "1107 points by maartin0 11 hours ago | hide | 602 comments" [ref=e85]: + - row "28 points by 7777777phil 1 hour ago | hide | 22 comments" [ref=e85]: - cell [ref=e86] - - cell "1107 points by maartin0 11 hours ago | hide | 602 comments" [ref=e87]: + - cell "28 points by 7777777phil 1 hour ago | hide | 22 comments" [ref=e87]: - generic [ref=e88]: - - text: 1107 points by - - link "maartin0" [ref=e89] [cursor=pointer]: - - /url: user?id=maartin0 - - generic "2026-01-03T22:23:34 1767479014" [ref=e90]: - - link "11 hours ago" [ref=e91] [cursor=pointer]: - - /url: item?id=46482345 + - text: 28 points by + - link "7777777phil" [ref=e89] [cursor=pointer]: + - /url: user?id=7777777phil + - generic "2026-01-04T13:45:42 1767534342" [ref=e90]: + - link "1 hour ago" [ref=e91] [cursor=pointer]: + - /url: item?id=46487889 - text: "|" - link "hide" [ref=e92] [cursor=pointer]: - - /url: hide?id=46482345&goto=news + - /url: hide?id=46487889&goto=news - text: "|" - - link "602 comments" [ref=e93] [cursor=pointer]: - - /url: item?id=46482345 + - link "22 comments" [ref=e93] [cursor=pointer]: + - /url: item?id=46487889 - row [ref=e94] - - row "4. upvote The suck is why we're here (nik.art)" [ref=e95]: + - row "4. upvote Jeffgeerling.com has been Migrated to Hugo (jeffgeerling.com)" [ref=e95]: - cell "4." [ref=e96] - cell "upvote" [ref=e97]: - link "upvote" [ref=e99] [cursor=pointer]: - - /url: vote?id=46482877&how=up&goto=news + - /url: vote?id=46487498&how=up&goto=news - generic "upvote" [ref=e100] - - cell "The suck is why we're here (nik.art)" [ref=e101]: + - cell "Jeffgeerling.com has been Migrated to Hugo (jeffgeerling.com)" [ref=e101]: - generic [ref=e102]: - - link "The suck is why we're here" [ref=e103] [cursor=pointer]: - - /url: https://nik.art/the-suck-is-why-were-here/ + - link "Jeffgeerling.com has been Migrated to Hugo" [ref=e103] [cursor=pointer]: + - /url: https://www.jeffgeerling.com/blog/2026/migrated-to-hugo/ - generic [ref=e104]: - text: ( - - link "nik.art" [ref=e105] [cursor=pointer]: - - /url: from?site=nik.art + - link "jeffgeerling.com" [ref=e105] [cursor=pointer]: + - /url: from?site=jeffgeerling.com - text: ) - - row "293 points by herbertl 10 hours ago | hide | 150 comments" [ref=e106]: + - row "83 points by mikece 2 hours ago | hide | 67 comments" [ref=e106]: - cell [ref=e107] - - cell "293 points by herbertl 10 hours ago | hide | 150 comments" [ref=e108]: + - cell "83 points by mikece 2 hours ago | hide | 67 comments" [ref=e108]: - generic [ref=e109]: - - text: 293 points by - - link "herbertl" [ref=e110] [cursor=pointer]: - - /url: user?id=herbertl - - generic "2026-01-03T23:24:41 1767482681" [ref=e111]: - - link "10 hours ago" [ref=e112] [cursor=pointer]: - - /url: item?id=46482877 + - text: 83 points by + - link "mikece" [ref=e110] [cursor=pointer]: + - /url: user?id=mikece + - generic "2026-01-04T12:57:40 1767531460" [ref=e111]: + - link "2 hours ago" [ref=e112] [cursor=pointer]: + - /url: item?id=46487498 - text: "|" - link "hide" [ref=e113] [cursor=pointer]: - - /url: hide?id=46482877&goto=news + - /url: hide?id=46487498&goto=news - text: "|" - - link "150 comments" [ref=e114] [cursor=pointer]: - - /url: item?id=46482877 + - link "67 comments" [ref=e114] [cursor=pointer]: + - /url: item?id=46487498 - row [ref=e115] - - row "5. upvote Can I start using Wayland in 2026? (stapelberg.ch)" [ref=e116]: + - 'row "5. upvote FreeBSD Home NAS, part 3: WireGuard VPN, routing, and Linux peers (co.ua)" [ref=e116]': - cell "5." [ref=e117] - cell "upvote" [ref=e118]: - link "upvote" [ref=e120] [cursor=pointer]: - - /url: vote?id=46485989&how=up&goto=news + - /url: vote?id=46487120&how=up&goto=news - generic "upvote" [ref=e121] - - cell "Can I start using Wayland in 2026? (stapelberg.ch)" [ref=e122]: + - 'cell "FreeBSD Home NAS, part 3: WireGuard VPN, routing, and Linux peers (co.ua)" [ref=e122]': - generic [ref=e123]: - - link "Can I start using Wayland in 2026?" [ref=e124] [cursor=pointer]: - - /url: https://michael.stapelberg.ch/posts/2026-01-04-wayland-sway-in-2026/ + - 'link "FreeBSD Home NAS, part 3: WireGuard VPN, routing, and Linux peers" [ref=e124] [cursor=pointer]': + - /url: https://rtfm.co.ua/en/freebsd-home-nas-part-3-wireguard-vpn-linux-peer-and-routing/ - generic [ref=e125]: - text: ( - - link "stapelberg.ch" [ref=e126] [cursor=pointer]: - - /url: from?site=stapelberg.ch + - link "co.ua" [ref=e126] [cursor=pointer]: + - /url: from?site=co.ua - text: ) - - row "24 points by secure 1 hour ago | hide | 3 comments" [ref=e127]: + - row "51 points by todsacerdoti 3 hours ago | hide | discuss" [ref=e127]: - cell [ref=e128] - - cell "24 points by secure 1 hour ago | hide | 3 comments" [ref=e129]: + - cell "51 points by todsacerdoti 3 hours ago | hide | discuss" [ref=e129]: - generic [ref=e130]: - - text: 24 points by - - link "secure" [ref=e131] [cursor=pointer]: - - /url: user?id=secure - - generic "2026-01-04T08:11:22 1767514282" [ref=e132]: - - link "1 hour ago" [ref=e133] [cursor=pointer]: - - /url: item?id=46485989 + - text: 51 points by + - link "todsacerdoti" [ref=e131] [cursor=pointer]: + - /url: user?id=todsacerdoti + - generic "2026-01-04T11:55:34 1767527734" [ref=e132]: + - link "3 hours ago" [ref=e133] [cursor=pointer]: + - /url: item?id=46487120 - text: "|" - link "hide" [ref=e134] [cursor=pointer]: - - /url: hide?id=46485989&goto=news + - /url: hide?id=46487120&goto=news - text: "|" - - link "3 comments" [ref=e135] [cursor=pointer]: - - /url: item?id=46485989 + - link "discuss" [ref=e135] [cursor=pointer]: + - /url: item?id=46487120 - row [ref=e136] - - row "6. upvote GDI Effects from the PC cracking scene (temari.fr)" [ref=e137]: + - 'row "6. upvote Neural Networks: Zero to Hero (karpathy.ai)" [ref=e137]': - cell "6." [ref=e138] - cell "upvote" [ref=e139]: - link "upvote" [ref=e141] [cursor=pointer]: - - /url: vote?id=46424186&how=up&goto=news + - /url: vote?id=46485090&how=up&goto=news - generic "upvote" [ref=e142] - - cell "GDI Effects from the PC cracking scene (temari.fr)" [ref=e143]: + - 'cell "Neural Networks: Zero to Hero (karpathy.ai)" [ref=e143]': - generic [ref=e144]: - - link "GDI Effects from the PC cracking scene" [ref=e145] [cursor=pointer]: - - /url: https://gdimayhem.temari.fr/index.php?p=all + - 'link "Neural Networks: Zero to Hero" [ref=e145] [cursor=pointer]': + - /url: https://karpathy.ai/zero-to-hero.html - generic [ref=e146]: - text: ( - - link "temari.fr" [ref=e147] [cursor=pointer]: - - /url: from?site=temari.fr + - link "karpathy.ai" [ref=e147] [cursor=pointer]: + - /url: from?site=karpathy.ai - text: ) - - row "63 points by todsacerdoti 4 hours ago | hide | 5 comments" [ref=e148]: + - row "501 points by suioir 10 hours ago | hide | 42 comments" [ref=e148]: - cell [ref=e149] - - cell "63 points by todsacerdoti 4 hours ago | hide | 5 comments" [ref=e150]: + - cell "501 points by suioir 10 hours ago | hide | 42 comments" [ref=e150]: - generic [ref=e151]: - - text: 63 points by - - link "todsacerdoti" [ref=e152] [cursor=pointer]: - - /url: user?id=todsacerdoti - - generic "2025-12-29T19:10:32 1767035432" [ref=e153]: - - link "4 hours ago" [ref=e154] [cursor=pointer]: - - /url: item?id=46424186 + - text: 501 points by + - link "suioir" [ref=e152] [cursor=pointer]: + - /url: user?id=suioir + - generic "2026-01-04T05:02:16 1767502936" [ref=e153]: + - link "10 hours ago" [ref=e154] [cursor=pointer]: + - /url: item?id=46485090 - text: "|" - link "hide" [ref=e155] [cursor=pointer]: - - /url: hide?id=46424186&goto=news + - /url: hide?id=46485090&goto=news - text: "|" - - link "5 comments" [ref=e156] [cursor=pointer]: - - /url: item?id=46424186 + - link "42 comments" [ref=e156] [cursor=pointer]: + - /url: item?id=46485090 - row [ref=e157] - - 'row "7. upvote Swift on Android: Full Native App Development Now Possible (swifdroid.com)" [ref=e158]': + - row "7. upvote JavaScript engines zoo – Compare every JavaScript engine (zoo.js.org)" [ref=e158]: - cell "7." [ref=e159] - cell "upvote" [ref=e160]: - link "upvote" [ref=e162] [cursor=pointer]: - - /url: vote?id=46483023&how=up&goto=news + - /url: vote?id=46486978&how=up&goto=news - generic "upvote" [ref=e163] - - 'cell "Swift on Android: Full Native App Development Now Possible (swifdroid.com)" [ref=e164]': + - cell "JavaScript engines zoo – Compare every JavaScript engine (zoo.js.org)" [ref=e164]: - generic [ref=e165]: - - 'link "Swift on Android: Full Native App Development Now Possible" [ref=e166] [cursor=pointer]': - - /url: https://docs.swifdroid.com/app/ + - link "JavaScript engines zoo – Compare every JavaScript engine" [ref=e166] [cursor=pointer]: + - /url: https://zoo.js.org/ - generic [ref=e167]: - text: ( - - link "swifdroid.com" [ref=e168] [cursor=pointer]: - - /url: from?site=swifdroid.com + - link "zoo.js.org" [ref=e168] [cursor=pointer]: + - /url: from?site=zoo.js.org - text: ) - - row "212 points by mihael 10 hours ago | hide | 119 comments" [ref=e169]: + - row "69 points by gurgunday 3 hours ago | hide | 22 comments" [ref=e169]: - cell [ref=e170] - - cell "212 points by mihael 10 hours ago | hide | 119 comments" [ref=e171]: + - cell "69 points by gurgunday 3 hours ago | hide | 22 comments" [ref=e171]: - generic [ref=e172]: - - text: 212 points by - - link "mihael" [ref=e173] [cursor=pointer]: - - /url: user?id=mihael - - generic "2026-01-03T23:39:12 1767483552" [ref=e174]: - - link "10 hours ago" [ref=e175] [cursor=pointer]: - - /url: item?id=46483023 + - text: 69 points by + - link "gurgunday" [ref=e173] [cursor=pointer]: + - /url: user?id=gurgunday + - generic "2026-01-04T11:23:23 1767525803" [ref=e174]: + - link "3 hours ago" [ref=e175] [cursor=pointer]: + - /url: item?id=46486978 - text: "|" - link "hide" [ref=e176] [cursor=pointer]: - - /url: hide?id=46483023&goto=news + - /url: hide?id=46486978&goto=news - text: "|" - - link "119 comments" [ref=e177] [cursor=pointer]: - - /url: item?id=46483023 + - link "22 comments" [ref=e177] [cursor=pointer]: + - /url: item?id=46486978 - row [ref=e178] - - row "8. upvote The Most Popular Blogs of Hacker News in 2025 (refactoringenglish.com)" [ref=e179]: + - row "8. upvote Attention Is Bayesian Inference (medium.com/vishalmisra)" [ref=e179]: - cell "8." [ref=e180] - cell "upvote" [ref=e181]: - link "upvote" [ref=e183] [cursor=pointer]: - - /url: vote?id=46478377&how=up&goto=news + - /url: vote?id=46439064&how=up&goto=news - generic "upvote" [ref=e184] - - cell "The Most Popular Blogs of Hacker News in 2025 (refactoringenglish.com)" [ref=e185]: + - cell "Attention Is Bayesian Inference (medium.com/vishalmisra)" [ref=e185]: - generic [ref=e186]: - - link "The Most Popular Blogs of Hacker News in 2025" [ref=e187] [cursor=pointer]: - - /url: https://refactoringenglish.com/blog/2025-hn-top-5/ + - link "Attention Is Bayesian Inference" [ref=e187] [cursor=pointer]: + - /url: https://medium.com/@vishalmisra/attention-is-bayesian-inference-578c25db4501 - generic [ref=e188]: - text: ( - - link "refactoringenglish.com" [ref=e189] [cursor=pointer]: - - /url: from?site=refactoringenglish.com + - link "medium.com/vishalmisra" [ref=e189] [cursor=pointer]: + - /url: from?site=medium.com/vishalmisra - text: ) - - row "577 points by mtlynch 17 hours ago | hide | 109 comments" [ref=e190]: + - row "32 points by samwillis 2 hours ago | hide | 1 comment" [ref=e190]: - cell [ref=e191] - - cell "577 points by mtlynch 17 hours ago | hide | 109 comments" [ref=e192]: + - cell "32 points by samwillis 2 hours ago | hide | 1 comment" [ref=e192]: - generic [ref=e193]: - - text: 577 points by - - link "mtlynch" [ref=e194] [cursor=pointer]: - - /url: user?id=mtlynch - - generic "2026-01-03T16:20:10 1767457210" [ref=e195]: - - link "17 hours ago" [ref=e196] [cursor=pointer]: - - /url: item?id=46478377 + - text: 32 points by + - link "samwillis" [ref=e194] [cursor=pointer]: + - /url: user?id=samwillis + - generic "2025-12-30T22:51:18 1767135078" [ref=e195]: + - link "2 hours ago" [ref=e196] [cursor=pointer]: + - /url: item?id=46439064 - text: "|" - link "hide" [ref=e197] [cursor=pointer]: - - /url: hide?id=46478377&goto=news + - /url: hide?id=46439064&goto=news - text: "|" - - link "109 comments" [ref=e198] [cursor=pointer]: - - /url: item?id=46478377 + - link "1 comment" [ref=e198] [cursor=pointer]: + - /url: item?id=46439064 - row [ref=e199] - - row "9. upvote The PGP Problem (2019) (latacora.com)" [ref=e200]: + - row "9. upvote The Gentle Seduction (1989) (skyhunter.com)" [ref=e200]: - cell "9." [ref=e201] - cell "upvote" [ref=e202]: - link "upvote" [ref=e204] [cursor=pointer]: - - /url: vote?id=46486326&how=up&goto=news + - /url: vote?id=46486135&how=up&goto=news - generic "upvote" [ref=e205] - - cell "The PGP Problem (2019) (latacora.com)" [ref=e206]: + - cell "The Gentle Seduction (1989) (skyhunter.com)" [ref=e206]: - generic [ref=e207]: - - link "The PGP Problem (2019)" [ref=e208] [cursor=pointer]: - - /url: https://www.latacora.com/blog/2019/07/16/the-pgp-problem/ + - link "The Gentle Seduction (1989)" [ref=e208] [cursor=pointer]: + - /url: http://www.skyhunter.com/marcs/GentleSeduction.html - generic [ref=e209]: - text: ( - - link "latacora.com" [ref=e210] [cursor=pointer]: - - /url: from?site=latacora.com + - link "skyhunter.com" [ref=e210] [cursor=pointer]: + - /url: from?site=skyhunter.com - text: ) - - row "5 points by croemer 54 minutes ago | hide | 49 comments" [ref=e211]: + - row "144 points by JumpCrisscross 6 hours ago | hide | 27 comments" [ref=e211]: - cell [ref=e212] - - cell "5 points by croemer 54 minutes ago | hide | 49 comments" [ref=e213]: + - cell "144 points by JumpCrisscross 6 hours ago | hide | 27 comments" [ref=e213]: - generic [ref=e214]: - - text: 5 points by - - link "croemer" [ref=e215] [cursor=pointer]: - - /url: user?id=croemer - - generic "2026-01-04T09:11:47 1767517907" [ref=e216]: - - link "54 minutes ago" [ref=e217] [cursor=pointer]: - - /url: item?id=46486326 + - text: 144 points by + - link "JumpCrisscross" [ref=e215] [cursor=pointer]: + - /url: user?id=JumpCrisscross + - generic "2026-01-04T08:35:42 1767515742" [ref=e216]: + - link "6 hours ago" [ref=e217] [cursor=pointer]: + - /url: item?id=46486135 - text: "|" - link "hide" [ref=e218] [cursor=pointer]: - - /url: hide?id=46486326&goto=news + - /url: hide?id=46486135&goto=news - text: "|" - - link "49 comments" [ref=e219] [cursor=pointer]: - - /url: item?id=46486326 + - link "27 comments" [ref=e219] [cursor=pointer]: + - /url: item?id=46486135 - row [ref=e220] - - row "10. upvote KDE onboarding is good now (rabbitictranslator.com)" [ref=e221]: + - row "10. upvote Cold-Blooded Software (dubroy.com)" [ref=e221]: - cell "10." [ref=e222] - cell "upvote" [ref=e223]: - link "upvote" [ref=e225] [cursor=pointer]: - - /url: vote?id=46483432&how=up&goto=news + - /url: vote?id=46488261&how=up&goto=news - generic "upvote" [ref=e226] - - cell "KDE onboarding is good now (rabbitictranslator.com)" [ref=e227]: + - cell "Cold-Blooded Software (dubroy.com)" [ref=e227]: - generic [ref=e228]: - - link "KDE onboarding is good now" [ref=e229] [cursor=pointer]: - - /url: https://rabbitictranslator.com/kde-onboarding/ + - link "Cold-Blooded Software" [ref=e229] [cursor=pointer]: + - /url: https://dubroy.com/blog/cold-blooded-software/ - generic [ref=e230]: - text: ( - - link "rabbitictranslator.com" [ref=e231] [cursor=pointer]: - - /url: from?site=rabbitictranslator.com + - link "dubroy.com" [ref=e231] [cursor=pointer]: + - /url: from?site=dubroy.com - text: ) - - row "102 points by todsacerdoti 9 hours ago | hide | 61 comments" [ref=e232]: + - row "4 points by dgroshev 37 minutes ago | hide | discuss" [ref=e232]: - cell [ref=e233] - - cell "102 points by todsacerdoti 9 hours ago | hide | 61 comments" [ref=e234]: + - cell "4 points by dgroshev 37 minutes ago | hide | discuss" [ref=e234]: - generic [ref=e235]: - - text: 102 points by - - link "todsacerdoti" [ref=e236] [cursor=pointer]: - - /url: user?id=todsacerdoti - - generic "2026-01-04T00:31:42 1767486702" [ref=e237]: - - link "9 hours ago" [ref=e238] [cursor=pointer]: - - /url: item?id=46483432 + - text: 4 points by + - link "dgroshev" [ref=e236] [cursor=pointer]: + - /url: user?id=dgroshev + - generic "2026-01-04T14:28:56 1767536936" [ref=e237]: + - link "37 minutes ago" [ref=e238] [cursor=pointer]: + - /url: item?id=46488261 - text: "|" - link "hide" [ref=e239] [cursor=pointer]: - - /url: hide?id=46483432&goto=news + - /url: hide?id=46488261&goto=news - text: "|" - - link "61 comments" [ref=e240] [cursor=pointer]: - - /url: item?id=46483432 + - link "discuss" [ref=e240] [cursor=pointer]: + - /url: item?id=46488261 - row [ref=e241] - - row "11. upvote MyTorch – Minimalist autograd in 450 lines of Python (github.com/obround)" [ref=e242]: + - row "11. upvote The PGP problem (2019) (latacora.com)" [ref=e242]: - cell "11." [ref=e243] - cell "upvote" [ref=e244]: - link "upvote" [ref=e246] [cursor=pointer]: - - /url: vote?id=46483776&how=up&goto=news + - /url: vote?id=46486326&how=up&goto=news - generic "upvote" [ref=e247] - - cell "MyTorch – Minimalist autograd in 450 lines of Python (github.com/obround)" [ref=e248]: + - cell "The PGP problem (2019) (latacora.com)" [ref=e248]: - generic [ref=e249]: - - link "MyTorch – Minimalist autograd in 450 lines of Python" [ref=e250] [cursor=pointer]: - - /url: https://github.com/obround/mytorch + - link "The PGP problem (2019)" [ref=e250] [cursor=pointer]: + - /url: https://www.latacora.com/blog/2019/07/16/the-pgp-problem/ - generic [ref=e251]: - text: ( - - link "github.com/obround" [ref=e252] [cursor=pointer]: - - /url: from?site=github.com/obround + - link "latacora.com" [ref=e252] [cursor=pointer]: + - /url: from?site=latacora.com - text: ) - - row "75 points by iguana2000 8 hours ago | hide | 10 comments" [ref=e253]: + - row "45 points by croemer 5 hours ago | hide | 67 comments" [ref=e253]: - cell [ref=e254] - - cell "75 points by iguana2000 8 hours ago | hide | 10 comments" [ref=e255]: + - cell "45 points by croemer 5 hours ago | hide | 67 comments" [ref=e255]: - generic [ref=e256]: - - text: 75 points by - - link "iguana2000" [ref=e257] [cursor=pointer]: - - /url: user?id=iguana2000 - - generic "2026-01-04T01:21:56 1767489716" [ref=e258]: - - link "8 hours ago" [ref=e259] [cursor=pointer]: - - /url: item?id=46483776 + - text: 45 points by + - link "croemer" [ref=e257] [cursor=pointer]: + - /url: user?id=croemer + - generic "2026-01-04T09:11:47 1767517907" [ref=e258]: + - link "5 hours ago" [ref=e259] [cursor=pointer]: + - /url: item?id=46486326 - text: "|" - link "hide" [ref=e260] [cursor=pointer]: - - /url: hide?id=46483776&goto=news + - /url: hide?id=46486326&goto=news - text: "|" - - link "10 comments" [ref=e261] [cursor=pointer]: - - /url: item?id=46483776 + - link "67 comments" [ref=e261] [cursor=pointer]: + - /url: item?id=46486326 - row [ref=e262] - - row "12. upvote How Thomas Mann Wrote the Magic Mountain (theguardian.com)" [ref=e263]: + - row "12. upvote Was it a billion dollar mistake? (gingerbill.org)" [ref=e263]: - cell "12." [ref=e264] - cell "upvote" [ref=e265]: - link "upvote" [ref=e267] [cursor=pointer]: - - /url: vote?id=46484104&how=up&goto=news + - /url: vote?id=46486730&how=up&goto=news - generic "upvote" [ref=e268] - - cell "How Thomas Mann Wrote the Magic Mountain (theguardian.com)" [ref=e269]: + - cell "Was it a billion dollar mistake? (gingerbill.org)" [ref=e269]: - generic [ref=e270]: - - link "How Thomas Mann Wrote the Magic Mountain" [ref=e271] [cursor=pointer]: - - /url: https://www.theguardian.com/books/2025/dec/31/the-master-of-contradictions-by-morten-hi-jensen-review-how-thomas-mann-wrote-the-magic-mountain + - link "Was it a billion dollar mistake?" [ref=e271] [cursor=pointer]: + - /url: https://www.gingerbill.org/article/2026/01/02/was-it-really-a-billion-dollar-mistake/ - generic [ref=e272]: - text: ( - - link "theguardian.com" [ref=e273] [cursor=pointer]: - - /url: from?site=theguardian.com + - link "gingerbill.org" [ref=e273] [cursor=pointer]: + - /url: from?site=gingerbill.org - text: ) - - row "60 points by Caiero 7 hours ago | hide | 14 comments" [ref=e274]: + - row "35 points by signa11 4 hours ago | hide | 27 comments" [ref=e274]: - cell [ref=e275] - - cell "60 points by Caiero 7 hours ago | hide | 14 comments" [ref=e276]: + - cell "35 points by signa11 4 hours ago | hide | 27 comments" [ref=e276]: - generic [ref=e277]: - - text: 60 points by - - link "Caiero" [ref=e278] [cursor=pointer]: - - /url: user?id=Caiero - - generic "2026-01-04T02:13:23 1767492803" [ref=e279]: - - link "7 hours ago" [ref=e280] [cursor=pointer]: - - /url: item?id=46484104 + - text: 35 points by + - link "signa11" [ref=e278] [cursor=pointer]: + - /url: user?id=signa11 + - generic "2026-01-04T10:35:58 1767522958" [ref=e279]: + - link "4 hours ago" [ref=e280] [cursor=pointer]: + - /url: item?id=46486730 - text: "|" - link "hide" [ref=e281] [cursor=pointer]: - - /url: hide?id=46484104&goto=news + - /url: hide?id=46486730&goto=news - text: "|" - - link "14 comments" [ref=e282] [cursor=pointer]: - - /url: item?id=46484104 + - link "27 comments" [ref=e282] [cursor=pointer]: + - /url: item?id=46486730 - row [ref=e283] - - 'row "13. upvote Corroded: Illegal Rust (github.com/buyukakyuz)" [ref=e284]': + - 'row "13. upvote Nightshade: Make images unsuitable for model training (uchicago.edu)" [ref=e284]': - cell "13." [ref=e285] - cell "upvote" [ref=e286]: - link "upvote" [ref=e288] [cursor=pointer]: - - /url: vote?id=46483531&how=up&goto=news + - /url: vote?id=46487342&how=up&goto=news - generic "upvote" [ref=e289] - - 'cell "Corroded: Illegal Rust (github.com/buyukakyuz)" [ref=e290]': + - 'cell "Nightshade: Make images unsuitable for model training (uchicago.edu)" [ref=e290]': - generic [ref=e291]: - - 'link "Corroded: Illegal Rust" [ref=e292] [cursor=pointer]': - - /url: https://github.com/buyukakyuz/corroded + - 'link "Nightshade: Make images unsuitable for model training" [ref=e292] [cursor=pointer]': + - /url: https://nightshade.cs.uchicago.edu/whatis.html - generic [ref=e293]: - text: ( - - link "github.com/buyukakyuz" [ref=e294] [cursor=pointer]: - - /url: from?site=github.com/buyukakyuz + - link "uchicago.edu" [ref=e294] [cursor=pointer]: + - /url: from?site=uchicago.edu - text: ) - - row "105 points by csmantle 9 hours ago | hide | 24 comments" [ref=e295]: + - row "38 points by homebrewer 2 hours ago | hide | 18 comments" [ref=e295]: - cell [ref=e296] - - cell "105 points by csmantle 9 hours ago | hide | 24 comments" [ref=e297]: + - cell "38 points by homebrewer 2 hours ago | hide | 18 comments" [ref=e297]: - generic [ref=e298]: - - text: 105 points by - - link "csmantle" [ref=e299] [cursor=pointer]: - - /url: user?id=csmantle - - generic "2026-01-04T00:45:54 1767487554" [ref=e300]: - - link "9 hours ago" [ref=e301] [cursor=pointer]: - - /url: item?id=46483531 + - text: 38 points by + - link "homebrewer" [ref=e299] [cursor=pointer]: + - /url: user?id=homebrewer + - generic "2026-01-04T12:32:30 1767529950" [ref=e300]: + - link "2 hours ago" [ref=e301] [cursor=pointer]: + - /url: item?id=46487342 - text: "|" - link "hide" [ref=e302] [cursor=pointer]: - - /url: hide?id=46483531&goto=news + - /url: hide?id=46487342&goto=news - text: "|" - - link "24 comments" [ref=e303] [cursor=pointer]: - - /url: item?id=46483531 + - link "18 comments" [ref=e303] [cursor=pointer]: + - /url: item?id=46487342 - row [ref=e304] - - row "14. upvote Corundum – open-source FPGA-based NIC and platform for in-network compute (github.com/corundum)" [ref=e305]: + - row "14. upvote Total monthly number of StackOverflow questions over time (data.stackexchange.com)" [ref=e305]: - cell "14." [ref=e306] - cell "upvote" [ref=e307]: - link "upvote" [ref=e309] [cursor=pointer]: - - /url: vote?id=46485101&how=up&goto=news + - /url: vote?id=46482345&how=up&goto=news - generic "upvote" [ref=e310] - - cell "Corundum – open-source FPGA-based NIC and platform for in-network compute (github.com/corundum)" [ref=e311]: + - cell "Total monthly number of StackOverflow questions over time (data.stackexchange.com)" [ref=e311]: - generic [ref=e312]: - - link "Corundum – open-source FPGA-based NIC and platform for in-network compute" [ref=e313] [cursor=pointer]: - - /url: https://github.com/corundum/corundum + - link "Total monthly number of StackOverflow questions over time" [ref=e313] [cursor=pointer]: + - /url: https://data.stackexchange.com/stackoverflow/query/1926661#graph - generic [ref=e314]: - text: ( - - link "github.com/corundum" [ref=e315] [cursor=pointer]: - - /url: from?site=github.com/corundum + - link "data.stackexchange.com" [ref=e315] [cursor=pointer]: + - /url: from?site=data.stackexchange.com - text: ) - - row "24 points by peter_d_sherman 5 hours ago | hide | 5 comments" [ref=e316]: + - row "1304 points by maartin0 16 hours ago | hide | 744 comments" [ref=e316]: - cell [ref=e317] - - cell "24 points by peter_d_sherman 5 hours ago | hide | 5 comments" [ref=e318]: + - cell "1304 points by maartin0 16 hours ago | hide | 744 comments" [ref=e318]: - generic [ref=e319]: - - text: 24 points by - - link "peter_d_sherman" [ref=e320] [cursor=pointer]: - - /url: user?id=peter_d_sherman - - generic "2026-01-04T05:04:29 1767503069" [ref=e321]: - - link "5 hours ago" [ref=e322] [cursor=pointer]: - - /url: item?id=46485101 + - text: 1304 points by + - link "maartin0" [ref=e320] [cursor=pointer]: + - /url: user?id=maartin0 + - generic "2026-01-03T22:23:34 1767479014" [ref=e321]: + - link "16 hours ago" [ref=e322] [cursor=pointer]: + - /url: item?id=46482345 - text: "|" - link "hide" [ref=e323] [cursor=pointer]: - - /url: hide?id=46485101&goto=news + - /url: hide?id=46482345&goto=news - text: "|" - - link "5 comments" [ref=e324] [cursor=pointer]: - - /url: item?id=46485101 + - link "744 comments" [ref=e324] [cursor=pointer]: + - /url: item?id=46482345 - row [ref=e325] - - 'row "15. upvote Show HN: Claude Reflect – Auto-turn Claude corrections into project config (github.com/bayramannakov)" [ref=e326]': + - row "15. upvote YouTube Playlist Downloader (github.com/linuxmaster14)" [ref=e326]: - cell "15." [ref=e327] - cell "upvote" [ref=e328]: - link "upvote" [ref=e330] [cursor=pointer]: - - /url: vote?id=46484933&how=up&goto=news + - /url: vote?id=46487351&how=up&goto=news - generic "upvote" [ref=e331] - - 'cell "Show HN: Claude Reflect – Auto-turn Claude corrections into project config (github.com/bayramannakov)" [ref=e332]': + - cell "YouTube Playlist Downloader (github.com/linuxmaster14)" [ref=e332]: - generic [ref=e333]: - - 'link "Show HN: Claude Reflect – Auto-turn Claude corrections into project config" [ref=e334] [cursor=pointer]': - - /url: https://github.com/BayramAnnakov/claude-reflect + - link "YouTube Playlist Downloader" [ref=e334] [cursor=pointer]: + - /url: https://github.com/Linuxmaster14/yt-playlist-downloader - generic [ref=e335]: - text: ( - - link "github.com/bayramannakov" [ref=e336] [cursor=pointer]: - - /url: from?site=github.com/bayramannakov + - link "github.com/linuxmaster14" [ref=e336] [cursor=pointer]: + - /url: from?site=github.com/linuxmaster14 - text: ) - - row "31 points by Bayram 5 hours ago | hide | 14 comments" [ref=e337]: + - row "12 points by linuxmaster14 2 hours ago | hide | 1 comment" [ref=e337]: - cell [ref=e338] - - cell "31 points by Bayram 5 hours ago | hide | 14 comments" [ref=e339]: + - cell "12 points by linuxmaster14 2 hours ago | hide | 1 comment" [ref=e339]: - generic [ref=e340]: - - text: 31 points by - - link "Bayram" [ref=e341] [cursor=pointer]: - - /url: user?id=Bayram - - generic "2026-01-04T04:31:11 1767501071" [ref=e342]: - - link "5 hours ago" [ref=e343] [cursor=pointer]: - - /url: item?id=46484933 + - text: 12 points by + - link "linuxmaster14" [ref=e341] [cursor=pointer]: + - /url: user?id=linuxmaster14 + - generic "2026-01-04T12:34:14 1767530054" [ref=e342]: + - link "2 hours ago" [ref=e343] [cursor=pointer]: + - /url: item?id=46487351 - text: "|" - link "hide" [ref=e344] [cursor=pointer]: - - /url: hide?id=46484933&goto=news + - /url: hide?id=46487351&goto=news - text: "|" - - link "14 comments" [ref=e345] [cursor=pointer]: - - /url: item?id=46484933 + - link "1 comment" [ref=e345] [cursor=pointer]: + - /url: item?id=46487351 - row [ref=e346] - - 'row "16. upvote From silicon to Darude – Sandstorm: breaking famous synthesizer DSPs [video] (ccc.de)" [ref=e347]': + - row "16. upvote GDI Effects from the PC cracking scene (temari.fr)" [ref=e347]: - cell "16." [ref=e348] - cell "upvote" [ref=e349]: - link "upvote" [ref=e351] [cursor=pointer]: - - /url: vote?id=46438258&how=up&goto=news + - /url: vote?id=46424186&how=up&goto=news - generic "upvote" [ref=e352] - - 'cell "From silicon to Darude – Sandstorm: breaking famous synthesizer DSPs [video] (ccc.de)" [ref=e353]': + - cell "GDI Effects from the PC cracking scene (temari.fr)" [ref=e353]: - generic [ref=e354]: - - 'link "From silicon to Darude – Sandstorm: breaking famous synthesizer DSPs [video]" [ref=e355] [cursor=pointer]': - - /url: https://media.ccc.de/v/39c3-from-silicon-to-darude-sand-storm-breaking-famous-synthesizer-dsps + - link "GDI Effects from the PC cracking scene" [ref=e355] [cursor=pointer]: + - /url: https://gdimayhem.temari.fr/index.php?p=all - generic [ref=e356]: - text: ( - - link "ccc.de" [ref=e357] [cursor=pointer]: - - /url: from?site=ccc.de + - link "temari.fr" [ref=e357] [cursor=pointer]: + - /url: from?site=temari.fr - text: ) - - row "17 points by anigbrowl 3 hours ago | hide | 2 comments" [ref=e358]: + - row "119 points by todsacerdoti 9 hours ago | hide | 24 comments" [ref=e358]: - cell [ref=e359] - - cell "17 points by anigbrowl 3 hours ago | hide | 2 comments" [ref=e360]: + - cell "119 points by todsacerdoti 9 hours ago | hide | 24 comments" [ref=e360]: - generic [ref=e361]: - - text: 17 points by - - link "anigbrowl" [ref=e362] [cursor=pointer]: - - /url: user?id=anigbrowl - - generic "2025-12-30T21:31:31 1767130291" [ref=e363]: - - link "3 hours ago" [ref=e364] [cursor=pointer]: - - /url: item?id=46438258 + - text: 119 points by + - link "todsacerdoti" [ref=e362] [cursor=pointer]: + - /url: user?id=todsacerdoti + - generic "2025-12-29T19:10:32 1767035432" [ref=e363]: + - link "9 hours ago" [ref=e364] [cursor=pointer]: + - /url: item?id=46424186 - text: "|" - link "hide" [ref=e365] [cursor=pointer]: - - /url: hide?id=46438258&goto=news + - /url: hide?id=46424186&goto=news - text: "|" - - link "2 comments" [ref=e366] [cursor=pointer]: - - /url: item?id=46438258 + - link "24 comments" [ref=e366] [cursor=pointer]: + - /url: item?id=46424186 - row [ref=e367] - - row "17. upvote The Late Arrival of 16-Bit CP/M (nemanjatrifunovic.substack.com)" [ref=e368]: + - 'row "17. upvote From silicon to Darude – Sandstorm: breaking famous synthesizer DSPs [video] (ccc.de)" [ref=e368]': - cell "17." [ref=e369] - cell "upvote" [ref=e370]: - link "upvote" [ref=e372] [cursor=pointer]: - - /url: vote?id=46426614&how=up&goto=news + - /url: vote?id=46438258&how=up&goto=news - generic "upvote" [ref=e373] - - cell "The Late Arrival of 16-Bit CP/M (nemanjatrifunovic.substack.com)" [ref=e374]: + - 'cell "From silicon to Darude – Sandstorm: breaking famous synthesizer DSPs [video] (ccc.de)" [ref=e374]': - generic [ref=e375]: - - link "The Late Arrival of 16-Bit CP/M" [ref=e376] [cursor=pointer]: - - /url: https://nemanjatrifunovic.substack.com/p/the-late-arrival-of-16-bit-cpm + - 'link "From silicon to Darude – Sandstorm: breaking famous synthesizer DSPs [video]" [ref=e376] [cursor=pointer]': + - /url: https://media.ccc.de/v/39c3-from-silicon-to-darude-sand-storm-breaking-famous-synthesizer-dsps - generic [ref=e377]: - text: ( - - link "nemanjatrifunovic.substack.com" [ref=e378] [cursor=pointer]: - - /url: from?site=nemanjatrifunovic.substack.com + - link "ccc.de" [ref=e378] [cursor=pointer]: + - /url: from?site=ccc.de - text: ) - - row "47 points by rbanffy 9 hours ago | hide | 5 comments" [ref=e379]: + - row "75 points by anigbrowl 8 hours ago | hide | 11 comments" [ref=e379]: - cell [ref=e380] - - cell "47 points by rbanffy 9 hours ago | hide | 5 comments" [ref=e381]: + - cell "75 points by anigbrowl 8 hours ago | hide | 11 comments" [ref=e381]: - generic [ref=e382]: - - text: 47 points by - - link "rbanffy" [ref=e383] [cursor=pointer]: - - /url: user?id=rbanffy - - generic "2025-12-29T22:30:04 1767047404" [ref=e384]: - - link "9 hours ago" [ref=e385] [cursor=pointer]: - - /url: item?id=46426614 + - text: 75 points by + - link "anigbrowl" [ref=e383] [cursor=pointer]: + - /url: user?id=anigbrowl + - generic "2025-12-30T21:31:31 1767130291" [ref=e384]: + - link "8 hours ago" [ref=e385] [cursor=pointer]: + - /url: item?id=46438258 - text: "|" - link "hide" [ref=e386] [cursor=pointer]: - - /url: hide?id=46426614&goto=news + - /url: hide?id=46438258&goto=news - text: "|" - - link "5 comments" [ref=e387] [cursor=pointer]: - - /url: item?id=46426614 + - link "11 comments" [ref=e387] [cursor=pointer]: + - /url: item?id=46438258 - row [ref=e388] - - 'row "18. upvote Gershwin-desktop: OS X-like Desktop Environment based on GNUStep (github.com/gershwin-desktop)" [ref=e389]': + - row "18. upvote The suck is why we're here (nik.art)" [ref=e389]: - cell "18." [ref=e390] - cell "upvote" [ref=e391]: - link "upvote" [ref=e393] [cursor=pointer]: - - /url: vote?id=46484662&how=up&goto=news + - /url: vote?id=46482877&how=up&goto=news - generic "upvote" [ref=e394] - - 'cell "Gershwin-desktop: OS X-like Desktop Environment based on GNUStep (github.com/gershwin-desktop)" [ref=e395]': + - cell "The suck is why we're here (nik.art)" [ref=e395]: - generic [ref=e396]: - - 'link "Gershwin-desktop: OS X-like Desktop Environment based on GNUStep" [ref=e397] [cursor=pointer]': - - /url: https://github.com/gershwin-desktop/gershwin-desktop + - link "The suck is why we're here" [ref=e397] [cursor=pointer]: + - /url: https://nik.art/the-suck-is-why-were-here/ - generic [ref=e398]: - text: ( - - link "github.com/gershwin-desktop" [ref=e399] [cursor=pointer]: - - /url: from?site=github.com/gershwin-desktop + - link "nik.art" [ref=e399] [cursor=pointer]: + - /url: from?site=nik.art - text: ) - - row "31 points by rguiscard 6 hours ago | hide | 5 comments" [ref=e400]: + - row "361 points by herbertl 15 hours ago | hide | 212 comments" [ref=e400]: - cell [ref=e401] - - cell "31 points by rguiscard 6 hours ago | hide | 5 comments" [ref=e402]: + - cell "361 points by herbertl 15 hours ago | hide | 212 comments" [ref=e402]: - generic [ref=e403]: - - text: 31 points by - - link "rguiscard" [ref=e404] [cursor=pointer]: - - /url: user?id=rguiscard - - generic "2026-01-04T03:44:23 1767498263" [ref=e405]: - - link "6 hours ago" [ref=e406] [cursor=pointer]: - - /url: item?id=46484662 + - text: 361 points by + - link "herbertl" [ref=e404] [cursor=pointer]: + - /url: user?id=herbertl + - generic "2026-01-03T23:24:41 1767482681" [ref=e405]: + - link "15 hours ago" [ref=e406] [cursor=pointer]: + - /url: item?id=46482877 - text: "|" - link "hide" [ref=e407] [cursor=pointer]: - - /url: hide?id=46484662&goto=news + - /url: hide?id=46482877&goto=news - text: "|" - - link "5 comments" [ref=e408] [cursor=pointer]: - - /url: item?id=46484662 + - link "212 comments" [ref=e408] [cursor=pointer]: + - /url: item?id=46482877 - row [ref=e409] - - 'row "19. upvote Show HN: Replacing my OS process scheduler with an LLM (github.com/mprajyothreddy)" [ref=e410]': + - row "19. upvote Moiré Explorer (ertdfgcvb.xyz)" [ref=e410]: - cell "19." [ref=e411] - cell "upvote" [ref=e412]: - link "upvote" [ref=e414] [cursor=pointer]: - - /url: vote?id=46435142&how=up&goto=news + - /url: vote?id=46487472&how=up&goto=news - generic "upvote" [ref=e415] - - 'cell "Show HN: Replacing my OS process scheduler with an LLM (github.com/mprajyothreddy)" [ref=e416]': + - cell "Moiré Explorer (ertdfgcvb.xyz)" [ref=e416]: - generic [ref=e417]: - - 'link "Show HN: Replacing my OS process scheduler with an LLM" [ref=e418] [cursor=pointer]': - - /url: https://github.com/mprajyothreddy/brainkernel + - link "Moiré Explorer" [ref=e418] [cursor=pointer]: + - /url: https://play.ertdfgcvb.xyz/#/src/demos/moire_explorer - generic [ref=e419]: - text: ( - - link "github.com/mprajyothreddy" [ref=e420] [cursor=pointer]: - - /url: from?site=github.com/mprajyothreddy + - link "ertdfgcvb.xyz" [ref=e420] [cursor=pointer]: + - /url: from?site=ertdfgcvb.xyz - text: ) - - row "26 points by ImPrajyoth 5 hours ago | hide | 16 comments" [ref=e421]: + - row "9 points by Luc 2 hours ago | hide | 1 comment" [ref=e421]: - cell [ref=e422] - - cell "26 points by ImPrajyoth 5 hours ago | hide | 16 comments" [ref=e423]: + - cell "9 points by Luc 2 hours ago | hide | 1 comment" [ref=e423]: - generic [ref=e424]: - - text: 26 points by - - link "ImPrajyoth" [ref=e425] [cursor=pointer]: - - /url: user?id=ImPrajyoth - - generic "2025-12-30T16:47:37 1767113257" [ref=e426]: - - link "5 hours ago" [ref=e427] [cursor=pointer]: - - /url: item?id=46435142 + - text: 9 points by + - link "Luc" [ref=e425] [cursor=pointer]: + - /url: user?id=Luc + - generic "2026-01-04T12:54:20 1767531260" [ref=e426]: + - link "2 hours ago" [ref=e427] [cursor=pointer]: + - /url: item?id=46487472 - text: "|" - link "hide" [ref=e428] [cursor=pointer]: - - /url: hide?id=46435142&goto=news + - /url: hide?id=46487472&goto=news - text: "|" - - link "16 comments" [ref=e429] [cursor=pointer]: - - /url: item?id=46435142 + - link "1 comment" [ref=e429] [cursor=pointer]: + - /url: item?id=46487472 - row [ref=e430] - - row "20. upvote Ed25519-CLI – command-line interface for the Ed25519 signature system (cr.yp.to)" [ref=e431]: + - row "20. upvote Anatomy of BoltzGen (huggingface.co)" [ref=e431]: - cell "20." [ref=e432] - cell "upvote" [ref=e433]: - link "upvote" [ref=e435] [cursor=pointer]: - - /url: vote?id=46412070&how=up&goto=news + - /url: vote?id=46486681&how=up&goto=news - generic "upvote" [ref=e436] - - cell "Ed25519-CLI – command-line interface for the Ed25519 signature system (cr.yp.to)" [ref=e437]: + - cell "Anatomy of BoltzGen (huggingface.co)" [ref=e437]: - generic [ref=e438]: - - link "Ed25519-CLI – command-line interface for the Ed25519 signature system" [ref=e439] [cursor=pointer]: - - /url: https://lib25519.cr.yp.to/ed25519-cli.html + - link "Anatomy of BoltzGen" [ref=e439] [cursor=pointer]: + - /url: https://huggingface.co/spaces/ludocomito/anatomy-of-boltzgen - generic [ref=e440]: - text: ( - - link "cr.yp.to" [ref=e441] [cursor=pointer]: - - /url: from?site=cr.yp.to + - link "huggingface.co" [ref=e441] [cursor=pointer]: + - /url: from?site=huggingface.co - text: ) - - row "84 points by INGELRII 12 hours ago | hide | 39 comments" [ref=e442]: + - row "21 points by danielfalbo 4 hours ago | hide | 1 comment" [ref=e442]: - cell [ref=e443] - - cell "84 points by INGELRII 12 hours ago | hide | 39 comments" [ref=e444]: + - cell "21 points by danielfalbo 4 hours ago | hide | 1 comment" [ref=e444]: - generic [ref=e445]: - - text: 84 points by - - link "INGELRII" [ref=e446] [cursor=pointer]: - - /url: user?id=INGELRII - - generic "2025-12-28T16:12:11 1766938331" [ref=e447]: - - link "12 hours ago" [ref=e448] [cursor=pointer]: - - /url: item?id=46412070 + - text: 21 points by + - link "danielfalbo" [ref=e446] [cursor=pointer]: + - /url: user?id=danielfalbo + - generic "2026-01-04T10:28:49 1767522529" [ref=e447]: + - link "4 hours ago" [ref=e448] [cursor=pointer]: + - /url: item?id=46486681 - text: "|" - link "hide" [ref=e449] [cursor=pointer]: - - /url: hide?id=46412070&goto=news + - /url: hide?id=46486681&goto=news - text: "|" - - link "39 comments" [ref=e450] [cursor=pointer]: - - /url: item?id=46412070 + - link "1 comment" [ref=e450] [cursor=pointer]: + - /url: item?id=46486681 - row [ref=e451] - - row "21. upvote Finger-Nose Stylus for Touch Screens (2011) (variationsonnormal.com)" [ref=e452]: + - row "21. upvote Can I start using Wayland in 2026? (stapelberg.ch)" [ref=e452]: - cell "21." [ref=e453] - cell "upvote" [ref=e454]: - link "upvote" [ref=e456] [cursor=pointer]: - - /url: vote?id=46424807&how=up&goto=news + - /url: vote?id=46485989&how=up&goto=news - generic "upvote" [ref=e457] - - cell "Finger-Nose Stylus for Touch Screens (2011) (variationsonnormal.com)" [ref=e458]: + - cell "Can I start using Wayland in 2026? (stapelberg.ch)" [ref=e458]: - generic [ref=e459]: - - link "Finger-Nose Stylus for Touch Screens (2011)" [ref=e460] [cursor=pointer]: - - /url: https://variationsonnormal.com/2011/04/28/finger-nose-stylus-for-touchscreens/ + - link "Can I start using Wayland in 2026?" [ref=e460] [cursor=pointer]: + - /url: https://michael.stapelberg.ch/posts/2026-01-04-wayland-sway-in-2026/ - generic [ref=e461]: - text: ( - - link "variationsonnormal.com" [ref=e462] [cursor=pointer]: - - /url: from?site=variationsonnormal.com + - link "stapelberg.ch" [ref=e462] [cursor=pointer]: + - /url: from?site=stapelberg.ch - text: ) - - row "32 points by downboots 7 hours ago | hide | 14 comments" [ref=e463]: + - row "192 points by secure 6 hours ago | hide | 139 comments" [ref=e463]: - cell [ref=e464] - - cell "32 points by downboots 7 hours ago | hide | 14 comments" [ref=e465]: + - cell "192 points by secure 6 hours ago | hide | 139 comments" [ref=e465]: - generic [ref=e466]: - - text: 32 points by - - link "downboots" [ref=e467] [cursor=pointer]: - - /url: user?id=downboots - - generic "2025-12-29T19:59:44 1767038384" [ref=e468]: - - link "7 hours ago" [ref=e469] [cursor=pointer]: - - /url: item?id=46424807 + - text: 192 points by + - link "secure" [ref=e467] [cursor=pointer]: + - /url: user?id=secure + - generic "2026-01-04T08:11:22 1767514282" [ref=e468]: + - link "6 hours ago" [ref=e469] [cursor=pointer]: + - /url: item?id=46485989 - text: "|" - link "hide" [ref=e470] [cursor=pointer]: - - /url: hide?id=46424807&goto=news + - /url: hide?id=46485989&goto=news - text: "|" - - link "14 comments" [ref=e471] [cursor=pointer]: - - /url: item?id=46424807 + - link "139 comments" [ref=e471] [cursor=pointer]: + - /url: item?id=46485989 - row [ref=e472] - - row "22. upvote Pixoo Sign Client for Ruby (github.com/tenderlove)" [ref=e473]: + - 'row "22. upvote Swift on Android: Full Native App Development Now Possible (swifdroid.com)" [ref=e473]': - cell "22." [ref=e474] - cell "upvote" [ref=e475]: - link "upvote" [ref=e477] [cursor=pointer]: - - /url: vote?id=46485629&how=up&goto=news + - /url: vote?id=46483023&how=up&goto=news - generic "upvote" [ref=e478] - - cell "Pixoo Sign Client for Ruby (github.com/tenderlove)" [ref=e479]: + - 'cell "Swift on Android: Full Native App Development Now Possible (swifdroid.com)" [ref=e479]': - generic [ref=e480]: - - link "Pixoo Sign Client for Ruby" [ref=e481] [cursor=pointer]: - - /url: https://github.com/tenderlove/pixoo-rb + - 'link "Swift on Android: Full Native App Development Now Possible" [ref=e481] [cursor=pointer]': + - /url: https://docs.swifdroid.com/app/ - generic [ref=e482]: - text: ( - - link "github.com/tenderlove" [ref=e483] [cursor=pointer]: - - /url: from?site=github.com/tenderlove + - link "swifdroid.com" [ref=e483] [cursor=pointer]: + - /url: from?site=swifdroid.com - text: ) - - row "13 points by 0x54MUR41 3 hours ago | hide | 1 comment" [ref=e484]: + - row "249 points by mihael 15 hours ago | hide | 143 comments" [ref=e484]: - cell [ref=e485] - - cell "13 points by 0x54MUR41 3 hours ago | hide | 1 comment" [ref=e486]: + - cell "249 points by mihael 15 hours ago | hide | 143 comments" [ref=e486]: - generic [ref=e487]: - - text: 13 points by - - link "0x54MUR41" [ref=e488] [cursor=pointer]: - - /url: user?id=0x54MUR41 - - generic "2026-01-04T06:54:50 1767509690" [ref=e489]: - - link "3 hours ago" [ref=e490] [cursor=pointer]: - - /url: item?id=46485629 + - text: 249 points by + - link "mihael" [ref=e488] [cursor=pointer]: + - /url: user?id=mihael + - generic "2026-01-03T23:39:12 1767483552" [ref=e489]: + - link "15 hours ago" [ref=e490] [cursor=pointer]: + - /url: item?id=46483023 - text: "|" - link "hide" [ref=e491] [cursor=pointer]: - - /url: hide?id=46485629&goto=news + - /url: hide?id=46483023&goto=news - text: "|" - - link "1 comment" [ref=e492] [cursor=pointer]: - - /url: item?id=46485629 + - link "143 comments" [ref=e492] [cursor=pointer]: + - /url: item?id=46483023 - row [ref=e493] - - row "23. upvote Learning to Play Tic-Tac-Toe with Jax (joe-antognini.github.io)" [ref=e494]: + - 'row "23. upvote Gershwin-desktop: OS X-like Desktop Environment based on GNUStep (github.com/gershwin-desktop)" [ref=e494]': - cell "23." [ref=e495] - cell "upvote" [ref=e496]: - link "upvote" [ref=e498] [cursor=pointer]: - - /url: vote?id=46485130&how=up&goto=news + - /url: vote?id=46484662&how=up&goto=news - generic "upvote" [ref=e499] - - cell "Learning to Play Tic-Tac-Toe with Jax (joe-antognini.github.io)" [ref=e500]: + - 'cell "Gershwin-desktop: OS X-like Desktop Environment based on GNUStep (github.com/gershwin-desktop)" [ref=e500]': - generic [ref=e501]: - - link "Learning to Play Tic-Tac-Toe with Jax" [ref=e502] [cursor=pointer]: - - /url: https://joe-antognini.github.io/ml/jax-tic-tac-toe + - 'link "Gershwin-desktop: OS X-like Desktop Environment based on GNUStep" [ref=e502] [cursor=pointer]': + - /url: https://github.com/gershwin-desktop/gershwin-desktop - generic [ref=e503]: - text: ( - - link "joe-antognini.github.io" [ref=e504] [cursor=pointer]: - - /url: from?site=joe-antognini.github.io + - link "github.com/gershwin-desktop" [ref=e504] [cursor=pointer]: + - /url: from?site=github.com/gershwin-desktop - text: ) - - row "14 points by antognini 4 hours ago | hide | 2 comments" [ref=e505]: + - row "75 points by rguiscard 11 hours ago | hide | 18 comments" [ref=e505]: - cell [ref=e506] - - cell "14 points by antognini 4 hours ago | hide | 2 comments" [ref=e507]: + - cell "75 points by rguiscard 11 hours ago | hide | 18 comments" [ref=e507]: - generic [ref=e508]: - - text: 14 points by - - link "antognini" [ref=e509] [cursor=pointer]: - - /url: user?id=antognini - - generic "2026-01-04T05:09:47 1767503387" [ref=e510]: - - link "4 hours ago" [ref=e511] [cursor=pointer]: - - /url: item?id=46485130 + - text: 75 points by + - link "rguiscard" [ref=e509] [cursor=pointer]: + - /url: user?id=rguiscard + - generic "2026-01-04T03:44:23 1767498263" [ref=e510]: + - link "11 hours ago" [ref=e511] [cursor=pointer]: + - /url: item?id=46484662 - text: "|" - link "hide" [ref=e512] [cursor=pointer]: - - /url: hide?id=46485130&goto=news + - /url: hide?id=46484662&goto=news - text: "|" - - link "2 comments" [ref=e513] [cursor=pointer]: - - /url: item?id=46485130 + - link "18 comments" [ref=e513] [cursor=pointer]: + - /url: item?id=46484662 - row [ref=e514] - - row "24. upvote The Great Gatsby is the most misunderstood novel (2021) (bbc.com)" [ref=e515]: + - row "24. upvote A New Year's letter to a young person (siliconcontinent.com)" [ref=e515]: - cell "24." [ref=e516] - cell "upvote" [ref=e517]: - link "upvote" [ref=e519] [cursor=pointer]: - - /url: vote?id=46483729&how=up&goto=news + - /url: vote?id=46487276&how=up&goto=news - generic "upvote" [ref=e520] - - cell "The Great Gatsby is the most misunderstood novel (2021) (bbc.com)" [ref=e521]: + - cell "A New Year's letter to a young person (siliconcontinent.com)" [ref=e521]: - generic [ref=e522]: - - link "The Great Gatsby is the most misunderstood novel (2021)" [ref=e523] [cursor=pointer]: - - /url: https://www.bbc.com/culture/article/20210209-the-worlds-most-misunderstood-novel + - link "A New Year's letter to a young person" [ref=e523] [cursor=pointer]: + - /url: https://www.siliconcontinent.com/p/a-new-years-letter-to-a-young-person - generic [ref=e524]: - text: ( - - link "bbc.com" [ref=e525] [cursor=pointer]: - - /url: from?site=bbc.com + - link "siliconcontinent.com" [ref=e525] [cursor=pointer]: + - /url: from?site=siliconcontinent.com - text: ) - - row "63 points by 1659447091 8 hours ago | hide | 102 comments" [ref=e526]: + - row "4 points by jger15 2 hours ago | hide | discuss" [ref=e526]: - cell [ref=e527] - - cell "63 points by 1659447091 8 hours ago | hide | 102 comments" [ref=e528]: + - cell "4 points by jger15 2 hours ago | hide | discuss" [ref=e528]: - generic [ref=e529]: - - text: 63 points by - - link "1659447091" [ref=e530] [cursor=pointer]: - - /url: user?id=1659447091 - - generic "2026-01-04T01:15:15 1767489315" [ref=e531]: - - link "8 hours ago" [ref=e532] [cursor=pointer]: - - /url: item?id=46483729 + - text: 4 points by + - link "jger15" [ref=e530] [cursor=pointer]: + - /url: user?id=jger15 + - generic "2026-01-04T12:20:19 1767529219" [ref=e531]: + - link "2 hours ago" [ref=e532] [cursor=pointer]: + - /url: item?id=46487276 - text: "|" - link "hide" [ref=e533] [cursor=pointer]: - - /url: hide?id=46483729&goto=news + - /url: hide?id=46487276&goto=news - text: "|" - - link "102 comments" [ref=e534] [cursor=pointer]: - - /url: item?id=46483729 + - link "discuss" [ref=e534] [cursor=pointer]: + - /url: item?id=46487276 - row [ref=e535] - - row "25. upvote The C3 Programming Language (c3-lang.org)" [ref=e536]: + - row "25. upvote KDE onboarding is good now (rabbitictranslator.com)" [ref=e536]: - cell "25." [ref=e537] - cell "upvote" [ref=e538]: - link "upvote" [ref=e540] [cursor=pointer]: - - /url: vote?id=46478647&how=up&goto=news + - /url: vote?id=46483432&how=up&goto=news - generic "upvote" [ref=e541] - - cell "The C3 Programming Language (c3-lang.org)" [ref=e542]: + - cell "KDE onboarding is good now (rabbitictranslator.com)" [ref=e542]: - generic [ref=e543]: - - link "The C3 Programming Language" [ref=e544] [cursor=pointer]: - - /url: https://c3-lang.org + - link "KDE onboarding is good now" [ref=e544] [cursor=pointer]: + - /url: https://rabbitictranslator.com/kde-onboarding/ - generic [ref=e545]: - text: ( - - link "c3-lang.org" [ref=e546] [cursor=pointer]: - - /url: from?site=c3-lang.org + - link "rabbitictranslator.com" [ref=e546] [cursor=pointer]: + - /url: from?site=rabbitictranslator.com - text: ) - - row "337 points by y1n0 17 hours ago | hide | 207 comments" [ref=e547]: + - row "146 points by todsacerdoti 14 hours ago | hide | 97 comments" [ref=e547]: - cell [ref=e548] - - cell "337 points by y1n0 17 hours ago | hide | 207 comments" [ref=e549]: + - cell "146 points by todsacerdoti 14 hours ago | hide | 97 comments" [ref=e549]: - generic [ref=e550]: - - text: 337 points by - - link "y1n0" [ref=e551] [cursor=pointer]: - - /url: user?id=y1n0 - - generic "2026-01-03T16:41:06 1767458466" [ref=e552]: - - link "17 hours ago" [ref=e553] [cursor=pointer]: - - /url: item?id=46478647 + - text: 146 points by + - link "todsacerdoti" [ref=e551] [cursor=pointer]: + - /url: user?id=todsacerdoti + - generic "2026-01-04T00:31:42 1767486702" [ref=e552]: + - link "14 hours ago" [ref=e553] [cursor=pointer]: + - /url: item?id=46483432 - text: "|" - link "hide" [ref=e554] [cursor=pointer]: - - /url: hide?id=46478647&goto=news + - /url: hide?id=46483432&goto=news - text: "|" - - link "207 comments" [ref=e555] [cursor=pointer]: - - /url: item?id=46478647 + - link "97 comments" [ref=e555] [cursor=pointer]: + - /url: item?id=46483432 - row [ref=e556] - - row "26. upvote Developing a BLAS Library for the AMD AI Engine [pdf] (tlaan.nl)" [ref=e557]: + - 'row "26. upvote Show HN: Replacing my OS process scheduler with an LLM (github.com/mprajyothreddy)" [ref=e557]': - cell "26." [ref=e558] - cell "upvote" [ref=e559]: - link "upvote" [ref=e561] [cursor=pointer]: - - /url: vote?id=46483811&how=up&goto=news + - /url: vote?id=46435142&how=up&goto=news - generic "upvote" [ref=e562] - - cell "Developing a BLAS Library for the AMD AI Engine [pdf] (tlaan.nl)" [ref=e563]: + - 'cell "Show HN: Replacing my OS process scheduler with an LLM (github.com/mprajyothreddy)" [ref=e563]': - generic [ref=e564]: - - link "Developing a BLAS Library for the AMD AI Engine [pdf]" [ref=e565] [cursor=pointer]: - - /url: https://uni.tlaan.nl/thesis/msc_thesis_tristan_laan_aieblas.pdf + - 'link "Show HN: Replacing my OS process scheduler with an LLM" [ref=e565] [cursor=pointer]': + - /url: https://github.com/mprajyothreddy/brainkernel - generic [ref=e566]: - text: ( - - link "tlaan.nl" [ref=e567] [cursor=pointer]: - - /url: from?site=tlaan.nl + - link "github.com/mprajyothreddy" [ref=e567] [cursor=pointer]: + - /url: from?site=github.com/mprajyothreddy - text: ) - - row "36 points by teleforce 8 hours ago | hide | 9 comments" [ref=e568]: + - row "58 points by ImPrajyoth 10 hours ago | hide | 32 comments" [ref=e568]: - cell [ref=e569] - - cell "36 points by teleforce 8 hours ago | hide | 9 comments" [ref=e570]: + - cell "58 points by ImPrajyoth 10 hours ago | hide | 32 comments" [ref=e570]: - generic [ref=e571]: - - text: 36 points by - - link "teleforce" [ref=e572] [cursor=pointer]: - - /url: user?id=teleforce - - generic "2026-01-04T01:26:39 1767489999" [ref=e573]: - - link "8 hours ago" [ref=e574] [cursor=pointer]: - - /url: item?id=46483811 + - text: 58 points by + - link "ImPrajyoth" [ref=e572] [cursor=pointer]: + - /url: user?id=ImPrajyoth + - generic "2025-12-30T16:47:37 1767113257" [ref=e573]: + - link "10 hours ago" [ref=e574] [cursor=pointer]: + - /url: item?id=46435142 - text: "|" - link "hide" [ref=e575] [cursor=pointer]: - - /url: hide?id=46483811&goto=news + - /url: hide?id=46435142&goto=news - text: "|" - - link "9 comments" [ref=e576] [cursor=pointer]: - - /url: item?id=46483811 + - link "32 comments" [ref=e576] [cursor=pointer]: + - /url: item?id=46435142 - row [ref=e577] - - row "27. upvote Take One Small Step (thinkhuman.com)" [ref=e578]: + - row "27. upvote MyTorch – Minimalist autograd in 450 lines of Python (github.com/obround)" [ref=e578]: - cell "27." [ref=e579] - cell "upvote" [ref=e580]: - link "upvote" [ref=e582] [cursor=pointer]: - - /url: vote?id=46482107&how=up&goto=news + - /url: vote?id=46483776&how=up&goto=news - generic "upvote" [ref=e583] - - cell "Take One Small Step (thinkhuman.com)" [ref=e584]: + - cell "MyTorch – Minimalist autograd in 450 lines of Python (github.com/obround)" [ref=e584]: - generic [ref=e585]: - - link "Take One Small Step" [ref=e586] [cursor=pointer]: - - /url: https://thinkhuman.com/take-one-small-step/ + - link "MyTorch – Minimalist autograd in 450 lines of Python" [ref=e586] [cursor=pointer]: + - /url: https://github.com/obround/mytorch - generic [ref=e587]: - text: ( - - link "thinkhuman.com" [ref=e588] [cursor=pointer]: - - /url: from?site=thinkhuman.com + - link "github.com/obround" [ref=e588] [cursor=pointer]: + - /url: from?site=github.com/obround - text: ) - - row "94 points by jamesgill 12 hours ago | hide | 21 comments" [ref=e589]: + - row "87 points by iguana2000 13 hours ago | hide | 15 comments" [ref=e589]: - cell [ref=e590] - - cell "94 points by jamesgill 12 hours ago | hide | 21 comments" [ref=e591]: + - cell "87 points by iguana2000 13 hours ago | hide | 15 comments" [ref=e591]: - generic [ref=e592]: - - text: 94 points by - - link "jamesgill" [ref=e593] [cursor=pointer]: - - /url: user?id=jamesgill - - generic "2026-01-03T21:58:30 1767477510" [ref=e594]: - - link "12 hours ago" [ref=e595] [cursor=pointer]: - - /url: item?id=46482107 + - text: 87 points by + - link "iguana2000" [ref=e593] [cursor=pointer]: + - /url: user?id=iguana2000 + - generic "2026-01-04T01:21:56 1767489716" [ref=e594]: + - link "13 hours ago" [ref=e595] [cursor=pointer]: + - /url: item?id=46483776 - text: "|" - link "hide" [ref=e596] [cursor=pointer]: - - /url: hide?id=46482107&goto=news + - /url: hide?id=46483776&goto=news - text: "|" - - link "21 comments" [ref=e597] [cursor=pointer]: - - /url: item?id=46482107 + - link "15 comments" [ref=e597] [cursor=pointer]: + - /url: item?id=46483776 - row [ref=e598] - - row "28. upvote Scaling Latent Reasoning via Looped Language Models (arxiv.org)" [ref=e599]: + - row "28. upvote Pixoo Sign Client for Ruby (github.com/tenderlove)" [ref=e599]: - cell "28." [ref=e600] - cell "upvote" [ref=e601]: - link "upvote" [ref=e603] [cursor=pointer]: - - /url: vote?id=46481849&how=up&goto=news + - /url: vote?id=46485629&how=up&goto=news - generic "upvote" [ref=e604] - - cell "Scaling Latent Reasoning via Looped Language Models (arxiv.org)" [ref=e605]: + - cell "Pixoo Sign Client for Ruby (github.com/tenderlove)" [ref=e605]: - generic [ref=e606]: - - link "Scaling Latent Reasoning via Looped Language Models" [ref=e607] [cursor=pointer]: - - /url: https://arxiv.org/abs/2510.25741 + - link "Pixoo Sign Client for Ruby" [ref=e607] [cursor=pointer]: + - /url: https://github.com/tenderlove/pixoo-rb - generic [ref=e608]: - text: ( - - link "arxiv.org" [ref=e609] [cursor=pointer]: - - /url: from?site=arxiv.org + - link "github.com/tenderlove" [ref=e609] [cursor=pointer]: + - /url: from?site=github.com/tenderlove - text: ) - - row "65 points by remexre 12 hours ago | hide | 10 comments" [ref=e610]: + - row "38 points by 0x54MUR41 8 hours ago | hide | 4 comments" [ref=e610]: - cell [ref=e611] - - cell "65 points by remexre 12 hours ago | hide | 10 comments" [ref=e612]: + - cell "38 points by 0x54MUR41 8 hours ago | hide | 4 comments" [ref=e612]: - generic [ref=e613]: - - text: 65 points by - - link "remexre" [ref=e614] [cursor=pointer]: - - /url: user?id=remexre - - generic "2026-01-03T21:34:33 1767476073" [ref=e615]: - - link "12 hours ago" [ref=e616] [cursor=pointer]: - - /url: item?id=46481849 + - text: 38 points by + - link "0x54MUR41" [ref=e614] [cursor=pointer]: + - /url: user?id=0x54MUR41 + - generic "2026-01-04T06:54:50 1767509690" [ref=e615]: + - link "8 hours ago" [ref=e616] [cursor=pointer]: + - /url: item?id=46485629 - text: "|" - link "hide" [ref=e617] [cursor=pointer]: - - /url: hide?id=46481849&goto=news + - /url: hide?id=46485629&goto=news - text: "|" - - link "10 comments" [ref=e618] [cursor=pointer]: - - /url: item?id=46481849 + - link "4 comments" [ref=e618] [cursor=pointer]: + - /url: item?id=46485629 - row [ref=e619] - - row "29. upvote Xr0 verifier, guarantee the safety of C programs at compile time (xr0.dev)" [ref=e620]: + - 'row "29. upvote Show HN: Claude Reflect – Auto-turn Claude corrections into project config (github.com/bayramannakov)" [ref=e620]': - cell "29." [ref=e621] - cell "upvote" [ref=e622]: - link "upvote" [ref=e624] [cursor=pointer]: - - /url: vote?id=46479673&how=up&goto=news + - /url: vote?id=46484933&how=up&goto=news - generic "upvote" [ref=e625] - - cell "Xr0 verifier, guarantee the safety of C programs at compile time (xr0.dev)" [ref=e626]: + - 'cell "Show HN: Claude Reflect – Auto-turn Claude corrections into project config (github.com/bayramannakov)" [ref=e626]': - generic [ref=e627]: - - link "Xr0 verifier, guarantee the safety of C programs at compile time" [ref=e628] [cursor=pointer]: - - /url: https://xr0.dev + - 'link "Show HN: Claude Reflect – Auto-turn Claude corrections into project config" [ref=e628] [cursor=pointer]': + - /url: https://github.com/BayramAnnakov/claude-reflect - generic [ref=e629]: - text: ( - - link "xr0.dev" [ref=e630] [cursor=pointer]: - - /url: from?site=xr0.dev + - link "github.com/bayramannakov" [ref=e630] [cursor=pointer]: + - /url: from?site=github.com/bayramannakov - text: ) - - row "90 points by Alifatisk 15 hours ago | hide | 28 comments" [ref=e631]: + - row "52 points by Bayram 10 hours ago | hide | 18 comments" [ref=e631]: - cell [ref=e632] - - cell "90 points by Alifatisk 15 hours ago | hide | 28 comments" [ref=e633]: + - cell "52 points by Bayram 10 hours ago | hide | 18 comments" [ref=e633]: - generic [ref=e634]: - - text: 90 points by - - link "Alifatisk" [ref=e635] [cursor=pointer]: - - /url: user?id=Alifatisk - - generic "2026-01-03T18:10:21 1767463821" [ref=e636]: - - link "15 hours ago" [ref=e637] [cursor=pointer]: - - /url: item?id=46479673 + - text: 52 points by + - link "Bayram" [ref=e635] [cursor=pointer]: + - /url: user?id=Bayram + - generic "2026-01-04T04:31:11 1767501071" [ref=e636]: + - link "10 hours ago" [ref=e637] [cursor=pointer]: + - /url: item?id=46484933 - text: "|" - link "hide" [ref=e638] [cursor=pointer]: - - /url: hide?id=46479673&goto=news + - /url: hide?id=46484933&goto=news - text: "|" - - link "28 comments" [ref=e639] [cursor=pointer]: - - /url: item?id=46479673 + - link "18 comments" [ref=e639] [cursor=pointer]: + - /url: item?id=46484933 - row [ref=e640] - - row "30. upvote The Riven Diffs – Seeing Riven (1997) Differently (glthr.com)" [ref=e641]: + - row "30. upvote How Thomas Mann Wrote the Magic Mountain (theguardian.com)" [ref=e641]: - cell "30." [ref=e642] - cell "upvote" [ref=e643]: - link "upvote" [ref=e645] [cursor=pointer]: - - /url: vote?id=46482642&how=up&goto=news + - /url: vote?id=46484104&how=up&goto=news - generic "upvote" [ref=e646] - - cell "The Riven Diffs – Seeing Riven (1997) Differently (glthr.com)" [ref=e647]: + - cell "How Thomas Mann Wrote the Magic Mountain (theguardian.com)" [ref=e647]: - generic [ref=e648]: - - link "The Riven Diffs – Seeing Riven (1997) Differently" [ref=e649] [cursor=pointer]: - - /url: https://glthr.com/the-riven-diffs-1 + - link "How Thomas Mann Wrote the Magic Mountain" [ref=e649] [cursor=pointer]: + - /url: https://www.theguardian.com/books/2025/dec/31/the-master-of-contradictions-by-morten-hi-jensen-review-how-thomas-mann-wrote-the-magic-mountain - generic [ref=e650]: - text: ( - - link "glthr.com" [ref=e651] [cursor=pointer]: - - /url: from?site=glthr.com + - link "theguardian.com" [ref=e651] [cursor=pointer]: + - /url: from?site=theguardian.com - text: ) - - row "73 points by glth 11 hours ago | hide | 8 comments" [ref=e652]: + - row "76 points by Caiero 12 hours ago | hide | 27 comments" [ref=e652]: - cell [ref=e653] - - cell "73 points by glth 11 hours ago | hide | 8 comments" [ref=e654]: + - cell "76 points by Caiero 12 hours ago | hide | 27 comments" [ref=e654]: - generic [ref=e655]: - - text: 73 points by - - link "glth" [ref=e656] [cursor=pointer]: - - /url: user?id=glth - - generic "2026-01-03T23:01:57 1767481317" [ref=e657]: - - link "11 hours ago" [ref=e658] [cursor=pointer]: - - /url: item?id=46482642 + - text: 76 points by + - link "Caiero" [ref=e656] [cursor=pointer]: + - /url: user?id=Caiero + - generic "2026-01-04T02:13:23 1767492803" [ref=e657]: + - link "12 hours ago" [ref=e658] [cursor=pointer]: + - /url: item?id=46484104 - text: "|" - link "hide" [ref=e659] [cursor=pointer]: - - /url: hide?id=46482642&goto=news + - /url: hide?id=46484104&goto=news - text: "|" - - link "8 comments" [ref=e660] [cursor=pointer]: - - /url: item?id=46482642 + - link "27 comments" [ref=e660] [cursor=pointer]: + - /url: item?id=46484104 - row [ref=e661] - row [ref=e662] - row "More" [ref=e663]: