frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Ask HN: Who is hiring? (August 2025)

142•whoishiring•10h ago•191 comments

Ask HN: Who wants to be hired? (August 2025)

65•whoishiring•10h ago•167 comments

Ask HN: How do you avoid job hunting burnout?

7•b8•3h ago•6 comments

Ask HN: Is "messaging systems specialist" a real job title or niche?

5•pella_may•2h ago•1 comments

I launched 17 side projects. Result? I'm rich in expired domains

352•cesargstn•2d ago•249 comments

Ask HN: Who Is Looking for a Cofounder?

21•dontoni•8h ago•11 comments

Ask HN: Best AI Automation Platform

2•franze•4h ago•1 comments

Ask HN: AI Chat Agent vs. Traditional Personal Website?

4•JaiRathore•6h ago•1 comments

Ask HN: Anyone know how to reach Cloudflare support?

6•OhMeadhbh•7h ago•5 comments

Nova: A New Web Framework for Erlang

64•taure•1d ago•26 comments

Ask HN: Which software companies hire people in Africa for remote work?

6•DanieleProcida•12h ago•2 comments

Ask HN: Startups, 0 Stability – Is It Time to Move on from Tech?

6•OulaX•13h ago•6 comments

Claude Code weekly rate limits

598•thebestmoshe•4d ago•702 comments

Comparison Between Sync Engines

2•belchiorb•17h ago•1 comments

Ask HN: What are you working on? (July 2025)

258•david927•5d ago•845 comments

Has any YC founder ever gone to jail for startup-related crimes?

8•TeslaK20•22h ago•3 comments

Has AI coding gone too far? I feel like I'm losing control of my own projects

13•Shaun0•1d ago•11 comments

Ask HN: Are developers sad about AI writing more of their code?

13•JFerreol_J•1d ago•21 comments

Ask HN: Anyone using llms.txt on blogs? Worth it for AI search?

6•logic_node•7h ago•5 comments

Tell HN: Add "NSFW" words in your Google query to avoid AI summary

22•behnamoh•3d ago•19 comments

New budget financial API, based on EDGAR data

7•jgfriedman1999•1d ago•5 comments

Ask HN: How will the OSA affect small Mastodon instances?

29•Digit-Al•3d ago•15 comments

Ask HN: Is there a way to see HN without all the posts about AI?

4•dotcoma•13h ago•8 comments

Ask HN: Small Utility App Monetization

5•mywacaday•1d ago•0 comments

Ask HN: Local LLM agents on Jetson/RPi without a heavy runtime

3•takuya_h•1d ago•3 comments

Ask HN: Advise for technical solo founders trying to secure venture capital?

5•siva7•1d ago•4 comments

Warp.dev Terminal – Overpriced, Buggy, and AI-Sabotaged My Code

56•MistermanX•5d ago•39 comments

Ask HN: Catching Up with Current Datacenters

3•Damogran6•1d ago•7 comments

Ask HN: State of the art with local LLMs and agents

4•prmph•1d ago•2 comments

Google Maps Reviews in Germany Are Basically Dead

32•tahaygun•2d ago•18 comments
Open in hackernews

Nova: A New Web Framework for Erlang

64•taure•1d 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•1d ago
Why do you use Erlang instead of Elixir?
colecut•1d ago
It seems he wanted to make an alternative to Elixir..
cmdrk•1d 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•1d 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•1d 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•1d 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•1d 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•1d 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•1d 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•20h 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•9h 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•8h 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
prophesi•1d ago
Not sure how this hit the front page without linking the actual project.

https://novaframework.org/

taure•1d ago
Thank you. I missed to add a new line where the homepage is..
CollinEMac•1d 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•1d ago
Because its not elixir, its erlang. For those of us who dont do elixir, this fits the knowledge I already have.
taure•1d ago
Nova is also more close to beam so it can be used with elixir and lfe or other beam languages.
regularfry•1d 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•1d ago
And Uranus (when spoken aloud) means “your butt”. Is this really a big concern?
LtdJorge•1d 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•1d ago
And "nova" in Portuguese!
jen20•1d 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•1d ago
If nothing else, perhaps this persistent myth helps reduce the naming conflicts when someone wants to use Nova.
SoftTalker•1d 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•1d ago
We did a fireside chat about it a couple of years ago.

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

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