FFL 2006
We had our draft last night, everything went smoothly minus a few glitches. Here is my roster:
SLOT PLAYER TEAM POS
QB Tom Brady NE QB
RB Joseph Addai Ind RB
RB/WR DeShaun Foster Car RB
WR Anquan Boldin Ari WR
WR Hines Ward Pit WR
TE Chris Cooley Was TE
D/ST Jaguars Jac D/ST
K John Kasay Car K
Bench Carson Palmer Cin QB
Bench DeAngelo Williams Car RB
Bench Fred Taylor Jac RB
Bench Terry Glenn Dal WR
Bench Kellen Winslow Cle TE
Bench Charlie Frye Cle QB
ESPN FFL 2006: Welcome to ESPN Fantasy Football!
Armbrust Grill & Chill
Hey here are some pictures from last night's BBQ at the Armbrusts. I didn't be may pictures before the fire, so I missed some of the folks that left early. Check out the uploaded photos on Flickr.
OK, I'm done playing.
Ok. I'm done. I've got the new camera, but its time to get back on task: programming. To reiterate the goal: to be a competent programmer in Java and Ruby. I am defining competent as an ability to excecute a good design over small and medium sized applications preferably via the Web. Or, not be a complete idiot when I want to start making money via code again.
But this is the hard thing for me, what to start with. I've got some compeletly useless advice from many folks, including "go find an open source project and start chaning things". Wow, that may work for you, but not for me. Espically when it comes to Ruby, Java may be, but tell me how to find a list of Java projects on
SourceForge. I couldn't do it.
So, I'm going to find stupid little assignment from intro to programming courses like this
one. Now this will only work for a while and maybe in a few weeks it won't meke sense to still be using the little assignment, but I need to get the ball rolling and this seems to be a better idea. Comments?
Oh yeah, earlier this morning I did take some photos with my new lens. Here is a sample and link to Flikr:
The FBI's Upgrade That Wasn't
Big software project gone wrong. This shouldn't be a big suprise, a large open-ended contract by the US Government to a private contractor produces useless software. Challenges still abound in modern software development.
The FBI's Upgrade That Wasn't
More wedding photos
I've posted about 60 more photos from the wedding check them out
on Flickr.
Here is a sample to start off the new set:
St. Louis Pictures
I went to St. Louis this week for work, acutally just a day. I thought I'd make the most of day by going to a Cardinals game and taking some photos.


Let's Get Ready to Rumble
I've joined my first fantasy football league since the 8th grade, when all stats were added by hand out of the Star Tribune. I've just been invited to a league with some current and former co-workers.
I'm pleased to annouce my offical team name will be the Minnesota Fightin' Pike! I've chosen the name to honor the one season wonder of the Area Football leauge. Plus I get a cool logo easily.
here it is:
A wonderful weekend
I had a terrific weekend celebrating the marriage of Aaron & Amanda Froberg. Lots of driving back and forth between Minneapolis and Chisago City (50 mi. north), but well worth the effort.
As you may have read I've just purchased an new camera and so I took plenty of pictures. However since I just purchased a new camera, it will take some time to correct my errors in judgement and post the photos in a more pleasing light.

Enjoy!
New Camera
I purchased a Canon Digital Rebel XT Wednesday and a new 70-200mm lens yesterday. Here are some shots that Matt Hardy and I took outside his apartment in South Minneapolis.
Pair Programming with Nic
This weekend I made the trip to Morris, MN to do some pair programming with UMM professor & friend
Nic McPhee. The objective of the day was to help me on my path back to programming.
I knew I want to do a few things, 1. re-awaken my Java brain cells 2. learn Eclipse, and 3. get started on learning Ruby, anything else would be a blessing. Current UMM and Nic is in a unique to help me with all three. UMM uses Java as the main language for programming classes and most of the students are now using Eclipse (in my day we used Emacs and some used Vim). Luckily Nic is contemplating a switch to Ruby for the Intro to Computer Science class down the road, but more imediately for the Software Engineering course this fall for upper-division students. This change has required Nic to spend a good chunk of his summer learning Ruby, so I'm going to use that knowledge to get some Ruby exposure.
Nic and I worked on a problem that I see a lot at work, fiding the matches between two lists of users. Now for this venue I've changed the list of names to those who have a much lower expecation of privacy.
List 1:
Castillo, Louis
Morneau, Justin
Mauer, Joe
Cuddyer, Micheal
Hunter, Tori
Punto, Nick
White, Rondell
Ford, Lew
Stewart, Shannon
Kubel, Justin
Tyner, Justin
Liriano, Francisco
Santana, Johan
Silva, Carlos
List 2:
Mauer, Joe
Konerko, Paul
Thome, Jim
Cano, Robinson
Lopez, Jose
Glaus, Troy
Tejada, Miguel
Young, Michael
Dye, Jermaine
Matthews, Jr, Gary
Ordonez, Magglio
Ramirez, Manny
Rios, Alex
Sizemore, Grady
Liriano, Francisco
Rivera, Mariano
Ryan, B.J.
Santana, Johan
Zito, Barry
As you may have guessed I'm using players from the Twins roster and the 2006 AL All-Star roster.
Here is the Java code:
public class MySearchClass {
private List<String> mnTwins;
private List<String> allStars;
public static void main(String[] args) throws Exception {
MySearchClass searchClass = new MySearchClass();
searchClass.compareFiles(args);
}
private void compareFiles(String[] args) throws Exception {
mnTwins = openAndReadFile(args[0]);
allStars = openAndReadFile(args[1]);
Collections.sort(mnTwins);
Collections.sort(allStars);
int twinsIndex = 0;
int allStarIndex = 0;
while(hasEntries(twinsIndex, allStarIndex)){
String twinsPlayer = mnTwins.get(twinsIndex);
String allStarName = allStars.get(allStarIndex);
if(nameMatch(twinsIndex, allStarIndex)){
System.out.println(twinsPlayer + "\t"+ allStarName);
allStarIndex++;
} else if(twinsPlayer.compareTo(allStarName) < 0) {
twinsIndex++;
} else {
allStarIndex++;
}
}
}
private boolean nameMatch(int termedIndex, int activeIndex) {
return allStars.get(activeIndex).startsWith(mnTwins.get(termedIndex));
}
private boolean hasEntries(int twinsIndex, int allStarIndex) {
return twinsIndex < mnTwins.size() && allStarIndex < allStars.size();
}
private static List<String> openAndReadFile(String fileName) throws Exception {
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line = bufferedReader.readLine();
List<String> names = new ArrayList<String>();
while(line != null){
names.add(line);
line = bufferedReader.readLine();
}
return names;
}
}
For some reason the List are typed properly they should be a String. Check out
MySearchClass is written correctly and that it will compile.
Now here is the Ruby code we wrote afterwords:
class TwinsAllStars
attr :mnTwins
attr :allStarRoster
def read_names(file_name)
names = Array.new
File.open(file_name) do |file|
file.each_line { |line| names << line }
end
return names
end
def initialize
@mnTwins = read_names("mnTwins.txt").sort
@allStarRoster = read_names("allStarRosterList.txt").sort
end
def processFiles
puts @mnTwins & @allStarRoster
twinsIndex = 0
allStarIndex = 0
termedName = @mnTwins[twinsIndex]
allStarName = @allStarRoster[allStarIndex]
while hasEntries(twinsIndex, allStarIndex) do
if allStarName.match(/^#{termedName}.*/)
puts termedName + "\t" + allStarName
allStarIndex += 1
allStarName = @allStarRoster[allStarIndex]
elsif termedName < allStarName
twinsIndex += 1
termedName = @mnTwins[twinsIndex]
else
allStarIndex += 1
allStarName = @allStarRoster[allStarIndex]
end
end
end
def hasEntries(twinsIndex, allStarIndex)
twinsIndex < mnTwins.size and allStarIndex < allStarRoster.size
end
end
user_conflict = UserConflict.new
user_conflict.processFiles
Now as you can see it is nearly a duplicate of the way we solved the problem in the same way we solved it with Java. After some thought we looked at the problem again and realized we could do a better job with a different data structure, istead of Lists we would use Sets. Here is our new Ruby code:
def read_names(file_name)
names = Array.new
File.open(file_name) do |file|
file.each_line { |line| names << line }
end
return names
end
mnTwins = read_names("mnTwins.txt").sort
allStarRoster = read_names("allStarRosterList.txt").sort
puts mnTwins & allStarRoster
Ahh, now that looks right. A nice simple way to find the matches.
Please let me know if you have any comments and if we could have done it better.
GPS tracker for Photography
Check out this cool gadget from DPReview
Sony GPS tracker for photography.
By syncronizing your date and time stamps with this device you can show exactly where you took a picture. And the coolest part is that the mapping solution is online using Google! Maps. DPReview notes that the syncronization software will write the GPS info in to the JPEG EXIF header, very cool!