- **Learn a variety of [programming paradigms](http://en.wikipedia.org/wiki/Programming_paradigm "Programming paradigm - Wikipedia"):**
- * Write a program in assembly language
- * Write an application in a functional language
- * Write an application in an object-oriented language
- * Write an application in a prototype-based language
- * Write an application in a logic programming language
- * Write an application using the Actor model
- * Write an application in Forth
- **Experience the ins and outs of programming for different platforms:**
- * Write a nontrivial web app - connector,
- * Write a nontrivial desktop app - for ubuntu? - music app? mongodb viewer? zeromq viewer?
- * Write a nontrivial mobile app - Achieved!
- * Write an embedded app
- * Write a realtime system
- **Enhance your understanding of the building blocks that we use as developers:**
- * Write a networking client (e.g., HTTP, FTP) -
- * Write a device driver
- * Write a B-tree database - In scala? Python?
- * Wrap an existing library to provide a better (more pleasant) user experience
- * Write an application or framework that provides a plugin model
- * Write a testing framework
- * Write a programming language
- **Enlighten yourself with koans, katas, and the wisdom of ages:**
- * Complete five [code katas](http://en.wikipedia.org/wiki/Kata_\(programming\) "Kata (programming) - Wikipedia")
- * Complete the [programming koans](http://sett.ociweb.com/sett/settJan2011.html "Learning Programming Languages with Koans - Object Computing, Inc.") for a language that you want to learn
- * Attend a [code retreat](http://coderetreat.com/ "Code Retreat with Corey Haines")
- * Read [SICP](http://mitpress.mit.edu/sicp/ "SICP web site") and complete all the exercises
- **Program in the open:**
- * Contribute to an open source project - diaspora? openblock?
- * Have a patch accepted
- * Earn commit rights on a significant open source project - Ubuntu related? Something I use and admire?
- * Publish an open source project
- * Perform a [Refactotum](http://thinkrelevance.com/blog/2007/04/03/twir.html "Refactotum") of an open source project
- **Learn by teaching others:**
- * Present a lightning talk
- * Present at a local user group
- * Present at a conference
- * Deliver a training course
- * Publish a tutorial
- * Publish a constructive code review of an open source project
- * Write a programming book
- **Idea Dump**
- ###From Hyperink###
- * Advenjure Create a simple MUD (Multi-User Dungeon) text game in Javascript (coffee script, clojure script) which makes AJAX (JSON or XML) requests to a central server. For brownie points, generate a basic infinite map.
- * Auto-meme Write a RESTful web service which takes a random image url, analyzes the image, and intelligently stamps it with appropriate, generated meme text.
- * Hacker News Write a program which analyzes hacker news posts and determines common attributes of successful posts (topics, dates, events).
- * Command Line Equalizer Write a command line tool which plays a song and streams its equalizer in ascii.
- ###From Me###
- * Personal Command Center Write a program which aggregates email, calendar, core tasks into a focussed display. Bonus Points for drawing out relationships in the data (e.g. where is timing being spent, patterns/solutions for topics).
- (Use Context.io for getting cool and fancy with analysis of email)
- * Use Twilio to Build a Funny Cats Text Message Game, Django on the server side
- * *Auto-Diary* Write a Service which rings or texts a user each to help them compile a personal diary, analyse their entries and progressively build a mood/emotion diary
- * *Team Spirit* Build a service which lets users provide messages of support of their group/team/organisation with a dashboard to view analytics, trends etc...