davideisinger.com

My personal website
Log | Files | Refs | README

index.md (4483B)


      1 ---
      2 title: "Around \"Hello World\" in 30 Days"
      3 date: 2010-06-02T00:00:00+00:00
      4 draft: false
      5 canonical_url: https://www.viget.com/articles/around-hello-world-in-30-days/
      6 ---
      7 
      8 I'll say this up front: I love my job. I love the web. I love Rails. And
      9 I love working here at Viget. But lately, I've gone through periods
     10 where web development feels a bit stale. Hugh Macleod has a great post
     11 called [Beware of Turning Hobbies into
     12 Jobs](http://gapingvoid.com/2008/01/10/beware-of-turning-hobbies-into-jobs/)
     13 that sheds a bit of light on this problem: once you make a career out of
     14 doing what you love, it's not solely yours anymore. There are clearly
     15 [bigger problems one could
     16 have](http://news.nationalgeographic.com/news/2010/06/100601-sinkhole-in-guatemala-2010-world-science/),
     17 but I think this is something all developers struggle with at some point
     18 in their careers.
     19 
     20 This problem was weighing on my mind one morning, combined with a
     21 looming speaking engagement I'd committed to for [DevNation
     22 Chicago](http://devnation.us/events/8), when it hit me: I would spend a
     23 month trying a new technology every day, and then share my experiences
     24 in Chicago. Learning is a core value here at Viget, and my coworkers
     25 were incredibly supportive, adding to the list of technologies and
     26 asking to join me in learning several of them. With their help, coming
     27 up with the list was no problem --- it was actually harder to get the
     28 list *down* to 30. Here's what I finally committed to:
     29 
     30 1.  [Cassandra](http://cassandra.apache.org/)
     31 2.  [Chrome Extensions](https://code.google.com/chrome/extensions/)
     32 3.  [Clojure](http://clojure.org/)
     33 4.  [CoffeeScript](https://jashkenas.github.com/coffee-script/)
     34 5.  [CouchDB](http://couchdb.apache.org/)
     35 6.  [CSS3](http://www.css3.info/)
     36 7.  [Django](https://www.djangoproject.com/)
     37 8.  [Erlang](http://www.erlang.org/)
     38 9.  [Go](https://golang.org/)
     39 10. [Haskell](http://www.haskell.org/)
     40 11. [HTML5](https://en.wikipedia.org/wiki/HTML5)
     41 12. [Io](http://www.iolanguage.com/)
     42 13. [Jekyll](https://github.com/mojombo/jekyll)
     43 14. [jQTouch](http://www.jqtouch.com/)
     44 15. [Lua](http://www.lua.org/)
     45 16. [MacRuby](http://www.macruby.org/)
     46 17. [Mercurial](http://mercurial.selenic.com/)
     47 18. [MongoDB](http://www.mongodb.org/)
     48 19. [Node.js](http://nodejs.org/)
     49 20. [OCaml](http://caml.inria.fr/)
     50 21. [ooc](http://ooc-lang.org/)
     51 22. [Redis](https://code.google.com/p/redis/)
     52 23. [Riak](http://riak.basho.com/)
     53 24. [Scala](http://www.scala-lang.org/)
     54 25. [Scheme](https://en.wikipedia.org/wiki/Scheme_(programming_language))
     55 26. [Sinatra](http://www.sinatrarb.com/)
     56 27. [Squeak](http://www.squeak.org/)
     57 28. [Treetop](http://treetop.rubyforge.org/)
     58 29. [VIM](http://www.vim.org/)
     59 30. [ZSH](http://www.zsh.org/)
     60 
     61 Thirteen languages, most of them functional. Five datastores of various
     62 [NoSQL](https://en.wikipedia.org/wiki/NoSQL) flavors. Five web
     63 frameworks, and seven "others," including a new version control system,
     64 text editor, and shell.
     65 
     66 Once I'd committed myself to this project, an hour a day for 30 days, it
     67 was surprisingly easy to stick with it. The hour time slot was critical,
     68 both as a minimum (no giving up when things get too hard or too easy)
     69 and as a maximum (it's easier to sit down with an intimidating piece of
     70 technology at 7 p.m. when you know you'll be done by 8). I did have some
     71 ups and downs, though. High points included Redis, Scheme, Erlang, and
     72 CoffeeScript. Lows included Cassandra and CouchDB, which I couldn't even
     73 get running in the allotted hour.
     74 
     75 I created a simple [Tumblr blog](https://techmonth.tumblr.com) and posted
     76 to it after every new tech, which kept me accountable and
     77 spurred discussion on Twitter and at the office. My talk went over
     78 surprisingly well at DevNation ([here are my
     79 slides](http://www.slideshare.net/deisinger/techmonth)), and I hope to
     80 give it again at future events.
     81 
     82 All in all, it was a great experience and proved that projects that are
     83 intimidating when considered all at once are easily manageable when
     84 broken down into small pieces. The biggest lesson I took away from the
     85 whole thing was that it's fundamental to find a way to make programming
     86 fun. Working my way through [The Little
     87 Schemer](https://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0262560992)
     88 or building a simple webapp with [Node.js](http://nodejs.org/), I felt
     89 like a kid again, pecking out my first QBasic programs. Learning how to
     90 keep programming exciting is far more beneficial than any concrete
     91 technical knowhow I gained.