8 ms·
Web dev is still fun if you want it to be
I wrote a silly toy website and went out of my way to enjoy it, rather than endure it.
I wrote up my thoughts. Maybe they'll resonate with you. Maybe they'll infuriate you. As long as they make you feel something more than a cosmic shrug I'll be pleased.
- ericd 1y agoI really like the “I can do things simply, because the backend is so fast” parts. Totally agree, and wish it was more common. Computers are fast, until we slow them down with layers upon layers of bullshit to crunch through to display a little snippet of text.
- mattl 1y agoThe amount of JavaScript required to submit a form should be zero. Browsers can already do basic validation of form fields. Worse still are sites that require JavaScript to read them.
- ndriscoll 1y agoIt should be, though it would be nice if browsers let you do enctype=json (and maybe enctype=xml). Json is popular enough at this point that you're more likely to have a high performance, easy to use codec library on the backend vs. FormData. Form validation probably should have also been done via child tags, not attributes, so that error messages could be independently associated to each validation rule.
- chuckadams 1y agoLots of things could be improved about forms, but save for a few new field types tacked on, they've pretty much been left to rot. They kicked around a discussion of a json enclosure type at the W3C a decade ago and nothing came of it. I'll save the salty comments about W3C in general, and say either WHATWG implements it, or we're stuck with JS submissions for good.
- williamcotton 1y agoIf you use the same controller code for both the front-end and the back-end you can (along with, eg, browser-express and express and parallel GraphQL middleware for each execution context) use form posts for the HTML requests along with fetch for the SPA "requests". This also means that your application will work the same with JS disabled as it does with JS enabled. Here's a somewhat convoluted explanation of the general approach: https://fex-template.fly.dev https://fex-template.fly.dev - it happens to use F# with the Fable compiler but it should be somewhat legible to most developers!
- mattl 1y agoI was with you up until you used AI.
- simonw 1y ago"Speaking of AI, is it any use? Well, somewhat. It writes half-useful CSS. It saves time on some things (but also makes bizarre choices on other things -- whatevs). I basically paired with it occasionally. It was OK." Hardly a ringing endorsement there! Apparently even saying "I tried AI and it was somewhat OK" is enough to summon the anti-AI comments.
- mattl 1y agoHopefully some people will read it and not use it but I don’t think that’s enough. Anyone using it for anything is the problem.
- ramesh31 1y ago>"Speaking of AI, is it any use? Well, somewhat. It writes half-useful CSS. It saves time on some things (but also makes bizarre choices on other things -- whatevs). I basically paired with it occasionally. It was OK." Tailwind is the key. It provides a semantic layer over CSS that LLMs can actually reason about. Otherwise it's just guessing.
- 29ebJCyy 1y agoI know this is somewhat antithetical to this article, but I’ve gotten similar vibes recently from Astro. Yes, I had to relearn some stuff, but once your brain starts thinking the Astro way, it mostly just works and feels closer to rails (but with the ability to craft weird fun JS experiences) than any JS tool I’ve used since Rails 4.
- bstsb 1y agocompletely opposite experience from me. i loved the original idea but i just can't get into the code fences and server/client rendering, nextjs has a clearer separation of concerns for me
- simonw 1y agoIf you've found web development frustrating over the past 5-10 years, here's something that worked great for me: give yourself permission to avoid any form of frontend build system (so no npm/React/TypeScript/JSX/Babel/etc) and code in HTML and JavaScript like it's 2009. The joy came flooding back to me! It turns out browser APIs are really good now. You don't even need jQuery to paper over the gaps any more - use document.querySelectorAll() and fetch() directly and see how much value you can build with a few dozen lines of code.
- deleted 1y ago[deleted]
- bstsb 1y agoopinionated, but i add tailwind to this. sometimes makes code less clean with no components but if you're insistent on reusability you can @apply
- midiguy 1y agoTbh, I would be pretty frustrated developing any non-trivial frontend code without a type system. But I am interested to try dropping frameworks.
- 65 1y agoYou can always compile your front end code from Typescript to Javascript with something like esbuild.
- AlbinoDrought 1y agoFor the projects I've written like this, I've been able to get by with simple JSDoc and an IDE that supports them. Here's a random example: https://dev.to/ingosteinke/using-jsdoc-to-write-better-javascript-code-17a#writing-clean-modern-vanilla-js-code https://dev.to/ingosteinke/using-jsdoc-to-write-better-javas...
- 1dom 1y agoI agree, modern browsers, CSS and JS can do so much now. However, the frontend build systems are often complex to do complex state management. Sure, it's possible to reimplement it all and accidentally end up rewriting your own vanilla JS frontend framework, but beyond a point, that's equally as unfun as modern webdev. It's not hard to shift the state management though, and when I find myself sat with a nice architecture that's formed without a complex frontend system, and with some really simple, uncluttered backend that could probably serve millions of requests a day from a homeserver and internet connection.... it gives me a profound feeling. It's a satisfying and familiar feeling from webdev I enjoyed around 2 decades ago as a teen. It feels like the old way of doing it. Now, having designed, built and run systems from on-prem, through VPS & VMs onto serverless and static site stuff, doing it the old way again just feels better overall. Maybe it's nostalgia. But then I feel the reason why we moved away from doing it the old way was because the complexity of the applications needed more efficient ways to make use of relatively limited bandwidth, storage and compute resources at the time. Now these things are all commoditised, and my home desktop and internet connection now has probably the same capabilities as a small datacentre back then... the dreamer in me wants to believe there's no reason why we can't all go back to the old ways of doing it now.
- bstsb 1y agofor my personal website (admittedly a mostly static site) i ended up not using any frameworks, just html and js. forgot how fun it is to not worry about scalability or code reuse in hobby projects.
- wwall3r 1y agoMore startups should take this approach. Sure, they might need more styling/branding than you used, but this is so much snappier and accessible than the average SaaS product these days. Yes, some of them have a case for local-first. If you do, you really should start with that out of the gate though.
- chuckadams 1y agoI'd love an environment so integrated I don't have to use a build system for anything complex, but I'm not going back to the likes of jQuery in vanilla JS. That's the opposite of fun to me. Vite may be a fiddly beast, but once it's set up, I just edit and see changes live, and I can do it while writing in a better language.
- karolusrex 1y agoI understand that this is intended as a rant - but these types of “case studies”, where someone starts a personal hobby project as a solo developer without using modern frameworks - are not very convincing. It would be an entirely different argument to point to a blog post of a larger organisation justifying their tech stack than these types of sources, that seem to be more common these days. Often the author is a backend developer who lacks any detailed knowledge of the problem space, and the comments section is usually full of fact errors and confusion.
- justonceokay 1y agoHaving done back and and front end, I’m fully convinced that the frameworks are there only to help mediate a large team of developers all fiddling with the same codebase. I haven’t been working on any sort of crazy features with elements moving around the page or excessive Ajax components (do they still call it that!?). On the other hand, most sites don’t have these features.
- 1dom 1y ago> Having done back and and front end, I’m fully convinced that the frameworks are there only to help mediate a large team of developers all fiddling with the same codebase. I agree. A framework forces a shared consensus on how to solve a particular set of problems. A single competent engineer on their own can make that consensus themselves. If the system is larger than a single competent engineer can manage, it seems intuitive that a small handful of engineers who are familiar with working with each other are less dependent on a framework for shared consensus.
- shayway 1y agoI don't get the impression the author (of this post, or most others like it) is saying this approach should necessarily be used for complex apps in large organizations. The opposite, rather; that when working solo on hobby projects, modern frameworks are often unnecessary, and foregoing them can be more fun and productive than one might expect.
- chuckadams 1y ago
- xythobuz 1y agoThat was a very fun read. Thank you.
- mushufasa 1y agoI actually started my startup with this approach -- good old Django. Lasted for a year until we had users wanting to do complex interactions on the frontend. Simple CRUD apps are fine, but users expect a lot of interactivity these days where things on the screen interact with each other. The nice thing about Django, though, is that you can easily switch to api-based backend with DRF or Django-Ninja. We used DRF but if I were to do it again, I'd choose ninja.
- number6 1y agoYeah we do this. Ninja is great. React, not so much fun
- r1290 1y agoSame. I’m using Django with fast api. Then I have a nextjs front end. I do wish I could bake it all into Django but I’ve learned that it’s best to keep Django api first unless it’s a simple site/app. But with a lot of interaction, using react helps.
- nico 1y agoPersonally, vibecoding has brought back a lot of the joy of coding Being able to super quickly iterate, without caring too much about the results, but having fun seeing what comes up I’ve really enjoyed exploring. Making small experiments, that you can make 5-10 of easily of in just one session Like these silly things: * https://openjam.ai/lonely_ant_702/vnqovd512h https://openjam.ai/lonely_ant_702/vnqovd512h * https://openjam.ai/stupid_coral_852/pvjda0dyc2 https://openjam.ai/stupid_coral_852/pvjda0dyc2 * https://openjam.ai/stupid_coral_852/qg8yembjg5 https://openjam.ai/stupid_coral_852/qg8yembjg5
- beakerbox 1y agoThis is fun. I remixed this sci-fi black hole particle simulator by adding some sliders to adjust the particle movement. Amazing what a few prompts can do these days... https://openjam.ai/shocked_impala_852/jgoz80mge0/3 https://openjam.ai/shocked_impala_852/jgoz80mge0/3
- 2OEH8eoCRo0 1y agoThe recent vibe coding parlance confuses me. We have been vibe coding the whole time. If you write code before you have a design then you're vibe coding.
- satvikpendem 1y agoThat's not really the meaning as used currently, which is to use AI to create the application in its entirety, not bothering to look at the code at all.
- draw_down 1y ago[dead]
- ofrzeta 1y ago"bring back Cloud Foundry"? It's not dead, afaik. Also there is Korifi, a project to bring the Cloudfoundry API to Kubernetes https://www.cloudfoundry.org/technology/korifi/ https://www.cloudfoundry.org/technology/korifi/
- pjmlp 1y agoOn hobby coding it is definitely fun as always. PHP, ASP.NET or Spring/Quarkus, with just enough JavaScript, no npm, no builders, nothing. Likewise with WebGL or WebGPU, direct src includes, no build.
- bob1029 1y agoAspNetCore w/ absolute minimal usage of the abstractions has been my favorite web development experience by miles. Things like MVC and *.cshtml are really powerful but I find basics like PHP-style string interpolation to be way more intuitive and ergonomic. All of my web resources have code like: httpContext.Response.WriteAsync(Layout(... inner HTML content ...)); Form submissions are super trivial to work with too. Covers 99% of my use cases. Every time I think I need something like web sockets, I can usually wiggle my way out of it with some kind of rearranging of the problem.
- hu3 1y agoI adore C# and .NET Core. But 0s feedback loops from the likes of PHP and Bun+TypeScript spoiled me. It's like a drug I can't get enough of.
- irrational 1y agoI was a web developer since the mid-90s. I got out of it a few years ago because the direction web development was going in was so not fun. I still do personal web development because I find it enjoyable, but feel so much relief not to be doing it professionally any more.
- lifesaverluke 1y agoDid you retire or switch industries?
- irrational 1y agoI’m still a developer, I just don’t do web development anymore. I now do integration work (take files or data from one system, maybe massage the data and/or reformat it, and send to a different system).
- rsolva 1y agoI accidentally started having fun while wipping up a new website for a non-profit with relatively simple needs. I started out with Server Side Includes on a shared host, but converted to using PHP along the way to be able to make a base file with all the stuff that is repeated (header, main, footer etc), and then injecting the content from index.php, /contact/index.php etc. Turns out, you get really far with HTML, CSS and a light sprinkle of PHP, and it is super fun and fast and you get things EXACTLY how you want it. No fighting other peoples opinionated decisions. I have created many sites from scratch with Hugo, and generally enjoy the process, but this is even more fun, because ... I can do whatever I want!
- lelanthran 1y ago> I started out with Server Side Includes on a shared host, but converted to using PHP along the way to be able to make a base file with all the stuff that is repeated (header, main, footer etc), and then injecting the content from index.php, /contact/index.php etc. I have a static file download only webapp[1], and I managed to get the includes done with only a 99-line JS component. Honestly, once you get a decent way to specify, in HTML tags, include files, a significant portion of what you use a framework for (DRY) becomes redundant. [1] Dynamic data to hydrate elements on the page is via API-only URLs.
- deleted 1y ago[deleted]
- scruple 1y agoI don't really have anything to add but I also recently spun up a Sinatra app for my personal use and I really had a lot of fun doing it. It was my first time using Ruby since 2022 when I left a Rails job, after having spent more than the previous decade primarily writing Ruby. I love the language and community so much but I don't have a professional use-case for it at my employer today, and I don't have a lot of free time in my personal life, so I just don't end up using it much. Thanks for sharing your thoughts here, I resonate with them a lot!
- frankie_t 1y agoSorry for writing something a bit tangential, I'm mostly replying to the heading not the content. I keep seeing the same point that argues against how "not fun, depressing, worse a <thing> has gotten these days". The most recent incarnation of that is how programming with AI feels worse than programming on your own. I don't think the problem is inability to find a way to derive fun, the way you could previously. The problem is deriving fun while still getting paid for it. To reiterate on the web-dev, you probably can make it fun again, given that you were able to have fun with it previously. But it probably will have to be done in your spare time after job.
- vouaobrasil 1y agoExactly. AI makes everything less fun because it turns what was once fun into an industry by its design.
- satvikpendem 1y agoNot sure about that, I've had great fun vibe coding like another commenter said, as I can simply write what I want in English and see a result immediately. Of course, I'd never use this for production, but for prototyping, it's nice. This is the opposite of industry, as you state.
- vouaobrasil 1y agoI'm not talking about short-term gains like you having fun, but long-term effects on the industry of programming. Of course technology always provides some short-term fun in terms of elevating activity to higher industry levels in the long run.
- satvikpendem 1y agoAt the end of the day, the people who put in the effort get ahead. I don't worry about the short or long term at all, as long as one is competent. If fewer are competent due to vibe coding their entire career, all the better for me as a competent professional, as with lower supply comes higher demand.
- sublinear 1y ago> I even eschewed HTMX. I bought the book! It's great, it made me feel hopeful, I want to use it someday. But I just ... didn't need it. This is always true for any web project. HTMX is an abomination of opinions that are harmful to both small and large scale projects. It attempts to solve problems (poorly and naively) in the mid scale that almost nobody ever spends much time in. It's a toy for inexperienced managers to create bullshit maintenance work while they try to quickly jump to something else. We need to stop making crap like this and focus on coding according to web standards and sparingly add much better tools as the project scales up.
- recursivedoubts 1y agomaybe check out fixi, our minimalist implementation of generalized hypermedia controls? https://github.com/bigskysoftware/fixi https://github.com/bigskysoftware/fixi we are hopeful that w/the work of alex petro and the triptych project that we can get some of the core ideas of htmx into the HTML spec itself: https://alexanderpetros.com/triptych/ https://alexanderpetros.com/triptych/
- iamflimflam1 1y agoSeems relevant here - why is nextjs so popular? It’s always seemed a bit mad that people took a very nice static site system and decided to add a server to it.
- notyouraibot 1y agoI agree, NextJS used to be my go to for building any kind of web applications, it was essentially a full stack framework capable of handling complex requirements, however since they decided to go all in on this new React Server Component bs, I'm so done. Sure there are some benefits here and there but overall, its a huge loss of DX and UX. React was always supposed to be a front end library, not a full stack framework and now the direction of React is being lead by the NextJS team so there is no hope.
- gaiagraphia 1y agoUpgrading from Svelte 4 to 5 took out loads of joy from webdev ;(
- mediumsmart 1y agototally resonates thank you - have the server put a nonce on the form submission and when used, nuke it and 303 thank you maybe?
- DamnInteresting 1y agoThis is quite true. I like to build browser-based games, and it is much more fun and stimulating to write a lot of the bits in old-fashioned HTML+SCSS+Javascript. I still use libraries for tricky stuff, like handling audio playback, but it's not that hard to implement one's own drag-and-drop (for example), and it works very well. Plus, there is the added benefit of understanding how things work.
- deleted 1y ago[deleted]
- eizaguir-lai 1y agoLove this. This is a philosophy that I have been trying to espouse for a while now. Interesting that he said MVPs are too complicated, I love building quick apps in Rails. Might have to give Sinatra a try to see what he sees in it.
- rorylaitila 1y agoI love the web. You can build almost any UI. It's constantly getting new tools. I think it's a 100 year platform. I stay sane by shipping HTML over the wire from server rendered handlebars templates (Java/Lucee) against a MySQL database. Forms and Links only for navigation. JS for spice. My apps never break. Backwards compatible.