add role-based color coding for aria ref labels

Color legend:
- Blue: links
- Green: buttons
- Orange: text inputs (textbox, combobox, searchbox)
- Purple: checkboxes, radios, switches
- Teal: sliders
- Pink: menu items
- Indigo: tabs, options
- Yellow: default/unknown

Also gitignore png screenshots in assets/
This commit is contained in:
Tommy D. Rossi
2026-01-03 15:31:00 +01:00
parent a31812be8d
commit d9783b15be
7 changed files with 317 additions and 267 deletions
+1
View File
@@ -8,3 +8,4 @@ coverage
*.zip
*.log
tmp
playwriter/src/assets/*.png
+56 -7
View File
@@ -37,6 +37,37 @@ const INTERACTIVE_ROLES = new Set([
'treeitem',
])
// Color categories for different role types (light backgrounds with good contrast for black text)
// Format: [gradient-top, gradient-bottom, border]
const ROLE_COLORS: Record<string, [string, string, string]> = {
// Links - light blue
link: ['#B3E5FC', '#81D4FA', '#4FC3F7'],
// Buttons - light green
button: ['#C8E6C9', '#A5D6A7', '#81C784'],
// Text inputs - light orange
textbox: ['#FFE0B2', '#FFCC80', '#FFB74D'],
combobox: ['#FFE0B2', '#FFCC80', '#FFB74D'],
searchbox: ['#FFE0B2', '#FFCC80', '#FFB74D'],
spinbutton: ['#FFE0B2', '#FFCC80', '#FFB74D'],
// Checkboxes/Radios/Switches - light purple
checkbox: ['#E1BEE7', '#CE93D8', '#BA68C8'],
radio: ['#E1BEE7', '#CE93D8', '#BA68C8'],
switch: ['#E1BEE7', '#CE93D8', '#BA68C8'],
// Sliders - light teal
slider: ['#B2DFDB', '#80CBC4', '#4DB6AC'],
// Menu items - light pink
menuitem: ['#F8BBD9', '#F48FB1', '#F06292'],
menuitemcheckbox: ['#F8BBD9', '#F48FB1', '#F06292'],
menuitemradio: ['#F8BBD9', '#F48FB1', '#F06292'],
// Tabs/Options - light indigo
tab: ['#C5CAE9', '#9FA8DA', '#7986CB'],
option: ['#C5CAE9', '#9FA8DA', '#7986CB'],
treeitem: ['#C5CAE9', '#9FA8DA', '#7986CB'],
}
// Default yellow for unknown roles
const DEFAULT_COLORS: [string, string, string] = ['#FFF785', '#FFC542', '#E3BE23']
// Use String.raw for CSS syntax highlighting in editors
const css = String.raw
@@ -45,8 +76,6 @@ const LABEL_STYLES = css`
position: absolute;
font: bold 11px Helvetica, Arial, sans-serif;
padding: 1px 4px;
background: linear-gradient(to bottom, #FFF785 0%, #FFC542 100%);
border: 1px solid #E3BE23;
border-radius: 3px;
color: black;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6);
@@ -197,15 +226,28 @@ export async function showAriaRefLabels({ page, interactiveOnly = true }: {
})
: refHandles
// Build refs with role info for color coding
const refsWithRoles = filteredRefs.map(({ ref, handle }) => ({
ref,
element: handle,
role: refToElement.get(ref)?.role || 'generic',
}))
// Single evaluate call: create container, styles, and all labels
// ElementHandles get unwrapped to DOM elements in browser context
// Using 'any' types here since this code runs in browser context
const labelCount = await page.evaluate(
({ refs, containerId, containerStyles, labelStyles }: {
refs: Array<{ ref: string; element: { getBoundingClientRect(): { width: number; height: number; left: number; top: number; right: number; bottom: number } } }>
({ refs, containerId, containerStyles, labelStyles, roleColors, defaultColors }: {
refs: Array<{
ref: string
role: string
element: { getBoundingClientRect(): { width: number; height: number; left: number; top: number; right: number; bottom: number } }
}>
containerId: string
containerStyles: string
labelStyles: string
roleColors: Record<string, [string, string, string]>
defaultColors: [string, string, string]
}) => {
const doc = (globalThis as any).document
const win = globalThis as any
@@ -218,7 +260,7 @@ export async function showAriaRefLabels({ page, interactiveOnly = true }: {
container.id = containerId
container.style.cssText = containerStyles
// Inject Vimium-style CSS
// Inject base label CSS
const style = doc.createElement('style')
style.textContent = labelStyles
container.appendChild(style)
@@ -241,7 +283,7 @@ export async function showAriaRefLabels({ page, interactiveOnly = true }: {
// Create label for each interactive element
let count = 0
for (const { ref, element } of refs) {
for (const { ref, role, element } of refs) {
const rect = element.getBoundingClientRect()
// Skip elements with no size (hidden)
@@ -266,10 +308,15 @@ export async function showAriaRefLabels({ page, interactiveOnly = true }: {
continue
}
// Get colors for this role
const [gradTop, gradBottom, border] = roleColors[role] || defaultColors
// Place the label
const label = doc.createElement('div')
label.className = '__pw_label__'
label.textContent = ref
label.style.background = `linear-gradient(to bottom, ${gradTop} 0%, ${gradBottom} 100%)`
label.style.border = `1px solid ${border}`
// Position above element, accounting for scroll
label.style.left = `${win.scrollX + labelLeft}px`
@@ -284,10 +331,12 @@ export async function showAriaRefLabels({ page, interactiveOnly = true }: {
return count
},
{
refs: filteredRefs.map(({ ref, handle }) => ({ ref, element: handle })),
refs: refsWithRoles.map(({ ref, role, element }) => ({ ref, role, element })),
containerId: LABELS_CONTAINER_ID,
containerStyles: CONTAINER_STYLES,
labelStyles: LABEL_STYLES,
roleColors: ROLE_COLORS,
defaultColors: DEFAULT_COLORS,
}
)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

@@ -31,7 +31,7 @@
- generic [ref=e55]:
- text: "Google offered in:"
- link [ref=e56] [cursor=pointer]:
- /url: https://www.google.com/setprefs?sig=0_uKW2_iLdDvITPr98P8jjLIgrMiY%3D&hl=it&source=homepage&sa=X&ved=0ahUKEwjeh4Llye-RAxVrJNAFHaspBugQ2ZgBCBU
- /url: https://www.google.com/setprefs?sig=0_9hKalRtXzD5AWtzEh3KSYnYsv7w%3D&hl=it&source=homepage&sa=X&ved=0ahUKEwjUxd_Qyu-RAxUqwskDHd_ZFnQQ2ZgBCBU
- text: Italiano
- contentinfo [ref=e58]:
- generic [ref=e59]: Italy
Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

@@ -56,11 +56,11 @@
- link "indieweb.org" [ref=e42] [cursor=pointer]:
- /url: from?site=indieweb.org
- text: )
- row "780 points by 47thpresident 18 hours ago | hide | 182 comments" [ref=e43]:
- row "781 points by 47thpresident 18 hours ago | hide | 182 comments" [ref=e43]:
- cell [ref=e44]
- cell "780 points by 47thpresident 18 hours ago | hide | 182 comments" [ref=e45]:
- cell "781 points by 47thpresident 18 hours ago | hide | 182 comments" [ref=e45]:
- generic [ref=e46]:
- text: 780 points by
- text: 781 points by
- link "47thpresident" [ref=e47] [cursor=pointer]:
- /url: user?id=47thpresident
- generic "2026-01-02T19:48:25 1767383305" [ref=e48]:
@@ -73,69 +73,69 @@
- link "182 comments" [ref=e51] [cursor=pointer]:
- /url: item?id=46468600
- row [ref=e52]
- row "2. upvote Trump says Venezuelas Maduro captured after strikes (reuters.com)" [ref=e53]:
- row "2. upvote Daft Punk Easter Egg in the BPM Tempo of Harder, Better, Faster, Stronger? (madebywindmill.com)" [ref=e53]:
- cell "2." [ref=e54]
- cell "upvote" [ref=e55]:
- link "upvote" [ref=e57] [cursor=pointer]:
- /url: vote?id=46473348&how=up&goto=news
- /url: vote?id=46469577&how=up&goto=news
- generic "upvote" [ref=e58]
- cell "Trump says Venezuelas Maduro captured after strikes (reuters.com)" [ref=e59]:
- cell "Daft Punk Easter Egg in the BPM Tempo of Harder, Better, Faster, Stronger? (madebywindmill.com)" [ref=e59]:
- generic [ref=e60]:
- link "Trump says Venezuelas Maduro captured after strikes" [ref=e61] [cursor=pointer]:
- /url: https://www.reuters.com/world/americas/loud-noises-heard-venezuela-capital-southern-area-without-electricity-2026-01-03/
- link "Daft Punk Easter Egg in the BPM Tempo of Harder, Better, Faster, Stronger?" [ref=e61] [cursor=pointer]:
- /url: https://www.madebywindmill.com/tempi/blog/hbfs-bpm/
- generic [ref=e62]:
- text: (
- link "reuters.com" [ref=e63] [cursor=pointer]:
- /url: from?site=reuters.com
- link "madebywindmill.com" [ref=e63] [cursor=pointer]:
- /url: from?site=madebywindmill.com
- text: )
- row "547 points by jumpocelot 7 hours ago | hide | 1254 comments" [ref=e64]:
- row "578 points by simonw 17 hours ago | hide | 96 comments" [ref=e64]:
- cell [ref=e65]
- cell "547 points by jumpocelot 7 hours ago | hide | 1254 comments" [ref=e66]:
- cell "578 points by simonw 17 hours ago | hide | 96 comments" [ref=e66]:
- generic [ref=e67]:
- text: 547 points by
- link "jumpocelot" [ref=e68] [cursor=pointer]:
- /url: user?id=jumpocelot
- generic "2026-01-03T06:35:21 1767422121" [ref=e69]:
- link "7 hours ago" [ref=e70] [cursor=pointer]:
- /url: item?id=46473348
- text: 578 points by
- link "simonw" [ref=e68] [cursor=pointer]:
- /url: user?id=simonw
- generic "2026-01-02T21:27:44 1767389264" [ref=e69]:
- link "17 hours ago" [ref=e70] [cursor=pointer]:
- /url: item?id=46469577
- text: "|"
- link "hide" [ref=e71] [cursor=pointer]:
- /url: hide?id=46473348&goto=news
- /url: hide?id=46469577&goto=news
- text: "|"
- link "1254 comments" [ref=e72] [cursor=pointer]:
- /url: item?id=46473348
- link "96 comments" [ref=e72] [cursor=pointer]:
- /url: item?id=46469577
- row [ref=e73]
- row "3. upvote Daft Punk Easter Egg in the BPM Tempo of Harder, Better, Faster, Stronger? (madebywindmill.com)" [ref=e74]:
- row "3. upvote Trump says Venezuelas Maduro captured after strikes (reuters.com)" [ref=e74]:
- cell "3." [ref=e75]
- cell "upvote" [ref=e76]:
- link "upvote" [ref=e78] [cursor=pointer]:
- /url: vote?id=46469577&how=up&goto=news
- /url: vote?id=46473348&how=up&goto=news
- generic "upvote" [ref=e79]
- cell "Daft Punk Easter Egg in the BPM Tempo of Harder, Better, Faster, Stronger? (madebywindmill.com)" [ref=e80]:
- cell "Trump says Venezuelas Maduro captured after strikes (reuters.com)" [ref=e80]:
- generic [ref=e81]:
- link "Daft Punk Easter Egg in the BPM Tempo of Harder, Better, Faster, Stronger?" [ref=e82] [cursor=pointer]:
- /url: https://www.madebywindmill.com/tempi/blog/hbfs-bpm/
- link "Trump says Venezuelas Maduro captured after strikes" [ref=e82] [cursor=pointer]:
- /url: https://www.reuters.com/world/americas/loud-noises-heard-venezuela-capital-southern-area-without-electricity-2026-01-03/
- generic [ref=e83]:
- text: (
- link "madebywindmill.com" [ref=e84] [cursor=pointer]:
- /url: from?site=madebywindmill.com
- link "reuters.com" [ref=e84] [cursor=pointer]:
- /url: from?site=reuters.com
- text: )
- row "577 points by simonw 16 hours ago | hide | 96 comments" [ref=e85]:
- row "553 points by jumpocelot 7 hours ago | hide | 1264 comments" [ref=e85]:
- cell [ref=e86]
- cell "577 points by simonw 16 hours ago | hide | 96 comments" [ref=e87]:
- cell "553 points by jumpocelot 7 hours ago | hide | 1264 comments" [ref=e87]:
- generic [ref=e88]:
- text: 577 points by
- link "simonw" [ref=e89] [cursor=pointer]:
- /url: user?id=simonw
- generic "2026-01-02T21:27:44 1767389264" [ref=e90]:
- link "16 hours ago" [ref=e91] [cursor=pointer]:
- /url: item?id=46469577
- text: 553 points by
- link "jumpocelot" [ref=e89] [cursor=pointer]:
- /url: user?id=jumpocelot
- generic "2026-01-03T06:35:21 1767422121" [ref=e90]:
- link "7 hours ago" [ref=e91] [cursor=pointer]:
- /url: item?id=46473348
- text: "|"
- link "hide" [ref=e92] [cursor=pointer]:
- /url: hide?id=46469577&goto=news
- /url: hide?id=46473348&goto=news
- text: "|"
- link "96 comments" [ref=e93] [cursor=pointer]:
- /url: item?id=46469577
- link "1264 comments" [ref=e93] [cursor=pointer]:
- /url: item?id=46473348
- row [ref=e94]
- 'row "4. upvote Of Boot Vectors and Double Glitches: Bypassing RP2350''s Secure Boot (ccc.de)" [ref=e95]':
- cell "4." [ref=e96]
@@ -184,9 +184,9 @@
- link "theregister.com" [ref=e126] [cursor=pointer]:
- /url: from?site=theregister.com
- text: )
- row "424 points by Brajeshwar 23 hours ago | hide | 846 comments" [ref=e127]:
- row "424 points by Brajeshwar 23 hours ago | hide | 847 comments" [ref=e127]:
- cell [ref=e128]
- cell "424 points by Brajeshwar 23 hours ago | hide | 846 comments" [ref=e129]:
- cell "424 points by Brajeshwar 23 hours ago | hide | 847 comments" [ref=e129]:
- generic [ref=e130]:
- text: 424 points by
- link "Brajeshwar" [ref=e131] [cursor=pointer]:
@@ -198,7 +198,7 @@
- link "hide" [ref=e134] [cursor=pointer]:
- /url: hide?id=46465327&goto=news
- text: "|"
- link "846 comments" [ref=e135] [cursor=pointer]:
- link "847 comments" [ref=e135] [cursor=pointer]:
- /url: item?id=46465327
- row [ref=e136]
- row "6. ParadeDB (YC S23) Is Hiring Database Engineers (paradedb.notion.site)" [ref=e137]:
@@ -214,11 +214,11 @@
- link "paradedb.notion.site" [ref=e145] [cursor=pointer]:
- /url: from?site=paradedb.notion.site
- text: )
- row "32 minutes ago | hide" [ref=e146]:
- row "34 minutes ago | hide" [ref=e146]:
- cell [ref=e147]
- cell "32 minutes ago | hide" [ref=e148]:
- cell "34 minutes ago | hide" [ref=e148]:
- generic "2026-01-03T13:53:34 1767448414" [ref=e149]:
- link "32 minutes ago" [ref=e150] [cursor=pointer]:
- link "34 minutes ago" [ref=e150] [cursor=pointer]:
- /url: item?id=46476636
- text: "|"
- link "hide" [ref=e151] [cursor=pointer]:
@@ -239,9 +239,9 @@
- link "siliconjunction.wordpress.com" [ref=e163] [cursor=pointer]:
- /url: from?site=siliconjunction.wordpress.com
- text: )
- row "65 points by jensgk 9 hours ago | hide | 23 comments" [ref=e164]:
- row "65 points by jensgk 9 hours ago | hide | 24 comments" [ref=e164]:
- cell [ref=e165]
- cell "65 points by jensgk 9 hours ago | hide | 23 comments" [ref=e166]:
- cell "65 points by jensgk 9 hours ago | hide | 24 comments" [ref=e166]:
- generic [ref=e167]:
- text: 65 points by
- link "jensgk" [ref=e168] [cursor=pointer]:
@@ -253,7 +253,7 @@
- link "hide" [ref=e171] [cursor=pointer]:
- /url: hide?id=46443730&goto=news
- text: "|"
- link "23 comments" [ref=e172] [cursor=pointer]:
- link "24 comments" [ref=e172] [cursor=pointer]:
- /url: item?id=46443730
- row [ref=e173]
- row "8. upvote X-Clacks-Overhead (hleb.dev)" [ref=e174]:
@@ -303,11 +303,11 @@
- link "xeiaso.net" [ref=e205] [cursor=pointer]:
- /url: from?site=xeiaso.net
- text: )
- row "612 points by todsacerdoti 14 hours ago | hide | 452 comments" [ref=e206]:
- row "613 points by todsacerdoti 14 hours ago | hide | 452 comments" [ref=e206]:
- cell [ref=e207]
- cell "612 points by todsacerdoti 14 hours ago | hide | 452 comments" [ref=e208]:
- cell "613 points by todsacerdoti 14 hours ago | hide | 452 comments" [ref=e208]:
- generic [ref=e209]:
- text: 612 points by
- text: 613 points by
- link "todsacerdoti" [ref=e210] [cursor=pointer]:
- /url: user?id=todsacerdoti
- generic "2026-01-03T00:15:47 1767399347" [ref=e211]:
@@ -393,11 +393,11 @@
- 'cell "Ask HN: Who is hiring? (January 2026)" [ref=e264]':
- 'link "Ask HN: Who is hiring? (January 2026)" [ref=e266] [cursor=pointer]':
- /url: item?id=46466074
- row "306 points by whoishiring 22 hours ago | hide | 188 comments" [ref=e267]:
- row "307 points by whoishiring 22 hours ago | hide | 188 comments" [ref=e267]:
- cell [ref=e268]
- cell "306 points by whoishiring 22 hours ago | hide | 188 comments" [ref=e269]:
- cell "307 points by whoishiring 22 hours ago | hide | 188 comments" [ref=e269]:
- generic [ref=e270]:
- text: 306 points by
- text: 307 points by
- link "whoishiring" [ref=e271] [cursor=pointer]:
- /url: user?id=whoishiring
- generic "2026-01-02T16:00:42 1767369642" [ref=e272]:
@@ -489,11 +489,11 @@
- link "nullprogram.com" [ref=e329] [cursor=pointer]:
- /url: from?site=nullprogram.com
- text: )
- row "76 points by ibobev 13 hours ago | hide | 16 comments" [ref=e330]:
- row "77 points by ibobev 13 hours ago | hide | 16 comments" [ref=e330]:
- cell [ref=e331]
- cell "76 points by ibobev 13 hours ago | hide | 16 comments" [ref=e332]:
- cell "77 points by ibobev 13 hours ago | hide | 16 comments" [ref=e332]:
- generic [ref=e333]:
- text: 76 points by
- text: 77 points by
- link "ibobev" [ref=e334] [cursor=pointer]:
- /url: user?id=ibobev
- generic "2026-01-03T01:18:07 1767403087" [ref=e335]:
@@ -506,69 +506,69 @@
- link "16 comments" [ref=e338] [cursor=pointer]:
- /url: item?id=46471712
- row [ref=e339]
- row "16. upvote Profiling with Ctrl-C (2024) (yosefk.com)" [ref=e340]:
- 'row "16. upvote Show HN: The ASCII Side of the Moon (aleyan.com)" [ref=e340]':
- cell "16." [ref=e341]
- cell "upvote" [ref=e342]:
- link "upvote" [ref=e344] [cursor=pointer]:
- /url: vote?id=46475296&how=up&goto=news
- /url: vote?id=46421045&how=up&goto=news
- generic "upvote" [ref=e345]
- cell "Profiling with Ctrl-C (2024) (yosefk.com)" [ref=e346]:
- 'cell "Show HN: The ASCII Side of the Moon (aleyan.com)" [ref=e346]':
- generic [ref=e347]:
- link "Profiling with Ctrl-C (2024)" [ref=e348] [cursor=pointer]:
- /url: https://yosefk.com/blog/profiling-with-ctrl-c.html
- 'link "Show HN: The ASCII Side of the Moon" [ref=e348] [cursor=pointer]':
- /url: https://aleyan.com/projects/ascii-side-of-the-moon/?lat=32.72&lon=-117.16&date=2025-12-29T14%3A24Z
- generic [ref=e349]:
- text: (
- link "yosefk.com" [ref=e350] [cursor=pointer]:
- /url: from?site=yosefk.com
- link "aleyan.com" [ref=e350] [cursor=pointer]:
- /url: from?site=aleyan.com
- text: )
- row "9 points by hun3 3 hours ago | hide | discuss" [ref=e351]:
- row "6 points by aleyan 3 hours ago | hide | discuss" [ref=e351]:
- cell [ref=e352]
- cell "9 points by hun3 3 hours ago | hide | discuss" [ref=e353]:
- cell "6 points by aleyan 3 hours ago | hide | discuss" [ref=e353]:
- generic [ref=e354]:
- text: 9 points by
- link "hun3" [ref=e355] [cursor=pointer]:
- /url: user?id=hun3
- generic "2026-01-03T11:13:48 1767438828" [ref=e356]:
- text: 6 points by
- link "aleyan" [ref=e355] [cursor=pointer]:
- /url: user?id=aleyan
- generic "2025-12-29T14:24:08 1767018248" [ref=e356]:
- link "3 hours ago" [ref=e357] [cursor=pointer]:
- /url: item?id=46475296
- /url: item?id=46421045
- text: "|"
- link "hide" [ref=e358] [cursor=pointer]:
- /url: hide?id=46475296&goto=news
- /url: hide?id=46421045&goto=news
- text: "|"
- link "discuss" [ref=e359] [cursor=pointer]:
- /url: item?id=46475296
- /url: item?id=46421045
- row [ref=e360]
- row "17. upvote Linux kernel security work (kroah.com)" [ref=e361]:
- row "17. upvote Profiling with Ctrl-C (2024) (yosefk.com)" [ref=e361]:
- cell "17." [ref=e362]
- cell "upvote" [ref=e363]:
- link "upvote" [ref=e365] [cursor=pointer]:
- /url: vote?id=46469623&how=up&goto=news
- /url: vote?id=46475296&how=up&goto=news
- generic "upvote" [ref=e366]
- cell "Linux kernel security work (kroah.com)" [ref=e367]:
- cell "Profiling with Ctrl-C (2024) (yosefk.com)" [ref=e367]:
- generic [ref=e368]:
- link "Linux kernel security work" [ref=e369] [cursor=pointer]:
- /url: http://www.kroah.com/log/blog/2026/01/02/linux-kernel-security-work/
- link "Profiling with Ctrl-C (2024)" [ref=e369] [cursor=pointer]:
- /url: https://yosefk.com/blog/profiling-with-ctrl-c.html
- generic [ref=e370]:
- text: (
- link "kroah.com" [ref=e371] [cursor=pointer]:
- /url: from?site=kroah.com
- link "yosefk.com" [ref=e371] [cursor=pointer]:
- /url: from?site=yosefk.com
- text: )
- row "126 points by chmaynard 16 hours ago | hide | 56 comments" [ref=e372]:
- row "9 points by hun3 3 hours ago | hide | discuss" [ref=e372]:
- cell [ref=e373]
- cell "126 points by chmaynard 16 hours ago | hide | 56 comments" [ref=e374]:
- cell "9 points by hun3 3 hours ago | hide | discuss" [ref=e374]:
- generic [ref=e375]:
- text: 126 points by
- link "chmaynard" [ref=e376] [cursor=pointer]:
- /url: user?id=chmaynard
- generic "2026-01-02T21:31:34 1767389494" [ref=e377]:
- link "16 hours ago" [ref=e378] [cursor=pointer]:
- /url: item?id=46469623
- text: 9 points by
- link "hun3" [ref=e376] [cursor=pointer]:
- /url: user?id=hun3
- generic "2026-01-03T11:13:48 1767438828" [ref=e377]:
- link "3 hours ago" [ref=e378] [cursor=pointer]:
- /url: item?id=46475296
- text: "|"
- link "hide" [ref=e379] [cursor=pointer]:
- /url: hide?id=46469623&goto=news
- /url: hide?id=46475296&goto=news
- text: "|"
- link "56 comments" [ref=e380] [cursor=pointer]:
- /url: item?id=46469623
- link "discuss" [ref=e380] [cursor=pointer]:
- /url: item?id=46475296
- row [ref=e381]
- 'row "18. upvote IQuest-Coder: A new open-source code model beats Claude Sonnet 4.5 and GPT 5.1 [pdf] (github.com/iquestlab)" [ref=e382]':
- cell "18." [ref=e383]
@@ -585,11 +585,11 @@
- link "github.com/iquestlab" [ref=e392] [cursor=pointer]:
- /url: from?site=github.com/iquestlab
- text: )
- row "111 points by shenli3514 10 hours ago | hide | 33 comments" [ref=e393]:
- row "112 points by shenli3514 10 hours ago | hide | 33 comments" [ref=e393]:
- cell [ref=e394]
- cell "111 points by shenli3514 10 hours ago | hide | 33 comments" [ref=e395]:
- cell "112 points by shenli3514 10 hours ago | hide | 33 comments" [ref=e395]:
- generic [ref=e396]:
- text: 111 points by
- text: 112 points by
- link "shenli3514" [ref=e397] [cursor=pointer]:
- /url: user?id=shenli3514
- generic "2026-01-03T04:01:03 1767412863" [ref=e398]:
@@ -602,261 +602,261 @@
- link "33 comments" [ref=e401] [cursor=pointer]:
- /url: item?id=46472667
- row [ref=e402]
- row "19. upvote UK company sends factory with 1,000C furnace into space (bbc.co.uk)" [ref=e403]:
- row "19. upvote Linux kernel security work (kroah.com)" [ref=e403]:
- cell "19." [ref=e404]
- cell "upvote" [ref=e405]:
- link "upvote" [ref=e407] [cursor=pointer]:
- /url: vote?id=46442293&how=up&goto=news
- /url: vote?id=46469623&how=up&goto=news
- generic "upvote" [ref=e408]
- cell "UK company sends factory with 1,000C furnace into space (bbc.co.uk)" [ref=e409]:
- cell "Linux kernel security work (kroah.com)" [ref=e409]:
- generic [ref=e410]:
- link "UK company sends factory with 1,000C furnace into space" [ref=e411] [cursor=pointer]:
- /url: https://www.bbc.co.uk/news/articles/c62vx0pgyrgo
- link "Linux kernel security work" [ref=e411] [cursor=pointer]:
- /url: http://www.kroah.com/log/blog/2026/01/02/linux-kernel-security-work/
- generic [ref=e412]:
- text: (
- link "bbc.co.uk" [ref=e413] [cursor=pointer]:
- /url: from?site=bbc.co.uk
- link "kroah.com" [ref=e413] [cursor=pointer]:
- /url: from?site=kroah.com
- text: )
- row "75 points by vekerdyb 12 hours ago | hide | 32 comments" [ref=e414]:
- row "126 points by chmaynard 16 hours ago | hide | 56 comments" [ref=e414]:
- cell [ref=e415]
- cell "75 points by vekerdyb 12 hours ago | hide | 32 comments" [ref=e416]:
- cell "126 points by chmaynard 16 hours ago | hide | 56 comments" [ref=e416]:
- generic [ref=e417]:
- text: 75 points by
- link "vekerdyb" [ref=e418] [cursor=pointer]:
- /url: user?id=vekerdyb
- generic "2025-12-31T08:04:30 1767168270" [ref=e419]:
- link "12 hours ago" [ref=e420] [cursor=pointer]:
- /url: item?id=46442293
- text: 126 points by
- link "chmaynard" [ref=e418] [cursor=pointer]:
- /url: user?id=chmaynard
- generic "2026-01-02T21:31:34 1767389494" [ref=e419]:
- link "16 hours ago" [ref=e420] [cursor=pointer]:
- /url: item?id=46469623
- text: "|"
- link "hide" [ref=e421] [cursor=pointer]:
- /url: hide?id=46442293&goto=news
- /url: hide?id=46469623&goto=news
- text: "|"
- link "32 comments" [ref=e422] [cursor=pointer]:
- /url: item?id=46442293
- link "56 comments" [ref=e422] [cursor=pointer]:
- /url: item?id=46469623
- row [ref=e423]
- row "20. upvote Jank Lang Hit Alpha (github.com/jank-lang)" [ref=e424]:
- row "20. upvote UK company sends factory with 1,000C furnace into space (bbc.co.uk)" [ref=e424]:
- cell "20." [ref=e425]
- cell "upvote" [ref=e426]:
- link "upvote" [ref=e428] [cursor=pointer]:
- /url: vote?id=46468517&how=up&goto=news
- /url: vote?id=46442293&how=up&goto=news
- generic "upvote" [ref=e429]
- cell "Jank Lang Hit Alpha (github.com/jank-lang)" [ref=e430]:
- cell "UK company sends factory with 1,000C furnace into space (bbc.co.uk)" [ref=e430]:
- generic [ref=e431]:
- link "Jank Lang Hit Alpha" [ref=e432] [cursor=pointer]:
- /url: https://github.com/jank-lang/jank
- link "UK company sends factory with 1,000C furnace into space" [ref=e432] [cursor=pointer]:
- /url: https://www.bbc.co.uk/news/articles/c62vx0pgyrgo
- generic [ref=e433]:
- text: (
- link "github.com/jank-lang" [ref=e434] [cursor=pointer]:
- /url: from?site=github.com/jank-lang
- link "bbc.co.uk" [ref=e434] [cursor=pointer]:
- /url: from?site=bbc.co.uk
- text: )
- row "195 points by makemethrowaway 18 hours ago | hide | 27 comments" [ref=e435]:
- row "76 points by vekerdyb 12 hours ago | hide | 32 comments" [ref=e435]:
- cell [ref=e436]
- cell "195 points by makemethrowaway 18 hours ago | hide | 27 comments" [ref=e437]:
- cell "76 points by vekerdyb 12 hours ago | hide | 32 comments" [ref=e437]:
- generic [ref=e438]:
- text: 195 points by
- link "makemethrowaway" [ref=e439] [cursor=pointer]:
- /url: user?id=makemethrowaway
- generic "2026-01-02T19:39:38 1767382778" [ref=e440]:
- link "18 hours ago" [ref=e441] [cursor=pointer]:
- /url: item?id=46468517
- text: 76 points by
- link "vekerdyb" [ref=e439] [cursor=pointer]:
- /url: user?id=vekerdyb
- generic "2025-12-31T08:04:30 1767168270" [ref=e440]:
- link "12 hours ago" [ref=e441] [cursor=pointer]:
- /url: item?id=46442293
- text: "|"
- link "hide" [ref=e442] [cursor=pointer]:
- /url: hide?id=46468517&goto=news
- /url: hide?id=46442293&goto=news
- text: "|"
- link "27 comments" [ref=e443] [cursor=pointer]:
- /url: item?id=46468517
- link "32 comments" [ref=e443] [cursor=pointer]:
- /url: item?id=46442293
- row [ref=e444]
- 'row "21. upvote The Cost of a Closure in C: The Rest (thephd.dev)" [ref=e445]':
- row "21. upvote Jank Lang Hit Alpha (github.com/jank-lang)" [ref=e445]:
- cell "21." [ref=e446]
- cell "upvote" [ref=e447]:
- link "upvote" [ref=e449] [cursor=pointer]:
- /url: vote?id=46442229&how=up&goto=news
- /url: vote?id=46468517&how=up&goto=news
- generic "upvote" [ref=e450]
- 'cell "The Cost of a Closure in C: The Rest (thephd.dev)" [ref=e451]':
- cell "Jank Lang Hit Alpha (github.com/jank-lang)" [ref=e451]:
- generic [ref=e452]:
- 'link "The Cost of a Closure in C: The Rest" [ref=e453] [cursor=pointer]':
- /url: https://thephd.dev/the-cost-of-a-closure-in-c-c2y-followup
- link "Jank Lang Hit Alpha" [ref=e453] [cursor=pointer]:
- /url: https://github.com/jank-lang/jank
- generic [ref=e454]:
- text: (
- link "thephd.dev" [ref=e455] [cursor=pointer]:
- /url: from?site=thephd.dev
- link "github.com/jank-lang" [ref=e455] [cursor=pointer]:
- /url: from?site=github.com/jank-lang
- text: )
- row "50 points by ingve 11 hours ago | hide | 22 comments" [ref=e456]:
- row "195 points by makemethrowaway 18 hours ago | hide | 27 comments" [ref=e456]:
- cell [ref=e457]
- cell "50 points by ingve 11 hours ago | hide | 22 comments" [ref=e458]:
- cell "195 points by makemethrowaway 18 hours ago | hide | 27 comments" [ref=e458]:
- generic [ref=e459]:
- text: 50 points by
- link "ingve" [ref=e460] [cursor=pointer]:
- /url: user?id=ingve
- generic "2025-12-31T07:44:25 1767167065" [ref=e461]:
- link "11 hours ago" [ref=e462] [cursor=pointer]:
- /url: item?id=46442229
- text: 195 points by
- link "makemethrowaway" [ref=e460] [cursor=pointer]:
- /url: user?id=makemethrowaway
- generic "2026-01-02T19:39:38 1767382778" [ref=e461]:
- link "18 hours ago" [ref=e462] [cursor=pointer]:
- /url: item?id=46468517
- text: "|"
- link "hide" [ref=e463] [cursor=pointer]:
- /url: hide?id=46442229&goto=news
- /url: hide?id=46468517&goto=news
- text: "|"
- link "22 comments" [ref=e464] [cursor=pointer]:
- /url: item?id=46442229
- link "27 comments" [ref=e464] [cursor=pointer]:
- /url: item?id=46468517
- row [ref=e465]
- 'row "22. upvote Show HN: uvx ptn, scan a QR, get a terminal in your phone (github.com/lyehe)" [ref=e466]':
- 'row "22. upvote The Cost of a Closure in C: The Rest (thephd.dev)" [ref=e466]':
- cell "22." [ref=e467]
- cell "upvote" [ref=e468]:
- link "upvote" [ref=e470] [cursor=pointer]:
- /url: vote?id=46472772&how=up&goto=news
- /url: vote?id=46442229&how=up&goto=news
- generic "upvote" [ref=e471]
- 'cell "Show HN: uvx ptn, scan a QR, get a terminal in your phone (github.com/lyehe)" [ref=e472]':
- 'cell "The Cost of a Closure in C: The Rest (thephd.dev)" [ref=e472]':
- generic [ref=e473]:
- 'link "Show HN: uvx ptn, scan a QR, get a terminal in your phone" [ref=e474] [cursor=pointer]':
- /url: https://github.com/lyehe/porterminal
- 'link "The Cost of a Closure in C: The Rest" [ref=e474] [cursor=pointer]':
- /url: https://thephd.dev/the-cost-of-a-closure-in-c-c2y-followup
- generic [ref=e475]:
- text: (
- link "github.com/lyehe" [ref=e476] [cursor=pointer]:
- /url: from?site=github.com/lyehe
- link "thephd.dev" [ref=e476] [cursor=pointer]:
- /url: from?site=thephd.dev
- text: )
- row "43 points by yxl448 10 hours ago | hide | 10 comments" [ref=e477]:
- row "50 points by ingve 11 hours ago | hide | 22 comments" [ref=e477]:
- cell [ref=e478]
- cell "43 points by yxl448 10 hours ago | hide | 10 comments" [ref=e479]:
- cell "50 points by ingve 11 hours ago | hide | 22 comments" [ref=e479]:
- generic [ref=e480]:
- text: 43 points by
- link "yxl448" [ref=e481] [cursor=pointer]:
- /url: user?id=yxl448
- generic "2026-01-03T04:22:29 1767414149" [ref=e482]:
- link "10 hours ago" [ref=e483] [cursor=pointer]:
- /url: item?id=46472772
- text: 50 points by
- link "ingve" [ref=e481] [cursor=pointer]:
- /url: user?id=ingve
- generic "2025-12-31T07:44:25 1767167065" [ref=e482]:
- link "11 hours ago" [ref=e483] [cursor=pointer]:
- /url: item?id=46442229
- text: "|"
- link "hide" [ref=e484] [cursor=pointer]:
- /url: hide?id=46472772&goto=news
- /url: hide?id=46442229&goto=news
- text: "|"
- link "10 comments" [ref=e485] [cursor=pointer]:
- /url: item?id=46472772
- link "22 comments" [ref=e485] [cursor=pointer]:
- /url: item?id=46442229
- row [ref=e486]
- row "23. upvote Adventure 751 (1980) (bluerenga.blog)" [ref=e487]:
- 'row "23. upvote Show HN: uvx ptn, scan a QR, get a terminal in your phone (github.com/lyehe)" [ref=e487]':
- cell "23." [ref=e488]
- cell "upvote" [ref=e489]:
- link "upvote" [ref=e491] [cursor=pointer]:
- /url: vote?id=46472230&how=up&goto=news
- /url: vote?id=46472772&how=up&goto=news
- generic "upvote" [ref=e492]
- cell "Adventure 751 (1980) (bluerenga.blog)" [ref=e493]:
- 'cell "Show HN: uvx ptn, scan a QR, get a terminal in your phone (github.com/lyehe)" [ref=e493]':
- generic [ref=e494]:
- link "Adventure 751 (1980)" [ref=e495] [cursor=pointer]:
- /url: https://bluerenga.blog/2026/01/01/adventure-751-1980/
- 'link "Show HN: uvx ptn, scan a QR, get a terminal in your phone" [ref=e495] [cursor=pointer]':
- /url: https://github.com/lyehe/porterminal
- generic [ref=e496]:
- text: (
- link "bluerenga.blog" [ref=e497] [cursor=pointer]:
- /url: from?site=bluerenga.blog
- link "github.com/lyehe" [ref=e497] [cursor=pointer]:
- /url: from?site=github.com/lyehe
- text: )
- row "37 points by quuxplusone 11 hours ago | hide | 3 comments" [ref=e498]:
- row "43 points by yxl448 10 hours ago | hide | 10 comments" [ref=e498]:
- cell [ref=e499]
- cell "37 points by quuxplusone 11 hours ago | hide | 3 comments" [ref=e500]:
- cell "43 points by yxl448 10 hours ago | hide | 10 comments" [ref=e500]:
- generic [ref=e501]:
- text: 37 points by
- link "quuxplusone" [ref=e502] [cursor=pointer]:
- /url: user?id=quuxplusone
- generic "2026-01-03T02:38:06 1767407886" [ref=e503]:
- link "11 hours ago" [ref=e504] [cursor=pointer]:
- /url: item?id=46472230
- text: 43 points by
- link "yxl448" [ref=e502] [cursor=pointer]:
- /url: user?id=yxl448
- generic "2026-01-03T04:22:29 1767414149" [ref=e503]:
- link "10 hours ago" [ref=e504] [cursor=pointer]:
- /url: item?id=46472772
- text: "|"
- link "hide" [ref=e505] [cursor=pointer]:
- /url: hide?id=46472230&goto=news
- /url: hide?id=46472772&goto=news
- text: "|"
- link "3 comments" [ref=e506] [cursor=pointer]:
- /url: item?id=46472230
- link "10 comments" [ref=e506] [cursor=pointer]:
- /url: item?id=46472772
- row [ref=e507]
- row "24. upvote Unix v4 (1973) Live Terminal (unixv4.dev)" [ref=e508]:
- row "24. upvote Adventure 751 (1980) (bluerenga.blog)" [ref=e508]:
- cell "24." [ref=e509]
- cell "upvote" [ref=e510]:
- link "upvote" [ref=e512] [cursor=pointer]:
- /url: vote?id=46468283&how=up&goto=news
- /url: vote?id=46472230&how=up&goto=news
- generic "upvote" [ref=e513]
- cell "Unix v4 (1973) Live Terminal (unixv4.dev)" [ref=e514]:
- cell "Adventure 751 (1980) (bluerenga.blog)" [ref=e514]:
- generic [ref=e515]:
- link "Unix v4 (1973) Live Terminal" [ref=e516] [cursor=pointer]:
- /url: https://unixv4.dev/
- link "Adventure 751 (1980)" [ref=e516] [cursor=pointer]:
- /url: https://bluerenga.blog/2026/01/01/adventure-751-1980/
- generic [ref=e517]:
- text: (
- link "unixv4.dev" [ref=e518] [cursor=pointer]:
- /url: from?site=unixv4.dev
- link "bluerenga.blog" [ref=e518] [cursor=pointer]:
- /url: from?site=bluerenga.blog
- text: )
- row "155 points by pjmlp 19 hours ago | hide | 76 comments" [ref=e519]:
- row "37 points by quuxplusone 11 hours ago | hide | 3 comments" [ref=e519]:
- cell [ref=e520]
- cell "155 points by pjmlp 19 hours ago | hide | 76 comments" [ref=e521]:
- cell "37 points by quuxplusone 11 hours ago | hide | 3 comments" [ref=e521]:
- generic [ref=e522]:
- text: 155 points by
- link "pjmlp" [ref=e523] [cursor=pointer]:
- /url: user?id=pjmlp
- generic "2026-01-02T19:18:36 1767381516" [ref=e524]:
- link "19 hours ago" [ref=e525] [cursor=pointer]:
- /url: item?id=46468283
- text: 37 points by
- link "quuxplusone" [ref=e523] [cursor=pointer]:
- /url: user?id=quuxplusone
- generic "2026-01-03T02:38:06 1767407886" [ref=e524]:
- link "11 hours ago" [ref=e525] [cursor=pointer]:
- /url: item?id=46472230
- text: "|"
- link "hide" [ref=e526] [cursor=pointer]:
- /url: hide?id=46468283&goto=news
- /url: hide?id=46472230&goto=news
- text: "|"
- link "76 comments" [ref=e527] [cursor=pointer]:
- /url: item?id=46468283
- link "3 comments" [ref=e527] [cursor=pointer]:
- /url: item?id=46472230
- row [ref=e528]
- 'row "25. upvote Fighting Fire with Fire: Scalable Oral Exams (behind-the-enemy-lines.com)" [ref=e529]':
- row "25. upvote Unix v4 (1973) Live Terminal (unixv4.dev)" [ref=e529]:
- cell "25." [ref=e530]
- cell "upvote" [ref=e531]:
- link "upvote" [ref=e533] [cursor=pointer]:
- /url: vote?id=46467677&how=up&goto=news
- /url: vote?id=46468283&how=up&goto=news
- generic "upvote" [ref=e534]
- 'cell "Fighting Fire with Fire: Scalable Oral Exams (behind-the-enemy-lines.com)" [ref=e535]':
- cell "Unix v4 (1973) Live Terminal (unixv4.dev)" [ref=e535]:
- generic [ref=e536]:
- 'link "Fighting Fire with Fire: Scalable Oral Exams" [ref=e537] [cursor=pointer]':
- /url: https://www.behind-the-enemy-lines.com/2025/12/fighting-fire-with-fire-scalable-oral.html
- link "Unix v4 (1973) Live Terminal" [ref=e537] [cursor=pointer]:
- /url: https://unixv4.dev/
- generic [ref=e538]:
- text: (
- link "behind-the-enemy-lines.com" [ref=e539] [cursor=pointer]:
- /url: from?site=behind-the-enemy-lines.com
- link "unixv4.dev" [ref=e539] [cursor=pointer]:
- /url: from?site=unixv4.dev
- text: )
- row "177 points by sethbannon 20 hours ago | hide | 232 comments" [ref=e540]:
- row "155 points by pjmlp 19 hours ago | hide | 76 comments" [ref=e540]:
- cell [ref=e541]
- cell "177 points by sethbannon 20 hours ago | hide | 232 comments" [ref=e542]:
- cell "155 points by pjmlp 19 hours ago | hide | 76 comments" [ref=e542]:
- generic [ref=e543]:
- text: 177 points by
- link "sethbannon" [ref=e544] [cursor=pointer]:
- /url: user?id=sethbannon
- generic "2026-01-02T18:18:47 1767377927" [ref=e545]:
- link "20 hours ago" [ref=e546] [cursor=pointer]:
- /url: item?id=46467677
- text: 155 points by
- link "pjmlp" [ref=e544] [cursor=pointer]:
- /url: user?id=pjmlp
- generic "2026-01-02T19:18:36 1767381516" [ref=e545]:
- link "19 hours ago" [ref=e546] [cursor=pointer]:
- /url: item?id=46468283
- text: "|"
- link "hide" [ref=e547] [cursor=pointer]:
- /url: hide?id=46467677&goto=news
- /url: hide?id=46468283&goto=news
- text: "|"
- link "232 comments" [ref=e548] [cursor=pointer]:
- /url: item?id=46467677
- link "76 comments" [ref=e548] [cursor=pointer]:
- /url: item?id=46468283
- row [ref=e549]
- row "26. upvote Accounting for Computer Scientists (2011) (kleppmann.com)" [ref=e550]:
- 'row "26. upvote Fighting Fire with Fire: Scalable Oral Exams (behind-the-enemy-lines.com)" [ref=e550]':
- cell "26." [ref=e551]
- cell "upvote" [ref=e552]:
- link "upvote" [ref=e554] [cursor=pointer]:
- /url: vote?id=46467651&how=up&goto=news
- /url: vote?id=46467677&how=up&goto=news
- generic "upvote" [ref=e555]
- cell "Accounting for Computer Scientists (2011) (kleppmann.com)" [ref=e556]:
- 'cell "Fighting Fire with Fire: Scalable Oral Exams (behind-the-enemy-lines.com)" [ref=e556]':
- generic [ref=e557]:
- link "Accounting for Computer Scientists (2011)" [ref=e558] [cursor=pointer]:
- /url: https://martin.kleppmann.com/2011/03/07/accounting-for-computer-scientists.html
- 'link "Fighting Fire with Fire: Scalable Oral Exams" [ref=e558] [cursor=pointer]':
- /url: https://www.behind-the-enemy-lines.com/2025/12/fighting-fire-with-fire-scalable-oral.html
- generic [ref=e559]:
- text: (
- link "kleppmann.com" [ref=e560] [cursor=pointer]:
- /url: from?site=kleppmann.com
- link "behind-the-enemy-lines.com" [ref=e560] [cursor=pointer]:
- /url: from?site=behind-the-enemy-lines.com
- text: )
- row "128 points by tosh 19 hours ago | hide | 49 comments" [ref=e561]:
- row "177 points by sethbannon 20 hours ago | hide | 233 comments" [ref=e561]:
- cell [ref=e562]
- cell "128 points by tosh 19 hours ago | hide | 49 comments" [ref=e563]:
- cell "177 points by sethbannon 20 hours ago | hide | 233 comments" [ref=e563]:
- generic [ref=e564]:
- text: 128 points by
- link "tosh" [ref=e565] [cursor=pointer]:
- /url: user?id=tosh
- generic "2026-01-02T18:16:07 1767377767" [ref=e566]:
- link "19 hours ago" [ref=e567] [cursor=pointer]:
- /url: item?id=46467651
- text: 177 points by
- link "sethbannon" [ref=e565] [cursor=pointer]:
- /url: user?id=sethbannon
- generic "2026-01-02T18:18:47 1767377927" [ref=e566]:
- link "20 hours ago" [ref=e567] [cursor=pointer]:
- /url: item?id=46467677
- text: "|"
- link "hide" [ref=e568] [cursor=pointer]:
- /url: hide?id=46467651&goto=news
- /url: hide?id=46467677&goto=news
- text: "|"
- link "49 comments" [ref=e569] [cursor=pointer]:
- /url: item?id=46467651
- link "233 comments" [ref=e569] [cursor=pointer]:
- /url: item?id=46467677
- row [ref=e570]
- 'row "27. upvote Ask HN: Who wants to be hired? (January 2026)" [ref=e571]':
- cell "27." [ref=e572]
@@ -867,11 +867,11 @@
- 'cell "Ask HN: Who wants to be hired? (January 2026)" [ref=e577]':
- 'link "Ask HN: Who wants to be hired? (January 2026)" [ref=e579] [cursor=pointer]':
- /url: item?id=46466073
- row "124 points by whoishiring 22 hours ago | hide | 231 comments" [ref=e580]:
- row "125 points by whoishiring 22 hours ago | hide | 231 comments" [ref=e580]:
- cell [ref=e581]
- cell "124 points by whoishiring 22 hours ago | hide | 231 comments" [ref=e582]:
- cell "125 points by whoishiring 22 hours ago | hide | 231 comments" [ref=e582]:
- generic [ref=e583]:
- text: 124 points by
- text: 125 points by
- link "whoishiring" [ref=e584] [cursor=pointer]:
- /url: user?id=whoishiring
- generic "2026-01-02T16:00:42 1767369642" [ref=e585]:
@@ -884,37 +884,37 @@
- link "231 comments" [ref=e588] [cursor=pointer]:
- /url: item?id=46466073
- row [ref=e589]
- 'row "28. upvote Show HN: The ASCII Side of the Moon (aleyan.com)" [ref=e590]':
- row "28. upvote Accounting for Computer Scientists (2011) (kleppmann.com)" [ref=e590]:
- cell "28." [ref=e591]
- cell "upvote" [ref=e592]:
- link "upvote" [ref=e594] [cursor=pointer]:
- /url: vote?id=46421045&how=up&goto=news
- /url: vote?id=46467651&how=up&goto=news
- generic "upvote" [ref=e595]
- 'cell "Show HN: The ASCII Side of the Moon (aleyan.com)" [ref=e596]':
- cell "Accounting for Computer Scientists (2011) (kleppmann.com)" [ref=e596]:
- generic [ref=e597]:
- 'link "Show HN: The ASCII Side of the Moon" [ref=e598] [cursor=pointer]':
- /url: https://aleyan.com/projects/ascii-side-of-the-moon/?lat=32.72&lon=-117.16&date=2025-12-29T14%3A24Z
- link "Accounting for Computer Scientists (2011)" [ref=e598] [cursor=pointer]:
- /url: https://martin.kleppmann.com/2011/03/07/accounting-for-computer-scientists.html
- generic [ref=e599]:
- text: (
- link "aleyan.com" [ref=e600] [cursor=pointer]:
- /url: from?site=aleyan.com
- link "kleppmann.com" [ref=e600] [cursor=pointer]:
- /url: from?site=kleppmann.com
- text: )
- row "5 points by aleyan 3 hours ago | hide | discuss" [ref=e601]:
- row "128 points by tosh 19 hours ago | hide | 49 comments" [ref=e601]:
- cell [ref=e602]
- cell "5 points by aleyan 3 hours ago | hide | discuss" [ref=e603]:
- cell "128 points by tosh 19 hours ago | hide | 49 comments" [ref=e603]:
- generic [ref=e604]:
- text: 5 points by
- link "aleyan" [ref=e605] [cursor=pointer]:
- /url: user?id=aleyan
- generic "2025-12-29T14:24:08 1767018248" [ref=e606]:
- link "3 hours ago" [ref=e607] [cursor=pointer]:
- /url: item?id=46421045
- text: 128 points by
- link "tosh" [ref=e605] [cursor=pointer]:
- /url: user?id=tosh
- generic "2026-01-02T18:16:07 1767377767" [ref=e606]:
- link "19 hours ago" [ref=e607] [cursor=pointer]:
- /url: item?id=46467651
- text: "|"
- link "hide" [ref=e608] [cursor=pointer]:
- /url: hide?id=46421045&goto=news
- /url: hide?id=46467651&goto=news
- text: "|"
- link "discuss" [ref=e609] [cursor=pointer]:
- /url: item?id=46421045
- link "49 comments" [ref=e609] [cursor=pointer]:
- /url: item?id=46467651
- row [ref=e610]
- row "29. upvote The rsync algorithm (1996) [pdf] (cmu.edu)" [ref=e611]:
- cell "29." [ref=e612]
Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB