November 28, 2004
3 hours for 3 minutes

Print | Home

A friend of ours said he saw us on TV on Friday. We watched ourselves on the program today. About 3 hours of taping was turned into just 3 minutes of air time. Just as well, as neither my wife or I were particularly proud of our “performances.” Our younger son had a great laugh about it after hearing our description of the taping and seeing what actually aired.

LED lights

I bought a toilet flapper today as the old one doesn’t seal anymore. The main floor toilet has a newer type of float valve which only operates when the level goes down unlike the ball float variety. Because of the leak the toilet would spontaneously fill every so often. Anyway, while I was at Rona I picked up some LED Christmas lights for both inside and out. Though they are more expensive, I want to avoid the several hours I might spend this year tracing the burnt out bulb(s) on 300 light strings. I also bought a rubber mat, the kind you put under small rugs on hardwood floors to keep them from sliding. I’ve put this in the new car to keep the bottle of wind shield washer fluid from sliding back and forth in the hatch area.

A tenor from our choir and I practiced our duet, “Suscepit Israel” from The Magnificat by G. B. Pergolesi this afternoon. We’ll be rehearsing it with orchestra tomorrow evening and we’ll be in concert next Saturday and a week later the following Sunday.

 
Posted by jservice at 09:23 PM
November 27, 2004
OMEA conference and Christmas Shopping

Print | Home

fibreglass conga set

I pretended I was a music teacher these past two days and registered for the Ontario Music Educator’s Conference. Through present and former choir members and my wife, I know a few music teachers (including my wife). The conference took place at the “Double Tree” hotel o.k.a the Skyline, across the street from Toronto Congress. We took a room for Friday night so we wouldn’t have to get up so early to hear Saturday’s keynote speaker(s): the Canadian Brass at 8:30 a.m. Well worth the price of admission, IMHO!

I attended some workshops, one of which I’ll certainly remember as the teacher presented the uses of technology and software to help his students learn their music. How about, for example, learning a duet by sending sound attachments to each other and re-mixing their own parts and sending it back for review? The other workshop I remember was on Latin rhythms. One bit of trivia I learned is that despite Hollywood’s depictions, maracas are not Mexican—they are an instument from Venezualan and Columbian music culture. Oh, and our choir was part of a workshop on choral techniques by way of an open rehearsal.

There was also a vendors' mall: no Encylopedia Britannica though. I told my wife I would buy her the two-congas-with-stand set for Christmas as long as she would share them. And, yes, I agreed she didn’t have to wait until Christmas to open them.

 
Posted by jservice at 09:36 PM
November 25, 2004
Retrieving the Global Address List (GAL) data

Print | Home

You may recall (or perhaps I neglected to discuss it here) that I was having a problem with the Perl script I used to synchronize our employee email addresses from the LDAP directory to the SQL server database serving our Intranet web site. One early morning it deleted half the names — probably something to do with the domain controller server upgrade to Windows 2003. For some reason the query wasn’t returning all the users in the directory anymore. Part of the problem is that this list of names is also used to establish the Intranet website content managers' permissions. It took me a while to surf through the Google chaff to finally find an article on how to retrieve the information available in the Global Address List of Exchange / Outlook. I culled the vbs script lines and added some of my own changes:

' GEt the domain.
Dim rootDSE, domainObject
Set rootDSE=GetObject("LDAP://RootDSE")
domainContainer = rootDSE.Get("defaultNamingContext")
Set domainObject = GetObject("LDAP://" & domainContainer)
' Create a file for results. 
Set fs = CreateObject ("Scripting.FileSystemObject")
Set userFile = fs.CreateTextFile (".\users.csv")
' Call the sub to do the work.
ExportUsers(domainObject)
Set oDomain = Nothing
MsgBox "Finished"
WScript.Quit

Sub ExportUsers(oObject)
  Dim oUser
  For Each oUser in oObject
    Select Case oUser.Class
      Case "user"
        If oUser.mail <> "" then
          userFile.Write oUser.displayName _
                  & "," & oUser.sAMAccountName _
                  & "," & oUser.userprincipalname _
                  & "," & oUser.sn _
                  & "," & oUser.department _
                  & "," & oUser.physicalDeliveryOfficeName _
                  & "," & oUser.telephoneNumber _
                  & "," & oUser.initials _
                  & "," & oUser.givenName _
                  & "," & oUser.mail
'          for each email in oUser.proxyAddresses
'            userFile.Write email & ","
'          next
          userFile.WriteLine ""
        End if
      Case "organizationalUnit" , "container"
        If UsersinOU (oUser) Then
          ' If users in container call myself again.
          ExportUsers(oUser)
        End if
    End select
  Next
End Sub

Function UsersinOU (oObject)
  ' Are there users in the container?
  Dim oUser
  UsersinOU = False
  for Each oUser in oObject
    Select Case oUser.Class
      Case "organizationalUnit" , "container"
        UsersinOU = UsersinOU(oUser)
      Case "user"
        UsersinOU = True
    End select
  Next
End Function

Then I converted the vbs to a Perl script using the Win32::OLE module:

use Win32::OLE 'in' ;

sub last_error () {
  my $last_error = Win32::OLE->LastError() ;
  die $last_error if $last_error ;
}

sub has_users ($) ;

sub has_users ($) {
  my $object = shift ;
  my $result = 0 ;

  foreach my $user (in $object) {
    if ($user->{Class} =~ /^(organizationalUnit|container)$/) {
      $result = has_users($user) ;
    } elsif ($user->{Class} eq "user") {
      $result = 1 ;
    }
  }
  $result ;
}

sub export_users ($) ;

sub export_users ($) {
  my $object = shift ;

  foreach my $user (in $object) {
    if ($user->{Class} eq "user") {
      if ($user->{mail} ne '') {
        print join(', ', map { "$_: $user->{$_}" } qw[mail displayName]), 
          "\n" ;
      }
    } elsif ($user->{Class} =~ /^(organizationalUnit|container)$/) {
      export_users($user) if has_users($user) ;
    }
  }
}

my $rootDSE = Win32::OLE->GetObject("LDAP://RootDSE") ;
my $domain_container = $rootDSE->Get("defaultNamingContext") ;
my $domain_object = Win32::OLE->GetObject("LDAP://$domain_container") ;
_ddump [$domain_object], [qw[$domain_object]] ;
last_error ;

export_users($domain_object) ;

exit 0 ;

As I’m off to the OMEA conference tomorrow, though I’m not a music teacher, I’ll have to wait until Monday to change my script and restore those missing names.

 
Posted by jservice at 09:42 PM
November 24, 2004
With a little VBA you can automatically save attachments in Outlook

Print | Home

I have a server which accepts downloads from devices in the field and mails the results to me in an attachment. Outlook doesn’t provide a way to automatically detach and save them. Sometimes you look for stuff using Google and you find a heck a lot of chaff. Finally I discovered how to do this with a short VBA “script.” Outlook XP has a “run a script” action available for its rules but, again, it took a bit of searching to find out how to use it.

Attribute VB_Name = "SaveAttachments"
Option Explicit
' The "run script" check box in the Outlook Rules Wizard looks for subs with
' the Item As Outlook.MailItem argument.
Sub SaveAttachmentMessageRule(Item As Outlook.MailItem)
  ' save_dir must exist.
  Const Save_dir = "c:\attachments\"
  Const process_attachments_program = "C:\Perl\bin\perl.exe C:\bin\got-data.pl"
  Const Ext = "txt"
  Dim Filename As String
  Dim Attach As Attachment
  Dim i As Integer
  
  i = 0
  If Item.UnRead = True Then
    For Each Attach In Item.Attachments
      ' Verify the attachment has the correct extension and is unread.
      If Right(Attach.Filename, 3) = Ext Then
        Filename = Save_dir & Attach.Filename
        Attach.SaveAsFile Filename
        i = i + 1
      End If
    Next Attach
    ' Mark as read.
    Item.UnRead = False
  End If
  Set Attach = Nothing
  If i > 0 Then
    ' Now process the saved attachment(s).
    Shell process_attachments_program
End Sub

Though you can run an application from an Outlook rule it starts before the run a script; hence, I use the Shell command to process the attachment file. Note that you’ll have to change the “Security” settings to enable macros. However, if you know how to use VBA then I would surmise you know how to do this, too.

 
Posted by jservice at 09:33 PM
November 21, 2004
No comment spam to speak of

Print | Home

In my /etc/hourly.local file I created to update awstats hourly, I added a Perl one-liner to look for comment spam attempts:

perl -ne 'print if /\b(POST|GET)\b/ && /mt-comments\.cgi/ && ! /(mysite|mysisterssite\
)\.com/' /home/myhomedir/logs/blog-access.log

On Nov. 20 there were 212 entries. Not all were comment spam attempts as some 'bots “cruise” the blog looking for open comments. All the rest were stopped with my suggested rewrite rules. It used to be that all those attempts would be clogging the MT activity log with MT-Blacklist comment denial or worse, sending me email about a bogus comment.

 
Posted by jservice at 07:56 PM
November 20, 2004
Invoices found!

Print | Home

Invoice thumbnail image

About a month ago a choir member was cleaning out her trunk and gave me a box of some new music. This box had been given to her by our director: I figure at some point last May as he was a pedestrian most of that time. As music sorting is rather tedious work I stashed the box in the basement with the other piles of music until such time as a sorting mood strikes (not too often smiley).

Today was rainy and too wet to rake leaves. I even felt like sorting music. In that box were invoices to our choir and another entity, from whom we borrow music from time to time, for over $600 and due last May 30. This explains a message on my work phone regarding an invoice from a certain music publisher. I was too busy on Friday to call back. Good thing: I would have had no idea what they were talking about. I scanned the invoices and emailed to people who know more about them I do. Now somebody was to sweet talk that music publisher and try to avoid the stated 1.5%/month overdue charges.

BTW, pretty well all that music is sorted, envelopped and put away. There’s now about 240 separate works in 14 large plastic bins. That 14th bin is now full, too.

 
Posted by jservice at 10:21 PM
November 18, 2004
Woman, a big man

Print | Home

“Give a woman an inch and she thinks she’s a ruler.”

Anonymous

“It takes a big man to cry, but it takes an even bigger man to laugh at that man.”

Jack Handey

 
Posted by jservice at 10:15 PM
November 17, 2004
Monday report on Friday, 20 candles

Print | Home

monday report logo

We (older son, gf, wife and me) sat in the studio audience for Monday report last Friday. Now I know why Rick Mercer’s monologues sometimes don’t get the laughs they deserve: he’s a perfectionist, if he flubs a word or two he’ll repeat the whole thing. The plastic stacking chairs weren’t particularly comfortable and we watched the tape segments on TV monitors just like we would at home. So the fun was visiting with my son and gf. After the taping we ate at the Planet Hollywood restaurant next to the Skydome. This P.H. isn’t nearly as impressive as the Niagara Falls location.

My younger son turned 20 yesterday. We are no longer the parents of teenagers.

 
Posted by jservice at 09:43 PM
November 15, 2004
Drove to the grocery store

Print | Home

Though it is only a five minute walk, we have a new car! We’ve traded in the big, rusty, peeling-paint, 363,000+ km 1992 Dodge Caravan for a 2004 Aveo: a second “family” car for my son for to use for his daily school commute once he gets the hang of stick shifting. I’ll use it for my evening errands just because it’s fun to be driving manual again.

Of course history repeated itself: I was having trouble backing out of the driveway what with the “pulling up the ring” to reverse, clutching, etc but mostly because I forgot to release the parking brake. Yes, I remember doing the same thing at my driver’s test when I was 16.

 
Posted by jservice at 10:45 PM
November 14, 2004
Maestro Bennett in Mississauga News again

Print | Home

I found out from an article in the Mississauga News why my wife had to wait for the opera to start. Apparently the musicians had said “no pay, no play” for the final performance and Maestro Bennett finally arrived with their pay a half an hour after the program was supposed to start. Of course the 'News couldn’t contact him to get a statement. Typical! Once again I’m glad the Oakville Choral Society said ‘no’ the second time they were asked to “join” with the Opera Mississauga. (The latter’s web site redirects to Royal Opera Canada, perhaps because Opera Mississauga and the Living Arts Centre can’t agree on lease terms. I wonder why. smiley)

 
Posted by jservice at 09:22 PM
November 13, 2004
Allegro con brio

Print | Home

“That would be allegro with an Italian soft drink” — comment from our music director this morning.

 
Posted by jservice at 10:06 PM
November 11, 2004
A quiet MT activity log: no spam for awhile

Print | Home

Usually there’s dozens of blacklisted spam entries but at lunchtime today I added some mod_rewrite rules per the advice on some other blogs. Everything has been quiet since noon — only my sister and I logging in to our respective blogs. Here’s what I added to the httpd.conf file (change the site and domains to suit):

  # Redirect clients who try to post comments directly.
  RewriteEngine On
  RewriteCond %{REQUEST_METHOD} POST
  RewriteCond %{REQUEST_URI} .mt-comments\.cgi*
  # If the browser did not come from either of ours sites or
  RewriteCond %{HTTP_REFERER} !.*(mysite|mysistersite)\.domain.* [OR]
  # there's no agent.
  RewriteCond %{HTTP_USER_AGENT} ^-$
  # Redirect to an error message page.
  RewriteRule (.*) /no-comment.html [R,L]
 
Posted by jservice at 10:46 PM
November 10, 2004
Shuddering at others stupidities

Print | Home

My wife cringes when kids do foolish things or their parents don’t watch them carefully and there are “near misses.” I guess I do too. However, what gives me frissons are people who don’t work safely. Examples I’ve seen include someone sawing grooves in concrete curbs with a gas-powered diamond saw and not wearing safety glasses or hearing protection. Yesterday’s action was a guy on a metre-wide scaffold about 6 or 7 metres off the ground. There was no railing and the guy wasn’t wearing any safety harness or fall-arresting apparatus. He was removing bricks over a window with a drill-like machine and, again, he didn’t appear to be wearing safety (or any) glasses or goggles. It kind of saddens me when I see this.

 
Posted by jservice at 10:18 PM
November 08, 2004
Matthias Schmidt at Melville U.C.

Print | Home

Melville U.C. interior

We had the pleasure of hearing our good friend and excellent organist play a recital at Melville United Church in Fergus this past Saturday evening. He played music of the great organist-composers from the 17th to 20th centuries including Bach’s Toccata and Fugue in D-, a Choral Partita and a Choral Prelude by Buxtehude, one of Bach’s teachers, a Prelude and Fugue in G+ by Mendelsohn, Choral Preludes by Vaughan-Williams, Willan and Franck. On a dare from one of the congregants, who said he’d come only if he could work in a Beatles' tune, Matthias improvised on Yesterday and The Yellow Submarine. Good stuff!

 
 
Posted by jservice at 08:56 PM
November 07, 2004
Three jobs completed in one go

Print | Home

front walk with topsoil around edges.jpg

The former little garden on the garage side of the walk is starting to fill with leaves giving me an idea. I had a long pile of shredded leaves and pine needles left over in the back behind the deck so I put a layer of this stuff along the edges of the walk from front to back. When I had excavated for the walk, I had piled the topsoil just behind the shrub. This pile provided just enough topsold to spread over the shredded material along the walkway edges. Therefore I used most of the mulch, removed the pile of topsoil and “finished” the sides of the walkway all at the same time. I also saved myself a few bucks by not having to order a cubic yard or two of triple mix for that purpose.

 
Posted by jservice at 10:22 PM
November 05, 2004
New look

Print | Home

I fiddled around with the colours and fonts on the site. There appears to be some colour “bleeding” with IE. Maybe I’ll fix it when I find an edit css tool like I got for Firefox.

 
Posted by jservice at 10:05 PM
November 04, 2004
favicon.ico changed

Print | Home

I changed the little thumbnail file: favicon.ico for the hubbo site.

  • I selected an an image of me.
  • Cropped a square section of my portrait and shrunk it to 16×16 pixels using Irfanview.
  • I used the graphic editor in Visual C++ to make the background white.
  • Back in Irfanview I reloaded the ico file and re-saved it making the white background “transparent.”
  • I used the little image for these list item markers.
 
Posted by jservice at 08:34 PM
November 03, 2004
November 02, 2004
SSH authentication reviewed

Print | Home

I have a host computer recently installed between between the two firewalls at work in the so-called DMZ. I use ssh to maintain it. It was getting tiresome to type in the password each time I rsync'd some files. It had been awhile since I set up authentication between hosts so a review of the man pages for ssh was called for. I used ssh-keygen -d dsa to generate a public and private key on the client Intranet host. I then appended the contents of ~/.ssh/id_dsa.pub to the file ~/.ssh/authorized_keys2 on the DMZ computer.

 
Posted by jservice at 12:34 PM
November 01, 2004
Bell’Arte News Letter - Fall 2004

Print | Home

Rather than forwarding and bulking up people’s inboxes I can just forward the URL (especially since, as of this writing, their web site seems to be down). Another cavaet: this certainly isn’t my html markup.

Bell'Arte Singers 2004-2005 newsletter image Welcome to another edition of the Bell’Arte Singers' newsletter. We hope you find it enjoyable and informative. If for some reason this email does not display correctly, please click on this link:

Join us for our 17th Concert Season!


Mark these dates in your calendar today to make sure you don’t miss this great choral season with the Bell’Arte Singers.

A Christmas Masque

Sunday, December 12, 2004
The Bell’Arte Singers perform with the Toronto Masque Theatre under the direction of Larry Beckwith. The performance features music from the 17th century to the present day. The audience will delight to a consort of players, soloists, dancers, readings and the finest in choral repertoire – all in the candlelit sanctuary of Eastminster United Church, 310 Danforth Avenue, just east of Broadview. This matinee-only performance takes place at 3:00 PM.

Oratorio for Choir and Organ

Saturday, February 26, 2005
The Bell’Arte Singers directed by Dr. Lee Willingham, present Haydn’s Little Organ Mass; Mozart’s Te Deum and Dvorak’s Mass in D. The concert, featuring the critically acclaimed organist Ian Sadler, takes place at 8:00 PM at Christ Church Deer Park Anglican, 1570 Yonge Street, Toronto (just north of St. Clair).

A Canadian Spring Rhapsody

Saturday, May 14, 2005
Bell’Arte presents works that evoke the season of spring and the majestic geography of Canada. The concert features some of Canada’s finest composers: Healey Willan, Ruth Watson Henderson, Imant Raminsh, Stephen Chatman, Ben Bolden, Kieren MacMillan and more. Hear us at 8:00 PM at Christ Church Deer Park Anglican, 1570 Yonge Street, Toronto (just north of St. Clair).

Treat Yourself to a Bell’Arte Season’s Subscription
15% off the individual ticket price
Save, with a Bell’Arte Singers Concert Season' subscription. Get three concerts for $50.(adult) and $38.(students and seniors). Sign up for a subscription by checking our website at www.bellartesingers.com or by calling our subscription office at (416) 699-5879. Purchase a subscription before the December 12th concert and receive a Bell’Arte CD of your choice – free of charge!

Also this season…

OMEA Workshop
Saturday, November 27, 2004

The Bell’Arte Singers will participate in the Ontario Music Educators' Association Workshop. The event offers a weekend of workshops for choral conductors, music and classroom teachers as well as singers and lovers of choral music. Watch our website for full details and a registration form.

A Baroque Christmas
Saturday, December 4, 2004

The Bell’Arte Singers will perform with the Scarborough Philharmonic Orchestra in this inspiring tribute to the festive season. The choir, conducted by Dr. Lee Willingham, will join the orchestra for such favorites as Concerto Grosso in G minor, Op. 6, No. 8 (Christmas Concerto) - Corelli; Messe De Minuit sur des Airs de Noel - Charpentier; Magnificat in B flat Major - Pergolesi; Christmas Cantata - Luebeck; and Christmas Cantata - Bach. The concert will take place at St. Boniface Church, 142 Markham Road, at 8:00 PM. Ticket information and a map can be found on the Scarborough Philharmonic website.

 
Posted by jservice at 12:39 PM