http://gist.github.com/6443

Awesome! Awesome keynote by Chris. Some excerpts from it

You should always have a side project, too. Side projects give you an
outlet, provide a useful distraction, let you explore new ideas, learn
new concepts, and generally give you the freedom to be unaccountable.
You don’t have to worry about your boss, or your coworkers, or the
damn commentators on Reddit. Just have some fun. Treat yourself.

If you already have a job you love, this doesn’t exclude you. You
probably use, day to day, many side projects from others. You can
also use your own side projects at your job. From Emacs configs to
simple web services, there are a ton of things you can do to stretch
your brain.

So, start a side project. Who knows where it will take you.

Do you have one now? If not, why not? Not enough time? No ideas? I
think I can help with both of those.

First off, the time issue. I don’t know how many of you read RSS, but
I challenge you (that’s a keynote term) to give it up for a month.
Just turn it off. Stop using Google Reader or NetNewsWire or whatever
the kids are using these days. It’s not worth your time.

What should you do instead? If you use Twitter, try following the
authors of your favorite blogs. Read their tweets on the bus. Or in
the bathroom. Check Ruby Inside once a week and skim over the posts.
Visit an aggregator like planetrubyonrails.com once a month. But
mainly, let other people do the filtering for you. Use your time for
other things.

You will not miss out on anything big. Stuff like the Google App
Engine, or Rubinius running Rails, or the killer speaker line up at
this year’s Ruby Hoedown will find its way to you. How can it not?
I’m willing to bet a lot of the stuff in your RSS reader is stuff you
already knew, or heard about somewhere else.

Personally, I used to check RSS multiple times per day. Now I don’t
use any reader, and haven’t since January 2008.
Another big time sink among programmers, I’ve found, are books on
process and theory. Books like Smalltalk Best Practice Patterns,
Practices of an Agile Developer, and even, I dare say, the Pragmatic
Programmer, are not worth your time. Instead, listen to Rein’s talk.

Talk to your friends or coworkers. Let other people filter the
information for you, then decide what you like.
The best way to learn about patterns, idioms, and best practices is to
read open source code. See how other people are doing it. It’s a
great way to stay current, and it’s free.

Next implement the Jerry Seinfield GTD method. Every time you work on
your side project, mark a big X through that day on calendar.
Eventually you’ll have a nice line of Xs. Missing an X will be
torture - it’ll mess up your beautiful streak. The goal is to maintain
the streak, even if you don’t think you have any ideas for the day.
The best way to overcome writer’s block is to write, after all.

Okay, so the time excuse is gone. Now you have time to work on a side
project and the motivation to do it consistently - the beautiful line
of Xs. You can devote at least one Sunday a month to it, at least.
But what’s the idea?

This is actually the easy part, because you don’t need a good idea.
Just start doing something interesting. Play with a new framework in
Ruby - I hear Sinatra is pretty hot these days. Learn how to do GUI
stuff, with Shoes.

Learn JavaScript. Like, for real. If you don’t know what the var,
with, or delete keywords are, get a book and start working on some
flashy effects. Or download Rhino or Johnson and write some server
side JS. It’s a really beautiful and misunderstood language.
Take some time to master your editor. Pick up the TextMate book and
dive in. Write a bundle. If you’re already got massive Vim-fu, try
out Emacs. Learn why people love it, then use that information in
your holy wars against them.

Write a web service. Something like Cheat, Subtlety, Disqus, or
TwitPic - tools someone can use to help make running a blog, site, or
coding simpler. Simple sites that do one thing very well, and surface
their information with digestible APIs.

If you’ve been meaning to learn a new language, start learning it.
But don’t just read a book. Start writing a program.

Learn Objective-C and Cocoa. Write a little Mac app to do something
useful, then give it away for free. Post the code on GitHub. Put up

a Pledgie badge and accept donations. Profit.

Write Rake in a Lisp. It’s a good way to learn about metaprogramming
and how command line scripts work in your new language. Write an RSS
parser and explore native data types in Erlang. Write a simple blog
and learn about the web frameworks in Haskell. Write Scrabble in Io,
picking up some OpenGL along the way. It doesn’t matter if people
have done it before.

In fact, stop worrying so much about other people. Every time I’ve
worked on a project I thought other people would really love, it was a
massive flop. Every time I’ve worked on a project I loved, it worked.

If you’re sitting in this room, your taste is not as far off from
those around you as you’d think. Build something you love and others
will love it, too. (Not everyone, of course.)

Alternatively, do something hard, the hardest thing you can think of,
in your language of choice. Stretch the boundries. Make Ruby cry out
in pain. Install ImageMagick. Rewrite all of the standard library.

Write an Objective-C bridge. You know, something just devilish. Flex
your brain.

Work on your small project for a few Sundays, declare it complete then
move on. Learn another language, or write something else in your new
language. Pick up a new web framework or work on flashy effect number
two. Add concurrent task execution to your Rake. The more acclimated
you get to this process, the more creative your ideas will be. It’s
the whole 10% inspiration 90% perspiration thing, and it worked for
me.

This, after all, is how GitHub was started. Tom and I had full time
gigs, but we’d get together on Saturday, have lunch, then work on
GitHub. We wanted a pretty and simple way to share Git repositories.
Something we’d use. Something that would make it easier for us to
share and work on open source.

The more side projects I had, the more I felt the pain of maintaining
open source code.

My plea to you today is to start a side project. Scratch your own
itch. Be creative. Share something with the world, or keep it to
yourself.

Side projects are less masturbatory than reading RSS, often more
useful than MobileMe, more educational than the comments on Reddit,
and usually more fun than listening to keynotes.

Survey

It’s a A List Apart’s survey 2008 for people who make websites. I came to know about this via Abdul’s blog. Questions were really interesting. Do take the survey.