1/25/2005

I just finished a great book called The Random Walk Guide to Investing: Ten Rules for Financial Success by Burton G. Malkiel. I highly recommend this book for anyone who has a retirement account, such as a 401k or IRA. It lays out a simple plan using easy to understand rules on how to allocate and invest your retirement funds.

I am personally going to use this investment guide to manage Aliciana’s 401k. This book convinced us to start funding her 401k as soon as possible and to continue funding it over her entire career. Everyone should fund their 401k or IRA as much as possible… the tax benefits are amazing! The true magic of his plan is to simply start saving a little money out of every paycheck as early in your life as possible, save a ton on your taxes, and let compounded interest turn it into a large sum by the time you retire.

This book gives a very convincing analysis which supports its claim that for long term investing you are better off buying “Total Market Index Funds” and similar types of funds for bonds and REITs. These types of funds won’t make you rich overnight but over 20 years they will provide a very good annual return, at least 10% APR for the stock fund.

So, I recommend reading this book for anyone who has to manage their retirement funds. If you are paying a financial planner to do it for you, chances are that you would be better off firing him and managing your funds yourself. The author gives plenty of real world data to back up this claim.

As for how I am going to manage our own retirement funds, based on this book’s advice, it is quite simple. I am going to allocate 80% of our 401k funds in the Vanguard Total Stock Market Index, 10% in the Vangaurd Total Bond Market Index Fund, and 10% in the Vanguard REIT Index Fund. As we age, I am going to slowly allocate more money into the bond and REIT funds, so that by the time we are 55 I should have 40% in the stock fund, 30% in the bond fund and 30% in the REIT fund. It really is that simple, no financial planner needed, all you need is this book.

2/9/2005

Here are some pictures of the wildlife native to my apartment complex. The ducks were busy taking a bath and were funny to watch. I also finally got a picture of the crazy looking bird that I think might be a woodpecker. He usually flies away before I can get my camera, but not this time.

2/10/2005

I played around with the aperture priority mode on my camera this morning. By combining a small field of view (F3.2) with the macro mode I got some pretty cool shots of my desk animals.

2/13/2005

Aliciana and I decided to get some fresh air along the mighty Kern River. We ended up walking 3.63 miles (according to the GPS) along the bike path that runs along the river. It was nice that the river actually had water in it for a change. Usually, the river’s water is diverted to the farm land. I think they should try to keep water in the river more often, it is much more pleasant to look at than a sandy river bed.

2/28/2005

It is raining…. again. It has been raining in Bakersfield for weeks. If I had wanted to deal with this type of weather I would have moved to the Pacific Northwest.

One of the best things about Bakersfield is its incredibly mild winters. Most days are in the upper 50’s with a gorgeous blue sky and lots of sunshine. It is that sunshine that I miss. The great winters are the reward that nature gives us for spending the summer trying not to melt. It seems like Mother Nature is screwing us on our deal.

3/12/2005

Aliciana and I took my Grandma’s new puppy, Sandy, out for a walk because it was such a beautiful day. After the walk, I decided to take some photos of Sandy because he is just so cute. He is a 4 month old miniature poodle and has so much fluffy fur he looks like a giant cotton ball. He is a very good puppy and very affectionate. It is commonly known that a picture is work a thousand words, so here is 10,000 worth:

3/14/2005

Below is a small script I wrote to make a copy of an audio CD under Linux. Simply place a blank CD in the burner, the CD to copy in your second CD/DVD drive, and run the script. I am sure there are tons of scripts like this out there on the net, but I decided to contribute mine anyways, mainly because I feel it is clean, concise, and the best way to copy an audio CD. You will need to edit the device’s (/dev/hdb, /dev/hdd, etc) to match your computer setup. BTW, only use this script to copy CDs you already legally own… or else the RIAA will throw lawyers at me. Here is the script:


#!/bin/sh
cd /tmp
cdparanoia -w -d /dev/hdd -B
cdrecord -v dev=/dev/hdb speed=40 driveropts=burnfree -pad -audio track*.wav
rm -f track*.wav 
eject hdb
eject hdd

3/22/2005

I tagged along with Aliciana on her business trip to Concord, California this week. I figured it would be nice to wander around the town while she actually worked for a living. Plus, because I am looking for a job, it might be my last chance to get out of town until the wedding. On the way into the hotel, I passed this duck that was hanging out in front. He posed for me, so I had to take his picture.

3/24/2005

I took a day trip around Mt. Diablo State Park, which is near Walnut Creek and Concord. It was a beautiful drive all the way up to the summit of the mountain. On the very top of the mountain there is a little building that was used as a lookout post. The views from the top were breathtaking. Way off in the distance I could barely make out the Golden Gate Bridge through the haze.

3/27/2005

All of the Ladd family gathered at Grandma and Grandpa’s house for our traditional Easter Sunday gathering. It was a good time that was filled with great food and company.

Almost the whole family was able to make it. Brianna and Brian couldn’t come because Brian was in the hospital (get well soon!). Doug was also missing due to a cold. My parents and sister also couldn’t make the trip from Las Vegas.

4/13/2005

Below is a python script I wrote to make a copy of a video DVD and burn it onto a writable DVD. This is a more complicated process than copying an audio CD because manufactured DVDs can hold around 8.5 gigabytes (GB) of data while your blank writable DVD can usually only hold 4.7 GB. So, this script goes through the process of taking the movie tract, decrypting it, separating out the video and audio, compressing the video as needed, combining the result back together, and burning it onto the blank DVD. I can’t tell any difference between the original and the copy, besides all the “extras” missing, so it works out well.

This script runs under Linux and requires python, vobcopy, libdvdcss, mjpegtools, transcode, dvdauthor, and dvd+rw-tools. Only use this script to copy DVDs you legally own for your personal use or else the MPAA will saw off your hands with a rusty butter knife. You have been warned!


#!/usr/bin/python

####
# Author: Chris Ladd
# File: copydvd.py
# Date: April 13, 2005
# License: GPL v2
####

import os;

# Change this to point to your DVD burner
DVD_BURNER = "/dev/hdb"

# Make sure we have a clean environment
os.chdir("/tmp")
os.system("rm -f *.vob")
os.system("rm -f *.vob.partial")
os.system("rm -f movie.m2v")
os.system("rm -f movie.ac3")
os.system("rm -f shrink.m2v")
os.system("rm -f movie*.mpg")
os.system("rm -f toc.xml")
os.system("rm -rf movie/")

# Copy the dvd movie track
assert os.system("vobcopy -l") == 0
assert os.system("mv *.vob movie.vob") == 0

# Separate the audio and video
assert os.system("tcextract -i movie.vob -t vob -x mpeg2 > movie.m2v") == 0
assert os.system("tcextract -i movie.vob -t vob -x ac3 -a 0 > movie.ac3") == 0

# Calculate how much we have to shrink the video
m2v_size = float(os.stat("movie.m2v")[6])
ac3_size = float(os.stat("movie.ac3")[6])
print "m2v size: %f" % m2v_size
print "ac3 size: %f" % ac3_size

factor = float(m2v_size / (4700000000.0 - ac3_size) * 1.02)
factor = round(factor, 2)
print "shrink factor: %f" % factor

# Shrink the video if necessary and put it back together with the audio
if factor > 1.0 :
    assert os.system("tcrequant -i movie.m2v -o shrink.m2v -f %f" % factor) == 0
    assert os.system("mplex -f 8 -o movie%d.mpg shrink.m2v movie.ac3") == 0
else :
    assert os.system("mplex -f 8 -o movie%d.mpg movie.m2v movie.ac3") == 0

# Write the DVD TOC so that the video starts playing once inserted
toc = open("toc.xml", "w")
toc.write('<dvdauthor>n  <vmgm />n  <titleset>n   <titles>n    <pgc>n')
for filename in os.popen("ls movie*.mpg") :
    toc.write('      <vob file="%s" />n' % filename[:-1])
toc.write('    </pgc>n   </titles>n  </titleset>n </dvdauthor>')
toc.close()

# Create the DVD image
assert os.system("dvdauthor -o movie -x toc.xml") == 0

# Burn the new DVD
assert os.system("growisofs -Z %s -dvd-video movie/" % DVD_BURNER) == 0

# Clean up
os.system("rm -f *.vob")
os.system("rm -f movie.m2v")
os.system("rm -f movie.ac3")
os.system("rm -f shrink.m2v")
os.system("rm -f movie*.mpg")
os.system("rm -f toc.xml")
os.system("rm -rf movie/")

4/23/2005

This wedding between two of my best friends was a truly magical affair. The setting was the wonderful wilderness on the outskirts of Yosemite Park filled with majestic pine trees and all the glory of nature. The ceremony was very touching, with Aaron’s step-dad performing the service and the couple reciting their hand written vows. Melinda looked gorgeous in her wedding gown and Aaron didn’t look too bad either.

The reception took place in the restaurant at the hotel and was filled with family and friends. I got to see all my friends who have spread out to different cities since college and, as you can see in the photos, we had a great time. Congratulations Aaron and Mel!

5/7/2005

We are spending a long weekend in San Diego in order to taste test the food for our wedding reception. We spent today hanging out with Aliciana’s family and trying to remain sane while dealing with her nephews. Their amount of energy never ceases to amaze me. It is quite a shock to your system when you go from hanging out in a nice quiet apartment at home to being surrounded by 4 little children who are screaming, running around, causing trouble, and using your body as a jungle gym. I had lots of fun with them once I adjusted… but I am glad I don’t have to deal with this level of noise all the time.

5/9/2005

After tasting the food that we are going to serve at our wedding reception we took a look at the banquet room the event is going to take place in. The first photo located below is of the the center piece that will be on all the tables. The next 3 photos are of the actual banquet room, which was setup for an event taking place later in the day. The last photo is of the patio that guests will be able to hang out on until the banquet room doors are open at 6:00 pm for the reception. That patio is also ours to use as the evening events go on until midnight (maybe even 1:00 am if anyone can make it that long).

5/23/2005

Yesterday, while in the local Barnes & Noble killing some time before lunch, I finally remembered to look up what type of bird this is:

It turns out to be a “Green Heron”, so now I have a type to put with the bird. I have seem him a lot lately, usually fishing for crawfish in the pond by my apartment. He is quite fun to watch because his actions seem quite erratic to us humans, hence the name “Crazy Bird”. More info on his species can be found here.