Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Human brain is two separate organs, Stanford Medicine-led research finds(stanford.edu ↗)
    94comments
  2. If math is more than proof, we need to better celebrate the rest of it(terrytao.wordpress.com ↗)
    59comments
  3. GPT-6 Astra Solves a WWI German Radio Cipher(prinzai.com ↗)
    47comments
  4. San Francisco Onion Futures Company(onionfutures.com ↗)
    66comments
  5. Android 17 is the first since 3.x to add new APIs without releasing to the AOSP(grapheneos.social ↗)
    412comments
  6. Apple M6 Pro Achieves the Highest Single-Core CPU Score in Geekbench 7(geekbench.com ↗)
    38comments
  7. Typesafe-computer-use drives a Mac toward a goal for 1/50th of a cent per step(github.com/awlevin ↗)
    48comments
  8. "The Secret Life of Circuits" is here(coredump.cx ↗)
    5comments
  9. Cloudflare Quick Tunnels(cloudflare.com ↗)
    282comments
  10. AI posters don't have to be horrible(john.hartnup.uk ↗)
    1comments
  11. SDCC – Small Device C Compiler(sourceforge.net ↗)
    17comments
  12. Science Is Open Software(jepedersen.dk ↗)
    38comments
  13. You can run Git on object storage if you re-make packfiles(tigrisdata.com ↗)
    15comments
  14. How to Write with an LLM(sockpuppet.org ↗)
    330comments
  15. Saving another 100TB of RAM(cloudflare.com ↗)
    78comments
  16. Why building a Rust LSP is hard(rust-glancer.github.io ↗)
    32comments
  17. How OpenAI Used Its Own LLMs to Design Its Jalapeño Chip(ieee.org ↗)
    87comments
  18. Ctenophores: Wonders of Biology(quantamagazine.org ↗)
    5comments
  19. NASA-IBM Lunar Foundation open-Source Geospatial AI Model(usra.edu ↗)
    2comments
  20. The first new cat species discovered in 100 years(nationalgeographic.com ↗)
    104comments
  21. OpenJev(openjev.com ↗)
    265comments
  22. Goroutine Leak Profiles(go.dev ↗)
    3comments
  23. Show HN: Cactus Needle 3: 8-29MB automation models can match DeepSeek V4 Flash(cactuscompute.com ↗)
    88comments
  24. Photon-Emission-Guided Laser Fault Injection Enables RP2350 Secure Debug(ledger.com ↗)
    70comments
  25. Minimal Phone 2(minimalcompany.com ↗)
    225comments
  26. Suppress vulnerabilities applying Kubernetes context to scans(github.com/alegrey91 ↗)
    2comments
  27. Veronese's Dogs(publicdomainreview.org ↗)
    discuss
  28. Cache-to-Cache: Direct Semantic Communication Between LLMs (2025)(arxiv.org ↗)
    13comments
  29. Warez: The Infrastructure and Aesthetics of Piracy (2021)(archive.org ↗)
    66comments
  30. Inside ZCode: Silently uploading your Git history to the cloud(ferstar.org ↗)
    100comments

LMDB – First version of Redis written in Tcl

149 pointsby 9y agogist.github.com
25 comments
9y agoHN ↗

This is really inspiring. Reminds me of the quote "A complex system that works is invariably found to have evolved from a simple system that worked."

The interesting question of course is how to evolve a simple system into a successful complex system. One thing that seems important is nailing the right architecture early on - the simple system must contain all the right ideas in it and it is important to weed out bad ideas before they are entrenched in the code base. Still, planning the long-term evolution of a software system remains an arcane art to me. "Listen to your users and do what is necessary at the moment" is too simplistic.

9y agoHN ↗

On the contrary I don't think you can plan architectural perfection from the beginning. IMO you have to throw it in a prod-like environment early (preferably as an internal app with a minimal SLO) so that you can iterate early and often.

9y agoHN ↗

That's what I talked about in the last sentence of my post. It is important to do this, but it is not the whole story. How do you decide in which direction to iterate?

9y agoHN ↗

I think it takes experience. That's why I still believe that sw architects are really essential.

9y agoHN ↗

Similar to my sibling comment I think the value in sw architects isn't the ability to predict the future from experience, rather they should build systems that can accept reasonable change.

Some practical examples would be to implement build systems into their stack that accept database migrations and rollbacks easily. Or realizing they are in a fast-paced team that could benefit from specific frameworks and languages (experience would play a big role here).

9y agoHN ↗

Make it feature-driven. When Facebook came out they didn't know photo sharing would be a definitive feature. When they put it out there they took a slug to the shoulder for not realizing it sooner and then implemented relevant features (like tagging).

Similarly when Redis came out I doubt the creator realized everybody and their grandmother would use lists as a defacto message queue but now look at all the commands list has that facilitate just that.

Key point is to accept and welcome that slug to the shoulder that pushes you in the right direction, to abuse the metaphor.

9y agoHN ↗

Iirc Zuckerberg allowed profile pics but realized people kept changing them all the time so they implemented photos

9y agoHN ↗

The ability to plan falls out of experience.

All you have to do is listen to your users and do what's necessary if you have scars to remind you that sticking IO here will bring the system to its knees on a real user load, or that this customer is going to ask for LDAP integration next week so you better build your authentication accordingly.

9y agoHN ↗

I agree that experience helps, but experience alone is insufficient. Experience should be properly reflected upon, or you can stick to suboptimal practices justifying them by saying "that's how I always do it, worked for me in the past".

Experience can even be detrimental - the well-known second system syndrome comes to mind!

9y agoHN ↗

Yet lack of experience won't help either...

so, experience and keeping up with what customers need

9y agoHN ↗

If you are able to rewrite the code base in a short amount of time, the infrastructure problems are easier to handle. That way you can move forward faster and fix problems early on.

9y agoHN ↗

Yes, when the code base is small, evolving it is much simpler. One of the challenges is deciding on the exact right moment to introduce big changes - too early and the changes are in the wrong direction or even useless, too late and the amount of work is prohibiting and you are forced to live with suboptimal architecture.

9y agoHN ↗

Yeah, I agree. I think the real challange is to keep the code base in such a good shape that a rewrite of the whole thing or parts of is always doable. Someone talked about never writing modules that can't be rewritten in two weeks.

9y agoHN ↗

Yes, when the code base is small, evolving it is much simpler.

There's obviously some truth to that. But I also think it leaves or an important angle: Often larger, more complicated, features are easier to add if you have a lot of infrastructure pieces.

Say, in a database, if you have no durability (journaling), resource management (errors, locks), error checking (deadlocks, days checksumming), it'll be a lot more work to add support for some new query language [feature]. Now databases are my thing, but the same it's true for a lot of areas.

Disregarding that is IMO one of the reasons ground up rewrites fail so often: You'll get bogged down with infrastructure for a long time, without proper non toy users of the facility.

9y agoHN ↗

antirez mentions that this forks to save, but I'm not seeing that. The backgroundsave procedure makes a copy of db to dbcopy, but then never saves dbcopy. I wonder how much further the TCL implementation was extended before antirez switched to C.

BTW, I hadn't heard of LLOOGG (the L in LMDB) before. It was this:

"LLOGG was web service I (Salvatore Sanfilippo) and my co-founder Fabio Pitrola ran for seven years for free."

https://github.com/antirez/lloogg/blob/master/README.md

9y agoHN ↗

You are right, the intention was that but now I'm reminding that, in the middle of doing it, I thought, ok I reached the limits of the Tcl prototype, let's rewrite in C.

9y agoHN ↗

To be fair, LLOOGG Memory DB is apparently earlier than Lightning Memory-Mapped Database

9y agoHN ↗

As someone who worked for a company for a few years on a vast Tcl codebase, a company in which almost every engineer lamented the fact that they were working in an unused and unknown language, it warms my heart to see that it was used for this.