New stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. EU approves sending mountains of trash to Turkey despite environmental fears(politico.eu ↗)
    discuss
  2. Verification of a Generational Garbage Collector(arxiv.org ↗)
    discuss
  3. Salesforce and Nvidia launch Koa, a CRM reasoning model(salesforce.com ↗)
    discuss
  4. Antonio Gramsci: How Language Makes Power Feel Like Common Sense(linguistically.substack.com ↗)
    discuss
  5. Replicating Jev with Qwen-2.5(perennialte.ch ↗)
    discuss
  6. Revisiting Soundness for Occurrence Typing, Semantically(arxiv.org ↗)
    discuss
  7. Black Holes or Black Hole Stars?(quantamagazine.org ↗)
    discuss
  8. GPT-6 Astra vs. GPT-5.6 Sol: Is a 1.6x Higher Cost Worth It per Verified Bug?(ent-website-gamma.vercel.app ↗)
    discuss
  9. Reclaim the Terminal(nishantjosh.dev ↗)
    discuss
  10. Nature Is Our Learning Environment(periodic.com ↗)
    discuss
  11. Hello HN
    discuss
  12. The Chemistry of Cookery XVII (1884)(wikisource.org ↗)
    discuss
  13. Bug Bounty Operating Principles(medium.com/jasonpuglisi ↗)
    discuss
  14. CodeProject in read-only mode since October 2024(wikipedia.org ↗)
    discuss
  15. What's New in macOS 27 for Developers?(freecodecamp.org ↗)
    discuss
  16. Effectively Does a Model Use Its Memory (2025)(liquid.ai ↗)
    1comments
  17. OpenAI breakthrough triggers 'existential crisis' in math(science.org ↗)
    discuss
  18. Show HN: 2049 - a roguelike that fuses 2048 and Minesweeper(github.com/skorotkiewicz ↗)
    discuss
  19. Why Scheme?(goeteia.dev ↗)
    discuss
  20. Symbolic Artificial Intelligence(wikipedia.org ↗)
    discuss
  21. AI models in 'surreal' dialect mixing poetic language and tech bro jargon(theguardian.com ↗)
    discuss
  22. Show HN: Context Freshness Ledger – a tiny schema for reviewable agent memory(github.com/chengyixu ↗)
    discuss
  23. Novel Particle Beam Could Challenge Einstein's Theory of Gravity(ethz.ch ↗)
    discuss
  24. FBI boarded Texas-bound oil tanker to investigate cyberattack(cbsnews.com ↗)
    1comments
  25. NASA-backed scientists turn plastic waste into edible cookies(sciencedaily.com ↗)
    1comments
  26. "Filmmaker" suing PassThePopcorn may be banned user out for revenge(arstechnica.com ↗)
    discuss
  27. William Buckland's Theology of Geology(historytoday.com ↗)
    discuss
  28. Broken Windows, Abstractions and the Cost of Always Keeping Things Simple(pgilmartin.substack.com ↗)
    1comments
  29. Show HN: ZenTabTimer, an HTML timer where browser favicon is the timer(github.com/kevinpondmind ↗)
    discuss
  30. Inference Is the Last LLM Moat(vincentschmalbach.com ↗)
    discuss

Broken Windows, Abstractions and the Cost of Always Keeping Things Simple

1 pointsby 53m agopgilmartin.substack.com
1 comments
12m agoHN ↗

How can a team combat this, so that we can simultaneously avoid premature abstraction and broken windows leading to overdue abstraction?

From experience, premature abstractions are rarely premature unless you really try and anticipate years into the future. What happens is that abstractions can go in the wrong direction, and when they're not useful then they're called premature incorrectly.

For all the reasons outlined in the article, you want to anticipate how the software will scale, to allow room for growth. As a simple example, if you need one component, think what are the likelihood of similar components in the future, then parameterize that component so it avoids duplication. There is some risk in doing this if you get it wrong, but that's what skill and experience gives you (if you do lots of software design).

The broader pattern goes like this: spend some extra time building out the software to accomodate potential future growth, and be explicit about the assumptions so you know when the growth will start to strain the system again. At that point anticipate that next abstraction point, and plan accordingly to then abstract everything to the next level, adding even more room for scaling the software (not the users, but the actual code and features). This creates slow periods of development, followed by big spikes of productivity as the abstractions are used, i.e. creating a new feature is as simple as importing and using a few functions or maybe even just configuration.