Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What framework should I learn?
12 points by kirso on April 6, 2024 | hide | past | favorite | 25 comments
In 2024, if you have a good grasp of HTML/CSS/JS without the need for a job and disregarding the # of job postings - what is the best way to get going building full-stack web app?

I've never built a production ready app before and there is still a lot to learn about databases, deployments etc. But I also don't want to spend 5 years to ship a CRUD app with some API fetching and forms.

Any tips would be appreciated!




If it is not for employment right now, I'd say some basic server side rendering + HTMX. This will probably be one of the "hot" tech stacks in 2-5 years. The reason is simply, fast rendering and easy to make and use.

For server side rendering, you can go with something simple like expressjs, flask or even... Wordpress -_X Yes I did just say that.


Yep, seen this going quite a bit:

- Server side framework (Hono or ElysiaJS)

- HTMX / Hyperscript, Alpine

Seems simple enough, but still not a lot of batteries so you kind of start building from scratch every time.


I know people around here won't like it but Symfony is a pretty solid choice. It just works. You don't need fancy servers, weird deployments, etc.

You can create monoliths, miroservices, APIs, it works with almost any DB, it has a good performance, etc.


Out of curiosity, how does Symfony compare to Laravel?


Both are good frameworks but with a very different approach.

Laravel is way more opinionated, you do things the Laravel way. On the other hand Symfony is more flexible, you can use it as a full featured framework or use only the components you need. Laravel itself is built on top of Symfony components.

For quick prototyping Laravel is probably better. It's community is also bigger and they have built many tools for every use case you can imagine. But as I said, you're stuck with their own way of doing things.

Symfony is a bit tougher at first but more elegant. It allows you to write software the way you need. Its components are not tightly coupled and they don't get in your way. And I think it's easier for a Symfony developer to switch to Laravel than viceversa.


A lot depends on what kind of app you want to build.

For my current side projects I am interested in two kinds of technology.

(1) ML-enhanced apps that involve sorting and classifying content. Here I am drawing everything in the back end and using HTMX to partially update the screen to, for instance, create modal dialog boxes. The point here is that I want to quickly add new UI tasks and it will not be so quick if a front end build process is involved. (Notably in my system you can roll out a new task on the back end without reloading the front end)

My back end is Python which I am souring on. The basic problem is that it does not have threads. So if I have a 1GB ML model and a celery with 32 processes I could waste memory with 32 copies of the model. There are ways of working around all this but if I was just using Java, one copy of the model could be shared by any number of threads. Java doesn’t have the ML libraries though. As it is I think adding another RAM stick will solve my problems but that’s not a good answer for a system with a lot of users.

The general principle here is that the vast majority of React apps are just ordinary form processing apps that could be developed using the methods we used back in 1999 and seem to have either forgot or never learned (if we are young.). You could make the case that DX and UX were better then.

(2) Virtual reality applications using

https://aframe.io/

here there is no back end. With these tools you can make a world that is browsable with an ordinary web browser but put on a VR headset and you are there. This is another counter to the boring React app because it is something you could never do with an frontendless site.


The library which runs your ML model will do multithreading. Depending on model size, it may perform the best when passed multiple samples at a time to process. For this reason, it can be useful to implement "micro batching", which combines multiple samples from independent requests into batches that are processed together. In such a model one would have n_processes << n_cpus. Which tends to help with RAM usage also.


I am quite far from ML :)

My app is just a few external APIs

- Fetch audio

- transform to text

- let users edit

- save and publish via a form

- send to another external API


I like the idea of pitching Ruby on Rails. It’s relatively easy to grasp and contains everything including the kitchen sink.

The thing I’ll share is that I have a day job and kids. I learned JavaScript and then started learning a JS framework.

The problem I had was that by the time I was able to become proficient in a framework, it was on its way out and there was some new thing.

I still do a lot of JS with Node and Express and Fastify but I’ve stopped bothering with further frameworks until I have a firm requirement for one.


Yeah, I think the safe option for employment is React.

I would have picked up Rails, but I am not well-versed with Ruby despite knowing about the productivity of the stack.


I don't think you're going wrong either way. It is worth checking out the job market around you and using that to ultimately decide.

Around here, for whatever reason, Rails jobs seem to pay much higher than JS jobs. But, I know that's not true everywhere.


Interesting! Thank you for that. I don't plan to become an "employed" dev - just want to build my own projects :) Curious what part of the world that is? I know in Japan Rails is big.


If not for employment then just learn docker. That’s it. The rest you can build yourself and once you have it written you can repurpose it for any project. When you have the pieces you need as static libraries ready to be dropped in like LEGOs your CRUD app will perform faster and scale in ways you could not imagine before.

Otherwise the only purpose to JS frameworks is either attaining employment or because you cannot write original architecture.


If you are coming from Java Background with some basic understanding of JavaScript/Typescript you should try using Spring framework with React. Try reading blogs from Baeldung.com[1] which provides lots of different articles on how you can use spring for your particular use case.

[1] https://www.baeldung.com/spring-tutorial


I have no experience with Java unfortunately, just a typical vanilla web stack :/


That should not stop you from trying it out.


Personally I believe Qwik is the future. You don't see many frameworks talking about resumability. With Qwik you get instantly interactive web apps without eagerly loading tons of JavaScript.


Yeah haven't seen it much. Think Sveltekit though compiles and ships min. sizes as well.


Go/Gin React PostgreSQL


I like HTMX / babashka, although it's a bit bare. Hiccup is amazing.


Rails. Maybe even forget frameworks and just get good at HTML / CSS. We need more experts.


Seeing Rails having a resurgence, to be honest if I would have started with Ruby a few years back, it would indeed be a no-brainer productivity wise.


Django, amazing documentation, and great community


Yeah, I'd use Ruby on Rails for a webapp. So productive.


Ruby on Rails.

Good luck.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: