I learned to code, build a web app and launch it on Product Hunt in 2 months

Two months ago I started my journey to build my first web app. It’s a very basic web app called When To Surf for surfers to see when is the best time for them to surf every day. I’m launching it today.

I am Andrey

Problem

Having lots of data is great, but what if most people can’t read it? There was entire 10-page manuals on the internet on how to interpret all this data.

This seemed like a usability nightmare to me.

What if I could get the raw weather data myself and then with code analyze and score it for surfability (is that even a word?).

I wanted to do this, but I couldn’t. Because I had never coded seriously. And I had no idea where to start. I also didn’t have the money to hire some big team to build an app for me. So I gave up. For now.

Pieter Levels

  • Solve your own problems
  • Stop going to startup events, avoid startup coaches
  • Learn code by doing and searching on Google
  • Avoid courses, bootcamps, books, startup coaches
  • Do the simplest thing that could possibly work with your current skills (e.g. do not waste time on super cool new frameworks like React that will take you a year to learn)
  • Do it yourself (DIY)

With those principles I wanted to try to learn to code and build it. I wouldn’t be a great coder, but good enough to ship my surf app idea.

Start

I found free hosting atspace.com and uploaded my first ever HTML page “Hello world”:

I start to think where I can get data for my app? I Googled for weather APIs and found the World Weather API. It’s free for 2 month and they have all the data that I needed like wind direction, swell period and tide times.

I had zero experience coding. So I start trying the languages that I had seen before.

My first goal was simple: get data from API and print it in HTML. It should be as easy and with as little setup as possible. I wanted to be able to change one line of code and be able to test if it works quickly. It should be super simple as possible without installing servers, frameworks, compiling, deploying and all this stuff. I should develop fast. Not like 1 line of code per day to figure it out like some big teams who do things “properly” do.

Ship! Ship! Ship!

I first tried JavaScript. For a newbie like me, it’s cool that you only need a browser. But pure Javascript was very complicated to me. Especially the asynchronous call back functions were confusing.

// Javascriptvar getJSON = function(url, callback) {
var xhr = new XMLHttpRequest();

Scrap this. Too difficult! 😀

Python

PHP

In just a few minutes of coding, I had made my first API call and got my data. Ladies and gentlemen, I present you: my first code!

$url=’http://api.worldweatheronline.com/premium/v1/marine.ashx?key=2a5fc1776e234e14a7e172153160312&q=-8.659263,115.130158&format=json&tide=yes&tp=1&date=;$json = file_get_contents($url);$data = json_decode($json);$swell_period = $data->data->weather[0]->hourly[0]->swellPeriod_secs;

In 1 night I made my first web app (or site, really):

After a few days of working on it, I got some design inspiration from the internet, and made this layout:

I was very proud:

No git

I don’t like to do this every time with git:

git add, git commit -m “Bla Bla Commment ”, git push origin master

Instead, I just made a folder and each time for backups I created a new one with yesterday’s date. So I avoid git. But I still had my own basic versioning system.

Setting up my own web server

I was scared because I do now want to configure all this server stuff. But I didn’t really have a choice because my free hosting had stopped working. So I paid DigitalOcean $5, followed their instruction guides step-by-step and set it up. Oskar, a Swedish guy I met at the co-working space in Bali, helped me when I got stuck with my VPS server.

Moving to HTTPS 🔒

Half way there

Getting user feedback

Another person I met in the co-working space was Marc, he suggested to ask people by attaching an iPad with my app running on it with a feedback box to the wall. This made sense because 40% of people here are surfers (Dojo is 1 minute walking from the beach). My box looked like this:

After a day I only had a few comments. It didn’t work. I asked them for feedback and people seemed not very excited. People weren’t really interested in my app.

Dark swamp of despair

That’s when the early excitement of building my first app started wearing off. It wasn’t exciting anymore. It was mostly painful. I had now spend weeks working in the day on my main job and staying up at night to finish this app.

I showed my surf instructor my app, and he quickly said that the idea sucked because “surfing has too many variables to predict the best time to surf”.

I realized he might be right because I hadn’t been able to predict the time yet. My data was not extensive enough and I wasn’t good enough at coding to combine and then “rate” data and pick a surf time.

To add to that, my surf app ONLY worked in Bali. I hadn’t been able to make it reliable in other surf spots in the world. I wanted every surfer in the world to open my app and get their information for their surfing day immediately.

I wanted to give up because why make something that nobody is going to use? And how could I ever get all this data and make it work for everywhere in the world?

I also got some eye infections. My eyes was very red and it was hard watching in a laptop.

But I just put some eye drops and continue coding :)

Second round

The next weeks I went hardcore, we used an accountability system based on money to make us finish our tasks, and in my case, my surf app.

Even if nobody would use my surf app, I wanted to finish it. I wanted to launch.

Our nights of working where from 8pm to 6am. We listened techno and drank tea.

Formula of best surfing time

These formulas I then after trial and error converted into code:

It worked, kinda!

Plan for launch

My plan is to:

  • Submit it to Product Hunt myself (I don’t want to be dependent on some “influencer’ to submit it, but instead win by being a good app)

UPD: JUST LAUNCHED on Product Hunt

  • Find surf communities on the internet and on Facebook to share it with them and ask them what they think and keep improve on it
  • Get people’s email addresses with a MailChimp box at the bottom, so that I can send them surf updates about their location (later on, I haven’t coded this yet) and get them back to the site later.
  • If it works, compete with big apps like Magic Seaweed by giving users a more simple experience that’s better for beginner surfers

Time & money spent

I measured all my time that I spent by using the Toggl app. So it’s around 118 hours

Money:

  • Domain name = 6$ / year
  • VPS = 5$ / month
  • Total: 11$

If I would have asked a company to develop my surf app, I’m sure it would have costed me $29,989 more :)

Tools used to built

My code is open source

What did I learn?

  • It helps find cool mentors that are already at the place where you want to be, co-working spaces like Dojo help in that case cause there’s many people already working on cool successful stuff.
  • Learn by doing. Don’t buy/read books. Don’t buy courses. Don’t pay teachers. Just Google and use what you already know. And if you want mentors, real good ones are free because they are already successful and don’t need your money! Also avoid startup coaches, they’re leeches who just want to suck you from your last money.
  • Don’t be scared to use new technology. I was scared of coding, then of APIs, then setting up servers, then HTTPS. But I did it. It wasn’t scary after I did it.
  • Ship, ship, ship! Don’t give up. Always try to finish your project.

Updates and press

Recently I quit my job and I have one year to get to profitability. Want to see if I reach my goal?

And if you’re feeling really generous, you can buy me a pack of ramen by sending $2 to my PayPal address

or become my Patron

Stay in touch