left of the dial

August 31, 2005 under Music

While driving today, I was stuck in the middle of a freak occurance. On the radio, the Edge, FM96, Radio 1 and the rest of the stations that I have programmed at the touch of a button were running commercials. All of this at the same time! After a quick scan of the allowable FM frequencies for broadcasting in North America, I found two stations that I stupidly forgot about. They were CKMS from UW and the Condor from Conestoga College. Yup, student-operated radio. No other stations in the vicinity were playing anything like Bloc Party, Sigur Rós or Hot Hot Heat at 5PM, except for these two stations.

This reminded me of the shows that I had on WLSO back in university. If Soo, Ontario and Soo, Michigan weren’t inundated with the likes of Pavement, Pixies, Sonic Youth, the Cure and the the Butthole Surfers before, they were after I was through with them 😉 First year, I had a show with one of my roommates, Bill Burrell. It was a good start but he flunked out so that was the end of the “Bullines and Bill Show”. I was only involved with one more radio show but it lasted until I graduated; “Oral Oompah” with Matt Newman. I met Matt and his roommate Rich (aka: Stinky) during my first year; they lived across the hall. They were both from St. Johns, Michigan and had a curious fascination with Canada and Canadian culture. They watched Strange Brew and Canadian Bacon constantly and even kept their windows open in the winter (until a frozen water pipe in their room burst). They definitely were the exception to the rule that Americans are ignorant to the rest of the world unless it involves war or a fight of some kind. Anyway, Matt and I had similar musical tastes so we decided to do a show together. We definitely had a lot of fun with it. I think if we would’ve had a video camera in the studio with us during our shows, it would’ve made for hilarious TV, or hilarious Internet TV at the very least. We even had faithful callers to our show and in-studio guests would occasionally drop by (usually the in-studio guests were Dena and Matt”s girlfriend, Mariah, though). As far as music goes, I was partial to the bands I listed above but I also played other bands that I may not have owned any of their material but I thought should be heard like Ween and Front 242. I even pushed the Canadian content on the Michiganders with bands like Sloan, Eric’s Trip and of course, the Tragically Hip. As a matter of fact, I even played some Timmins bands; mostly the bands that Lee Hannigan was in like Puddy (apparently they’re known as Red Elite now) and Nancy Raygun. Matt was a drummer so he was partial to bands with technical prowess like Primus and the Chili Peppers. We always concluded every show with our signature freestyle oral oompahs…basically mouthed oompha (think Charlie and the Chocolate Factory) doo-wop scat stuff. Good times.

My point behind all of this reminiscing is to emphasise the beauty of student-operated radio. It’s a place where you can hear all kinds of music without a corporate agenda behind it. You also can’t forget the diversity. One of the perks of being a DJ at WLSO after you had a few years under your belt was that you were given the task of reviewing the new CDs that the record companies shipped to us. I was exposed to all kinds of music that I normally wouldn’t listen to. The same goes for the listeners. In an 8 hour span, you will hear music on college radio that won’t hear on commercial radio or music video channels (but you will on a station like KEXP from Seattle). I learned to appreciate bluegrass, ambient, death metal and a lot of other genres. The last thing I’d want to be is a hardcore indie rock dork (I don’t want to get into a rant against geek chic indie trends, fashions and scenesters now) and I know that exposure to different music definitely helped me. Sure, there’s the immediacy of the Internet nowadays when you can go and listen to what you want, when you want, whether legally or illegally. Lately, I’m guilty of leaving a browser window open on Silversun Pickups‘ website so as to listen to whatever their media player will offer, but there’s something unique in allowing someone else to expose you a blend of music while you take it all in. Much like post-secondary education itself, student-operated radio is all about experiencing and processing new ideas.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
comments: 0 »

i like google, but…

August 25, 2005 under Computers, Software

I’m not sure if I’m on board with their latest offerings.

Earlier this week, I took Google Desktop out for a spin. Feature-wise, it’s great. I enjoyed the sidebar feature as it had all of my subscribed feeds right on my Destkop. I added a system resource, to-do, scratch pad and weather add-ins. It was very handy indeed and I even looked at the SDK because I have a few ideas for my own add-ins. When I decided to look at the Processes tab of the Task Manager, I was shocked, however. GoogleDesktop.exe, GoogleDesktopCrawl.exe, GoogleDesktopDisplay.exe, GoogleDesktopIndex.exe, GoogleDesktopMail.exe. Ok, that’s fair; there are many features to Google Desktop but combined, they appeared to only use about 20MB of RAM. However, when I shut down Google Desktop completely, I regained close to 100MB of RAM. Where did that other 80MB go? I like to run my computer lean without unneccessary background apps or services running and I prefer to use apps with small memory footprints; recall my tirade on iTunes from a couple of years ago (I’ve looked at iTunes again recently and it’s still way too bloated for my tastes). And then there’s Google Desktop‘s integrated desktop search. Do I really want to search the contents of my computer in the same manner that I search on the Web? I think OS X’s Spotlight is the only one that got local searching right, so far. Google Desktop is supposed to index your files during idle time. To me, it seemed like it indexed even when I was doing something. Also, I’m not sure if I’m comfortable having my hard drives indexed. It wouldn’t take too much effort to swipe those files (HT1 and CF1 files) from a malicious add-in.

Google Talk was just released and I’m not sure that I see an immediate need or desire for it. Do we really need another IM and VoIP client? I already use Trillian Basic and Skype (and maybe I’ll replace it with Gizmo soon). Sure, Google Talk uses Jabber on the back-end, but none of the people on my IM contact list use Jabber; it’s all ICQ, Yahoo! Messenger, AIM and MSN Messnger (hence, I’m a Trillian user). I do appreciate that Google Talk doesn’t include any advertising; something I hate to see in software (another reason why I use Trillian). “Today’s instant message converstation is brought to you by Jostens. When you think of high school class pictures and rings, think Jostens. Go Jostens!”

Don’t get me wrong, I like Google; I use the advanced features of their search engine all of the time. They are surely capable of displaying a lot of innovation but the new apps that they’re releasing aren’t doing it for me, yet. There’s rumblings that Google are developing an operating system of their own. I can’t fathom where they’re headed with all of this just yet. I do know that I can easily lose a couple of hours of my life at a time while looking for crop circles, military bases and whatnot with Google Earth 😉

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
comments: 5 »

golf for a good reason

August 22, 2005 under Golf, Life, Sports

Yesterday, Dena and I participated in a charity golf tournament at Grand Valley. A portion of the proceeds from the tournament go to the Kidney Foundation of Canada. The weather was perfect and our team came in sixth place, shooting even. We were -2 with five holes remaining but we fell apart. Either way, it was fun and for a good cause.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
comments: 3 »

i p freely

August 17, 2005 under Computers, Internet, Programming

IP addresses have been a hot topic lately, for whatever reason. According to my webserver stats, I’m getting plenty of hits on one of my scripts from search engines with terms like “get ip address” and “vb external ip”. Yesterday, Barry talked about a guy wanting to know how to get the IP address of visitors. So to make all of the wanna-be script kiddies out there happy, I’ll mention my favourite way to get IP addresses from a client application. Some of this came in handy when I wrote some stuff to hack a Russian software pirate, but I’ll save that story for another day.

Getting an internal IP address is a snap. All operating systems have a way to view the currently assigned IP address on a network adapter. ‘ipconfig’ in Windows XP and ‘ifconfig’ in UNIX are basically the same command-line interface utilities. With each, you can also redirect the output of these commands to a text file for later parsing. Take a peek at this VBScript that I wrote to grab my NIC‘s IP address, save it to a temporary file on disk and then parse my IP out of it:

' Purpose: Retrieve the currently assigned internal IP address
'       I: (none)
'       O: IP address
Function GetInternalIP()
    Const DEF_ADDRESS_TEXT = "Address"
    Const DEF_9X_CMDLINE = "winipcfg /batch"
    Const DEF_NT_CMDLINE = "%comspec% /c ipconfig >"
    Dim objWSHShell
    Dim objFSO
    Dim strTempFile
    Dim strTempLine
    Dim strIP
 
 
    ' create the WSH object
    Set objWSHShell = CreateObject("WScript.Shell")
 
    ' create the FSO object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
 
    ' assemble path to temp file in Windows' TEMP dir
    strTempFile = objFSO.GetSpecialFolder(2) & "\ip.txt"
 
    If (objWSHShell.Environment("SYSTEM")("OS") = "") Then
        ' Win9x/ME
        objWSHShell.Run DEF_9X_CMDLINE & " " & strTempFile, _
                        0, True
    Else
        ' WinNT4/2000/XP/2003
        objWSHShell.Run DEF_NT_CMDLINE & " " & strTempFile, _
                        0, True
    End If
 
    ' open the temp file
    With objFSO.GetFile(strTempFile).OpenAsTextStream
        Do While NOT .AtEndOfStream
            ' read a line from our temp file
            strTempLine = .ReadLine
            If (InStr(strTempLine, DEF_ADDRESS_TEXT) <> 0) Then
                ' strip out the IP address
                strIP = Trim(Mid(strTempLine, _
                             InStr(strTempLine, ":") + 1))
            End If
        Loop
        ' close the temp file
        .Close
    End With
 
    ' return the IP address
    GetInternalIP = strIP
 
    ' delete our temp file
    objFSO.GetFile(strTempFile).Delete
 
    ' cleanup
    Set objFSO = Nothing
    Set objWSHShell = Nothing
End Function

It could be even simpler using the WMI Win32_NetworkAdapterSetting class, which would negate the need to run system-level commands and parse the output in a text file. In the case that WMI is not installed or you’re on a non-Windows computer and want something slicker, here’s how I do it in Python:

import socket
 
 
# Purpose: Retrieve the currently assigned internal IP address
#       I: (none)
#       O: IP address
def GetInternalIP():
    strIP = socket.gethostbyname(socket.gethostname())
    return strIP

Pretty simple, but for those folks behind a router using NAT (the main benefit of using a router in the first place), this isn’t your IP address on the Internet; it’s only your internal LAN IP address. The router will be assigned an “external” IP address from your ISP. But you can’t run DOS or UNIX shell commands on commercial routers, and that’s where a few websites come in handy. At the most basic level, these websites merely displaying the IP address that you are assigned to you by your ISP that makes the TCP protocol work over the big network we call the Internet. It does so by displaying the contents of an environment variable, called REMOTE_ADDR, that all webserver software stores for each visiting session. I like CheckIP (from DynDNS) but IP Chicken and ShowMyIP work fine as well. ShowMyIP is especially nice because it displays more info and even offers an XML document. Any language worth a damn should provide a way to send HTTP (and then some) requests out to the Web either natively or via external libraries. Here’s how I use CheckIP and a regular expression to retrieve the external IP address in C#:

using System;
using System.Net;
using System.Web;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;


// Purpose: Get the external IP address of the computer. Using
//          dyndns.org's checkip tool.  This will work
//          behind NAT routers.
//       I: (none)
//       O: external IP address
public string GetExternalIP()
{
    const string IP_URL = "http://checkip.dyndns.org";
    string strHTML, strIP;


    // Send the request and hopefully we'll get response.
    // Try to parse out the IP address from the returned HTML
    try
    {
        WebRequest objWebReq = WebRequest.Create(IP_URL);
        WebResponse objWebResp = objWebReq.GetResponse();
        Stream strmResp = objWebResp.GetResponseStream();
        StreamReader srResp = new StreamReader(strmResp,
                                               Encoding.UTF8);
        strHTML = srResp.ReadToEnd();
        Regex regexIP = new Regex(
           @"\\b\\d{1,3}\.\\d{1,3}\.\\d{1,3}\.\\d{1,3}\\b");
        strIP = regexIP.Match(strHTML).Value;
        return strIP;
    }
    catch(Exception ex)
    {
        Console.WriteLine("Can't retrieve external IP: " +
                          ex.Message);
        return null;
    }
}

There you go. Now all those folks who have been getting to my site via “get router ip” type Google queries will have a nice blog post describing what they’re looking for instead of simply copying some of my source code. Use it for good and never for evil 😉

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
comments: 19 »

pumping iron

August 15, 2005 under Life

This past weekend, Dena and I met her family in Mackinac City, Michigan for the International Ironworkers Festival. Dena’s siblings had holes poked in them; Kelle had her tongue pierced and Josh had his left nipple pierced. No piercings for Dena and I, though 😉 You can see a few pictures from the weekend here.

It was a nice break and we made good time when driving, but it was nice to get off the road and crack a cold Sleeman Cream Ale when we arrived back in Kitchener.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
comments: 0 »

i can read minds…i have espn…i'm a claire huxtable

August 7, 2005 under Computers, Programming

Grab a piece of paper, unless you have a wicked memory. Write down a three or four digit number. It could be anything like 5823, 3772 or 946.

With the number that you wrote down, scramble up the order of the digits to create a second number. So if you wrote down 5823, something like 3852 would do the job.

At this point, you should have two numbers written down. Subtract the smaller number from the larger number. So if your first number was 5823 and your second scrambled number was 3852, then you’d perform 5823 – 3852 to get your third number (in this case, it’s 1971).

Now circle one of the digits of your answer from the subtraction, but don’t draw a circle around a 0, since it’s already a circle.

Now I’m going to try to determine which number you circled. Mix up all of your numbers in your answer and type them in below EXCEPT for the one that you circled. Then click the “Enter” button.


Your web browser is completely ignoring the <APPLET> tag! You need Java to see this properly.

If you’re interested in finding out how I can do such a feat, you may or may not be able to find an answer in my source code 😉

Note: Yes, the above requires Java so if you’re viewing this in an RSS or Atom reader, you won’t see it; come visit my site instead. I’ve finally succumbed to all of the attention that the Eclipse IDE was getting, so I needed a reason to try it out. That, and I haven’t written any Java code in a long time.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
comments: 2 »

calm like a bomb

August 5, 2005 under Life

I haven’t posted in a while because the Nantelle side of Dena’s family came down to Kitchener for a visit. The previous six days could be summed up in the following words: hot weather, cards, Tim Horton’s, sports bra, broken TV, Steves, beer, humidity, miniputt, War of the Worlds/Wedding Crashers, game console emulation and air conditioning.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
comments: 0 »