A Site A Day

Who are you, and what do you do for a living?

I am an artist turned software developer. I taught myself to code by making 180 websites in 180 days. I’m currently Hacker in Residence at Wit.ai where I do a lot of different things including hacking on special projects using our voice interface API.

How did you decide you were going to make 180 sites in 180 days? How much experience coding did you have before the beginning?

When I decided I wanted to learn to code, I hadn’t done any real programming before. I looked around at all of this amazing technology that’s growing around us and realized that I wasn’t satisfied with just consuming those products, I wanted to be able to build them too.

I knew I wanted to do a self directed project and I started thinking about what a successful, self directed project would look like for a beginner coder. I decided I should start with small projects and build up my skill set piece by piece. I also knew I wanted to work on things that were tangible so I could track my progress and stay motivated. The 180 ideas started out a joke with a friend when I told him I was going to work on a few small websites before I tackled a full stack project. He asked how many small projects I thought I could do. We went back and forth for a bit and suddenly it sounded like a good idea.

It seems like one of the biggest barriers for a project like this is generating enough ideas. How did you decide what you were going to build on any given day?

Before I started, I made a big list of every good, bad, crazy, half realized idea for a website I could think of. I ended up with about 70 ideas and it definitely helped frame what my definition of a website was. I started with the list but pretty quickly the project started almost driving itself. I was often inspired by the work I had done the day before. I’d come across a concept or code snippet that I hadn’t learned about yet and I’d think “That’s cool! What kind of app would use something like that?”

For projects like these I always wonder whether it’s a strict one a day process. Did you ever work in easier projects to give you time to do multi-day big things? Did you ever have to switch projects because you wouldn’t meet your deadline?

I set a strict rule of one website per day, everyday. I was averaging about 10 hours a day on the project so if I needed to find some extra time for other things (like flying to the east coast for my sister’s wedding) I had to get creative. I’d usually try to work in some easier websites or do some research the day before if I knew I was going to be short on time. I got really good at knowing how long a project would probably take and working in uncomfortable environments.

Despite getting good and judging how long an idea would take to execute, there were definitely a number of days where things didn’t go as planned. There were a few days where I worked until 8 or 9 pm and suddenly realized I’d have to scrap what I was doing and start all over. Those days were pretty scary. Usually if I found myself in trouble it was more a matter of switching gears and reimagining what my goal for the day was. Swivel is a good example of that. I had this bananas idea for a really complicated chain reaction game that turns out was really tough to code. I had to rewrite the chain reaction logic 3 or 4 times before I got it all worked out. By the time I got it working it was too late to add in the game mechanics. In a sense it’s a fail because I didn’t finish what I originally set out to do, but I’m still really proud of Swivel and I think it’s a neat website.

What do you think makes the one-a-day method so compelling, as opposed to say five a week?

Working on a learning project every single day means there is not a lot knowledge leakage. You’re constantly present with what you’re working on and it is always on your mind. The structure also makes it easier to stay motivated, I think. There’s no room to question whether you’re going to work on your project today. Whether you’re tired, confused, frustrated, sick, hungover or whatever there are no excuses. It’s kind of freeing in a weird, masochistic sense.

What was the most popular site you built?

It’s hard to say actually! A handful of sites like the Hipster Quiz and Etch-a-Sketch have ended up in various subreddits which I think is pretty cool and very flattering. Different people gravitate toward different sites. My data nerd friends love Elevations. How We’re Feeling and Splodin Bacon get the a lot of universal appreciation. And people have made over 16,000 Little Dudes using Make a Dude which I find mind blowingly awesome.

What is your favorite, or the most meaningful one to you?

Splodin Bacon holds a special place in my heart because it’s the website I made the day my project went viral and I was totally freaking out when I made it. I’m also really fond of Electro Bounce and Audio Garden. I feel like I was really hitting my stride at that point, combining lots of different coding concepts with my art background. I also really love the data visualization apps like Elevations and How We’re Feeling.

What were the biggest lessons you learned over the course of the project? Were there any major surprises?

My biggest takeaway was letting go of my fear of making mistakes. Putting all of my work out in public was really scary at first. But as a coder you are constantly making mistakes. Your code is always broken until it’s not (and even then it’s usually still broken). Being ok with that is the only way not to be paralyzed by fear and keep making progress.

A big surprise for me was how much I love data! I’ve never been a math or statistics nerd and if you told me 3 years ago I was going to develop a passion for API’s I would have thought you were bonkers. I’ve always known that I’m fundamentally interested in the communication power of technology but I also find it totally fascinating take raw information and turn it into something digestible. In retrospect I guess it makes sense but I may never have discovered that had I not gone through the 180 Websites project.

A lot of the sites seem to retain the last session. For example, Talking Dude displays the text that was last put in by someone, and most of the drawing ones I saw have past doodles that can be wiped or built on top of. Is that a conscious decision on your part because you think that interaction is interesting, or was it the easiest way for you to build them?

When I set out to do 180 Websites, my goal was to be able to make full scale, dynamic, interactive web apps. Early in the project I was only able to have a one way conversation. I could communicate a message to someone by creating a site that they could play with but they couldn’t say anything to me or anyone else. When I started working with Rails (day 69) I was finally able to let people communicate with each other through my sites. I immediately starting thinking about what kind of websites would let people leave a mark that others could find. That is what inspired sites like Make a Dude and Portrait.

As the project moved along I started thinking more about how people could use my websites to communicate with other people more directly. I ended up making several sites that let you create something and then either download the product to your computer or save it with a special URL that you can pass along to anyone. That is the idea behind sites like Trees for the Forest and Audio Garden.

By the end of the project I was really excited to try out some real time communication apps using Node.js. All Draw is a real time collaborative drawing app which I think embodies a lot of what I love about the internet. The web gives us the ability to creatively communicate with anyone around the world. That is pretty powerful stuff when you think about it.

This project concluded over a year ago, how have things been going since then? Do you still quickly build sites for fun?

Life’s been pretty awesome since I finished 180 Websites. After the project I decided to work on a full scale website called YumHacker to get the real full stack engineering experience. I coded the whole thing myself and even went out and did some biz dev and SEO work on it to explore the full product development cycle. I learned a ton about both coding and how to grow a product.

In August I joined Wit.ai as Hacker in Residence. We have an API that makes it super easy for developers to add voice interfaces to their apps. It’s wicked cool stuff. A big part of my job is to make interesting hacks using our API to explore possible use cases for Wit and to help other developers integrate Wit into their projects. Between the making cool stuff part and our intense focus on UX and communication, it’s basically the perfect job for me.