Prototyping a YC Startup Each Day
anvil.works
anvil.works
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)
I see a trend forming where the stacks are getting too brittle, complex and overweight at all levels. I think it might be a result of trying to keep pace with constant change. There has been very little period of exnovation but huge amounts of innovation... perhaps at a cost.
A certain category of developer is suffering fatigue. People want to focus on their business more than the technology. They want to spend more resources on advanced technology like machine learning and analytics than the transactional CRUD/user interfaces. They want to apply technology holistically and stop worrying about the details (e.g. moving to cloud platforms).
For that matter, I see a lot of people trying to apply advanced tech thinking it will alleviate or continue to greatly reduce the need for human input and interaction. Most of the energy I see being expended out there is being spent on advancing tech at a blistering pace more than streamling/simplifying/solidifying ergonomics of development. There isn't a huge focus on ease of long term support.
If the trend continues and tech continues to advance at a mad pace, I think more and more people are going to want to outsource the problem of keeping up so they can just easily build what they need and hopefully this time it will scale further than previous attempts at things like 4GL.
Very interesting approach you're taking here, it will be interesting to see where it goes, and wish you great success!
For me that:
* Web: Ruby (Rails), Python (Django), Golang (Revel)
* Desktop GUI: C++ (Qt)
* Embedded: C, C++
* Data Science(ish) Problems: Python
That probably covers 95% of my day job, consulting, and my startup - I deliver a ton of work. Rails my 90% go to for web, python is data science, C is performance. A notable mention is coffeescript/js and CSS for design, but with partials / templates in the web frameworks I don't really need things like React.
I think the problem you describe is a self created one. You don't need to use the latest tech, build micro services, upgrade them independently, and use frameworks that are well supported in what you know. Hasn't failed me yet.
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.
> * Webpack (or equivalent)
Many web apps don't require a Javascript framework.
Did you build the anvil.works site using your tool?
My stack is pretty much 100% JavaScript. I can do PHP, I can do Go, but I can build full-stack apps very quickly in JS.
(1)https://www.outsystems.com/blog/introducing-sapphire-hospita....
We spent a lot of time working on the business requirements that we got from our first potential customer.
See this Steve Jobs demo [1] from the 90's creating a DB driven app in a fewminutes. It's 2018 and we're just getting back to that level of productivity now.
[1] 23 Minutes in. https://www.youtube.com/watch?v=gveTy4EmNyk
I feel like most people who need a website to "take orders for your new widget, or keep track of your customers, or schedule your local football league" are best off just contracting it out. I'm not sure how this moves the value needle to make an average person want to learn web development.
Yet the post is still titled "How We're Building One Y Combinator Startup a Day" instead of "How We're Building One WebApp Prototype a Day"
Your service is really nice but the current title sounds really clickbait.
It’s missing some crucial features for non internal apps though. I kicked the tires on it a bit and paid for a plan. Things like server side rendering for various crawlers, deep linking, browser history support, automatic form validation, user accessible automated database backup and restore are currently not present. Also setting up a domain with ssl on cloudflare dns hasn’t worked, when it works so easily on aws and heroku. Domain with ssl is said to be officially supported though.
I’m also unsure about using python transpiled js beyond some basic use cases. That would require some more experimentation.
There’s a ton of potential but for me at least the above need some love. At this point due to those issues so much gets pushed to a separate server with say Django/heroku that I am leaning towards “why not just use that?”.
At least with the web hellscape you can download the ridiculously-large-number of js libraries and be able to deploy your app to any server whenever you want.
I will happily pay for tools but I won't rent tools.
I don't want to be a downer, but I think what they show is the kind of product that people expect from IT departments. I.e., bring a bunch of services together with some plumbing with a database below it, and a nice UI on top. This is all pretty standard. And with today's tools you can do that all in one day (see hackatons). Of course, when you start using the product, and the real requirements become clear, that one initial day seems like nothing.
Yet, like all crutches, the provide a superior alternative to certain groups of people. People with broken legs use crutches, but only for the purpose of self sufficiency until their leg heals.
Perhaps this is where the flaw in the business model is revealed. Anvil is largely incentivized to get its users to depend on its crutch. But users are still able to utilize the crutch to ease the learning process, and perhaps explore something that might interest them enough to seek out more traditional development workflows.
Rental of goods exists as a viable service, because there is demand for its supply. When you fly somewhere distant, at least in the US, your first order of business is to pick up your rental car. This is not a bad business practice. You are making the correct judgement that given your limited resources, renting something in the short term is more prudent than purchasing it.
Even with all the SAAS/PAAS out there a significant amount of time is dedicated to really basic glue & CRUD code for a majority of developers. And its a shame! Not just for the pace of application development, but for wasting skilled developer's times on ridiculously basic (but time consuming) tasks.
Honestly, I can imagine a day where the UI editor is replaced with a UI demo. There are UX best practices across the different platforms, which most orgs ignore. Id rather have a bunch of my apps looking similar than half of them implementing strange or frustrating patterns. Given the rationale for the choice of layout and the ability to pretty it up, most PMs would have enough ammo to push it through their org.
Congrats on what looks like an excellent product!
Right now I'd typically spin up a quick rails and/or react app for that, so I'm excited to see how Anvil compares. Personally I wish it supported Ruby, but I understand why you'd start with Python.
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), and for good reason. This space is all about execution really--I suspect within the next 5 years or so it'll become pretty easy and mainstream for semi-technical folks to easily create a web app, and I'll be interested to see what that solution looks like.
The learning curve of programming is steep. It's like a sheer wall and then a steady increasing line. It takes a beginner a ton of effort to produce anything in something like Rails. But once they get passed that initial hurdle over time they will be able to build more and more complex apps. Something like Appian, that initial sheer wall is far less steep, but still formidable. After you get passed that, however, you will fairly quickly find some thing Appian doesn't provide an easy way to do. At that point, you hit the sheer wall again and can even find yourself with something that isn't possible to do.
I think everyone identifies that replacing excel with web apps is a huge need with a lot of potential for monetization. The issue is that the biggest reason that non-technical users can do stuff in excel is that they have spent years to decades learning how. It's a tough sell for them to do the same in your app unless it is an industry standard.
> 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.
Appian looks really nice and has $90 and $180 plans, which is great. It's so weird though, you can't just give them money. They make you wait 3+ days for a human to say "ok fine, we'll take your money", if you ever get a response. So far, I've tried twice and they still have never responded / activated an account. I get it with the mendix/outsystems/salesforce super enterprise stuff in terms of lead qualification but at the low appian price points, I do not get it. Have you had a chance to try appian? It looks very promising albeit perhaps a bit over complicated.
It’s the modern web and mobile focused MS Access we’ve all been waiting for. It looks awesome. And now all those JavaScript and PHP developers have to learn a new language, and everyone who starts with this and wants to go beyond will be unable to, because they are being taught to write front end applications in Python.
It’s so awesome. I wish I didn’t think the choice of language mattered, but I do (and will probably be karma pounded for not loving Python-as-a-frontend-language-choice)
But I know I'm going to have to put you guys through a deep vendor assessment to use the service, so here's my other question: do you guys have an on-prem offering? :) I'd be down to use this for prototyping new things all the time, but it'd make more sense if we know none of the prototypes leave our possession.
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.
-Bryant
That being said, I see no reason why you couldn't combine the two, and get the best of both worlds.
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.
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.)
A big one I saw while consulting for big enterprises was document processing (esp Excel/CSV). The lowest person on totem pole goes through 100 documents replacing or reformatting some value. Python is great for this!
Is there a way to upload documents into Anvil?
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 :)
fill out expenses > attach scan > send to approver > approver ticks (auditable) > send api call to ERP
similar things are price/quote approval, invoice approval, that kind of thing
Two weeks ago I was waiting for someone who was late for a meeting, and in that 30 minutes I wrote and deployed a little system monitor for an invisible API/EDI broker service! In another hour the next day I added some more features so the app started to become a control panel for the app. It would take me longer than that to set up the hosting normally.
Each page in the app looks like a Powerpoint slide, each piece of logic is like an Excel formula, and the end result is that it's easy to create apps like Visual Basic. There are tons of integrations, too.
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...)
In some sense, programmers with no knowledge or interest in the work that's flowing through a workflow they are formalizing as a program... it's a lot like managers with no knowledge or interest in the work they're managing. In both cases the knowledge is not with the decision maker and the tools and an accumulation of small but many & frustrating mistakes is inevitable.
Think of all the "understand your customer" and "build for yourself" advice, it's because insider, specialist knowledge and programming ability have to get together someplace and the advice wants to make it happen inside the programmers head. Well... there's another head this could take place in.
The tool allows you to graphically build Node.js applications, through some key abstractions. Node you drag into the canvas has inputs and or outputs which can be connected to other nodes, by simply clicking and dragging between them.
As an embedded developer, I was far more interested in determining the viability of an implementation than learning node.js. To me, Node Red is the superior evolution of node.js. But I can certainly appreciate that people who learned node.js to any degree, before finding out about Node Red, see far less utility in it than I do.
For a mirror image of this phenomenon, Arduino allows novices to circumvent the traditional learning curve required to develop embedded systems, through its key abstractions. Yet, every embedded developer I know immediately attacks the downsides of Arduino. Its not really teaching its users much. At least in its infancy, much of the underlying code was cowboy spaghetti. You would never use Arduino in a production environment.
Yet somehow, Arduino is flourishing. I'll admit that since it's open source, that is a key distinction. But Adafruit.com, and Sparkfun.com are literally printing money with Arduinos and the ecosystem they facilitated. Each is a private company, but each has revealed at least one year of revenue exceeding $30,000,000. Each also provides schematics, datasheets, and tutorials for every single product they sell, if it is within their rights to provide such information.
> Build time: 1 hour, 30 minutes.
Absolutely positively no mention of finding customers and getting revenue in that time allotment or at all. This whole thing is clickbait ads and demeans the core of what startups do - get customers and scale quickly.
As Meredydd said above