Thursday, April 14, 2011

Pomodoro scripts

Sous OSX j'utilise ce logiciel comme chronomètre qui a l'avantage de pouvoir exécuter des scripts lorsque le Pomodoro démarre, s'arrête, ....

Au travail on utilise beaucoup la messagerie instantanée. J'utilise Adium comme client.

Besoins:
  • je ne veux pas être dérangé pendant mon Pomodoro (passer mon état à indisponible)
  • je veux que mes collaborateurs sachent quand se termine mon Pomodoro pour me contacter

Solution:

Dans Adium créer un statut indisponible avec comme titre'Pomodoro en cours'



Dans les préférences de Pomodoro, onglet script, configurez comme ceci:


Start:
tell application "Adium" to set the status of every account whose status type is available to the first status whose title is "Pomodoro en cours"


Reset et End:
tell application "Adium" to set the status of every account whose status type is away to the first status whose title is "Disponible"


Every 2 mins:
tell application "Adium" to set status message of every account to "Pomodoro en cours, fin dans $time mn"




Tout le long du Pomodoro votre statut sera mis à jour:



Et dès que quelqu'un ose vous contacter, réponse automatique !

Wednesday, April 13, 2011

Petite Horloge revisited

Another Pharo Smalltalk snippet with temp classes (I like this :)

(Class new
    superclass: StringMorph;
    setFormat: StringMorph format;
    compile: 'step self contents: Time now printString';
    new)
        openInWindowLabeled: 'Petite Horloge'.


Don't forget the setFormat: or the VM will crash.Some explanations.

Polymorph counter example

I've discovered that I can write this in Pharo:

"This creates a class and one instance on the fly"
counter := Class new 
              superclass: Object; 
              addInstVarNamed: 'counter'; 
              compile: 'initialize 
                           counter := 0';
              compile: 'counterString 
                           ^ counter asString';
              compile: 'increment 
                           counter := counter + 1. 
                           self changed:#counterString';
              compile: 'decrement 
                           counter := counter - 1. 
                           self changed:#counterString';
              new.

(UITheme builder newColumn: {
  UITheme builder newLabelFor: counter getLabel: #counterString getEnabled: nil.
  UITheme builder newRow: {
    UITheme builder newButtonFor: counter action: #increment label: '+' help: nil.
    UITheme builder newButtonFor: counter action: #decrement label: '-' help: nil.
  }
}) openInWindowLabeled: 'Counter example'.

Coooooooooooooool ;)