The only down side is that some parts of the arduino are kind of hard to build on perfboard. Most notably the Serial to usb adapter chip, which allows the microcontroller to interface with the computer through usb. You could use a good old RS232 jack, but they are not on a lot of newer computers. So to program your homemade board you will either need a break out board which does have the chip (get one here: http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_2117341_-1), or an arduino Uno or clone board to program the chip ( I used the former.)
Either way it is a fun and informative project.
Step 1: Materials
otherwise here is the parts list:
-two 10 uf electrolytic capacitors
-two 10 uf tantalum capacitors
-7805 voltage regulator (5v)
-LM1117T-3.3 voltage regulator(3.3v)
-two 150 ohm resistors
-one 0.1 uf capacitor (ceramic disk)
-two 22 pf capacitors (ceramic disk)
-16 MHz crystal oscillator
-momentary push button switch
-female headers (I used three rows of eight)
-row of 6 male headers
-female wall wart power jack
-ATmega328 with bootloader
-28 pin DIP IC socket
Step 2: Install the socket
Step 3: Adding the 5v regulator
Step 4: Adding the 3.3v regulator
Step 5: Indicator LED
Step 6: Connecting power and ground pins
Step 7: Reset button
Step 8: Adding the crystal oscillator
Step 9: LED on pin 13
Step 10: Connecting the female headers
This process is very tedious, so just have some patience and you should be fine. Also planning out how you are going to connect everything before hand will go a long way. You will probably have a lot of wires intersecting. after a while I was forced to start connecting pins on the bottom of the board to prevent this.
Step 11: ICSP headers
You can use these pins to program the chip using the breakout board mentioned earlier.
Step 12: Programming with the arduino uno
Anything you can do with the arduino (except serial read, and other things that require constant interface with the computer) can be done on the Homemade arduino in this way.