Inspired by John Resig (who was, in turn, inspired by Jennifer Dewalt), I am going to write code every day, starting today. I hope to write about my coding progress regularly on this blog.

Why I intend on writing as I go along

  1. Obligate myself to actually code every day (though this may not work because this blog has practically no readership)
  2. Keep a log of my progress over time
  3. Recall the reasoning I used when justifying decisions (e.g. this list describes why I decided to blog while doing this)

What I hope to gain from this

  1. Better programming skills and intuition. Improved familiarity with tools, paradigms, etc.
  2. Learn new frameworks, languages, etc. by application rather than just reading docs
  3. Improve ability to create habits. Build willpower.
  4. Create some interesting projects, hopefully some worth mentioning in a technical interview or something (for those “describe a time you ran into a problem when programming and how you fixed your problem”-type questions)
  5. Spend my free time more productively (as of now, coding seems like a much more useful way of spending my free time than playing video games or watching Netflix. I have also heard that, after programming reguarly and a lot, one comes to realize that not all coding is useful and there are better ways to spend time than coding without a clear, predefined outline/action plan)
  6. Meet people, become more familiar with the many programming communities on the Internet.

Ideas for what to do each day

This section is more of just a brainstorm/dump of different ways I can code each day.

  1. Learn a new language or framework. On my to-learn list: Haskell, Scala, R, (possibly) D, express (and other web JavaScript frameworks), Fortran (for class)
  2. Write code demonstrating topics taught in class (while I’m not currently taking any computer science courses, I am taking High Performance Scientific Computing (available on Coursera), which I can write code for)
  3. Play with APIs and write tools for myself and others
  4. Collaborate with others on projects
  5. Contribute to open source projects