Day 1 of the Two-Hour Web App Project

Steven Rouk
EntKit
Published in
4 min readNov 16, 2016

Starting yesterday, I’ve decided to write as much of a full web application as I can in two hours, every day.

time to caffeine up, this is going to be a wild ride

This sounds crazy, and that’s because it is. I can count the number of actual web applications I’ve built on one hand, and the biggest and best one took months to get to where it is now. Entire development teams take weeks or months to write applications.

But here’s the thing — I have a lot of ideas for apps I want to build. Tools that could benefit my life and the lives of other people. Things that should exist but don’t, simply because someone hasn’t built them yet.

I could spend my time harassing my fellow coder friends to make apps for me, or I could shell out loads of cash to a freelance developer, but this doesn’t fix the main issue—that my brain is an idea factory which isn’t going to stop any time soon. Coding is what I enjoy doing. There’s no reason I shouldn’t be the one building all of these ideas.

But there’s a problem:

At my current level, it takes way too long to prototype something that’s functional and aesthetically pleasing.

I don’t even mean cutting-edge design or graphics, just something nice in a minimalist way. By the time I’m done prototyping one idea, I’ve had a dozen others pop up. I need to be able to iterate faster on these things. Which brings us to this crazy idea of building an app a day.

Yesterday was my first day of trying this, and here’s the application I built:

Yep, completely broken. (…on Heroku, that is. It works just fine on my laptop — and by “just fine” I mean not throwing any errors; it’s still a piece of crap.) I tried deploying my tiny, crappy app to Heroku in the last 20 minutes of my two-hour sprint and didn’t have time to check the logs and fix errors before time ran out. But that’s totally ok.

The point here isn’t to be perfect every single time. It’s not even to be perfect once.

The point of this exercise is to get myself creating and learning at an insanely fast rate, with a fresh start every single day, so that eventually all these little pieces of knowledge will be burned into my memory, and rapid development will be second-nature.

“Got an idea? Awesome, let me code a mock-up in two hours.” That’s where I want to be.

These sprints are going to be brutal, but if I become even slightly better at rapidly prototyping my ideas then I’ll count it a success.

A couple quick technical notes. My language of choice for these experiments is Python, not necessarily because it’s the best web app development language, but because it’s what I use for machine learning projects (and it is one of the best tools for that) and it’s also what I know the best. Many of the projects I want to do involve some kind of web scraping, machine learning, or “data science”, and Python has great libraries for those, so I’m happy sticking with it for now.

That said, I would love community feedback on how people rapidly develop their own personal projects, regardless the language or tool.

If you’re interested in joining me on this insane journey, or if you have any advice, please reach out. I’d love the company.

Here’s my plan.

I’m starting simple with this application from the Django Girls tutorial: https://tutorial.djangogirls.org/en/. (I’m not working through the code from the tutorial, just using the final app as a guide for what to build. But they have built a great site which I highly recommend. Also, this course is amazing: https://realpython.com/)

I’m still learning frameworks like Django, and deployment options like Heroku, and front-end frameworks like Bootstrap, so for now the goal is to start from scratch every day on the same application until I’m able to quickly and comfortably code the whole thing and deploy it in a two-hour timeframe.

I’ll probably also spend a few days exploring different options within the same app (such as the difference between function-based views and class-based views in Django, or Bootstrap vs. Foundation as the front-end framework, or Heroku vs. PythonAnywhere vs. hosted Ubuntu instance). Then, once I’m comfortable and ready to move on, I’ll pick a different app to build and start over.

Let me know what you think. I’m always happy to have feedback or new development friends.

Today’s Day 2. Let’s do this.

Steven

--

--