And those opinions can be useful No images? Click here It's analysis paralysis all the way downLots of stuff going on in my Elixir world. José Valim keeps teasing his talk for Lambda Days and it seems like something major. Super curious. Saša Jurić just released a first iteration of his CI library which I'm incredibly curious about. It should sit sweetly in the end-to-end Elixir approach. Since I last summarized my blogging I've put out a few posts:
That last one is quite freshly published. Just pushed it. It has been written for a while but I realized it was likely worth putting out there. The rest of the series is also written and I'll release them bi-weekly. I also published a guest post for a wider audience on The Changelog blog. I've been doing stuff with those guys off and on and this seemed like something that deserves to move outside the Elixir community in terms of visibility. So it is about PETAL - The End-to-End Web Stack and I think it has been pretty well received so far. That's it for news, business and all of that. I have other things to get to here. Usefully opinionatedI think Rails was the big thing to put opinionated frameworks on the map. But it was hardly the first opinion on a technical stack choice. Let's take something like LAMP. Linux, Apache, MySQL and PHP. You can argue Perl, Python or Ruby without a second leg but to my knowledge it was always primarily PHP. The LAMP stack was pretty good. Its not that it considered every trade-off in great detail and ticked every box perfectly. It just labelled some already popular components that could be used to build web stuff and by putting a box around it made it more understandable. More marketable. More approachable. It told a new developer that, okay. We're going to be building a system on the LAMP stack. The L is Linux, that 's the OS and foundation we stand on. A for Apache, that's the Web Server that does X, Y and Z. Then we have the M for MySQL which is our database. And the P you probably know the best. That's PHP and what we are programming in. There's a certain clarity to it and you really didn't and don't need more than that. It's hard to remove any of them for someone learning web from scratch. I think the opinions embedded in LAMP are helpful. Okay learner, learn some Linux, some Apache, MySQL and PHP. Don't worry about choosing between BSD, Windows or Linux, between Apache, IIS and Nginx, between MySQL, Postgres and MongoDB or between PHP, Python, Perl or ASP. You're doing LAMP. Until you know why you don't want to stay in LAMP, LAMP is likely fine. Or it was. It was a useful opinion. Lots of people learning Rails didn't know SQL, didn't know much about web. But Rails made that simple to get started with, just like Django, probably same with Laravel. You can get going inside the opinionated simplifications and then work out from there as your world fills in with nuance. For a whole new world of developers the space beyond the P of the LAMP has been growing uncontrollably. The cambrian explosion of Node.js, Javascript and the frontend has brought a bunch of interesting things. But a clear path forward isn't one of them. Ironically there are also too many opinionated frameworks out there to choose from. At this point that particular space needs meta-opinionated frameworks to have opinions about opinionated frameworks to get anywhere. So when I saw the PETAL acronym I initially felt that it was frontend heavy. I've seen responses to the article about Postgres not being in the stack description. Well, neither is Linux. Linux won. It's default now. Postgres is implied by Phoenix. The PETAL acronym doesn't really explicitly address the backend much. The backend hides in Phoenix and Elixir. I think that's mostly fine. Phoenix provides an okay amount of opinion for the backend. PETAL mostly addresses how to not have to figure out all of the options on the frontend. It provides opinions for your CSS and basic visuals, just use Tailwind CSS. It provides a strong opinion on how to build your application with regards to frontend/backend. Use LiveView. And when you need client-side interactivity it provides an opinion. We use Alpine.js there. There are definitely people that would switch things out. And I think that's the right call. If you have a good idea of why you are doing it. But until then I think an acronym stack can be helpful. And I find PETAL quite interesting. In the end, any software project can be deconstructed further and further. And I think if you are building a fairly standard web app you should not be looking very closely at what block size you will select for file system partitions or picking out the exact right CPU. Abstraction levels help with thinking and constraints. And that's what this is about. We encapsulate complexity because we have to. Because it if effective. And making something more approachable is incredibly valuable and is almost entirely about making something very approachable but allowing people to grow with it. If you want to get in touch, just reply or email lars@underjord.io. You can also find me on Twitter as @lawik. Thank you for your attention, I appreciate it. - Lars Wikman |