Stick to the block-of-constant-colour method used in the first few screenshots. It's ugly but safer!
3,161 karma · joined April 15, 2008
Email: meredydd@anvil.works
Based in Cambridge (UK).
Stick to the block-of-constant-colour method used in the first few screenshots. It's ugly but safer!
It's true, I do think that a more principles-based approach is usually preferable. (And I will happily marshal anecdata to that end!)
But it's naive to think that any approach comes without a cost. Even the PayPal example I mentioned above could be coloured the other way: A company makes a major investment in a foreign market, only to find the rules changed underneath them by a capricious government agency! (Someone brought up IR35 down-thread, and that's an excellent example too.) Is that an acceptable cost for the outcome? I'd look at the overall state of (eg) consumer financial protections in the US vs the UK and say "yes"; but I'm open to evidence-based disagreement.
In rules-based regulation, all the rules are spelled out in advance, and the regulator is basically an automaton once the rules are set. In principles-based regulation, the rules are extensive rather than complete and you expect the regulator to have some lattitude (and, if the system is well designed, a mechanism of recourse if they do something stupid).
An advocate of rules-based regulation would say this can make regulators unpredictable and capricious. An advocate of principles-based regulation would say it is an important safeguard against "rules-lawyering" and regulatory capture (especially the kind that ties new entrants up in check-box compliance that doesn't actually affect your business because all the rules have been worked around).
A classic example would be the time PayPal tried to tell the UK regulators they shouldn't be regulated like a financial institution (which is a claim they successfully made in the US). They pointed to chapter and verse of the relevant law, and said that according to subparagraph 2.b.c(iii)... and the relevant regulator essentially told them "shut up, you keep consumers' money for them and will be treated accordingly". As a result, the worst "PayPal took all my money and I can't get it back" stories generally do not come from the UK. (And when they do, they are accompanied by referrals to the Financial Conduct Authority, who have teeth.)
You can approve of this way of working or not, but the GDPR is a principles-based regulation, and you'll have to engage with it on those terms.
Anvil is a platform for building full-stack web apps with nothing but Python. We’re looking for a developer with good communications skills to help people build awesome things with Anvil.
In our last HN thread (https://news.ycombinator.com/item?id=16728706), we were called "super cool", "absolutely amazing", and "[what] we've all been waiting for". Check out our six-minute demo; I promise you it’s worth it: https://anvil.works/#about
We're bootstrapped and profitable, with customers ranging from individuals to huge tech companies. We’re friendly, open, and have good work-life balance - and we want to stay that way.
My email is in my profile, or you can drop us a line at recruitment@anvil.works. More details at https://anvil.works/jobs
It let you pick the stocks yourself, and showed you historical graphs too. It was a bit more complex than this, but still only took an hour.
So it's interesting to see a counterexample. What led you to go spelunking in nginx?
Writing a device driver in C is complex, sure, but pretty much all that complexity comes from the problem domain. C++ adds a little more incidental complexity, but if you use it to write a device driver, you're still mostly fighting "how my computer talks to hardware" - and at least that's the correct fight to be having.
But if you're writing a CRUD app for the web, the incidental complexity is off the charts. Five different languages (HTML/JS/CSS/{Ruby|Python|Whatever}/SQL), three or more frameworks (Bootstrap/React/Redux/Django/SQLAlchemy)...and you haven't even deployed yet.
There should be a middle position between "impoverished pseudo programming language" and "here's your five-layer web stack, have fun". If your app is basically three "if" statements and a "for" loop with some UI on top, I agree that you should write those statements in a real programming language. But you shouldn't need three layers of framework on top, just to put them in front of a user!
I think this is what everyone is talking about when they bring up VB and Delphi in this thread. I don't think that "Delphi for the web" is an impossible goal - and I've put my money where my mouth is, by building a sane development platform for the web - https://anvil.works. You do everything in one language (Python), with proper tooling support (hello, autocomplete!), and skip the BS.
(On the other hand, perhaps this is what you meant by "CRUD apps will mostly be automated away". If so, it's only in the sense that my time is being "automated away" when I use a GCed language rather than malloc.)
These days, we write Python that generates SQL in order to generate HTML, then write Javascript to talk HTTP to the Python and then generate HTML that gets interpreted into the screen by CSS...and there is no way a tool can present the result of that in a coherent manner (let alone autocomplete it!).
(I get an up-close view of this because I cofounded Anvil - https://anvil.works - which does the complete opposite of this at every level. All in Python, one framework, all autocompleted - basically a modern Delphi for the web.)
The closest he comes to examples are Microsoft Office (admittedly, few competitors, but a massive moat, and when he wrote in 2012 already mobilising in the face of a big challenge from Google), Flickr (already being killed by the social networking startups he disparages), or Salesforce (competing CRM products are everywhere).
I'd love to have my mind changed with fleshed-out examples, but without them this reads like a banal expression of the conventional wisdom of the time (incumbents are vulnerable! Disrupt disrupt disrupt!).
Perhaps that's particularly obvious because the conventional wisdom has shifted. Today, the big 5 tech companies are deeply entrenched, and we've watched them each see off a couple of generations of upstarts, while remaining awake and engaged in fierce competition with each other. So an argument like this needs a bit more evidence to be convincing.
The upshot is that writing VB.NET involves understanding everything you need to understand to write C#. All the syntax is VB6-flavoured, sure, but it still involves making people learn about classes, this year's flavour of Windows UI components, and so on.
What's more, you have to do it all in an industrial-strength IDE, with all the complexity that brings. (Don't get me wrong - Visual Studio is more or less my gold standard for a usable industrial-strength IDE. But if you stand it next to VB6, you'll see how much more you need to understand just to get to editing code is noticeably larger. It can be invisible to people like you or me, who have already absorbed these concepts, but it's real.)
Anvil is a platform for building full-stack web apps with nothing but Python. We’re looking for a developer with good communications skills to help people build awesome things with Anvil.
We were on the front page yesterday ("I love this"; "Super cool", "Can't wait to try it"): https://news.ycombinator.com/item?id=16728706
Our customers range from tiny startups to huge tech companies, and they say similar things. Check out our six-minute demo; I promise you it’s worth it: https://anvil.works/#about
You’ll be building example applications, writing tutorials, and helping our users build their apps. You don’t need to be a Python expert already, but you will be pretty soon: most of the code you write will be read by someone working out how to do what you’re doing! Don’t worry - you’ll have the Anvil authors themselves to get you up to speed. Joining a startup this early means you can help shape who we are, as well as who you are in the company. You'll also be shaping how everyone uses a shiny new development tool. We’re friendly, open, and have good work-life balance - and we want to stay that way. Come join in!
My email is in my profile, or you can drop us a line at recruitment@anvil.works. A less HN-specific version of this post is at https://anvil.works/jobs
Take your "90% go to for web" stack. You'll need to know:
* HTML
* CSS
* JS
* Ruby
* SQL (maybe)
And then the frameworks: * Rails
* Bootstrap (or equivalent)
* Vue (or equivalent)
* Webpack (or equivalent)
And then the deployment: * Web server of choice
* Database setup
* Linux sysadmin
* AWS
There was a front-end dev guide linked on the front page yesterday (https://github.com/kamranahmedse/developer-roadmap). Just...look at it. Count the pages. Even if you stipulate that you already know Rails, the rest of what you need to know is still a huge wall to climb.And sure, by now, you have all that knowledge in your head, same as I do. (Probably better; I always hated web programming.) But asking somebody new to scale that wall just to join in with the supposedly open web? Seems a little much.
And I'm still pretty confident that I (with Anvil) would deploy a simple application faster than you (with Rails). Not because you're a bad developer, but because even with all your knowledge you're still navigating that stack - and deploying it, and debugging it, and editing it without autocomplete because no IDE can sensibly autocomplete a system with that many independent layers, and so on.
> The number of tools that try to do something like this keeps growing (Bubble comes to mind, or Appian in a slightly more enterprise space)...
This is an interesting comparison. Those tools focus on building apps without code. That's great for simple things, but once you get more complicated, you end up writing something that's kinda-sorta a program, in a language not really built for the purpose.
I think there's room for both. But as far as we're concerned, when you're telling a computer what to do, there is nothing better than writing actual code. And so Anvil is unapologetically built around a real, industrial-strength programming language, with a solid ecosystem of libraries and tools. We've had startups scale into the millions of dollars of revenue with products built on Anvil, with serious technical heft on the back end. We work quite hard at the architecture so it can grow with even the most demanding applications.
Drop me a line at meredydd@anvil.works - I'd be happy to give you a proper demo. The on-prem version takes just one "docker-compose" command to set up.
Absolutely! Check out this fifteen-minute demo, building a document storage/tracking system: https://anvil.works/blog/document-tracking
For more advanced processing we have have pandas, python-xslx, and all that good stuff ready to use :)
You bet! Although Anvil mostly shields you from the mudbath of the modern web front end, we do have full HTML and JS interop. So you can call into JS from Anvil's Python code, and into Python from JS.
Even better, once you've built your (eg) three.js interface, you can package it up as a custom component. Then you (or anyone else) can drag-and-drop it onto their page and use it with a pure Python API.
-
I haven't finished editing the tutorial video for this, so I'm afraid I'm just going to point you at the reference docs.
JS interop: https://anvil.works/doc#js_interop
Custom components: https://anvil.works/doc#custom_components
There are also quite a few examples on our user forum, if you sniff around. Check out the "Show and Tell" section in particular.
But there's a whole universe of companies who need to build internal tools. (If you're in a startup/tech-co bubble, you'll be astonished how many line-of-business Django or .NET developers are out there, and how much they are needed. They tend to quite enjoy meeting Anvil :). Unfortunately for the peanut gallery, their employers tend to be a little more leery of suppliers throwing their names around, so those customers will have to remain anonymous in HN comments...)
Annoyingly, we can't really talk about the details of most of our internal-enterprise-app-type deployments. We do have an anonymised example here: https://anvil.works/case-studies/building-secure-download-po... - but even that is more detail than most want to share!
So if you have a suggestion for an enterprised-focused example you'd like to see - especially for your company - drop me a line and let's make it happen! (Email is in my profile.)
By building "imaginary prototypes" of these YC companies in an hour or two, we're not trying to minimise how hard it is to start a business like this. But the hard part of starting (eg) Meter Feeder should be selling the service to local governments, not wrangling the ~5 programming languages and 3-4 frameworks you need for the modern Web. We eventually got fed up of ranting online about it, and decided to do something about the problem. Anvil was the result :)
(Edited to add: We're hiring! If you're in the UK and this floats your boat, check out https://anvil.works/jobs)
Their product is a globally-distributed monitoring system. Running these systems all over the world, and keeping them running, is a serious operational headache. It's probably at least as complex as operating the service the customer wants to monitor - perhaps a lot more, given that most services are not globally distributed.
As long as they price below "double your ops budget", they'll remain value for money - even if the code they use is free.
Every abstraction is incomplete, and the web platform is huge - so there's no point in closing all the doors! People need to do low-level stuff sometimes. Instead, we provide "escape hatches" everywhere, so you can use the underlying complex technology without abandoning Anvil's core ease of use.
So, you can drop down to HTML/JS/CSS - and then wrap it in an Anvil component you can import from other apps. You can provide REST APIs and use your code from Android/iOS/Vuejs - but you can still use the same code from Anvil with full autcomplete. You can run code on your own servers, or in your own IDE - but you can still call it from Anvil client code, and it still has access to all the Anvil server-side APIs (even our built in data tables). And every app is just a Git repository, so you can push/pull your code around with any script you like!
References: https://anvil.works/doc/#js_interop (HTML/JS interop); https://anvil.works/blog/http-api-endpoints (REST APIs); https://anvil.works/blog/uplink (integrating code outside Anvil)
It's got a visual UI designer, a built-in database, and you code everything in Python (even the client-side code). As you can see from this demo/tutorial, you can get things done pretty fast with it. I'm one of the founders, and that's my voice you're hearing on the video; I'm happy to answer questions!
(PS: We're hiring - https://anvil.works/jobs)
Both my cofounder and I were enthusiastic users of Visual Basic, Delphi and similar environments. Those platforms fell by the wayside in the move to the web, and we lost the ability to build applications simply, quickly, and without having to learn five different frameworks on the way. We eventually got tired of waiting for someone to build a better application development environment for the web, and built it ourselves.
(PS: Hi! Thanks for the submission :) )
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.
Yep! We have customers who have.
> Can I integrate JS components, like a sophisticated datagrid?
Yep! Reference docs: 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
> 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
Happy to answer more questions - check out our forums: https://anvil.works/forum
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
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) 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?
Anvil is a platform for building full-stack web apps with nothing but Python. We’re looking for Employee #1: a developer with good communications skills to help people build awesome things with Anvil.
HN called us “amazing”, “just what we need, in the language we need”, and “really really cool”. Our customers range from individuals to growing startups to huge tech companies, and they say the same. Check out our six-minute demo; I promise you it’s worth it: https://anvil.works/#about
You’ll be building example applications, writing tutorials, and helping our users build their apps. You don’t need to be a Python expert already, but you will be pretty soon: most of the code you write will be read by someone working out how to do what you’re doing! Don’t worry - you’ll have the Anvil authors themselves to get you up to speed. Joining a startup this early means you can help shape who we are, as well as who you are in the company. You'll also be shaping how everyone uses a shiny new development tool. We’re friendly, open, and have good work-life balance - and we want to stay that way. Come join in!
My email is in my profile, or you can drop us a line at recruitment@anvil.works.