Archive for July 2003

Another Good One From Ann Coulter

Ann Coulter has come out with a great new column covering the latest “Saddam” tape, the deaths of his worthless dirtbag sons, and the bull@#$t “study” from Berkeley on the psyche of Conservatives. Here’s a snippet:

Liberals, by contrast, think outside the box. For example, the left’s “cherished worldview” prohibits racial profiling. But after 9-11, liberals approached the issue with an open mind. In recognition of the fact that 19 Arab immigrants with the identical hair color, eye color and skin color, half of whom were named Mohammed, had just murdered thousands of our fellow countrymen, liberals decided to keep prohibiting racial profiling.

O she’s good.

The Onion on Gigli

The comedic geniuses over at The Onion have done a number on the new Ben Affleck/Jennifer Lopez film, Gigli. I actually got to this story from somewhere else and didn’t realize it was an Onion story at first. Given some of the descriptions of this film that I’ve heard by people who have seen it, the “audience reactions” in the story didn’t seem all that far-fetched. Then I figured it out. Go read it. But don’t drink anything while you are reading unless you want it on your monitor.

First GeoCache Find

As I mentioned yesterday, I got a handheld GPS unit and was going to give GeoCaching a go. Well, today when I got home, Thomas and I headed out for our first “treasure hunt.” The cache we were after is actually in our subdivision, which made it a good first hunt since it was so close and I had a pretty good idea of where it was. Yes, this does somewhat violate the spirit of GeoCaching, but for a first go with a 4.5 year old, I wanted to make certain we found it.

And find it we did! We parked by the pool, got out, sprayed our arms and legs with Deep Woods Off! and started out. I let Thomas wear the GPS unit around his neck and showed him how to read the map display. I told him that the line showed us where we wanted to go and that the arrow was where we were, and it needed to point as closely as possible to the line. He got a real kick out of that. “Daddy, we need to go to the right. Oops! Too far!” It was fun. We had to trek through some weeds that were taller than he is, but we found the cache and opened up. There was a ton of stuff in it. Some toys, a big sea shell and some stuff I didn’t recognize. We looked at all of it, recorded our find in the log book, took a little green MatchBox type car and left a Disney trading pin of Goofy. We then closed it back up, walked around the lake a bit, then headed for home.

Thomas had a ball, and I rather enjoyed myself as well. He’s ready to go on another hunt, only next time he wants one that isn’t so close to home! That shouldn’t be a problem. According to GeoCaching.com, there are about 30 in the area.

Igpay Atinlay Essagemay Orfay Addamsay

On the local radio station 96 Rock they are running a spot in which some chick from the “96 Rock Bod Squad” delivers this at the end of a “newscast”:

Well, it looks like we got Uday and Quasay. Hey Saddam! Ou’reyay extnay, ickheadday!

Juvenile, yes. But funny.

I Got A GPS Unit

I finally got around to getting a handheld GPS unit today. I got the Garmin eTrex Venture and took it for a spin today when I went cycling at my usual location. Pretty cool little unit. Good price, too. On of the reasons I got it is because I had heard a while back about a sport called GeoCaching and the website that supports it. I had also heard that there was a cache remarkably near my house; actually in my subdivision. So tomorrow, assuming the weather is good, Thomas and I will head out, GPS in hand, to find our first cache. I’ll post tomorrow night with our results. From the comments I read about this cache, and my knowledge of the area, I don’t think it should be too hard to locate. Of course the website reminds us that GeoCaching is “deceptively easy.” We’ll see.

A Game Based on 9-11?

That’s right. Some sick people are creating a computer game based on the horrible events of 9-11-2001. Can you believe that? At the risk of giving them free publicity, the site is here. They have “actual in-game” screenshots of a guy leaping to his death to escape the fires behind him. What kind of person comes up with something like this? I can’t even imagine. And I sure hope I never meet them.

A Really Nice CVS Client

This morning I found out about SmartCVS; a really nice looking GUI client for CVS. I’ve been using WinCVS for a while now, but (no offense to the developers!) it just didn’t feel right. I can’t explain it, but it just didn’t give me all that I wanted. (Laugh all you want about SourceSafe, but that is a really nice client tool.)

Anyway, I just downloaded SmartCVS a few minutes ago and started playing with it. It’s written in Java so it will run on lots of OSs, and it’s fast too. It looks a lot like IntelliJ IDEA and apparently JetBrains has signed some sort of license with SmartCVS to incorporate it into IDEA. There is a free version and a “pro” version with more features. A single license of the pro version is $45 USD which doesn’t sound too bad. I’m going to keep using the free version for a while to make sure I really like it, but thus far it looks like a great tool.

Now if someone would just create a cvs client that can use a proxy! I’m behind a firewall that blocks most useful ports, one of which is 2401… Sigh…

Lisp Macros Are Very Cool

So I’m playing around with Lisp, reading Successful Lisp and thoroughly enjoying myself. I really like Lisp, I just haven’t gotten to use it on anything other than test stuff yet. One of the things that I find the most interesting, and powerful, is the macro facility. Sure, some languages like C have macros that are processed by a preprocessor, but Lisp’s macros are in a league of their own. Consider this code (lifted wholesale from Successful Lisp)

  1  (defmacro def-i/o (writer-name reader-name (&rest vars))  2    (let ((file-name (gensym))  3          (var (gensym))  4          (stream (gensym)))  5      `(progn  6         (defun ,writer-name (,file-name)  7           (with-open-file (,stream ,file-name  8                                    :direction :output  9                                    :if-exists :supersede) 10                           (dolist (,var (list ,@vars)) 11                             (declare (special ,@vars)) 12                             (print ,var ,stream)))) 13 14         (defun ,reader-name (,file-name) 15           (with-open-file (,stream ,file-name 16                                    :direction :input 17                                    :if-does-not-exist :error) 18                           (dolist (,var ',vars) 19                             (set ,var (read ,stream))))) 20         t))) 


What does this mass of parentheses, backquotes, commas and colons do? Lots. Executing the macro thusly

 (def-i/o save-checks load-checks (*checks* *next-check-number* *payees*)) 

will define two functions, one called save-checks and the other called load-checks, that will store and retrieve the global variables *checks*, *next-check-number* and *payees* to and from a given file name. These methods could be called thusly

 (save-checks "checks.dat") (load-checks "checks.dat") 

This macro could be included in any program for which we needed to have reader and writer functions for marshaling data to and from disk files. This example was for a fictional bank, but let’s say I had a program to process data about the Tour de France and I had buckets for teams, riders, jerseys and sponsors. I could do this

 (def-i/o save-tdf-info restore-tdf-info (*riders* *teams* *jersyes* *sponsors*) 

and would get save-tdf-info and restore-tdf-info functions that could be called thusly

 (save-tdf-info "tdf.dat") (restore-tdf-info "tdf.dat") 

Maybe I’m just easily impressed, but I think that’s pretty cool.

Not A Good Start

As I was getting ready for work this morning I noticed that one of my cats had barfed in my shoe. I suppose I could look at this as a sign that if the day starts off that bad, it won’t get any worse…

Idiots

From Neal Boortz this morning:

The very same people who don

The Old Mill Site

I asked a fellow cyclist today at Tribble Mill if he knew where the trail was that would take you to the old mill site. He did and told me where to look. I had driven in my car to this particular parking lot before, but I hadn’t noticed the wooden posts about 8 feet back into the woods. These were the markers indicating the trail head. I headed down it, very down, a long way. I hit a hole and augered the front tire in, came off the seat and landed on the top tube. Ouch! And the left pedal came around and ripped down the back of my leg. Lots of choice words were uttered, but being alone in the woods, and no one was there to hear them…

Anyway, I continued down the trail and finally hit large sheets of granite. It looked like being at Stone Mountain. I could hear a fast moving stream nearby and headed for it. The stream was about 20 feet across and moving at a pretty good clip across the rocks, making lots of noise. It was a lovely sound, and a lovely sight. I didn’t even attempt to cross because I could tell that the rocks were very slippery and I would slip if I even tried to ride across. As for the mill, I don’t know what was supposed to still be there. I could see a man-made wall about 30 feet upstream from where I was standing, but no good way to get there. So I hung out by the stream for a few minutes then headed back out. That hill was now an ascent instead of a descent and was quite hard. I had to walk a little of it, but I ultimately made it out and headed for home. Total ride: 9.32 miles.

I Beat The Hill!

The hill at Tribble Mill Park that I mentioned here suffered a crushing defeat today as I surmounted its summit. It sounds impressive, but it really isn’t. Most riders probably wouldn’t flinch at this hill, but it whooped me the first time I tried it. Today I made it over the top with only a brief stop half way up. After that I picked up the multi-use track at the bridges and finished a counter-clockwise circuit. After resting for a few minutes and eating 1/3 of a chocolate PowerBar I headed out again to do a clockwise circuit.

After completing that circuit, I rested again and decided to go just one more time and headed out again clockwise. This time as I approached the bridges in the woods, my right calf was starting to cramp, so I parked on the first bridge and got off to stretch. While standing there I was looking at the trails below me next to a little stream and decided to go off-road and check them out. So I backtracked about 150 feet to a little wooden bridge that I figured was the entrance to these trails. I was met with a fork and headed to the left, which was the direction of the stream. I was immediately faced with an enormous mud pit with no obvious way around. I could tell by the tire tracks through it that it presented no problem for a lot of folks, but this being my first off-road experience, I decided not to tackle mud just yet. So I turned around and took the right fork. This was lovely! I was back there for about a mile, pedaling almost the entire way. No one else was around; just me, the birds, and a lizard. O yeah, and one squirrel.

I finally came out back to the road and stopped for about five minutes to finish off the PowerBar and rest. I then picked up the multi-use again and completed the circuit for a total of nine miles. I’m tired, but it was extremely fun. I’m going to have to check out some of the other trails out there.

Ullrich Wins Stage 12

In an amazing ride, Jan Ullrich of Germany, riding for Team Bianchi, rode the 47 kilometers in 58′ 32″! Incredible. Lance came in at 01′ 36″, almost two minutes behind. Armstrong keeps the Yellow, but today’s victory brings Ullrich to within 34 seconds of catching up.

Weigh-In Results

Gained .8 pound. A bit disappointing given all the cycling I did last week, but my clothes are fitting better, and I can tell a difference in the mirror. The fact that the scale didn’t show a loss is just something I have to deal with, because I have lost fat; it’s been exchanged for muscle.

Eclipse 3.0 M2 Is Out

I just got the notice that Eclipse 3.0 M2 is now available. I’ve already been using 3.0, but judging by the release notes there’s a lot of chewy Eclipse goodness loaded in this release. I’ve already downloaded it and “installed” it, such as it is. I’ve upgrading my JDK to 1.4.2 and will fire the new Eclipse up shortly.

Update: OK, I’ve got M2 and JDK 1.4.2 installed. While it does monopolize my CPU on startup, once up it is fast! And there are lots of spiffy new features. My favorites so far are the JavaDoc and Declaration views. The JavaDoc view shows the javadoc for the selected method and the declaration view shows the declaration. Clicking on the “println” part of System.out.println results in the javadoc or the source code being shown, depending on which view is selected. Another feature, which mimics something that is in the new IntelliJ is a change indicator in the gutter on lines that you’ve changed in this editing session. Hovering over the marker shows what the line looked like before and allows you to revert changes. Very nice, indeed!

Definitions by Thomas

Last Thursday night walking up to the Long Horn Steakhouse I pointed out a large cloud formation to my 4.5 year old son, Thomas.

Me: Thomas, look at that cloud up there.
Thomas: Wow. That’s really huge!
Me: What does “huge” mean?
Thomas: It means “enormous.”
Me: …

Then last night he was playing his Thomas the Tank Engine computer game. As we were heading up for bedtime he told me about it.

Thomas: … Yeah, and I talked to Henry.
Me: And who is Henry?
Thomas: He’s the big green engine.
Me: How did you talk to Henry?
Thomas: Well, Thomas talks to Henry automatically.
Me: What does “automatically” mean?
Thomas: Well, it means you don’t have to do anything and it does it.
Me: …

He has a rather large vocabulary for his age…

Kata 6 In Lisp

I got bored tonight and had a go at writing Dave Thomas’ Kata 6 in Lisp. It just seemed like a good thing to do. The code is below. I’m not a Lisp wizard by any stretch, so I welcome any comments from Lisp mavens. It’s interesting to note that this version comes up with 2,531 matches, while my Ruby version only found 2,506. Dave says you should find 2,530. Also note that all I did was the finding. I didn’t implement the largest set, long word, etc from the original kata.

(setq anagrams (make-hash-table)) 
(setq count 0) 
(defun canon (word)   
(setq norm-word (string-downcase word))  
 (setq canon-word (sort (copy-seq norm-word) #'char-lessp))  
 (setq canon-word (intern canon-word))  
 (setf (gethash canon-word anagrams)        
 (cons norm-word              
 (gethash canon-word anagrams))))  
(with-open-file (stream "wordlist.txt")                 
(do ((line (read-line stream nil)                            
(read-line stream nil)))                   
  ((null line))
                   (setq count (+ count 1))
                   (canon line)))
  (maphash #'(lambda (key val)
              (if (= (length val) 1)
                  (remhash key anagrams)))
          anagrams)
  (format t "Total words: ~D; Total anagrams: ~D" count
         (hash-table-count anagrams))
  (maphash #'(lambda (key val)
              (print val))
          anagrams)


Update: I discovered today that instead of interning the string I could have created the hashtable with a different test, like so

 (setq anagrams (make-hash-table :test #'equal)) 

and then removed this line

 (setq canon-word (intern canon-word)) 

I Couldn’t Do This Job

Just like funeral directors, who do their jobs to help grieving families through a tough time, crime scene cleanup companies do the same thing. While I couldn’t do either job, I’m glad that there are folks who can. This story is an excellent article about this business, and a couple of the owners in particular. There are some gross details in it, and some bad language, but it’s worth reading it.

Cycling Has Paid Off

I had my weigh-in tonight and I’m already seeing results from all the cycling I did this week. I lost 5.2 pounds! Ooo yah!

It’s Jar-Jaromir!

According to this story, there’s to be a new character in The Return of the King when it comes out in December. It’s Jar-Jaromir, half brother of Boromir and Faramir. According to the story:

The scene depicted in the trailer shows Jar-Jaromir shouting, “Gondora gonna fallsa”; he then trips over a corpse and knocks down a couple of Uruk-hai.

My favorite quote from the article is this:

[Peter] Jackson added, “I just love it when he shouts, ‘Yousa steala precious from meesa!’”