frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

OpenCiv3: Open-source, cross-platform reimagining of Civilization III

https://openciv3.org/
612•klaussilveira•12h ago•180 comments

The Waymo World Model

https://waymo.com/blog/2026/02/the-waymo-world-model-a-new-frontier-for-autonomous-driving-simula...
915•xnx•17h ago•545 comments

What Is Ruliology?

https://writings.stephenwolfram.com/2026/01/what-is-ruliology/
29•helloplanets•4d ago•22 comments

How we made geo joins 400× faster with H3 indexes

https://floedb.ai/blog/how-we-made-geo-joins-400-faster-with-h3-indexes
102•matheusalmeida•1d ago•24 comments

Unseen Footage of Atari Battlezone Arcade Cabinet Production

https://arcadeblogger.com/2026/02/02/unseen-footage-of-atari-battlezone-cabinet-production/
36•videotopia•4d ago•1 comments

Show HN: Look Ma, No Linux: Shell, App Installer, Vi, Cc on ESP32-S3 / BreezyBox

https://github.com/valdanylchuk/breezydemo
212•isitcontent•12h ago•25 comments

Jeffrey Snover: "Welcome to the Room"

https://www.jsnover.com/blog/2026/02/01/welcome-to-the-room/
5•kaonwarb•3d ago•1 comments

Monty: A minimal, secure Python interpreter written in Rust for use by AI

https://github.com/pydantic/monty
206•dmpetrov•12h ago•101 comments

Show HN: I spent 4 years building a UI design tool with only the features I use

https://vecti.com
316•vecti•14h ago•140 comments

Microsoft open-sources LiteBox, a security-focused library OS

https://github.com/microsoft/litebox
355•aktau•18h ago•181 comments

Sheldon Brown's Bicycle Technical Info

https://www.sheldonbrown.com/
361•ostacke•18h ago•94 comments

Hackers (1995) Animated Experience

https://hackers-1995.vercel.app/
471•todsacerdoti•20h ago•232 comments

Show HN: If you lose your memory, how to regain access to your computer?

https://eljojo.github.io/rememory/
267•eljojo•15h ago•157 comments

An Update on Heroku

https://www.heroku.com/blog/an-update-on-heroku/
400•lstoll•18h ago•271 comments

Delimited Continuations vs. Lwt for Threads

https://mirageos.org/blog/delimcc-vs-lwt
25•romes•4d ago•3 comments

Dark Alley Mathematics

https://blog.szczepan.org/blog/three-points/
82•quibono•4d ago•20 comments

PC Floppy Copy Protection: Vault Prolok

https://martypc.blogspot.com/2024/09/pc-floppy-copy-protection-vault-prolok.html
54•kmm•4d ago•3 comments

Was Benoit Mandelbrot a hedgehog or a fox?

https://arxiv.org/abs/2602.01122
9•bikenaga•3d ago•2 comments

How to effectively write quality code with AI

https://heidenstedt.org/posts/2026/how-to-effectively-write-quality-code-with-ai/
242•i5heu•15h ago•183 comments

Introducing the Developer Knowledge API and MCP Server

https://developers.googleblog.com/introducing-the-developer-knowledge-api-and-mcp-server/
51•gfortaine•10h ago•16 comments

I spent 5 years in DevOps – Solutions engineering gave me what I was missing

https://infisical.com/blog/devops-to-solutions-engineering
138•vmatsiiako•17h ago•60 comments

Understanding Neural Network, Visually

https://visualrambling.space/neural-network/
275•surprisetalk•3d ago•37 comments

Show HN: R3forth, a ColorForth-inspired language with a tiny VM

https://github.com/phreda4/r3
68•phreda4•11h ago•13 comments

I now assume that all ads on Apple news are scams

https://kirkville.com/i-now-assume-that-all-ads-on-apple-news-are-scams/
1052•cdrnsf•21h ago•433 comments

Why I Joined OpenAI

https://www.brendangregg.com/blog/2026-02-07/why-i-joined-openai.html
127•SerCe•8h ago•111 comments

Female Asian Elephant Calf Born at the Smithsonian National Zoo

https://www.si.edu/newsdesk/releases/female-asian-elephant-calf-born-smithsonians-national-zoo-an...
28•gmays•7h ago•10 comments

Learning from context is harder than we thought

https://hy.tencent.com/research/100025?langVersion=en
173•limoce•3d ago•93 comments

Vocal Guide – belt sing without killing yourself

https://jesperordrup.github.io/vocal-guide/
7•jesperordrup•2h ago•4 comments

FORTH? Really!?

https://rescrv.net/w/2026/02/06/associative
61•rescrv•20h ago•22 comments

Zlob.h 100% POSIX and glibc compatible globbing lib that is faste and better

https://github.com/dmtrKovalenko/zlob
17•neogoose•4h ago•9 comments
Open in hackernews

Nova: A New Web Framework for Erlang

68•taure•6mo ago
Hi Hacker News community,

I'm excited to share Nova, a new web framework built for Erlang, designed to make web development in Erlang simpler, faster, and more approachable. Nova leverages Erlang's concurrency, reliability, and scalability to create a robust yet lightweight framework for building modern web applications.

Key features:

* Lightweight and modular: Easy to integrate with existing Erlang projects.

* Built for concurrency: Harnesses Erlang's actor model for high-performance web apps.

* Developer-friendly: Simplifies routing, middleware, and template handling.

* Extensible: Supports plugins and custom integrations.

Check it out: GitHub: https://github.com/novaframework/nova Homepage: https://novaframework.org Getting Started Guide: https://dev.to/taure/getting-started-with-nova-1ioo/stats

We’re early in development and would love feedback from the community! If you’re an Erlang enthusiast or curious about building web apps with a language known for its reliability (think WhatsApp or RabbitMQ), give Nova a spin and let us know your thoughts.

What do you think about using Erlang for web development? Any features you’d love to see in a framework like this?

Comments

azaras•6mo ago
Why do you use Erlang instead of Elixir?
colecut•6mo ago
It seems he wanted to make an alternative to Elixir..
cmdrk•6mo ago
Not to pick on you, but there are always posts like this in every Erlang thread. One is not strictly superior to the other, and the BEAM community benefits from the variety IMO.
taure•6mo ago
We started with Erlang before Elixir was created and we still use it for everything we do.

This is more to have a smooth web framework similar to Phoenix but for Erlang.

You can also use Nova for elixir.

johnnyjeans•6mo ago
No rebinding, better fits the grain of the OTP, no AST macros. Last I checked, the debugging experience with elixir was pretty subpar. Erlang is also a fundamentally nicer syntax that I find a great deal more readable. I'm not really sure what the appeal of Elixir as a language is actually supposed to be, outside of people who have spent a lot of time writing Ruby code.
asa400•6mo ago
Full disclosure: I started with Erlang, I get paid to work with Elixir every day, I love Erlang still.

Why someone might like Elixir:

  - slightly less crufty stdlib for a lot of the basic stuff (though we still use the Erlang stdlib all the time)
  - the Elixir community started off using binaries instead of charlists so everything uses binaries
  - great general collections libraries in the stdlib that operate on interfaces/protocols rather than concrete collections (Enum, Stream)
  - macros allow for default impls and a good deal less boilerplate, great libraries like Phoenix and Ecto, and the community seems to be pretty judicious with their use
  - protocols allow datatype polymorphism in a really nice way (I know about behaviours, they are also good)
  - very standard build tool/project layout/generators that have been there from the start (Erlang has caught up here with rebar, it seems)
  - a lot of high quality libraries for web stuff, specifically
  - convenience stuff around common OTP patterns like Task, Task.Supervisor, Agent, etc.
For me, I love the clarity and brevity of Erlang the language but I find Elixir a lot more pleasant to use day-to-day. This is just personal, I am not making a general statement saying Elixir is better.

> Last I checked, the debugging experience with elixir was pretty subpar.

Just curious, why is this? All of the Erlang debugging stuff seems to work.

klibertp•6mo ago
> Just curious, why is this? All of the Erlang debugging stuff seems to work.

But you'd see a decompiled Erlang-ish code in the (WX-based, graphical) debugger, no? Genuinely curious, I think it was like that last I checked, but that was in 2019.

klibertp•6mo ago
> I'm not really sure what the appeal of Elixir as a language is actually supposed to be

Easy:

    - rebinding
    - higher-level OTP abstractions
    - AST macros
    - nicer, more readable syntax
    - (optionally) cleaner stdlib
(Assuming you're not trolling: you chose to focus on features that can only be judged subjectively, and therefore can only be discussed as preferences. It's ok to have them, but actively displaying them is a bit pointless. Objectively measurable features of both languages put them very close together, with both having slight advantages over the other in different areas, on average making them almost equivalent. Especially compared to anything non-BEAM.)
johnnyjeans•6mo ago
I'm not trolling, but I'm very serious about language design after going through a long gauntlet. I don't think making mutation easy, and also having the ability to hide code execution, is necessarily a good practice in a system principally designed for safe, robust and efficient concurrency. Don't use a flathead on a phillips screw.
asa400•6mo ago
Rebinding is not mutation. This seems pedantic but is an important distinction. None of the semantics of the runtime are changed. The data remains immutable. You probably know this. However, for the benefit of readers who may be less familiar: Erlang does not allow variables to be rebound, so it's somewhat typical for Erlang code like this:

  X1 = 8.
  X2 = X1 + 1.
  X3 = X2 * 302.
You cannot, say, do this:

  X1 = 8.
  X1 = X1 + 1.
This is because in Erlang (and in Elixir) the `=` is not just assignment, it is also the operator for pattern matching. This has implications that are too broad for this post, but the key point here is that it's attempting to see if the the left side and the right side "can match".

Whereas writing the same thing in Elixir would look like:

  x = 8
  x = x + 1
  x = x * 302
This is because Elixir allows `x` to be rebound, in effect changing what data `x` points to, but not mutating the underlying data itself. Under the hood Elixir rewrites each expression into something resembling the Erlang version.

The practical effect of this is that if you for example insert a process spawn somewhere in between any of the lines that references `x`, that process gets its own totally immutable version of the data that `x` points to at that point in time. This applies in both Erlang and Elixir, as data in both is completely immutable.

johnnyjeans•6mo ago
It should also be noted that handling state like that is not really idiomatic Erlang. State is updated at a process level, thus traditionally you spawn another process which is trivial to do. On the BEAM that is fast enough for 95% of cases. If you really need mutation on local variables for performance reasons, you should already be writing NIFs anyways.

State variables are what I think corpos call a "code smell". The BEAM/OTP isn't a number cruncher, there are better tools out there if you're doing a lot of that. Erlang is, at it's core, about constraint logic programming. It should be best thought as a tool for granular, scalable, distributable userspace scheduling. If you need something outside of that, NIFs or Ports. Both are quite nice.

asa400•6mo ago
This has nothing to do with math or number crunching on the BEAM. This has nothing to do with mutation. This has nothing to do with performance.

This kind of process and function-local static single-assignment code is all over the place in Erlang codebases. It's incredibly common. The other popular method is tail recursion.

I searched for literally 30 seconds and found these:

  - https://github.com/ninenines/cowboy/blob/master/src/cowboy_router.erl#L139-L144
  - https://github.com/ninenines/cowboy/blob/master/src/cowboy.erl#L201-L205
  - https://github.com/ninenines/cowboy/blob/master/src/cowboy_http2.erl#L487-L506
klibertp•6mo ago
> It should also be noted that handling state like that is not really idiomatic Erlang.

It's not about the state but about intermediate results. When you have a value that you pass to one function, and then you need to pass the result to another function, you're not dealing with a "state" as OTP defines it, unless the calls are asynchronous. Often, they're not, and that's where variable rebinding comes in.

Worth noting: `|>` macro operator in Elixir serves a similar purpose, as long as you don't need pattern matching between calls. In that case, you don't have to name intermediate results at all, resulting in cleaner code.

> State variables are what I think corpos call a "code smell".

Having to call multiple functions in a sequence is the most natural thing to do, and Erlang code is littered with "X1 = ..., X2 = ...(X1), X3 = ...(X2)" kind of code everywhere.

schonfinkel•6mo ago
There are some libraries (based on parse transforms) that introduce a sort of "do" notation to deal with this issue (erlando and its variations come to mind).

Also, the latest versions of OTP have introduced the `maybe` expression: https://www.erlang.org/eeps/eep-0049

klibertp•6mo ago
I love it. I didn't know. It's going to take a while to make this a pervasive feature of most Erlang codebases, but it seems like a good feature to introduce.

I know there are monad libraries using parse transforms and/or list comprehensions, but I often found their use is frowned upon in the Erlang community. I kind of assumed the GP in this thread would reject them, given their negative opinion on macros.

schonfinkel•6mo ago
I was in a similar situation, ended up relying on libs that used parse transforms a lot and then found out most of my usage could have been replaced by the new `maybe` expression.
prophesi•6mo ago
Not sure how this hit the front page without linking the actual project.

https://novaframework.org/

taure•6mo ago
Thank you. I missed to add a new line where the homepage is..
CollinEMac•6mo ago
This seems like a tough sell when Phoenix is already so good. I'm struggling to see why I'd use this over that.
worthless-trash•6mo ago
Because its not elixir, its erlang. For those of us who dont do elixir, this fits the knowledge I already have.
taure•6mo ago
Nova is also more close to beam so it can be used with elixir and lfe or other beam languages.
regularfry•6mo ago
You've run into the same naming problem GM did with the Vauxhall/Opel Nova: "No Va" literally means some variant of "it doesn't go" in (at least) Italian, Spanish, and French.
bobbylarrybobby•6mo ago
And Uranus (when spoken aloud) means “your butt”. Is this really a big concern?
LtdJorge•6mo ago
No, I’m from Spain and have never though about that "no va" thing. Nova comes from Latin AFAIK. It would be "nueva" in Spanish and "nuova" in Italian.

Edit: Uranus is Latin too :)

SwiftyBug•6mo ago
And "nova" in Portuguese!
schonfinkel•6mo ago
Future astronomers will rename it to "Urectum" to stop the stupid jokes.

https://www.youtube.com/watch?v=0czFnIvKOJY

jen20•6mo ago
While this is a nice story, it's not true [1] [2].

[1]: https://www.snopes.com/fact-check/chevrolet-nova-name-spanis...

[2]: https://en.wikipedia.org/wiki/Chevrolet_Chevy_II_/_Nova

macintux•6mo ago
If nothing else, perhaps this persistent myth helps reduce the naming conflicts when someone wants to use Nova.
NinoScript•6mo ago
As a native Spanish speaker, this sounds totally made up. Nova sounds like an astronomy word, like supernova. “No va” to me means something like “it’s not happening” or “the plans have been cancelled”. But it’s pronounced very differently.
SoftTalker•6mo ago
I will check this out. Are you familiar with the Nitrogen framework? I've used it a bit and quite liked it, but not sure it's really an active project anymore.

https://nitrogenproject.com/

Could you compare/contrast Nova to Nitrogen?

taure•6mo ago
We did a fireside chat about it a couple of years ago.

https://youtu.be/PgBzV1-E00k?si=sULVBvLsVPm2S3zl

lelele•6mo ago
You could add it to this Awesome Erlang list: https://github.com/drobakowski/awesome-erlang?tab=readme-ov-...