March 30, 2005
Report sent to client

Print | Home

Finally all the immediate work FY2004-5 deadlines have been met:

  • Draft report submitted to client.
  • Client billed final amount.
  • Year end timesheet filed.
  • The snow is finally disappearing and spring is on its way. I can run with just two layers and a baseball cap and consider in-line skating again.

All is not bliss, though, as there’s still income taxes to file, an internal quality audit to conduct and a bundle of transfer of technology information to be assembled for another client.

 
Posted by jservice at 10:24 PM
March 29, 2005
Working from home

Print | Home

Finnegan

My wife is back at work today after her March break. Thus I’m working at home so I can take the puppy out from his crate every so often. I just sent off a report I worked on yesterday and this morning to my boss. Though I’d love to run outside in the milder weather I think I only have an hour or so before the puppy needs to go out to do his “business.”

Today’s Firefox extension is a spell checker for textareas Spellbound. I can right click as I’m writing here and check the spelling.

 
Posted by jservice at 11:07 AM
March 28, 2005
Lost a little weight

Print | Home

In tagging along with my wife’s low carb. diet I’ve lost a couple of kilos. Now my BMI is 23.4 kg. One calculator told me something kind of scary: I’m in the 19th percentile for my weight based on my height, age and gender. This means, of course, that 81% of men (U.S., North America?) weigh more than I do.

I dialed in the new weight on the treadmill. It says I expend about 6 calories less over the half hour now that I have shed that 2 kg.

I figure I now weigh about what I was when I was 17 — Before I was of legal drinking age and before I drank beer.

 
Posted by jservice at 10:11 PM
March 27, 2005
Easter 2005

Print | Home

My wife’s family got together on Good Friday to celebrate one of our quarterly gatherings at Easter-time. This year’s location was chez nous and Friday was the most convenient day for everyone.

Stu,Mitchell,Kyle,BrianneRick,Ruth,JohnMitchell,Kyle,Brianne,GregJulie,Denise.jpgJulie,Denise,Gerry,Linda,Kim,Rick,Ruth,John,Danny,Dwayne,Bill,Lorna,DoreenGreg,IanGerry,Linda,Kim,Rick,Ruth,John,Danny,Dwayne,Bill,Lorna,DoreenFood,Rick,Doreen,Julie,Denise,Danny,BillFood,Rick,Doreen,Julie,Danny,DeniseDwayne,Danny,Lorna,Doreen,Gord,Julie,Denise,Gerry,Linda,Kim,RickDwayne,Danny,Bill,Lorna,Doreen,Gord,Julie,Denise,Gerry,Kim,Rick
 
Posted by jservice at 04:21 PM
March 26, 2005
O/T Thurs night, 22 for supper Friday

Print | Home

Relaxed Finnegan

“By mistake” I left a bit later on Thursday night because I was off for a four-day Easter weekend and I needed to collect a few things and water my office vegetation. At 5 p.m. I got a call to do some Quality Inspection (QI) work. Well, they were “desperate” and it was time-and-a-half billable work. So my first QI work started at the very bottom: inspecting some spare parts for overhauling sump pumps at a nuclear station. Instead of helping my wife prepare vegetables for Good Friday’s family supper, I worked.

All day Friday was spent getting ready for my wife’s family and one friend: a total of 22 people and one puppy. Then, at the end of the evening I had to sort music into numbered stacks to hand out at choir practice on Saturday morning. I’m exhausted. To relax I include an image of our sleeping puppy.

 
Posted by jservice at 10:19 PM
March 24, 2005
No flouride

Print | Home

The hygienist at my dental appointment this morning asked if I wanted the topical flouride treatment. Why? I recall stating in my “particulars” form that flouride seems to give me a migraine headache. This happened both times I had tried it in two different forms. Besides, our dental plan doesn’t cover it if you are over 18. I said, “No thanks.”

 
Posted by jservice at 12:54 PM
March 23, 2005
Break in routine, no pasting passwords in gmail?

Print | Home

I haven’t been away; however, generally I’m either out (less likely) or looking after the puppy (more likely) most evenings.

Yesterday’s break in the office work routine was provided by a colleague who bumped into a concrete support column in our office area. The forehead cut required two stitches to close but otherwise he’s fine. I remember almost bumping into that post on occasion when I first started working in this area.

I opened (yet another) gmail account in order to archive emails relating to my upcoming choir manager position that I (foolishly?) accepted (before puppy). I have a password generator/saver utility but the new gmail user form didn’t seem to accepted the password(s) I pasted into the field. After several fruitless attempts I tried typing the password by hand and finally got accepted. I’m wondering what Javascript technology is behind that. Perhaps I can adapt it to try to reduce blog comment spam.

BTW, if there’s anyone left on the planet who doesn’t have and wants a gmail account there’s plenty of extra invitations to give out now.

 
Posted by jservice at 12:59 PM
March 20, 2005
Backyard changes?

Print | Home

Finnegan, our SCWT puppy, has to be quarantined to our back yard until he’s had his next set of shots in about 3 weeks. Thus, my wife and I have spent lots of time in our backyard. That maple tree will probably have to come down. There are more splits in the trunk bark and it is “crying.” I thought the dog had peed on the deck but pee isn’t brown and sticky. I guess the sap is running and leaking out of an overhanging branch. I’m considering a star magnolia or serviceberry as a replacement.

And that living room bay window is deteriorating badly. I guess I’ll have to call for some estimates and the kitchen window…and a two instead of four section sliding glass door to the deck would also be nice. Anyone have any windfall profits or lottery winnings to share?

Good news, too, that most of Finnegan’s deposits are now being made in the backyard. We are all learning the appropriate signs I guess.

We bought ourselves a digital camera, NiMH battery charger and 512 Mbyte CF disk. Expect more images…

Me and FinneganFinnegan and toySleeping Finnegan
 
Posted by jservice at 10:48 AM
March 17, 2005
Definite decrease in postings

Print | Home

A puppy is a lot of work. Feeding, playing, napping, inside, outside, inside, outside, clean up occasional messes, … I think a wireless network and a laptop would allow me to read a few emails perhaps in between during the commas.

Today’s new thing I tried out was calculating differences between “adjacent” rows in a database. That is, given a monotonic increase in reading values over time I want another column of differences between this row’s reading and the last. I think I figured out how to do it by attaching two sequence columns to a table self-join. Now I need to make it more efficient.

 
Posted by jservice at 09:16 PM
March 15, 2005
Raising a puppy is like having a new baby

Print | Home

Perhaps the people who say this haven’t raised children.

  • Babies wear diapers. Nor are they particularly mobile for the first year.
  • You don’t take babies outside each hour. They don’t run around and play for 10 minutes. Then, just after you’ve brought the puppy inside and turned your back, it pees on the floor.
  • You can put a puppy in his crate for an hour or so with a water dish hanging on the door and a favourite chew toy, perhaps stuffed with food. Then you can go out, get some coffee and relax for a few minutes.
  • It’s a “good thing” puppies are so adorable.
 
Posted by jservice at 12:32 PM
March 13, 2005
Puppy pictures

Print | Home

My son took these pictures of Finnegan our 8-week-old Soft Coated Wheaton Terrier puppy yesterday with his new digital camera:

8-weeks-standing-on-deck-step.pngFinnegan-8-weeks-close-up.pngFinnegan-at-sliding-glass-door.png

Finnegan slept for about 5 hours last night and only cried for about five minutes in his crate next to our bed—he was a tired puppy. So far today both #2’s have been outside and about half of the #1’s. We went out and bought infant gates to, hopefully, keep the “accidents” on the kitchen floor.

 
Posted by jservice at 09:37 PM
March 12, 2005
We have the cutest puppy!

Print | Home

We picked up Finnegan, an eight week old Soft Coated Wheaton Terrier puppy, this morning. He whimpered all the way home and neither ate nor drank all afternoon. After a couple of long naps he has started to adapt to chez nous this evening. He drank some water and licked me immediately after and he ate some kibble from our hands. Toilet training started…

Sorry, no pictures yet. There is film to be developed and it appears my son took the memory chip from the digital camera before he left to visit his cousin this evening.

 
Posted by jservice at 08:57 PM
A Jetsgo postscript

Print | Home

jetsgo no more

No I wasn’t directly affected—no money to travel at the moment anyway. However one of the cars on last night’s commuter train was a huge mobile Jetsgo ad. I hope GO transit and the ad agency that installed the mobile billboard asked for payment up front. I wonder if the contract covers prompt removal on the demise of said advertised company.

 
Posted by jservice at 09:53 AM
March 09, 2005
Quickie Emacs mode for custom log file viewing

Print | Home

I create log files with a custom Perl module and I decided to investigate creating an emacs “mode” in which to view them so that it would emphasize the warnings, for example. I found a tutorial on how to create a custom mode. At the very bottom of the article was a much easier way: deriving from an existing mode. Here’s my “quickie” mode for viewing my log files:

;;;;;;;;;;;;;;;;;;;;;;;;;;; -*- Mode: Emacs-Lisp -*- ;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 
;; jrrs-event-log-mode.el
;;
;; A mode to highlight parts of the log files I create with JRRS::eventlog.pm
;; 
;; Author             : James R.R. Service
;; Created On      : Wed Mar 09 2005
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defconst elog-font-lock-keywords1
  (list
   '("\\<\\(info\\|debug\\)\\>" . font-lock-comment-face)
   ;; bring out embedded \n
   '("\\\\n" . font-lock-constant-face)
   ;; Bring out today's date by using ` and , operators to eval before adding
   ;; to list.
   `(, (concat "\\<" (format-time-string "%Y-%m-%d")
               " [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\\>")
       . font-lock-function-name-face)
   ;; Emphasize WARN and DIE messages.
   '("\\<\\(WARN\\|DIE\\)" . font-lock-keyword-face)))

(defvar elog-font-lock-keywords elog-font-lock-keywords1
  "Highlight regexps for ELOG mode."
  )
;; (setq elog-font-lock-keywords elog-font-lock-keywords1)

(define-derived-mode elog-mode fundamental-mode "ELOG"
  "Major mode for view log files created by JRRS::eventlog.pm"
  (set (make-local-variable 'font-lock-defaults) '(elog-font-lock-keywords))
  )

(add-to-list 'auto-mode-alist '("\\.log\\'" . elog-mode))

(provide 'jrrs-event-log-mode)
 
Posted by jservice at 09:08 PM
March 07, 2005
Todays Postgres constraint

Print | Home

Bad temperature readings appear as 4’s or 31.5’s. But if the rdg_valid flag is already false or the reading is an 'a' or 'b' code I want to accept the row. I only want to reject the row if it is a 'T' reading outside of the range 4.5 to 31.

ALTER TABLE my_table 
  ADD CONSTRAINT temperature_in_range 
  CHECK (NOT rdg_valid 
         OR reading_type_code = 'a' 
         OR reading_type_code = 'b' 
         OR reading_type_code = 'T' 
         AND reading >= 4.5 AND reading <= 31);
 
Posted by jservice at 10:09 PM
March 06, 2005
A short singing job ends well

Print | Home

bass clef

Since last Sunday, I have been spending rehearsal and my own evenings' time learning the music for last night’s concert. I was hired to augment the bass section since several of their bass section members were to be absent. I was kind of discouraged on the choir’s behalf at Tuesday’s rehearsal as they didn’t seem ready for the concert. However, Friday’s dress rehearsal went better. They added an extra rehearsal on Saturday morning (which I didn’t attend) and this seemed to do the trick. They sung well and did a good job last night.

I had to concentrate at that concert because a) I was still sight reading and learning the music and b) there were a couple of pieces that both choirs (Vox Finlandiae and Jubilate Singers) seemed to be less familiar with so that I felt I had “lead” the section and bring out the bass line.

That pint of Steamwhistle tasted great at the pub after the performance. Unlike most choirs I have sung with, a greater number of them get together to relax after the show. It was a homecoming of sorts as I had sung with the Jubilate for a season about 5 years ago.

Was it fun? Somewhat: it was a lot of work to learn to sing in a new language and passably sing new repertoire “at speed.” This morning John Stainer’s Crucifiction was the featured work on Choral Concert reminding me that singing the role of Christ was one of my first (paying) soloist jobs some 15 years ago.

 
Posted by jservice at 12:30 PM
March 03, 2005
Gripes

Print | Home

I’m tired so I’ll just gripe a bit:

  • There’s a foot of snow in the park I cut across to get to the train station—too deep to run through in the morning. It was -10°C. Around about March I should be contemplating shorts and in-line skates again.
  • Cold and deep snow mean wearing boots and too many layers of clothing—an extra few minutes to go outside so I just stay in at lunch time.
  • On the next temporary music job I accept I will have to already know at least half the repertoire and the other half will have to be in a language I know how to sing (English, Italian, French, German, Latin) and with easy harmonies à la Bach, Haydn or Mozart.
  • Non gripe: there be daylight at 6:30 am and the sun is still shining at 5:30 pm. Now if only the snow would melt away…
 
Posted by jservice at 09:48 PM
March 02, 2005
Views and Functions

Print | Home

Today I replaced a bunch of Postgres database views like this:

CREATE OR REPLACE VIEW readings_last30d_daily_0 AS
SELECT rdg_date
       , to_char(sum(reading_diff)/1000.,'FM999990.999') as kwh_per_day
  FROM readings
  WHERE channel = 0 and rdg_valid
  AND reading_stamp between 
    (select max(reading_stamp) from readings
     where channel = 0 and rdg_valid) 
     - interval '31 days' 
  AND (select max(reading_stamp) from readings
       where channel = 0 and rdg_valid)
GROUP BY rdg_date ORDER BY rdg_date ;

with a function:

CREATE OR REPLACE FUNCTION readings_daily(text, int4)
  RETURNS SETOF date_rdg AS
$BODY$ SELECT readings.rdg_date
  , to_char(sum(readings.reading_diff)::numeric / 1000::numeric
  , 'FM999990.999'::text) AS kwh_per_day
   FROM readings
  WHERE readings.channel = $2 AND readings.rdg_valid 
        AND readings.reading_stamp >= 
        (((SELECT max(readings.reading_stamp) AS max
            FROM readings
            WHERE readings.channel = $2 
                  AND readings.rdg_valid)) - $1::interval) 
        AND readings.reading_stamp <= 
        (( SELECT max(readings.reading_stamp) AS max
           FROM readings
           WHERE readings.channel = $2 AND readings.rdg_valid))
  GROUP BY readings.rdg_date
  ORDER BY readings.rdg_date;$BODY$
  LANGUAGE 'sql' VOLATILE;

Where SELECT * from readings_daily('31 days',0) gives me the same rows of data. Some 15 views per table are replaced by one function. I now just cross-reference those view names with SQL function calls in another table.

 
Posted by jservice at 10:43 PM