Ask HN: What is the most *fun* web development stack?

11 points by caseyf ↗ HN
When I started with Ruby on Rails back in 2006, it was because I was running away from Java and I thought that it was the most fun stack out there. I think I chose wisely and I really enjoyed (and still enjoy) my time with Ruby and Rails.

If you are using a web stack that you think might be one of the most enjoyable and fun, what is it?

25 comments

[ 3.4 ms ] story [ 79.5 ms ] thread
I really enjoy aiohttp framework in python. It’s unopenionated and performs really well for IO heavy processes. The asyncio does all the heavy lifting and the framework is a very thin layer in top of it.
I think websockets are particularly fun with aiohttp If you want to make something that controls an it light switch, for instance, you can update the front end if somebody else switched the light.
React/mobx without using other people’s widget sets.
I can't agree more.

React with purpose-build components is a great experience.

The majority of my frontend headaches stem from using third-party components and making them work how I require.

I think to define what is "fun" I'd take the reverse approach: What's NOT a fun stack to work with?

For me personal hell is a giant stack that I barely understand, a stack that I'm very slow to iterate on, a stack that has 9999 exceptions and custom rules and "quirks" that I need to remember and work around. This is infuriating, and definitely not fun.

So then what's fun? For me it's something small, fast, something that's no hassle and that lets me put my ideas into practice. Something that makes sense, something that I can have a complete mental model in my head and modify it in practice as fast as I modify that model in my head.

For me, the closest thing is:

BACKEND:

- Python for the backend. Just a great, batteries included language that lets me do what I want fast and doesn't get in my way.

- Flask: a web framework for Python. There's Django too, but Django is no fun. Flask is small and exactly what I want.

- Pytorch: My DL framework of choice. Again, understandable, makes sense, and fastly iterable. No archaic nonsense (looking at you Tensorflow). Also of course pandas, numpy, scikit etc...

FRONTEND: I'm not a frontend guy, but it's a necessity, so I go with the simplest.

- Bootstrap: Lots of templates, easy to understand. I'm not entirely happy with it though; I wanted to try Tailwind.css for my next project

- Simple, custom Javascript. No complex frameworks. I barely understand JS; I don't want to use a framework until I feel comfortable with bare JS.

DEPLOYMENT & OTHERS:

- Heroku: a bit expensive but so simple. Removes all the hassle. I don't think deployment is fun, so Heroku is my friend.

- Google Analytics: I don't want a lot of analytics, and GA just works. I do want to move to a more privacy friendly choice.

- Uptimerobot for detecting problems. Simple, works, free.

With this tech stack I feel really comfortable, I can iterate on all layers, and I really do have fun developing on it. I can shoot out an MVP for most projects in a week.

Here's a few things I've built/am building with this:

https://www.namy.ai https://www.hugomontenegro.com https://www.remindy.me

My biggest gripe in this tech stack is bootstrap, but I think despite of that and me not being a frontend engineer I still managed to give the sites a bit of a non-generic flair.

P.S.: This got too long, but I got over excited with the topic :)

Kind of derailing the discussion looking from the specific context of web-dev stacks, but...

> For me personal hell is a giant stack that I barely understand, a stack that I'm very slow to iterate on, a stack that has 9999 exceptions and custom rules and "quirks" that I need to remember and work around. This is infuriating, and definitely not fun.

...but hopefully putting it in a larger context: This is exactly what I find infuriating and not fun about every ETL/ELT tool I've ever used or seen, and which makes these my personal hell. At a guess, this is probably what infuriates developers in any specific area -- only, in most areas, there are at least some good tools to choose from.

> So then what's fun? For me it's something small, fast, something that's no hassle and that lets me put my ideas into practice. Something that makes sense, something that I can have a complete mental model in my head and modify it in practice as fast as I modify that model in my head.

This is why I'm thinking about building my own. I have some ideas already, but... Sigh.

Okay things you listed here is what I do when building web applications.

Your comment gives me hope that people like me do exist I’m not the only one

Phoenix Liveview.
This is not the first time I've heard someone say that they just enjoy Liveview. Puttin it on my list. thanks!
I have found a lot of joy/fun in coding web apps in Golang. Something about net/http and the joys of building your own http framework around it is cool.
The web was originally designed to be hyperlinked documents. So all the tech we've developed to make web applications has been a horrible hack.

With that in mind, my opinion is that all these web stacks have made things worse. I've been on multiple projects now where it was the web framework that put the project in jeopardy of missing the deployment deadline.

I have found just using Javascript, HTML, and CSS to actually be more productive and maintainable if one knows what they're doing.

I've also found it's actually better to separate the front end and back end. The front ends I develop are completely independent of the back end and can simply be dropped onto any server that provides the required API.

What kind of backend APIs do you enjoy working with most? GraphQL?
There are some neat front end libraries like Leaflet and Cesium. The back end is quite varied since I often work with clients that have very custom and specific work they want done, sometimes on their own network isolated from the net.

I actually try to keep things as plain and boring as possible. Postgres for (structured) data storage, and Go has been great to create server that supplied the backend API.

In many cases we don't have to worry about massive scale, but rather limited hardware.

It's actually really amazing when you're limited to writing a lot of things by hand. Things can become extraordinarily compact and efficient.

How do you manage state with pure JS?
I’ve been using Actix-Web for the backend and Seed-rs for the frontend and it’s been a blast. One language to run on the server and in the browser. I admit I still have to write scss and know html but that’s no biggie. Biggest pro for using Rust, no more json! I use message pack with compact representation and my data just zips from my webapp to my server without a hitch. Not having to wonder if a field is potentially null in some deeply nested object is a magical feeling.
What is the size of your front-end that is downloaded by the user's browser?
It's 2.96 MB large so about the size of a high quality photo. My webapp doesn't have many pages yet so I expect this to grow by a couple KB.
I feel joy optimizing performance on a simple HTML and SCSS/CSS site. Removing every unnecessary bit of data transfer. Cutting all dependencies. Shrinking images. Just making the thing blazing fast.
I enjoy how fast and easy I can work with Node + a non relational db for quickly prototyping a new idea or just experimenting with implementing a new concept.

Keeping it super simple on the frontend keeps it enjoyable / fun by avoiding React. HTML with templating or Vue is great to move quickly and not get bogged down in technical detail and just create/design.

I'm probably super boring but I like .NET. Although I do that for work and have no complaints because it's like a better version of Java. Then just standard Javascript and jQuery for the frontend. Gets the job done and is super easy to understand.

I think it's "fun" because I have I don't have to deal with "how" something works. My perspective instead is "how" I can implement it. Chances are there is also a nuget package, dll, or some api out there for the same boring CRUD app we're doing so it helps expose me to more things even easier.

That all being said, when things don't work, it can be a royal PITA.

Personally, I really enjoy working with Clojure+ClojureScript via the Luminus framework. The Caveman framework for Common Lisp is also fun. It might be my first choice if I planned to make a web app with very little JavaScript.
Clojure/Clojurescript is the most fun to use, but a nightmare to setup IME.
I agree that setting up a project can be challenging. Luminus at least makes things easier by generating the project boilerplate you need to get started.
Interactive and high-level languages are really fun to use. This reminds me of Sharp tools essay in The Mythical Man-Month (1975).

"The most important two tools for system programming today are two that were not used in OS/360 development almost a decade ago. They are still not widely used, but all evidence points to their power and applicability. They are (1) high-level language and (2) interactive programming. I am convinced that only inertia and sloth prevent the universal adoption of these tools; the technical difficulties are no longer valid excuses."

Ruby on Rails. I enjoy how quick I develop features. Using mostly SSR and ERb.