Nathan Hwang

Leveling up as a developer Log - the journey is important too!

Fork me on GitHub

Learn a variety of programming paradigms:

Write a program in assembly language

Wrote a tiny assembly program for homework, for /Fundamentals of Computer Systems/ . I can’t really count a toy program as fulfilling this, however, so I’ll wait until I mix up my assembly and C to really mark this off.

Write an application in a functional language

Lisp back in high school. However, I found myself drifting towards decidedly non-functional things like loop, so using something more like Haskell or Scala would fit this better.

Write an application in an object-oriented language

Easy: java back in high school. More recently, ruby and python.

Write an application in a prototype-based language

Javascript seems to be the only really widespread prototypal language. While I use lots of javascript, more often than not it’s wrapped up in jquery, and I barely touch the prototypal aspects of the language. Once I write a framework using the prototypal aspects of the language, then I’ll mark this off.

Write an application in a logic programming language

Write an application using the Actor model

Write an application in Forth [C]

Experience the ins and outs of programming for different platforms:

Write a nontrivial web app

ELZO at UPS, written in Rails 2.0 or something like that.

Write a nontrivial desktop app

Wrote a python+wxwidgets clone of the card game set. However, it was hardly non-trivial, so I’m marking it WIP.

Write a nontrivial mobile app

Write an embedded app

During a summer robotics REU, wrote C for an AVR platform (arduino clone). The code wasn’t very extensive, though, and we never got to field test it.

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

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

For PLT, for school: helped write DotPar

Enlighten yourself with koans, katas, and the wisdom of ages:

Complete five code katas

Complete the programming koans for a language that you want to learn

Clojure koans

Attend a code retreat

Read SICP and complete all the exercises

Program in the open:

Contribute to an open source project

Contributed a –change-password option to selfspy

Have a patch accepted

The selfspy guy hasn’t merged in my changes yet

Earn commit rights on a significant open source project

Publish an open source project

Perform a Refactotum of an open source project

Learn by teaching others:

Present a lightning talk

Present at a local user group

I’m sure presenting several lectures for ADI counts, right? But in a stroke of legalistic idiocy, I’m not counting it until I really present at some real user group: user groups have pretty different demands from introductory workshops.

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