35 ms·
Twenty years ago, a simple CRUD app would have been written in Visual Basic or Delphi. It would have needed one programming language, and one framework. The too
by meredydd 9y ago
Twenty years ago, a simple CRUD app would have been written in Visual Basic or Delphi. It would have needed one programming language, and one framework. The tool support would be good: everything would talk to everything else. Heck, you'd even have an IDE with autocomplete!
Today, a typical web app requires no fewer than five different languages (JS, HTML, CSS, Python/Ruby/whatever on the server, SQL). And that's before you even start on the frameworks:
- Something to make JS bearable (eg React)
- Something to make CSS bearable (eg Bootstrap)
- Possibly another JS framework (eg Redux)
- A framework to make web serving bearable (eg Flask)
- Something to make database access easier (eg SQLAlchemy)
- Did I mention Webpack, Docker, AWS, CI/CD...?
Now, I'm sure we're going to have a big lively thread, debating which technology we should choose for each of these slots (and whether the answer has changed since last week). But the ecosystem which requires so many components, for a simple CRUD app, is utterly insane.
We designed Anvil (https://anvil.works https://anvil.works) to be the complete opposite of this. It's a development environment that lets you build and deploy full-stack web apps, from your browser, with nothing but Python. There's a visual designer, client code, server code, and a built-in database. Unsurprisingly, when we did the head-to-head tests, a typical CRUD app is about seven times faster to build with Anvil than with traditional tools. Looking at the list above, are you surprised?
- rpeden 9y agoAnvil looks awesome. I do really enjoy making apps with the modern web stack, but when I look at how many moving pieces are required to make something simple, I do start to wonder if it's all a bit pants-on-head crazy.
- williamdclt 9y agoIt's probably because those tools are not made to "make something simple". If you have a simple need, just go for simple solutions: a Django/symfony/whatever without JS on frontend (I suppose that's not even the simplest, but wil get you a long long way)
- dustingetz 9y agoI think this is at a tipping point and will be solved soon (for better or worse) because network effects. Technology at each layer consolidates once the next layer is identified, which I think is functional programming everywhere and thus anticipate a consolidation is already underway.
- thorin 9y agoHmm, according to wikipedia lisp appeared 60 years ago, so it's had some chance to gain ground and functional is popular currently but everywhere, soon seems like a stretch
- dustingetz 9y agoNot sure if trolling. FP requires fast immutable data structures. Okasaki was published in 1998. Persistent data structures require amazing GC. JVM got good in 2000s. To do it in the database requires cloud scale compute and storage. AWS got good in 2010s. Datomic (functional paradigm postgres killer) got good in 2018.
- elorant 9y agoYou need neither JS nor CSS to build a simple CRUD app. Just use the server technology of your liking and a database. Sure, it will look ugly but so did apps 20 years ago. The landscape got complicated because now we build beautiful and elaborate things. We have apps that serve hundreds if not thousands of users simultaneously. Modern databases get hammered with requests every single second. What was the average case scenario for a CRUD app 20 years ago? Some godforsaken company that had a couple hundred employees at best and no more than 10 at time were accessing the data. And lets not forget the endless hours we used to spend trying to get reports printed properly. With web apps whatever you see on the screen you get on the paper.
- candiodari 9y ago> The landscape got complicated because now we build beautiful and elaborate things As someone who works at a large company which has TONS of crud web apps, let me just say ... No. We don't. We build ugly disasters, badly, with loads of bugs and unusable interfaces. And of course, only very rarely are 2 crud apps built using the same stack. We have everything from Oracle WebForms to Ruby on Rails, to AngularJS on NodeJS. And may I add, the "beautiful" ones are the worst in terms of usability. Can we place take all the frameworks that don't have a very good and built-in data grid and shoot them ?
- elorant 9y agoAs someone who builds SaaS sites the shit I build now are miles more elegant and functional than the apps I used to build back in the Visual Basic days, or even earlier when I was writing software for DOS. We may bitch and moan all we like but the fact is that the average web app of today is way more usable than the average windows app some twenty years ago. I won't argue that the situation with web development is ludicrous, we have a bazillion of js frameworks that last no more than two to three years until the next shinny thing pops-up not to mention changes in pretty much every aspect of the stack, from devops to server-side languages and whatnot. As a testament, take a look at the available dashboard templates in the major template sites. Some of them are so beautiful they make me droll. We never had so gorgeous interfaces in recent history. Of course as always YMMV.
- candiodari 9y agoIs anvil a hosted service ? Can I host my own apps, preferably by just dropping them into some folder and giving them a database ?
- meredydd 9y agoYep, it's a hosted service - you can publish your app with one click! Self-hosting requires an on-site Anvil installation. This is because many of the things we do to make things easy (eg returning live database rows from server to client in a function call, then manipulating them directly there) require server-side report. We think it's worth it - for example, it saves you building a new REST API each time you blow your nose - but the trade-off is that we can't just provide a "download as Flask app" button. If you want to run server code on your own machine, though, check out the Uplink. It's a library you 'pip install', connect to your app, and then you can drive your code from the web. Here's an example driving a Raspberry Pi: https://anvil.works/blog/uplink https://anvil.works/blog/uplink
- copperx 9y agoWhile Anvil sounds interesting, one thing that pops to mind before buying into such a technology is "what are the limitations?" Could I build a multi-tenant app? Can I integrate JS components, like a sophisticated datagrid? Will I be able to query the DB with SQL as I wish? Does it use AJAX behind the scenes to speed up the responses? etc.
- meredydd 9y ago> Could I build a multi-tenant app? Yep! We have customers who have. > Can I integrate JS components, like a sophisticated datagrid? Yep! Reference docs: https://anvil.works/doc#js_interop https://anvil.works/doc#js_interop > Will I be able to query the DB with SQL as I wish? Our built-in DB is shared, so you can't run SQL against it on a standard plan. Dedicated-plan customers can do that. Or just spin up another database and access it with the standard Python tools - example: https://anvil.works/blog/dashboard https://anvil.works/blog/dashboard > Does it use AJAX behind the scenes to speed up the responses? The client/server RPC runs on websockets. More info: https://anvil.works/doc#runtime_details https://anvil.works/doc#runtime_details Happy to answer more questions - check out our forums: https://anvil.works/forum https://anvil.works/forum
- insomniacity 9y agoJust done your Hello World tutorial. Very nice, compelling.
- muzani 9y agoI'd really like to use a tool like Anvil, but my experience with one-click magic solution tools is that it oftens greatly limits the customization options or doing something outside what it's built for.
- meredydd 9y agoWell, all I can say is that this is a known design trap that we have strained every sinew to avoid. Anvil provides a toolbox of help you can take or leave, all driven by a real industrial-strength programming language (Python). And if all else fails, you can always drop down to the HTML and Javascript, and/or a REST API.
- thorin 9y agoWorth checking out https://apex.oracle.com/en/ https://apex.oracle.com/en/ apex also, easy to build and a no cost/license option.
- tobyjmarks 9y agoBeing an Oracle consultant by trade I'm probably biased, but I've always enjoyed the simplicity of Apex from a developer's perspective. Simple CRUD forms can be built and published in minutes that are both functional and beautiful. The language stack is SQL/PLSQL/HTML/CSS/JS, and most all of the Javascript you'd ever need to write for field validations, etc. is built for you. I think folks tend to ignore it because it's not open source, but as a tool it's underrated. Not the most performant solution out there, granted, but suitable for most cases. If your backend database is Oracle, it should absolutely be in consideration.