I’m learning to code by building 180 websites in 180 days. Today is day 115.

A little over 4 months ago, I decided I was going to learn to code.

Ignoring the fact that I had no prior coding experience and had never taken any “technical” classes in school, I decided to build 180 websites in 180 days with no days off.

Today is Day 115.

Background

My background is in art. The thing that originally drew me to art is that it’s an avenue to explore how people represent themselves to the world. What clothes we wear, our mannerisms, and how we communicate. In the past I’ve tried to capture this projection of the self with drawings and sculptures.

But now it is 2013 and we are no longer governed by physical media. We have the internet! The internet is awesome because it breaks down so many obstacles that used to inhibit communication. Barriers to communication are so low, in fact, that we feel compelled to create virtual identities in order to communicate and interact with each other.

An artsy website from week one.

I think this virtual interplay is ridiculously awesome, and I’m not satisfied with just being part of the conversation. I want to be able to create the communication channel that makes these interactions possible.

What’s the best way to learn to code? After pondering this question for way too long, I decided to JFDI. But instead of just starting aimlessly, I decided to adhere to a simple and strict structure:

  1. Build a different website every day for 180 consecutive days.
  2. Every website must be accompanied by a blog post.
  3. Any code I write must be made publicly available on GitHub (open source) so that everyone can see it.

It’s scary to have all of my mistakes and misunderstandings out in the open. The fact is, that if you want to learn to code you are going to make a lot of mistakes, but just because your code might look a little goofy doesn’t mean you should stop coding. And you don’t need to be a certain type of person, you don’t need to be a math whiz, and you don’t need any prerequisites, because the compiler doesn’t give a damn about that. You just need to start typing.

Simon, week 4.

No bootcamps, no books When I decided I was going to learn to code, the first step was to figure out how I was going to go about it. There are a lot of options to consider. There are tons of courses you can follow or boot camps you can sign up for, but none of those really appealed to me. I think learning to code is a lot like learning to roller skate. You might need a helping hand to get your footing beneath you, but to gain any real finesse you’ve got to do it on your own.

I think the best way to learn is to solve problems that you actually have. This is the primary reason I decided not to follow a course or textbook. By following my own path, I can tackle new concepts and problems in the most logical order possible, which is precisely when I have them. When I have questions, I look them up on Stack Overflow. If I need to make a big jump, like starting a new language or platform, I’ll bootstrap off of a textbook only until I get off the ground.

Learning about objects with the Little Dude in week 6.

Day-to-day Working from home wouldn’t have been a good idea, so I do almost all of my coding from an awesome co-working space in SoMa. Besides providing me with my own desk to call home, I get all the free diet cokes I can drink and all the jelly beans I can eat. For hardware, I’m using a 13” Macbook Pro hooked up to two monitors, because if there is one thing I love, it’s screen space! I’ve also got a little Jambox on my desk for late night dance parties.

I start each week by writing a blog post about my impressions of the previous week. Every day I push my code to GitHub, deploy the day’s website, and write a daily blog post. After that, I usually end up fixing a million bugs and typos I missed before pushing the website live. I’ve done this 114 times so far.

Paratroopers game using physics from week 8.

From CSS to Javascript to Rails At first, my websites were very simple: some html, a little css and a couple of lines of javascript. Over time they’ve been getting more and more complex. I’ve made games, calculators, clocks and silly kittens. Right now, I am pretty comfortable with CSS and I am developing fluency with javascript. Recently, I started using Rails to build dynamic websites that allow people to communicate with each other and make profiles. Playing with Rails has been super exciting since it allows me to transition from making games and toys to building actual tools. I’m not sure what technology I’m going to try next or what platform I’ll be using at the end of this project, and that is super cool.

Not having a clear cut path for this project has allowed me to explore whatever concepts strike my fancy. It turns out that what I want to work on next is hugely influenced by what I’m currently working on. Much more so than I would have originally guessed. Earlier in the project, I wanted to make a simple weather app and I needed to find a way to get weather data. All of a sudden I became interested in APIs. But ajax doesn’t work cross domain, so that led me to JSONP. Honestly, I never thought I would be interested in JSONP. Finally, since there aren’t terribly many APIs that even support JSONP, I became inspired to start working on Rails sooner rather than later.

Rails website from week 14

But what if you just …? Often when I tell people about what I’m doing they immediately start looking for loopholes. I’ve fielded a lot of questions like, “Why don’t you just skip today and do two tomorrow?” While I know everyone means well, there aren’t any loopholes because I made up the rules and there aren’t any loopholes.

Something on the fun-side from week 16.

It’s hard Building new stuff every day is hard. Coming up with new concepts can be exhausting and switching from brainstorming mode to execution mode isn’t seamless. But the hardest thing about this project is that, in a sense, every day I fail. Every website that goes out the door is unfinished and since I’m something of a perfectionist, the temptation to redo or extend every website is really strong. The thing is, the way forward is not to keep tinkering and tweaking to make something perfect. The way forward is to move on to the next concept and build it.


Websites

Day 114 Image Palette
Day 113 Window Master
Day 112 Check Sketch
Day 111 Down the Weight
Day 110 Effects
Day 109 ColorWorks
Day 108 Algae Tank
Day 107 Serious Question
Day 106 Wish
Day 105 Infinite Descent
Day 104 Emergency Off
Day 103 Word Clock
Day 102 Drying Paint
Day 101 Globulator
Day 100 Song Machine
Day 99 TOS
Day 98 No One Is Watching
Day 97 Text to Braille
Day 96 PostBored
Day 95 Sparklers
Day 94 Mastermind
Day 93 Swivel
Day 92 Typing Test
Day 91 Pinwheel
Day 90 Skinny Drinks
Day 89 Hourglass
Day 88 Quick Words
Day 87 Countdown Clock
Day 86 Snare
Day 85 Fishy Friend
Day 84 Liquor Likes
Day 83 Hollywood
Day 82 Text Scroller
Day 81 Capture
Day 80 Tiny Notes
Day 79 Present Value Calculator
Day 78 Hangman
Day 77 YourSpace
Day 76 PixShow
Day 75 King of the Comments!
Day 74 Page View Graph
Day 73 Keep It Up
Day 72 Make A Dude
Day 71 One Page
Day 70 Click Counter
Day 69 Leave A Note
Day 68 Metronome
Day 67 World Time
Day 66 Alien Attack
Day 65 Fade
Day 64 Screen Flood
Day 63 Memory Orbs
Day 62 Confused Robot
Day 61 Fix It
Day 60 Fizz Buzz
Day 59 Bubble Wrap
Day 58 Fireworks
Day 57 Bug Blaster
Day 56 Hooray
Day 55 Paratroopers
Day 54 Calculator
Day 53 Circle Invaders
Day 52 Etch A Sketch
Day 51 Memory
Day 50 Color War
Day 49 Weather Now
Day 48 Static
Day 47 PONG
Day 46 Snake
Day 45 Color Perception Test
Day 44 Analog Clock
Day 43 Seeing Spots
Day 42 Magnetic Poetry
Day 41 Light Bulb
Day 40 Popping Bubbles
Day 39 Pixel Painter
Day 38 Type Attack
Day 37 Bouncy Balls
Day 36 Little Dude
Day 35 Buttons!
Day 34 Maneki-neko
Day 33 Random Word Generator
Day 32 Particle Waves
Day 31 Endless Throbbers
Day 30 Silly Kitty
Day 29 Magic 8 Ball
Day 28 The Click Challenge
Day 27 Rain Maker
Day 26 Simon
Day 25 SCRAMBLED!
Day 24 What is Your Email’s Impact?
Day 23 Stopwatch
Day 22 Keep It Straight
Day 21 Teleprompter
Day 20 Smushing Fireflies
Day 19 How Much of an SF Hipster are You?
Day 18 Building Blocks
Day 17 Party Time?
Day 16 Caterpillar
Day 15 Dropping Boxes
Day 14 Tough Love
Day 13 Rock Paper Scissors
Day 12 Dice Roller
Day 11 Color Clock
Day 10 Sushi Jiggler
Day 9 Bouncing Ball
Day 8 More Drop Shadow!
Day 7 Technicolor Boxes
Day 6 Day Tracker
Day 5 Secret Message
Day 4 Paint a Mondrian
Day 3 Get a Random Color Background
Day 2 Make a Deal!
Day 1 Homepage


  1. roguecodingbandits reblogged this from jenniferdewalt
  2. nata488 reblogged this from jenniferdewalt
  3. readthislater reblogged this from jenniferdewalt
  4. nikooruuu reblogged this from jenniferdewalt
  5. mtooo reblogged this from jenniferdewalt