---
title: "Around \"Hello World\" in 30 Days"
date: 2010-06-02T00:00:00+00:00
draft: false
needs_review: true
canonical_url: https://www.viget.com/articles/around-hello-world-in-30-days/
---

I'll say this up front: I love my job. I love the web. I love Rails. And
I love working here at Viget. But lately, I've gone through periods
where web development feels a bit stale. Hugh Macleod has a great post
called [Beware of Turning Hobbies into
Jobs](http://gapingvoid.com/2008/01/10/beware-of-turning-hobbies-into-jobs/)
that sheds a bit of light on this problem: once you make a career out of
doing what you love, it's not solely yours anymore. There are clearly
[bigger problems one could
have](http://news.nationalgeographic.com/news/2010/06/100601-sinkhole-in-guatemala-2010-world-science/),
but I think this is something all developers struggle with at some point
in their careers.

This problem was weighing on my mind one morning, combined with a
looming speaking engagement I'd committed to for [DevNation
Chicago](http://devnation.us/events/8), when it hit me: I would spend a
month trying a new technology every day, and then share my experiences
in Chicago. Learning is a core value here at Viget, and my coworkers
were incredibly supportive, adding to the list of technologies and
asking to join me in learning several of them. With their help, coming
up with the list was no problem --- it was actually harder to get the
list *down* to 30. Here's what I finally committed to:

1.  [Cassandra](http://cassandra.apache.org/)
2.  [Chrome Extensions](https://code.google.com/chrome/extensions/)
3.  [Clojure](http://clojure.org/)
4.  [CoffeeScript](https://jashkenas.github.com/coffee-script/)
5.  [CouchDB](http://couchdb.apache.org/)
6.  [CSS3](http://www.css3.info/)
7.  [Django](https://www.djangoproject.com/)
8.  [Erlang](http://www.erlang.org/)
9.  [Go](https://golang.org/)
10. [Haskell](http://www.haskell.org/)
11. [HTML5](https://en.wikipedia.org/wiki/HTML5)
12. [Io](http://www.iolanguage.com/)
13. [Jekyll](https://github.com/mojombo/jekyll)
14. [jQTouch](http://www.jqtouch.com/)
15. [Lua](http://www.lua.org/)
16. [MacRuby](http://www.macruby.org/)
17. [Mercurial](http://mercurial.selenic.com/)
18. [MongoDB](http://www.mongodb.org/)
19. [Node.js](http://nodejs.org/)
20. [OCaml](http://caml.inria.fr/)
21. [ooc](http://ooc-lang.org/)
22. [Redis](https://code.google.com/p/redis/)
23. [Riak](http://riak.basho.com/)
24. [Scala](http://www.scala-lang.org/)
25. [Scheme](https://en.wikipedia.org/wiki/Scheme_(programming_language))
26. [Sinatra](http://www.sinatrarb.com/)
27. [Squeak](http://www.squeak.org/)
28. [Treetop](http://treetop.rubyforge.org/)
29. [VIM](http://www.vim.org/)
30. [ZSH](http://www.zsh.org/)

Thirteen languages, most of them functional. Five datastores of various
[NoSQL](https://en.wikipedia.org/wiki/NoSQL) flavors. Five web
frameworks, and seven "others," including a new version control system,
text editor, and shell.

Once I'd committed myself to this project, an hour a day for 30 days, it
was surprisingly easy to stick with it. The hour time slot was critical,
both as a minimum (no giving up when things get too hard or too easy)
and as a maximum (it's easier to sit down with an intimidating piece of
technology at 7 p.m. when you know you'll be done by 8). I did have some
ups and downs, though. High points included Redis, Scheme, Erlang, and
CoffeeScript. Lows included Cassandra and CouchDB, which I couldn't even
get running in the allotted hour.

I created a simple [Tumblr blog](https://techmonth.tumblr.com)

and posted to it after every new tech, which kept me accountable and
spurred discussion on Twitter and at the office. My talk went over
surprisingly well at DevNation ([here are my
slides](http://www.slideshare.net/deisinger/techmonth)), and I hope to
give it again at future events.

All in all, it was a great experience and proved that projects that are
intimidating when considered all at once are easily manageable when
broken down into small pieces. The biggest lesson I took away from the
whole thing was that it's fundamental to find a way to make programming
fun. Working my way through [The Little
Schemer](https://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0262560992)
or building a simple webapp with [Node.js](http://nodejs.org/), I felt
like a kid again, pecking out my first QBasic programs. Learning how to
keep programming exciting is far more beneficial than any concrete
technical knowhow I gained.
