AB9ON (aka Mike Yuhas) uses a variety of Icom rigs, and may be heard on various bands, including 2 meters or 70 centimeters (analog and D-Star digital) while motoring across southeast Wisconsin, plus the occasional foray into 20 meters and thereabouts. He's an officer of the Ozaukee Radio Club. The above photo depicts AB9ON's mobile shack in Port Washington, Wisconsin, on the western shore of Lake Michigan. Both AB9ON and the car have weathered a bit since this photograph was taken in 2007.

A short history of AB9ON:
1958 - Born, at a very early age.
1966 - Began listening to AM broadcast radio (WABC/New York, primarily).
1972 - Began listening to FM broadcast radio.
1974 - Got a scanner and began listening to railroads.
1976 - Licensed on the Citizen's Band as KADH1949. Handle: "Water Cow."
1977 - Listened to the first broadcast of WUSB/Stony Brook.
1980 - Earned Radio Operator's License (took a test at FCC's office on Houston Street, New York), and started an airshift on WUSB/Stony Brook.
1983 - Left WUSB, though still there in spirit.
1990 - Began a lengthy association with WYMS/Milwaukee as host of the Sunday Folk Show.
2001 - WYMS gig ends as station undergoes dramatic rearrangement. Half of weekend volunteer hosts eliminated in one fell swoop.
2001 - Found another gig co-hosting the bluegrass show on WGLB/Port Washington.
2002 - Added the Singer Songwriter Showcase to the WGLB schedule.
2003 - WGLB sold amidst great clamor to a Catholic media group. Most annoyed were the Lutheran ghosts inhabiting the studio building. Bluegrass and Songwriter shows discontinued.
2004 - Needing an RF fix, took plunge into amateur radio. Licensed as KC9GDV.
2007 - Upgraded to General class license.
2007 - Upgraded to Amateur Extra class license; call changed to AB9ON.

 

  on the air since June 2, 2004 | on the web since June 2, 2004  

AB9ON's railroad pages | old broadcast stuff
promulgate the transmission of a private electronic missive to AB9ON
Why I don't care for the "phone company" rant

Copyright © 2001-2008, Where You Never Know What Will Happen Next (tm) Productions
#!/usr/bin/perl ############################################################################## # TextCounter Version 1.2.1 # # Copyright 1996-98 Matt Wright mattw@worldwidemart.com # # Created 3/14/96 Last Modified 6/24/98 # # Scripts Archive at: http://www.worldwidemart.com/scripts/ # ############################################################################## # COPYRIGHT NOTICE # # Copyright 1996-98 Matthew M. Wright All Rights Reserved. # # # # TextCounter may be used and modified free of charge by anyone so long as # # this copyright notice and the comments above remain intact. By using this # # code you agree to indemnify Matthew M. Wright from any liability that # # might arise from its use. # # # # Selling the code for this program without prior written consent is # # expressly forbidden. In other words, please ask first before you try and # # make money off of my program. # # # # Obtain permission before redistributing this software over the Internet or # # in any other medium. In all cases copyright and header must remain intact.# ############################################################################## # Define Variables # Data Dir is the directory on your server that you wish to store the # count files in. Each page that has the counter on it will have it's own # file. $data_dir = "./counterz/"; # Valid-URI allows you to set up the counter to only work under specific # directories on your server. Include any of these directories as they # appear in a URI, into this array. More information on URI's available in # README. @valid_uri = ('/'); # Invalid-URI allows the owner of this script to set up the counter so # that certain portions of the web server that may be included in Valid-URI # cannot use the program. Leave this commented out if you wish not to # block out certain parts. #@invalid_uri = ('.shtml/','.html/'); ############################################################################## # Set Options # Show Link allows you to add a link around the counter to point to # either instructions explaining to users how to set this up on the system # (useful if a system administrator wants to allow anyone to set things up # themselves). Setting it to 0 will make no link, otherwise put the URL # you want linked to the count here. $show_link = "0"; # When Auto-Create is enabled, users will be able to auto-create the # count on their home pages by simply imbedding the Server Side Includes # call. Setting auto_create to 1 enables it, 0 will disable it. Only # users in @valid_uri will be allowed to auto create. $auto_create = "1"; # Show Date will show the date of when the count began if you set this # option to 1. It will appear in yor document as [Count] hits since [Date]. # Set this to 0 and it will simply return the [Count]. $show_date = "0"; # Lock Seconds will define the number of seconds the script should sit # and wait for the lock file to be gone before it will overwrite it if it # is still there. Every now and then a user will interrupt a page, causing # the script to halt and leave a lock file in place before the lock file # could be removed. This defines how long it waits. $lock_sec = "3"; # Padding Size define how many numbers will be shown as your count. For # instance, if you want your count to say 00065 and have the zeros padded # up to five digits, then set $pad_size = "5"; If the number goes higher # than the pad_size, don't worry, there just won't be any zero's tacked # onto the front. $pad_size = "1"; ############################################################################## # Print Content Type Header For Browser print "Content-type: text/html\n\n"; # Get the page location from the DOCUMENT_URI environment variable. $count_page = "$ENV{'DOCUMENT_URI'}"; # Check Valid-URI to make sure user can use this program. &check_uri; # Chop off any trailing /'s if ($count_page =~ /\/$/) { chop($count_page); } # Any characters that are not letters or numbers are turned into an underscore $count_page =~ s/[^\w]/_/g; $lock_file = "$count_page\.lock"; # Check to see if file is locked by program already in use. &check_lock($lock_sec); # If the file exists, get the date and count out of it. Otherwise, if # auto_create is allowed, create a new account. If neither of these are # true, return an error. if (-e "$data_dir$count_page") { open(COUNT,"$data_dir$count_page"); $line = ; chop($line) if $line =~ /\n$/; close(COUNT); ($date,$count) = split(/\|\|/,$line); } elsif ($auto_create == 1) { &create; } else { &error('page_not_found'); } # Increment Count. $count++; $print_count = $count; # Get Count Length for use in padding. $count_length = length($count); # Pad the number if it is smaller than $pad_size. for ($i = $pad_size;$i > $count_length;$i--) { $print_count = "0$print_count"; } # Print the Count, Link and Date depending on what user has specified # they wish to print. if ($show_date == 1) { if ($show_link =~ /http:\/\//) { print "$print_count hits since $date"; } else { print "$print_count hits since $date"; } } else { if ($show_link =~ /http:\/\//) { print "$print_count"; } else { print "$print_count"; } } # Open the count file and write the new count that has been incremented. open(COUNT,">$data_dir$count_page") || &error('could_not_increment'); print COUNT "$date\|\|$count"; close(COUNT); # Remove Lock File for next time script is run on that HTML page. &clean_up; sub check_uri { $uri_check = "0"; foreach $uri (@valid_uri) { if ($ENV{'DOCUMENT_URI'} =~ /$uri/) { $uri_check = "1"; last; } } foreach $uri (@invalid_uri) { if ($ENV{'DOCUMENT_URI'} =~ /$uri/) { $uri_check = "0"; last; } } if ($uri_check == 0) { &error('bad_uri'); } } sub create { ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); @months = ("January","February","March","April","May","June","July", "August","September","October","November","December"); $year += 1900; $date = "$months[$mon] $mday, $year"; $count = "0"; open(COUNT,">$data_dir$count_page") || &error('count_not_created'); print COUNT "$date\|\|$count"; close(COUNT); } sub error { $error = shift(@_); if ($error eq 'page_not_found') { print "[TextCounter Fatal Error: This Page Not Found\; Auto-Create Option Disabled]"; } elsif ($error eq 'bad_uri') { print "[TextCounter Fatal Error: This Page Not In Valid URI]"; } elsif ($error eq 'count_not_created') { print "[TextCounter Fatal Error: Could Not Write to File $datadir$count_page]"; } elsif ($error eq 'could_not_increment') { print "[TextCounter Fatal Error: Could Not Increment Counter]"; } exit; } sub check_lock { $time = $_[0]; for ($i = 1;$i <= $time; $i++) { if (-e "$data_dir$lock_file") { sleep 1; } else { open(LOCK,">$data_dir$lock_file"); print LOCK "0"; close(LOCK); last; } } } sub clean_up { unlink("$data_dir$lock_file"); }