After being fed up with 4.0 on my 3G, I downgraded the firmware back to 3.1.3. iOS 4.0.1 was supposed to fix the performance issues on the 3G but I wasn't so sure. So, I waited until 4.2.1. Jailbreaking was easy using redsn0w (the part that I always forget to do it upgrade the firmware on my iPhone first then jailbreak).
Apparently SSH doesn't work on 4.2.1 yet (or something) which is a big pain in the ass. So, I grabbed afc2add from Cydia and got iFunBox running on my computer. It fills the gap until OpenSSH works with 4.2.1. BiteSMS constantly crashes my iPhone so I have to disable it to be the default SMS app. Everything else seems to work fine (Winterboard, fcsb, SBSettings, etc).