<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/sources/hn/best-of/2026/04" -->

---
title: Best Hacker News posts — April 2026 | daily.dev
description: The most upvoted Hacker News posts from April 2026, curated by the daily.dev community.
canonical: https://daily.dev/sources/hn/best-of/2026/04
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:url: https://daily.dev/sources/hn/best-of/2026/04
og:type: website
og:site_name: daily.dev
og:title: Best Hacker News posts — April 2026 | daily.dev
og:description: The most upvoted Hacker News posts from April 2026, curated by the daily.dev community.
og:image: https://media.daily.dev/image/upload/s--VAY5ToZt--/f_auto/v1724209435/public/daily.dev%20-%20open%20graph
---

# Best of Hacker News — April 2026

1. 1  
[](https://daily.dev/posts/how-i-run-multiple-10k-mrr-companies-on-a-20-month-tech-stack-kfgbfyx0z "How I run multiple $10K MRR companies on a $20/month tech stack")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 22w  
How I run multiple $10K MRR companies on a $20/month tech stack  
A bootstrapper shares how they run multiple profitable SaaS products on a $20/month tech stack. The playbook covers using a cheap VPS (Linode/DigitalOcean) instead of AWS, Go for lean statically-compiled backends, SQLite with WAL mode instead of Postgres, local GPU inference via Ollama/VLLM for batch AI tasks, OpenRouter for frontier model access with automatic fallback, and GitHub Copilot over pricier AI IDEs. The author argues this approach gives unlimited runway and eliminates the need for VC funding.  
246  
18
2. 2  
[](https://daily.dev/posts/3-constraints-before-i-build-anything-18sjhp8qt "3 constraints before I build anything")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 20w  
3 constraints before I build anything  
A developer with 10 years of building experience shares three personal constraints applied before starting any project: writing a one-pager to limit complexity and ambiguity, ensuring the core technology is separable from the product to create reusable leverage, and defining one central product constraint to prevent feature creep and establish identity. Examples like git, HCL, Kubernetes, Minecraft, and IKEA illustrate how constraints drive focus and originality.  
157  
11
3. 3  
[](https://daily.dev/posts/github---calcom-cal-diy-scheduling-infrastructure-for-absolutely-everyone--cutxatwvc "GitHub - calcom/cal.diy: Scheduling infrastructure for absolutely everyone.")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 20w  
GitHub - calcom/cal.diy: Scheduling infrastructure for absolutely everyone.  
Cal.diy is a fully MIT-licensed, community-maintained fork of Cal.com with all enterprise and commercial code removed. It provides open-source scheduling infrastructure for self-hosters who want complete control without license keys or proprietary features. Built on Next.js, tRPC, React, Tailwind CSS, and Prisma with PostgreSQL, it supports Docker-based deployment, manual setup, and one-click deploys to Railway, Vercel, Render, and Northflank. The README covers full setup instructions including environment configuration, database migrations, E2E testing with Playwright, and integration guides for Google Calendar, Microsoft 365, Zoom, HubSpot, and more.  
88  
4
4. 4  
[](https://daily.dev/posts/5nf-and-database-design-vsrqycbk9 "5NF and Database Design")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 21w  
5NF and Database Design  
A deep dive into Fifth Normal Form (5NF) that argues traditional teaching approaches are unnecessarily confusing. The author critiques the Wikipedia example as poorly motivated and proposes starting from business requirements and a logical model instead. Two natural design patterns emerge: the AB-BC-AC triangle (three M:N junction tables connecting three entities) and the ABC+D star pattern (a central entity linked 1:N to three surrounding entities). Using ice cream preferences and concert musician examples, the post demonstrates that properly designed schemas are automatically normalized without needing to reason about 5NF decomposition explicitly. The post also covers composite vs. synthetic primary keys and how both patterns can coexist in the same schema.  
88  
5
5. 5  
[](https://daily.dev/posts/github---nikolays-pgque-pgque-zero-bloat-postgres-queue-one-sql-file-to-install-pg-cron-to-tick-idiaxcm6k "GitHub - NikolayS/pgque: PgQue – Zero-bloat Postgres queue. One SQL file to install, pg_cron to tick.")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 21w  
GitHub - NikolayS/pgque: PgQue – Zero-bloat Postgres queue. One SQL file to install, pg\_cron to tick.  
PgQue is a zero-bloat Postgres message queue implemented in pure PL/pgSQL, requiring no C extensions or external daemons. It revives the battle-tested PgQ architecture (originally built at Skype) and makes it compatible with managed Postgres providers like RDS, Aurora, Supabase, and Neon. Instead of SKIP LOCKED with per-row DELETE/UPDATE (which causes dead tuples and VACUUM pressure), PgQue uses snapshot-based batching and TRUNCATE-based table rotation for zero bloat under sustained load. The trade-off is \~1–2 second end-to-end delivery latency. It supports native fan-out with independent consumer cursors, built-in retry with backoff, dead letter queues, and a language-agnostic SQL API. Client libraries exist for Python, Go, and TypeScript. Benchmarks show \~86k events/sec insert and \~2.4M events/sec consumer read rate with zero dead-tuple growth over 30 minutes.  
80  
3
6. 6  
[](https://daily.dev/posts/drunk-post-things-i-ve-learned-as-a-senior-engineer-6tll4bzvn "Drunk Post: Things I’ve Learned as a Senior Engineer")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 20w  
Drunk Post: Things I’ve Learned as a Senior Engineer  
A preserved Reddit post from a data engineer with 10+ years of experience, written candidly after a few drinks. Covers career advice (change companies to advance, be honest with managers), technical opinions (SQL is king, best code is no code, TDD is a cult), data engineering specifics (Airflow, streaming, ML project failure rates), and life reflections. Touches on work-life balance, remote work tradeoffs, tech stack philosophy, documentation as an underrated skill, and the importance of kindness. Raw, unfiltered, and widely relatable.  
162  
12
7. 7  
[](https://daily.dev/posts/the-claude-code-leak-sfol5ptnp "The Claude Code Leak")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 23w  
The Claude Code Leak  
The accidental leak of Claude Code's source code reveals that the code itself is reportedly low quality, yet the product is beloved. This prompts reflection on five key observations: code quality doesn't determine product success; what matters is what code does, not how it's written; product-market fit trumps implementation details; the copyright situation is ironic given Anthropic's own AI training arguments; and ultimately the leak won't matter because Claude Code's value lies in the seamless integration of model and harness, not the underlying source code. Open-source alternatives like Codex and Gemini CLI haven't captured Claude Code's mindshare, reinforcing that a complete, well-integrated service is what users pay for.  
67  
9
8. 8  
[](https://daily.dev/posts/github---maaslalani-sheets-terminal-based-spreadsheet-tool-bi6qoidoq "GitHub - maaslalani/sheets: Terminal based spreadsheet tool")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 23w  
GitHub - maaslalani/sheets: Terminal based spreadsheet tool  
Sheets is an open source terminal-based spreadsheet tool written in Go. It supports reading and writing CSV files, vim-style navigation (hjkl, gg/G, marks, jump list), cell editing, visual selection, formulas, undo/redo, and command mode. It can be used interactively as a TUI or non-interactively via CLI to read/write specific cells or ranges. Install via \`go install\` or pre-built binaries.  
61  
3
9. 9  
[](https://daily.dev/posts/github---fabienmillet-wiifin-jellyfin-client-for-wii-6883awqqn "GitHub - fabienmillet/WiiFin: Jellyfin Client for Wii")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 21w  
GitHub - fabienmillet/WiiFin: Jellyfin Client for Wii  
WiiFin is an experimental open-source homebrew Jellyfin client for the Nintendo Wii, written in C++ using GRRLIB and MPlayer CE. It supports authentication, library browsing (movies, TV, music), video/audio playback via server-side transcoding, HTTPS via mbedTLS, Wiimote IR input, and playback progress reporting. Ships as a ready-to-use .dol and installable .wad file. Build requires devkitPro with devkitPPC. Direct-play is not supported and audio is stereo-only.  
57  
3
10. 10  
[](https://daily.dev/posts/fastcgi-30-years-old-and-still-the-better-protocol-for-reverse-proxies-bx9uebvg5 "FastCGI: 30 Years Old and Still the Better Protocol for Reverse Proxies")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 19w  
FastCGI: 30 Years Old and Still the Better Protocol for Reverse Proxies  
FastCGI, the 30-year-old protocol, is argued to be a safer alternative to HTTP for reverse proxy-to-backend communication. HTTP/1.1's ambiguous framing enables desync/request-smuggling attacks, and its lack of structural separation between trusted proxy headers and untrusted client headers creates persistent security vulnerabilities. FastCGI solves both problems: it uses explicit message framing (eliminating desync), and prefixes HTTP headers with 'HTTP\_' to structurally separate them from trusted proxy parameters like REMOTE\_ADDR. Popular proxies (nginx, Apache, Caddy, HAProxy) support FastCGI backends, and Go's standard library makes switching trivial. Downsides include no WebSocket support, less tooling, and potentially lower throughput due to less optimization.  
110  
5
11. 11  
[](https://daily.dev/posts/i-quit-the-clankers-won--cl5m5lqi0 "I quit. The clankers won.")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 23w  
I quit. The clankers won.  
A passionate argument against giving up blogging and personal expression in the face of AI dominance and Big Tech consolidation. The author pushes back on the growing sentiment that coding and blogging are 'cooked', arguing that authentic human voices are more valuable than ever. Key points include: blogging improves professional skills and memory, original thought stands out when everyone defers to AI, generative AI produces mediocre output that nobody truly cares about, and developers should embrace the indie/open web rather than playing Big Tech's game. The post is a call to action to keep writing, keep sharing expertise, and resist the deskilling of the craft.  
45  
15
12. 12  
[](https://daily.dev/posts/south-korea-introduces-universal-basic-mobile-data-access-peyll2ulv "South Korea introduces universal basic mobile data access")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 22w  
South Korea introduces universal basic mobile data access  
South Korea's Ministry of Science has launched a universal basic mobile data scheme, providing over seven million subscribers with unlimited downloads at 400 Kbps once their data allowances run out. The three dominant carriers — SK Telecom, KT, and LG Uplus — have agreed to the plan, partly as restitution for recent major security breaches. Additional commitments include low-cost 5G plans under ₩20,000 (\~$13.50), expanded data and calling allowances for senior citizens, and improved Wi-Fi on public transit. The government also pledged support for AI-focused network research in exchange for telcos investing more in infrastructure.  
42  
4
13. 13  
[](https://daily.dev/posts/github---nv404-gova-ajqamci0g "GitHub - NV404/gova")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 20w  
GitHub - NV404/gova  
Gova is a declarative GUI framework for Go that lets developers build native desktop apps for macOS, Windows, and Linux from a single codebase. It uses typed struct-based components, an explicit reactive scope for state management, and real native platform integrations (NSAlert, NSOpenPanel, NSDockTile on macOS with Fyne fallbacks elsewhere). The framework produces a single static binary with no JavaScript runtime or embedded browser. It includes a CLI with hot reload, build, and run commands. Currently pre-1.0, it is built on top of Fyne as an internal dependency.  
42  
2
14. 14  
[](https://daily.dev/posts/productive-procrastination-max-van-ijsselmuiden-g2p56suud "Productive procrastination — Max van IJsselmuiden")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 22w  
Productive procrastination — Max van IJsselmuiden  
Productive procrastination is when you stay busy with meaningful work but avoid the one task you actually need to do. Drawing on personal data from video editing projects and neuroscience research, the author explores why brains prefer novelty (dopamine and reward systems), how guilt and moral licensing create avoidance cycles, and how the Zeigarnik Effect keeps unfinished tasks consuming mental bandwidth. Solutions include reframing old tasks to feel novel, affect labeling to activate the prefrontal cortex, self-forgiveness to reduce guilt, and habit-based scheduling to lower the barrier to starting.  
28  
2
15. 15  
[](https://daily.dev/posts/pgit-i-imported-the-linux-kernel-into-postgresql-m2y7idpub "pgit: I Imported the Linux Kernel into PostgreSQL")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 22w  
pgit: I Imported the Linux Kernel into PostgreSQL  
pgit, a Git-like CLI that stores repository history in PostgreSQL using delta compression, successfully imported the entire Linux kernel history: 1,428,882 commits, 24.4 million file versions, and 20 years of development in 2 hours on a Hetzner dedicated server. The resulting 6.6 GB PostgreSQL database (2.7 GB actual data) enables SQL queries across the full history in seconds. Analysis reveals: 38,506 unique authors with 25:1 contributor-to-committer ratio, 90% of commits touching 5 or fewer files, Intel i915 and Btrfs as the most tightly coupled subsystems, David S. Miller merging 7.9% of all commits, Intel leading corporate contributions, and quirky findings like 7 f-bombs in commit messages (from 2 people), 665 bug fixes pointing to the initial git import commit, and bcachefs taking 13 years to merge into mainline.  
23
16. 16  
[](https://daily.dev/posts/github---seanfdz-macmind-single-layer-transformer-in-hypertalk-for-the-classic-macintosh-4dvnnrfsw "GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 21w  
GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh  
MacMind is a 1,216-parameter single-layer transformer neural network implemented entirely in HyperTalk — Apple's 1987 scripting language for HyperCard — and trained on a real Macintosh SE/30\. It learns the bit-reversal permutation (the first step of the Fast Fourier Transform) from random examples using full backpropagation, self-attention, and stochastic gradient descent. No compiled code or external libraries are used. The project is designed as a transparent, inspectable demonstration that the math behind modern LLMs is not magic — the same forward pass, loss computation, and weight update loop that powers GPT-4 runs here on a 68030 processor at 8 MHz. After training (\~1,000 steps, taking hours on real hardware), the attention map independently discovers the FFT butterfly routing pattern first published by Cooley and Tukey in 1965\. A Python/NumPy reference implementation is included for validation.  
22  
1
17. 17  
[](https://daily.dev/posts/github---linebender-xilem-an-experimental-rust-native-ui-framework-q074au2rm "GitHub - linebender/xilem: An experimental Rust native UI framework")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 22w  
GitHub - linebender/xilem: An experimental Rust native UI framework  
Xilem is an experimental Rust-native UI framework inspired by React, SwiftUI, and Elm. It provides a reactive, high-level architecture for building GUI apps using a lightweight view tree. Xilem is built on top of Masonry, a retained widget tree toolkit, and uses winit for windowing, Vello/wgpu for 2D graphics, Parley/Fontique for text, and AccessKit for accessibility. It supports both a native (Masonry) and web backend. Getting started is straightforward via Cargo, with platform-specific prerequisites for Linux/BSD (Wayland, Vulkan, etc.). The minimum supported Rust version is 1.92.  
21  
1
18. 18  
[](https://daily.dev/posts/i-made-a-terminal-pager-lytkbuklb "I Made a Terminal Pager")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 21w  
I Made a Terminal Pager  
A developer details building a reusable viewport component in Go for navigating large text in terminal UIs (TUIs), then using it to create 'lore', a personal terminal pager. The post covers how terminal pagers work, the $PAGER environment variable, ANSI escape codes, Unicode handling complexities (graphemes, code point widths), and the architecture of the viewport component including search/filter, item selection, and wrapping. The viewport is built on the Bubble Tea framework and is also used in the author's Kubernetes log viewer 'kl'.  
21
19. 19  
[](https://daily.dev/posts/soft-launch-of-open-source-code-platform-for-government-u78wivqlc "Soft launch of open-source code platform for government")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 19w  
Soft launch of open-source code platform for government  
The Dutch government has soft-launched code.overheid.nl, a self-hosted, government-wide platform for publishing and developing open-source software. Built on Forgejo — an open-source, European alternative to GitHub and GitLab — the platform is currently in pilot phase and not yet available to all government organisations. It is initiated by the Open Source Program Office at the Ministry of the Interior and Kingdom Relations, with the goal of growing it into a shared Git platform for government bodies. Developers are invited to contribute.  
46  
3
20. 20  
[](https://daily.dev/posts/what-async-promised-and-what-it-delivered-causality-ocp1tkuw6 "What Async Promised and What it Delivered — Causality")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 20w  
What Async Promised and What it Delivered — Causality  
A historical analysis of async programming's evolution from callbacks to promises to async/await, examining how each wave solved the previous wave's worst problem while introducing new structural costs. Callbacks solved thread-per-connection resource exhaustion but created callback hell and fragmented error handling. Promises improved ergonomics but introduced silent error swallowing and a type split. Async/await made code readable but brought function coloring — a viral infection of async signatures throughout codebases — ecosystem fragmentation (e.g., Tokio vs async-std in Rust), new deadlock classes like 'futurelocks', and a sequential trap where the clean syntax actively hides parallelism opportunities. The post notes that Go's goroutines, Java's Project Loom virtual threads, and Zig's Io interface parameter represent deliberate attempts to avoid function coloring entirely.  
17  
6
21. 21  
[](https://daily.dev/posts/zero-copy-gpu-inference-from-webassembly-on-apple-silicon-oqawturhp "Zero-Copy GPU Inference from WebAssembly on Apple Silicon")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 21w  
Zero-Copy GPU Inference from WebAssembly on Apple Silicon  
On Apple Silicon, a WebAssembly module's linear memory can be shared directly with the GPU using zero-copy techniques, eliminating the expensive serialization boundary that normally exists between VM sandboxes and hardware accelerators. The approach chains three components: mmap for page-aligned memory, Metal's makeBuffer(bytesNoCopy:) to wrap that pointer as a GPU buffer without copying, and Wasmtime's MemoryCreator trait to use that same mmap region as Wasm linear memory. Benchmarks on an M1 MacBook Pro show RSS overhead of only 0.03 MB vs 16.78 MB for the copy path, with identical compute latency. The author then ran Llama 3.2 1B Instruct through this pipeline via Apple's MLX framework, achieving \~9ms per-token generation with negligible Wasm-to-GPU dispatch overhead. A key capability enabled is portable KV cache snapshots: serializing and restoring conversation context is 5.45× faster than re-prefill at 24 tokens, with the advantage growing linearly with context length. This forms the foundation of 'Driftwood', a runtime for stateful Wasm actors with GPU inference, enabling frozen conversation state to be moved across machines.  
13
22. 22  
[](https://daily.dev/posts/i-rebuilt-traceroute-in-rust-and-it-was-simpler-than-i-expected-mjpvrniwn "I Rebuilt Traceroute in Rust and It Was Simpler Than I Expected")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 22w  
I Rebuilt Traceroute in Rust and It Was Simpler Than I Expected  
A hands-on walkthrough of rebuilding traceroute from scratch in Rust, explaining the TTL trick that makes it work. Covers sending UDP packets with incrementally increasing TTL values, reading raw ICMP replies, parsing packet bytes manually, adding timing, implementing three probes per hop, and detecting when the destination is reached. Also explains why traceroute needs sudo, what asterisks mean, ICMP rate limiting, and the limitations of traceroute output including asymmetric paths and MPLS tunnels. The final implementation is about 80 lines of Rust.  
15
23. 23  
[](https://daily.dev/posts/a-3d-body-from-eight-questions-no-photo-no-gpu-0r6pfre5s "A 3D Body from Eight Questions — No Photo, No GPU")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 20w  
A 3D Body from Eight Questions — No Photo, No GPU  
Clad built a small MLP that predicts 58 body shape parameters from just 8 questionnaire inputs, achieving 0.3 cm height MAE and 0.3–0.5 kg mass MAE — outperforming both a photo-based pipeline and height+weight regression on circumferences. The key innovation is a differentiable physics loss: the MLP's outputs are passed through the Anny body model's forward pass (blendshapes → vertices → volume → mass), so mass errors backpropagate through all volume-related parameters jointly. The model is tiny (\~85 KB), trains in \~60 minutes on a laptop, and runs in milliseconds on CPU. Major lessons include fixing body density calculations per gender using the Siri two-component model, discovering that a training/inference distribution mismatch on ancestry blendshapes caused a 3 kg noise floor, and finding that dataset quality and evaluation rigor mattered far more than model architecture.  
17
24. 24  
[](https://daily.dev/posts/github---brightbeanxyz-brightbean-studio-open-source-self-hostable-social-media-management-platfor-lttv3q90b "GitHub - brightbeanxyz/brightbean-studio: Open-source, self-hostable social media management platform. Schedule, publish, and manage content across 10+ platforms from a single dashboard. Free alternat")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 22w  
GitHub - brightbeanxyz/brightbean-studio: Open-source, self-hostable social media management platform. Schedule, publish, and manage content across 10+ platforms from a single dashboard. Free alternat  
BrightBean Studio is an open-source, self-hostable social media management platform built with Django 5.x and Python 3.12+. It supports scheduling, publishing, and managing content across 10+ platforms including Facebook, Instagram, LinkedIn, TikTok, YouTube, Pinterest, Threads, Bluesky, Google Business Profile, and Mastodon. Key features include multi-workspace RBAC, a visual content calendar, approval workflows, a unified social inbox with sentiment analysis, a media library, and a client portal with magic-link access. It can be deployed via Docker on a VPS or one-click to Heroku, Render, or Railway. Licensed under AGPL-3.0 with no paid tiers or feature gates, positioning itself as a free alternative to tools like Sendible or SocialPilot.  
11
25. 25  
[](https://daily.dev/posts/4-bring-back-idiomatic-design-hc9xpxqgn "#4: Bring Back Idiomatic Design")  
Article  
![Avatar of hn](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn)Hacker News · 22w  
#4: Bring Back Idiomatic Design  
A nostalgic but substantive argument for reviving idiomatic design in web software. The author contrasts the consistency of the desktop software era (Windows 95–7), where OS-enforced GUI conventions created homogeneous interfaces, with today's fragmented web app landscape where every product reinvents its own interaction patterns. Two root causes are identified: the mobile transition forcing awkward desktop/mobile hybrids, and the explosion of frontend frameworks that bypass HTML idioms. Apple and Substack are cited as modern successes that enforce strong design systems. The post closes with eight practical rules for product builders to follow design idioms more closely, from using semantic HTML elements to preferring words over icons.  
13

[See all Hacker News archives](/sources/hn/best-of)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://daily.dev/sources/hn/best-of/2026/04#page","url":"https://daily.dev/sources/hn/best-of/2026/04","name":"Best Hacker News Posts — April 2026","description":"The most upvoted Hacker News posts from April 2026, curated by the daily.dev community.","isPartOf":{"@type":"WebSite","url":"https://daily.dev"}},{"@type":"ItemList","@id":"https://daily.dev/sources/hn/best-of/2026/04#items","numberOfItems":25,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://daily.dev/posts/how-i-run-multiple-10k-mrr-companies-on-a-20-month-tech-stack-kfgbfyx0z","name":"How I run multiple $10K MRR companies on a $20/month tech stack"},{"@type":"ListItem","position":2,"url":"https://daily.dev/posts/3-constraints-before-i-build-anything-18sjhp8qt","name":"3 constraints before I build anything"},{"@type":"ListItem","position":3,"url":"https://daily.dev/posts/github---calcom-cal-diy-scheduling-infrastructure-for-absolutely-everyone--cutxatwvc","name":"GitHub - calcom/cal.diy: Scheduling infrastructure for absolutely everyone."},{"@type":"ListItem","position":4,"url":"https://daily.dev/posts/5nf-and-database-design-vsrqycbk9","name":"5NF and Database Design"},{"@type":"ListItem","position":5,"url":"https://daily.dev/posts/github---nikolays-pgque-pgque-zero-bloat-postgres-queue-one-sql-file-to-install-pg-cron-to-tick-idiaxcm6k","name":"GitHub - NikolayS/pgque: PgQue – Zero-bloat Postgres queue. One SQL file to install, pg_cron to tick."},{"@type":"ListItem","position":6,"url":"https://daily.dev/posts/drunk-post-things-i-ve-learned-as-a-senior-engineer-6tll4bzvn","name":"Drunk Post: Things I’ve Learned as a Senior Engineer"},{"@type":"ListItem","position":7,"url":"https://daily.dev/posts/the-claude-code-leak-sfol5ptnp","name":"The Claude Code Leak"},{"@type":"ListItem","position":8,"url":"https://daily.dev/posts/github---maaslalani-sheets-terminal-based-spreadsheet-tool-bi6qoidoq","name":"GitHub - maaslalani/sheets: Terminal based spreadsheet tool"},{"@type":"ListItem","position":9,"url":"https://daily.dev/posts/github---fabienmillet-wiifin-jellyfin-client-for-wii-6883awqqn","name":"GitHub - fabienmillet/WiiFin: Jellyfin Client for Wii"},{"@type":"ListItem","position":10,"url":"https://daily.dev/posts/fastcgi-30-years-old-and-still-the-better-protocol-for-reverse-proxies-bx9uebvg5","name":"FastCGI: 30 Years Old and Still the Better Protocol for Reverse Proxies"},{"@type":"ListItem","position":11,"url":"https://daily.dev/posts/i-quit-the-clankers-won--cl5m5lqi0","name":"I quit. The clankers won."},{"@type":"ListItem","position":12,"url":"https://daily.dev/posts/south-korea-introduces-universal-basic-mobile-data-access-peyll2ulv","name":"South Korea introduces universal basic mobile data access"},{"@type":"ListItem","position":13,"url":"https://daily.dev/posts/github---nv404-gova-ajqamci0g","name":"GitHub - NV404/gova"},{"@type":"ListItem","position":14,"url":"https://daily.dev/posts/productive-procrastination-max-van-ijsselmuiden-g2p56suud","name":"Productive procrastination — Max van IJsselmuiden"},{"@type":"ListItem","position":15,"url":"https://daily.dev/posts/pgit-i-imported-the-linux-kernel-into-postgresql-m2y7idpub","name":"pgit: I Imported the Linux Kernel into PostgreSQL"},{"@type":"ListItem","position":16,"url":"https://daily.dev/posts/github---seanfdz-macmind-single-layer-transformer-in-hypertalk-for-the-classic-macintosh-4dvnnrfsw","name":"GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh"},{"@type":"ListItem","position":17,"url":"https://daily.dev/posts/github---linebender-xilem-an-experimental-rust-native-ui-framework-q074au2rm","name":"GitHub - linebender/xilem: An experimental Rust native UI framework"},{"@type":"ListItem","position":18,"url":"https://daily.dev/posts/i-made-a-terminal-pager-lytkbuklb","name":"I Made a Terminal Pager"},{"@type":"ListItem","position":19,"url":"https://daily.dev/posts/soft-launch-of-open-source-code-platform-for-government-u78wivqlc","name":"Soft launch of open-source code platform for government"},{"@type":"ListItem","position":20,"url":"https://daily.dev/posts/what-async-promised-and-what-it-delivered-causality-ocp1tkuw6","name":"What Async Promised and What it Delivered — Causality"},{"@type":"ListItem","position":21,"url":"https://daily.dev/posts/zero-copy-gpu-inference-from-webassembly-on-apple-silicon-oqawturhp","name":"Zero-Copy GPU Inference from WebAssembly on Apple Silicon"},{"@type":"ListItem","position":22,"url":"https://daily.dev/posts/i-rebuilt-traceroute-in-rust-and-it-was-simpler-than-i-expected-mjpvrniwn","name":"I Rebuilt Traceroute in Rust and It Was Simpler Than I Expected"},{"@type":"ListItem","position":23,"url":"https://daily.dev/posts/a-3d-body-from-eight-questions-no-photo-no-gpu-0r6pfre5s","name":"A 3D Body from Eight Questions — No Photo, No GPU"},{"@type":"ListItem","position":24,"url":"https://daily.dev/posts/github---brightbeanxyz-brightbean-studio-open-source-self-hostable-social-media-management-platfor-lttv3q90b","name":"GitHub - brightbeanxyz/brightbean-studio: Open-source, self-hostable social media management platform. Schedule, publish, and manage content across 10+ platforms from a single dashboard. Free alternat"},{"@type":"ListItem","position":25,"url":"https://daily.dev/posts/4-bring-back-idiomatic-design-hc9xpxqgn","name":"#4: Bring Back Idiomatic Design"}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Sources","item":"https://daily.dev/sources"},{"@type":"ListItem","position":3,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":4,"name":"Best of","item":"https://daily.dev/sources/hn/best-of"},{"@type":"ListItem","position":5,"name":"April 2026"}]}]}
```

