jeudi, mars 29, 2007

Bric-à-brac

Quelques points. Ça fait longtemps que je n'ai pas bloggué, je sais:
  • J'ai un nouveau Blackberry
J'ai hérité au bureau d'un Blackberry 7280. Ce n'est pas le dernier modèle, mais ça marche. Je peux recevoir et envoyer du courrier de n'importe où. Et la qualité téléphonique est bonne. Il ne me reste qu'à maitriser la boîte vocale et tout sera tiguidou.
  • L'option -W de tar
Je fais le backup de mes backups (sur tape DLT) à l'aide de la commande tar (je sais, je suis paranoïaque). Jusqu'ici je ne faisait pas de passe de vérification de mes tapes après le backup. Je pensais que je devais faire mon backup, rebobiner le tape puis faire ma vérification. Mais maintenant que j'ai découvert l'option -W, je peux faire les deux séquentiellement sans rebobiner le tape. Pas mal génial!

samedi, mars 17, 2007

Disques intéressants

J'écoute presque non stop depuis sa sortie l'album "Neon Bible" de "The Arcade Fire". C'est excellent! Surtout "No cars go", l'orchestration est superbe! Je crois que ce qui fait la force et le succès de "The Arcade Fire" est le fait qu'ils utilisent une large gamme d'instruments "non-traditionnel" (guitare, basse, batterie, claviers) du rock. Un peu comme Loreena McKennit ou The Tea Party. Ça donne une richesse incroyable à leur musique.

Un autre album que j'écoute pas mal ces temps-ci est un CD gratuit qui venait avec la copie d'août 2006 du magazine Q. Ça s'appelle "Q-The Eighties". Il y a 3 superbes versions qui sortent du lot:
  1. Placebo - Running up that Hill (originalement par Kate Bush)
  2. Teddy Thompson - Don't dream it's over (originalement par Crowded House)
  3. Katie Melua - Just Like Heaven (originalement par The Cure)

Calcul symbolique en Scheme

Il y a quelques semaines, j'ai commencé à lire "Structure and Interpretation of Computer Program" (ci-après référé comme SICP) de Harold Habelson et Gerald Jay & Julie Sussman du MIT. Ça n'avance pas très vite car c'est extrêmement dense. Il faut du temps pour lire et relire et pour faire les exercices. Pour ce faire, j'ai installé Guile comme interpréteur Scheme sur ma station de travail principale. J'utilise Kate comme éditeur. C'est pas ce qu'il y a de mieux mais ça fait la job.
Lisant le chapitre 2 de SICP, la section 2.3.2 a vraiment capté mon attention (en tant que physicien de formation): Elle porte sur le calcul symbolique. Je n'avais jamais utilisé un langage qui permettait ceci sauf peut-être le langage interne de Mathematica (dont l'ancêtre a été écrit en Lisp dont Scheme est un dialecte). Pour m'assurer de bien comprendre, j'ai fait l'exercice 2.56. J'ai par la suite tenté de l'étendre pour faire la dérivation de la fonction sinus. Initialement j'avais écris:

    ;Definition for sine

(define (sine? x)
(and (pair? x) (eq? (car x) 'sin)))

(define (sine-argument angle) (car angle))

(define (make-sine angle)
(cond ((=number? angle 'pi) 0)
((=number? angle 0) 0)
(else (cons 'sin angle))))

(define (make-cosine angle)
(cond ((=number? angle 'pi ) 1)
((=number? angle 0) 1)
(else (cons 'cos angle))))


mais sine-argument retournait toujours (x) au lieu de x. Ce qui faisait planter deriv un peu plus loin. Après avoir fouillé pas mal, et lu et relu une obscure note de bas de page. J'ai trouvé le bobo: car retourne toujours un élément unique entouré de parenthèses. Pour retourné un élément unique sans parenthèses, il faut utiliser list-ref.
On aura:

(car '(a b)) -> (a)
(list-ref '(a b) 0) -> a


Une fois cette modification faite, on obtient la solution pour 2.56 plus le cas pour la fonction sinus:

(define (variable? x) (symbol? x))

(define (same-variable? v1 v2)
(and (variable? v1) (variable? v2) (eq? v1 v2)))

(define (make-sum a1 a2)
(cond ((=number? a1 0) a2)
((=number? a2 0) a1)
((and (number? a1) (number? a2)) (+ a1 a2))
(else (list '+ a1 a2))))

(define (=number? exp num)
(and (number? exp) (= exp num)))

(define (make-product m1 m2)
(cond ((or (=number? m1 0) (=number? m2 0)) 0)
((=number? m1 1) m2)
((=number? m2 1) m1)
((and (number? m1) (number? m2)) (* m1 m2))
(else (list '* m1 m2))))

(define (sum? x)
(and (pair? x) (eq? (car x) '+)))

(define (addend s) (cadr s))

(define (augend s) (caddr s))

(define (product? x)
(and (pair? x) (eq? (car x) '*)))

(define (multiplier p) (cadr p))

(define (multiplicand p) (caddr p))

; definitions for exponentiation

(define (make-exponentiation base exponent)
(cond ((=number? exponent 0) 1)
((=number? exponent 1) base)
(else (list '** base exponent))))

(define (base exponentiation) (cadr exponentiation))

(define (exponent exponentiation) (caddr exponentiation))

(define (exponentiation? x)
(and (pair? x) (eq? (car x) '**)))

;definitions for sine

(define (sine? x)
(and (pair? x) (eq? (car x) 'sin)))

;Here, car doesn't work but list-ref works(define (sine-argument angle) (list-ref angle 1))


(define (make-sine angle)
(cond ((=number? angle 'pi) 0)
((=number? angle 0) 0)
(else (cons 'sin angle))))

(define (make-cosine angle)
(cond ((=number? angle 'pi ) 1)
((=number? angle 0) 1)
(else (cons 'cos angle))))

(define (deriv exp var)
(cond ((number? exp) 0)
((variable? exp)
(if (same-variable? exp var) 1 0))
((sum? exp)
(make-sum (deriv (addend exp) var)
(deriv (augend exp) var)))
((product? exp)
(make-sum
(make-product (multiplier exp)
(deriv (multiplicand exp) var))
(make-product (deriv (multiplier exp) var)
(multiplicand exp))))
((exponentiation? exp)
(make-product
(make-product (exponent exp)
(make-exponentiation (base exp)
(make-sum (exponent exp) -1)))
(deriv (base exp) var)))
((sine? exp)
make-product (deriv (sine-argument exp) var)
(make-cosine (sine-argument exp)) )
(else
(error "unknown expression type -- DERIV" exp))))



Je vais essayer d'étendre encore plus ce programme dès que j'en aurai le temps. À suivre...

vendredi, mars 16, 2007

Sénateurs vs Islanders

Soirée intéressante hier. Je suis allé voir les Sénateurs jouer contre les Islanders de New York. Bonne partie gagnée 5 à 2 par Ottawa. Ce qui m'a le plus impressionné c'est que même dans notre section qui était très haute (326), on voyait bien l'action. Mon collègue me disait qu'à la Place Scotia, tout les sièges sont bons. Ça fait changement d'avec le Colisée de Québec où je suis allé voir des matchs quand j'étais plus jeune.

mercredi, mars 14, 2007

C'est innauguré

Hier soir j'avais des copains à la maison pour souper. Qu'a-t'on fait pour souper? Un BBQ! Eh oui, hier le 13 mars j'ai fait mon premier BBQ de la saison. Il faisait 9C et la neige était complètement fondue autour du BBQ. Ça bat le record de l'an passé: le 28 mars.