Software Engineering
- Saving another 100TB of RAM
- I have a theory that software drives people insane
- Shopify is moving from React Native back to Swift and Kotlin
- What algorithm did Windows XP use to choose your initial user picture?
- bzip3
- There's no reason for software to be slow anymore
- The Case Against Formal Verification, 50 Years Later
- Engineers will do anything to avoid learning from history
- Choose Boring Technology (2015)
- Taste Is All That's Left
- "Clean" Code, Horrible Performance (2023)
- The Art of 64-bit Assembly
- Show HN: Elevators
- Why don't people use formal methods? (2019)
- The Productivity Mirage
- We have proof automation now
- If coding has been solved, why does software keep getting worse?
- Perfection is not over-engineering
- Minecraft: Java Edition now uses SDL3
- Ask HN: Is it just me, or is software buggier across the board?
- Decoding the obfuscated bash script on a Uniqlo t-shirt
- The primary purpose of code review is to find code that will be hard to maintain
- FFmpeg 9.1's new AAC encoder
- Box3D, an open source 3D physics engine
- The cost YAGNI was never about
- Fintech Engineering Handbook
- You can't unit test for taste
- Prefer duplication over the wrong abstraction (2016)
- Ask HN: Will programmers write more efficient code during the memory shortage?
- I hate compilers
- I admire Fabrice Bellard. He is almost certainly a better overall programmer
- Formal methods and the future of programming
- Lines of code got a better publicist
- Making Graphics Like it's 1993
- How's Linear so fast? A technical breakdown
- Ntsc-rs – open-source video emulation of analog TV and VHS artifacts
- Pokemon Emerald Ported to WebAssembly (100k FPS)
- Conventional Commits encourages focus on the wrong things
- Programmers will document for Claude, but not for each other
- Every Byte Matters
- Should you normalize RGB values by 255 or 256?
- Dav2d
- The AV2 Video Standard Has Released (Final v1.0 Specification)
- The just-say-no engineer was a ZIRP phenomenon
- Show HN: Freenet, a peer-to-peer platform for decentralized apps
- NASA still maintains some of the Voyager spacecraft code from the 70s era
- Why senior developers fail to communicate their expertise
- Learning Software Architecture
- Ask HN: We just had an actual UUID v4 collision...
- Formatting a 25M-line codebase overnight
- Dav2d
- Super ZSNES – GPU Powered SNES Emulator
- Sabotaging projects by overthinking, scope creep, and structural diffing
- I don't want your PRs anymore
- Laws of Software Engineering
- 10 years ago, someone wrote a test for Servo that included an expiry in 2026
- Saying goodbye to Agile
- Lean proved this program correct; then I found a bug
- The economics of software teams: Why most engineering orgs are flying blind
- How NASA built Artemis II’s fault-tolerant computer
- The 1987 game “The Last Ninja” was 40 kilobytes
- Big-Endian Testing with QEMU
- The Claude Code Leak
- Should QA exist?
- Apple randomly closes bug reports unless you "verify" the bug remains unfixed
- Why I forked httpx
- The gold standard of optimization: A look under the hood of RollerCoaster Tycoon
- The three pillars of JavaScript bloat
- We rewrote our Rust WASM parser in TypeScript and it got faster
- Java is fast, code might not be
- Rob Pike’s Rules of Programming (1989)
- Every layer of review makes you 10x slower
- Meta’s renewed commitment to jemalloc
- Returning to Rails in 2026
- Faster asin() was hiding in plain sight
- Good software knows when to stop
- Nobody gets promoted for simplicity
- Claude is an Electron App because we've lost native
- When AI writes the software, who verifies it?
- Open source is not about you (2018)
- My iPhone 16 Pro Max produces garbage output when running MLX LLMs
- The lost art of XML
- ISO PDF spec is getting Brotli – ~20 % smaller documents with no quality loss
- Why users cannot create Issues directly
- No Graphics API
- GraphQL: The enterprise honeymoon is over
- Apple Maps claims it's 29,905 miles away
- Configuration files are user interfaces
- Dev Compass – Programming Philosophy Quiz
- How to make websites that will require lots of your time and energy
- Serving 200M requests per day with a CGI-bin
- Math.Pow(-1, 2) == -1 in Windows 11 Insider build
- On File Formats
- Bloat is still software's biggest vulnerability (2024)
- Clean Code vs. A Philosophy Of Software Design
- Is this the simplest (and most surprising) sorting algorithm ever? (2021)
- Boring tech is mature, not old
- Ask HN: Would you still choose Ruby on Rails for a startup in 2025?
- Build It Yourself
- Tech takes the Pareto principle too far
- Understanding gRPC, OpenAPI and REST and when to use them in API design (2020)
- Ropey – A UTF8 text rope for manipulating and editing large text
- Build a Database in Four Months with Rust and 647 Open-Source Dependencies
- Literate programming: Knuth is doing it wrong (2014)
- Debugging: Indispensable rules for finding even the most elusive problems (2004)
- Why some DVLA digital services don't work at night
- If we had the best product engineering organization, what would it look like?
- Nearly all binary searches and mergesorts are broken (2006)
- Be Aware of the Makefile Effect
- Formal Methods: Just Good Engineering Practice? (2024)
- Lines of code that beat A/B testing (2012)
- Mistakes engineers make in large established codebases
- Show HN: Tramway SDK – An unholy union between Half-Life and Morrowind engines
- Printf debugging is ok
- Writing a simple pool allocator in C
- Static search trees: faster than binary search
- Systems ideas that sound good but almost never work
- Software Design Is Knowledge Building
- Database mocks are not worth it
- Why it's hard to trust software, but you mostly have to anyway
- Short Message Compression Using LLMs
- Seconds Since the Epoch
- That's not an abstraction, that's a layer of indirection
- On the nature of computing science (1984)
- Cognitive load is what matters
- Long Term Software Development
- How do you do, fellow web developers? A growing disconnect
- There's No Such Thing as Software Productivity (2012)
- Ideas from "A Philosophy of Software Design"
- The RAM Myth
- Translating 10M lines of Java to Kotlin
- Go Protobuf: The New Opaque API
- Preferring throwaway code over design docs
- Test
- Elixir/Erlang Hot Swapping Code (2016)
- What every systems programmer should know about concurrency (2020) [pdf]
- Django and Postgres for the Busy Rails Developer
- Lies I was told about collab editing, Part 1: Algorithms for offline editing
- Does Your Code Pass the Turkey Test? (2008)
- Every V4 UUID
- Diátaxis – A systematic approach to technical documentation authoring
- Message order in Matrix: right now, we are deliberately inconsistent
- Egoless Engineering
- PR process killing morale and productivity
- Engineers do not get to make startup mistakes when they build ledgers
- TrunkVer
- You can use C-Reduce for any language
- Rails is better low code than low code
- Functional Programming Self-Affirmations
- Understanding SIMD: Infinite complexity of trivial problems
- Show HN: Rill – Composable concurrency toolkit for Go
- Charset="WTF-8"
- Don’t look down on print debugging
- RGFW: Single-header C99 window abstraction library
- When did estimates turn into deadlines?
- Dear sir, you have built a compiler (2022)
- The tragedy of running an old Node project
- Writes large correct programs (2008)
- Against Best Practices
- Good Software Development Habits
- Air traffic failure caused by two locations 3600nm apart sharing 3-letter code
- Is the 80 character line limit still relevant? (2008)
- Bus Number – The GitHub plugin my coworkers asked me not to write
- How Chordcat works – a chord naming algorithm
- Principles for product velocity
- WebSockets cost us $1M on our AWS bill
- Thinking about recipe formats more than anyone should
- Monorepo – Our Experience
- Rewrite It in Rails
- The carefulness knob
- Australia/Lord_Howe is the weirdest timezone
- We're forking Flutter
- Write code that is easy to delete, not easy to extend (2016)
- You-get: Dumb downloader that scrapes the web
- Using Rust in non-Rust servers to improve performance
- Boeing 787s must be reset every 51 days or 'misleading data' is shown (2020)
- Self-Documenting Code
- What happens when you make a move in lichess.org?
- Software Engineering Body of Knowledge (SWEBOK) v4.0 is out [pdf]
- OOP is not that bad
- Ask HN: What's the most creative 'useless' program you've ever written?
- What docs-as-code means
- JSON Patch
- Unit tests as documentation
- What do you visualize while programming?
- Hacker Typer
- Gettiers in software engineering (2019)
- Scrum's “Product Owner” Problem
- How to make Product give a shit about your architecture proposal
- Don't let dicts spoil your code
- My first game with Carimbo, my homemade engine
- A popular but wrong way to convert a string to uppercase or lowercase
- Automating processes with software is hard
- John Carmack on inlined code (2014)
- Why does man print "gimme gimme gimme" at 00:30? (2017)
- The Fastest Mutexes
- No such thing as exactly-once delivery
- FFT-based ocean-wave rendering, implemented in Godot
- It's hard to write code for computers, but it's harder to write code for humans
- Small3dlib: Public domain 3D software rasterizer
- The Slow, Painful Death of Agile and Jira
- How to avoid a BSOD on your 2B dollar spacecraft
- Move Fast and Abandon Things
- Flappy Bird for Android, only C, under 100KB
- The Age of Software Artisans
- What 10k Hours of Coding Taught Me: Don't Ship Fast
- CuPy: NumPy and SciPy for GPU
- Yes, you can have exactly-once delivery
- Holding a Program in One's Head (2007)
- The Waterfall Model was a straw man argument from the beginning (2015)
- Why Scrum is stressing you out
- CrowdStrike ex-employees: 'Quality control was not part of our process'
- Master Hexagonal Architecture in Rust
- Why Not Comments
- A good day to trie-hard: saving compute 1% at a time
- Which open-source projects are widely used but maintained by just a few people?
- Bitten by Unicode
- Core: an experimental new way to write videogames
- UE5 Nanite in WebGPU
- What's functional programming all about? (2017)
- Greppability is an underrated code metric
- The Art of Finishing
- SDL3 new GPU API merged
- Ask HN: What books should I read to improve as a software engineer?
- Why is the Oral-B iOS app almost 300 MB? And why is Colgate's app even bigger..?
- Pie doesn't need to be original unless you claim it so
- Fixing a bug in Google Chrome as a first-time contributor
- TIL: Versions of UUID and when to use them
- SurrealEngine: Open-source reimplementation of Unreal Engine with playable UT99
- Outsourcing Cost Boeing Billions (2019)
- Code review antipatterns
- Mimalloc Cigarette: Losing one week of my life catching a memory leak (Rust)
- ShadPS4 – PlayStation 4 emulator
- Good refactoring vs. bad refactoring
- Algorithms we develop software by
- Micro-libraries should never be used
- Good programmers worry about data structures and their relationships
- 0xCAFEBABE & 0xFEEDFACE (2003)
- I Created 175 Fonts Using Rust
- Moxie Marlinspike: Agile is killing software innovation
- Scrum is the Symptom, not the Problem
- How Uber tests payments in production
- Please do not attempt to simplify this code
- Ask HN: Should we bring software dev in-house?
- How I Program in 2024
- Porting my JavaScript game engine to C for no reason
- How to build quickly
- "We ran out of columns"
- I recreated Shazam’s algorithm with Go
- tolower() with AVX-512
- Perfectionism – one of the biggest productivity killers in the eng industry
- My Favorite Algorithm: Linear Time Median Finding (2018)
- Parse, Don't Validate (2019)
- Let's blame the dev who pressed "Deploy"
- Ask HN: Can anyone from Crowdstrike explain the back story?
- Never Update Anything
- Ask HN: Fast data structures for disjoint intervals?
- Premature Abstraction
- Story points are pointless, measure queues
- Show HN: Resurrecting a dead Dune RTS game
- Engineering principles for building financial systems
- Big Ball of Mud (1999)
- Brian Kernighan on “The Practice of Programming” [video]
- Real-time audio programming 101: time waits for nothing (2011)
- C++ patterns for low-latency applications including high-frequency trading
- Malloc broke Serenity's JPGLoader, or: how to win the lottery (2021)
- The Software Crisis
- Ask HN: Is there any software you only made for your own use but nobody else?
- The sad state of property-based testing libraries
- Kanban vs. Scrum: What's the difference?
- The saddest "Just Ship It" story ever (2020)
- Don't use booleans (2019)
- Do not taunt happy fun branch predictor (2023)
- All I want for Christmas is a negative leap second
- Code reviews do find bugs
- Programmers should never trust anyone, not even themselves
- A bunch of programming advice I'd give to myself 15 years ago
- A Eulogy for DevOps
- Ask HN: What is the best code base you ever worked on?
- gRPC: The Bad Parts
- Show HN: Dorkly – Open source feature flags
- Local First, Forever
- Formal methods: Just good engineering practice?
- Spending 3 months investigating a 7-year old bug and fixing it in 1 line of code
- Atkinson Dithering (2021)
- Wc2: Investigates optimizing 'wc', the Unix word count program
- Let's write a video game from scratch like it's 1987
- Software design gets worse before it gets better
- Ask HN: Why do message queue-based architectures seem less popular now?
- How to test without mocking
- Reformatting 100k Files at Google in 2011
- Just Enough Software Architecture (2010)
- Good code is rarely read
- Show HN: SHAllenge – Compete to get the lowest hash
- H.264 Is Magic (2016)
- I found a 55 year old bug in the first Lunar Lander game
- Notebooks Are McDonalds of Code
- Gerald Sussman: Programming is (should be) fun (2022) [video]
- Show HN: Restate – Low-latency durable workflows for JavaScript/Java, in Rust
- Serious Sam handled massive amounts of enemies on 56k modem connections
- How much of a genius-level move was binary space partitioning in Doom? (2019)
- Scan HTML faster with SIMD instructions – Chrome edition
- Ship Something Every Day
- Anti-patterns in event-driven architecture
- Make your program slower with threads (2014)
- I learned Vulkan and wrote a small game engine with it
- Study finds 268% higher failure rates for Agile software projects
- X is justifiably slow (2022)
- This Message Does Not Exist
- Don't DRY Your Code Prematurely
- After 6 years, I'm over GraphQL
- Three Laws of Software Complexity
- Simplicity – Google SRE Handbook (2017)
- Don't microservice, do module
- Clever code is probably the worst code you could write (2023)
- The curious case of the missing period
- Firefox bug gets fixed after 25 years
- C Style: My favorite C programming practices (2014)
- Non-Euclidean Doom: what happens to a game when pi is not 3.14159 (2022) [video]
- Winamp has announced that it is "opening up" its source code
- Computer scientists invent an efficient new way to count
- Nearly all Nintendo 64 games can now be recompiled into native PC ports
- Fast linked lists
- DOS game “F-15 Strike Eagle II” reverse engineering/reconstruction war stories
- Ask HN: Founders who offer free/OS and paid SaaS, how do you manage your code?
- Professional Corner-Cutting (2016)
- Libyear
- UTC, Tai, and Unix Time (2001)
- Symbolica Computer Algebra System
- Ointers: A library for representing pointers where bits have been stolen (2021)
- Design docs at Google (2020)
- A useful productivity measure?
- Simplicity is an advantage but sadly complexity sells better (2022)
- A 100x speedup with unsafe Python
- Making a 3D modeler in C in a week
- I've forked neofetch to keep it alive
- You can't just assume UTF-8
- Airline keeps mistaking 101-year-old woman for 1-year-old baby
- Did we lose our way in making efficient software?
- I found one of my first programs (Java, 2011) on the Wayback Machine and it runs
- What contributing to Open-source is, and what it isn't
- No Abstractions: our API design principle
- Fragmented thinking is a bigger threat to flow state than interruptions
- Understanding and avoiding visually ambiguous characters in IDs
- Programming Is Mostly Thinking (2014)
- Linus Torvalds adds arbitrary tabs to kernel code
- If Inheritance is so bad, why does everyone use it?
- Client libraries are better when they have no API?
- Meta used monolithic architecture to ship Threads in only five months
- How might software development have unfolded if CPU speeds were 20x slower?
- The UX of UUIDs
- Currying
- What is the most useful project you have worked on?
- What to do when an airline website doesn't accept your legal name
- Ask HN: What was an interesting project you started and finished over a weekend?
- Fear makes you a worse programmer (2014)
- FFmpeg 7.0
- Jpegli: A new JPEG coding library
- Subroutine calls in the ancient world, before computers had stacks or heaps
- 3D + 2D: Testing out my cross-platform WASM graphics engine
- Developing a Modern Full-Stack Application: Choosing the Right Tech Stack
- Debian Git Monorepo
- Tech Debt: My Rust Library Is Now a CDO
- Why is the LinkedIn app almost half a gig?
- Scripts should be written using the project main language
- The ü/ü Conundrum
- -2000 Lines of Code (2007)
- Fault tolerance and resilience patterns for Go
- Losing faith in testing
- Breaking down tasks
- Maybe Functions
- Latency numbers every programmer should know
- Differential: Type safe RPC that feels like local functions
- Show HN: Hatchet – Open-source distributed task queue
- How do computers calculate sine?
- Leaving LinkedIn
- The One Billion Row Challenge in Go: from 1m45s to 4s in nine solutions
- Ask HN: How can I learn about performance optimization?
- Company forgets why they exist after 11-week migration to Kubernetes (2020)
- Things You Should Never Do, Part I (2000)
- Ask HN: Did you encounter any leap year bugs today?
- A lock-free ring-buffer with contiguous reservations (2019)
- You've just inherited a legacy C++ codebase, now what?
- How video games use lookup tables
- Testcontainers
- Pains of building your own billing system
- Quality is a hard sell in big tech
- After 14 years in the industry, I still find programming difficult
- If architects had to work like programmers (1995)
- Web Scraping in Python – The Complete Guide
- X.org Server Clears Out Remnants for Supporting Old Compilers
- In Defense of Simple Architectures (2022)
- A Plea for Lean Software (1995)
- Floats Are Weird
- Python datetime pitfalls, and what libraries are (not) doing about it
- UI = f(statesⁿ)
- Three virtues of a great programmer
- How to commit part of file in Git
- Freenginx: Core Nginx developer announces fork
- Mastering Programming (2016)
- Is something bugging you?
- Non-code contributions to open source
- Enhancing Factorio with SAT solvers
- It Can Be Done (2003)
- Building the DirectX shader compiler better than Microsoft?
- How I write HTTP services in Go after 13 years
- A 2024 plea for lean software
- Rebuilding Netflix's video processing pipeline with microservices
- Claim: the ideal PR is 50 lines long
- The decline of hardware knowledge in the era of cloud native compute
- When should you give up on a project that doesn't work?
- My favourite Git commit (2019)
- Making a PDF that's larger than Germany
- The C bounded model checker: criminally underused
- We made an animated movie in 8kB
- Good DevEx increases productivity. Here is the data
- Why is machine learning 'hard'? (2016)
- Machine Learning Is Still Too Hard for Software Engineers
- U.S. National Park Service API
- Lowercase letters save data
- Memory leak proof every C program
- A 2024 Plea for Lean Software
- Queues don't fix overload (2014)
- Nintendo Switch Emulator: Progress Report December 2023
- "Software is getting slower more rapidly than hardware becomes faster."
- Scrum Sucks
- Dynamic programming is not black magic
- AsmBB – a lightweight web forum engine written in assembly language
- 20.5 Years of XP and Agile (2020)
- Your last name contains invalid characters (2010)
- "LibreOffice is better at reading old Word files than Word"
- Original Age of Empires 2 dev talks about its usage of assembly code
- Hard disk LEDs and noisy machines
- Don't pass structs bigger than 16 bytes on AMD64
- Bad scientific code beats code following "best practices" (2014)
- Cold showers on overhyped topics (2017)
- The One Billion Row Challenge
- Sieve is simpler than LRU
- First do it, then do it right, then do it better
- 50 Algorithms Every Programmer Should Know (Second Edition)
- New Ultra Fast Lossless Audio Codec (HALAC)
- A* tricks for videogame path finding
- Subject-First Commit Messages
- Git Things
- I'm skeptical of low-code
- The art of high performance computing
- The worst kind of programmer
- Cold-blooded software
- It's not microservice or monolith; it's cognitive load
- 4B If Statements
- Pitfalls of object oriented programming (2009) [pdf]
- Challenging projects every programmer should try (2019)
- Is Software Getting Worse?
- How Pinterest scaled
- Ask HN: What's your "it's not stupid if it works" story?
- Deep cloning objects in JavaScript
- Code Is Not Technical Debt
- Advice for new software devs who've read all those other advice essays
- Simulating fluids, fire, and smoke in real-time
- The day I started believing in unit tests
- All code is technical debt
- How to unit test code that depends on time
- So you want custom allocator support in your C library
- Atree: A simple and efficient pointer-free tree implementation
- Leave work slightly unfinished for easier flow the next day
- Maybe getting rid of your QA team was bad
- Interviewing my mother, a mainframe COBOL programmer (2016)
- Should you add screenshots to documentation?
- Show HN: A pure C89 implementation of Go channels, with blocking selects
- Tacit Knowledge Is Dangerous
- FFmpeg lands CLI multi-threading as its "most complex refactoring" in decades
- Murder is a pixel art ECS game engine in C#
- Invisible Bunnies That Power World of Warcraft (2017)
- You are never taught how to build quality software
- Goodbye, clean code (2020)
- CPNG, a backwards compatible fork of PNG
- Sqids – Generate short unique IDs from numbers
- The Failed Commodification of Technical Work
- Write libraries instead of services, where possible
- Despite just 5.8% sales, over 38% of bug reports come from the Linux community (2021)
- Why does the moon change size when you snipe it in GTA?
- The big TDD misunderstanding (2022)
- A software epiphany
- Push ifs up and fors down
- Unix Time reaches 1.7 billion
- Rivian software update bricks infotainment system, fix not obvious
- Please Don't Ask If an Open Source Project Is Dead
- Ruby on Rails: The Documentary [video]
- Porsche Open Source Platform
- GPU Survival Toolkit for the AI age
- It's OK if your code is just good enough
- Interesting Bugs Caught by ESLint's no-constant-binary-expression (2022)