Your Moment of Zen

In Long Beach, California is TED2011 bezig en er komen al leuke dingen uit. Zet je goed en luister even (ja, in het begin is er geen geluid, wait for it):

Eric Whitacre is er in geslaagd de eerste staande ovatie van TED2011 te krijgen hiermee. Het is drie minuten uit een volledig werk dat in April online zal verschijnen. Wat je ziet zijn mensen van over heel de wereld die stukken zingen van zijn werk. Deze werden samen gebracht en zo klinkt het. Ongetwijfeld een van de mooiste dingen die ik zag, zeker als we weet dat ieder daar zijn eigen ding zong voortgaande op een insctructiefilmpje, zonder de andere zangers te horen of zien. Ik vraag me wél af hoe ze de audio zo goed kregen.

Meer info bij Wired die het event op de voet volgen.

Comments { 0 }

Kazakkendraaiers

Het programma was pijnlijk om zien. Maar alles kan pijnlijker, de GVA laat ons weten dat de ‘verborgen camera’ stukjes nep waren.

De tweede parkeerwachter werd door Lieven Scheire bij de neus genomen, de derde werd door Bart De Pauw in zijn hemd gezet: ‘Ziet ge wat er gebeurt als ge niet uw best doet op school?’ maande hij zijn dochtertje aan. “Dan moet ge mensen gaan koeioneren.”

"Het was om te lachen en het zag eruit alsof het met een verborgen camera gefilmd was. “In feite waren het sketchkes”, geeft Bart De Pauw toe. “We spelen met het medium. Met echte parkeerwachters hadden we dit niet kunnen doen. Ten eerste omdat we dan individuele mensen hadden geschoffeerd. Daar was het ons niet om te doen."

Ten tweede omdat ze een kroket op hunne smoel hadden gekregen. En dat had grappig geweest. Zoals wanneer een stier eens met een toreador te pakken krijgt.

Ha ha.

Comments { 1 }

Tekst

Onlangs zei ik op Twitter hetvolgende:

image

Ik deed dit omdat het al de tweede keer is dat hij dezelfde blogpost op twitter vermeldde. Pas op, hij doet dat goed. Niet zomaar de titel met de URL, nee, hij verpakt het in een echte boodschap, wat het best aangenaam maakt. Echter, voor iemand die ook de blogfeed leest blijft het ambetant als je het nog eens (twee maal) krijgt.

Iets eerder las ik een tweet vanop Phare waar Gary V blijkbaar had gezegd dat het net te nerdy is. Niemand gebruikt RSS, zei hij. En dat vond ik jammer. Maar hij heeft gelijk. Facebook en twitter zijn nu de manier waarop content zich verspreid. Dus de tweets van Jan zijn best logisch. Maar ik dwaal af…

Wat ik eigenlijk wil zeggen is dat online communicatie vooral op tekst gebaseerd is en het een enorm slechte drager is. Bekijk bijvoorbeeld deze tweet:

image

Dat kan op bijzonder veel manieren gelezen worden. Je kan lezen dat hij erover nagedacht heeft en mijn mening deelt. Maar je kan ook bijvoorbeeld denken dat er #sarcasme ontbreekt wat het geheel in een ander daglicht plaatst. Wat wil hij zeggen? Geen idee, het is iets dat we best bij pot en pint (of koffie) eens uitklaren.

En ik hoop eigenlijk dat ik nog veel zo van die dingen mag uitklaren met mensen. Want dat online communicatiegedoe… ik ben daar niet goed in.

Comments { 2 }

Awesome ways to start your day #2

  1. Douche deze morgen extra lang.
  2. Sluit je ogen.
  3. Beeld je in dat je onder een waterval staat op een tropisch eiland.
  4. Let op je ademhaling en adem traag in en uit.
  5. Neem de zen de hele dag mee.
Comments { 0 }

Awesome ways to start your day #1

  1. Zorg voor epische, energieke, klaar-voor-de-strijd muziek op je MP3-speler (iets in deze stijl).
  2. Neem een spitstrein richting Brussel.
  3. Net voor het aankomen in het station zet je de muziek op.
  4. Stap vooraan de trein uit, liefst zo vroeg mogelijk.
  5. Loop samen met iedereen ten strijde.
Comments { 2 }

Die ochtend in Brussel

Morning in Brussels

Een hoog cover-van-een-Carlos-Ruiz-Zafón-boek gehalte.

Comments { 0 }

The Windup Girl

Ik ben bezig in The Windup Girl van Paolo Bacigalupi, een boek dat me werd aangeraden in een van de vele Waterstone’s winkels in Londen. Het speelt zich af in een toekomst waar we er blijkbaar niet in geslaagd zijn de dreigende milieurampen een halt toe te roepen. Integendeel, steden hebben hoge muren moeten opzetten om het water tegen te houden en er heerst een heuse zwarte markt wat zaadjes en vruchten betreft. Meer zelfs, genen worden ‘gehackt’ om nieuwe ziekten die gewassen bedreigen het hoofd te kunnen bieden en een wagen is totaal uit den boze aangezien de brandstof die nodig is hallucinant is.

Tijdens het lezen kwam ik op volgende bedenking die bij mij enorm is blijven hangen:

“Food should come from the place of its origin, and stay there. It shouldn’t spend its time crisscrossing the globe for the sake of profit. We went down that path once, and it brought us to ruin.”

Het is niet nieuw. Als je kijkt wat er tegenwoordig allemaal in de supermarkt ligt, dan kan je niet anders dan jezelf afvragen wat zo een exotische vrucht écht kost. Niet alleen wat er uit jou zak komt, ook de prijs die de natuur heeft betaald om het tot bij jou te krijgen. En niet alleen exotische dingen, hoor. Ik kan er niet bij dat garnaal, dat in onze streken gevangen wordt helemaal naar Noord-Afrika moet gebracht worden om daar gepeld te worden om toch uiteindelijk terug hier te belanden voor consumptie.

Het boek is de moeite als je geen problemen hebt met een beetje scifi. Oh, en trouwens, zo een Waterstone’s, dat is er ook in Brussel. No shit, ze spreken Engels en hebben de lidkaart. Het is zo een winkel waar ze een open haard en een goeie zetel zouden moeten zetten. Het enige dat ik dan nodig heb is een badjas en een hoop thee.

Comments { 0 }

It rubs the lotion on its skin

Ik ga u niet te vragen de film te raden, het zou een kleine schande zijn als u dat niet wist. 
Maar wat een schijf!

Comments { 0 }

Reel Wisdom

Above all: Do or do not, there is no try.

Comments { 0 }

Schoolvakanties in SQL

Omdat mijn huidige klant met onderwijs te maken heeft, moest de kalender dimensie alle schoolvakanties bevatten. Deze berekenen kan aan de hand van, jawel, enkele regels die je kan terugvinden op de website van de Vlaamse Overheid.

Met de hulp van een paar berekeningen die het internet reeds voor mij deed (een stored procedure om Pasen te berekenen en eentje om een weekdag van een bepaalde week te kunnen vinden):

CREATE FUNCTION dbo.udf_nthWeekDay
(
  @n       INT,
  @weekDay CHAR(3),
  @year    INT,
  @month   INT
)
RETURNS DATETIME
AS
BEGIN
  DECLARE @date    DATETIME,
    @dow         INT,
    @offset      INT,
    @wd          INT;

  SELECT @wd = CASE @weekDay
      WHEN 'SUN' THEN 1
      WHEN 'MON' THEN 2
      WHEN 'TUE' THEN 3
      WHEN 'WED' THEN 4
      WHEN 'THU' THEN 5
      WHEN 'FRI' THEN 6
      WHEN 'SAT' THEN 7
    END,
    @date = CAST
    (
      CAST(@year AS VARCHAR(4)) +
      RIGHT
      (
        '0' + CAST
        (
          @month AS VARCHAR(2)
        ), 2
      ) +
      '01' AS DATETIME
    ),
    @dow = DATEPART(dw, @date),
    @offset = @wd - @dow,
    @date = DATEADD(day, @offset + (@n - CASE WHEN @offset >= 0 THEN 1 ELSE 0 END) * 7, @date);
  RETURN @date;
END;
GO

CREATE FUNCTION [dbo].[fn_EasterSundayByYear]
(@Year char(4))
RETURNS smalldatetime
AS
BEGIN

declare
@c int
, @n int
, @k int
, @i int
, @j int
, @l int
, @m int
, @d int
, @Easter datetime

set @c = (@Year / 100)
set @n = @Year - 19 * (@Year / 19)
set @k = (@c - 17) / 25
set @i = @c - @c / 4 - ( @c - @k) / 3 + 19 * @n + 15
set @i = @i - 30 * ( @i / 30 )
set @i = @i - (@i / 28) * (1 - (@i / 28) * (29 / (@i + 1)) * ((21 - @n) / 11))
set @j = @Year + @Year / 4 + @i + 2 - @c + @c / 4
set @j = @j - 7 * (@j / 7)
set @l = @i - @j
set @m = 3 + (@l + 40) / 44
set @d = @l + 28 - 31 * ( @m / 4 )

set @Easter = (select right('0' + convert(varchar(2),@m),2) + '/'
    + right('0' + convert(varchar(2),@d),2) + '/' + convert(char(4),@Year))

return @Easter
END 

CREATE TABLE [dbo].[DimKalender](
    [KalenderId] [int] NOT NULL,
    [KalenderDatum] [datetime] NOT NULL,
    [KalenderDag] [int] NOT NULL,
    [KalenderMaandNaam] [varchar](20) NOT NULL,
    [KalenderMaand] [int] NOT NULL,
    [KalenderTrimester] [int] NOT NULL,
    [KalenderSemester] [int] NOT NULL,
    [KalenderJaar] [int] NOT NULL,
    [KalenderSchooljaar] [varchar](9) NOT NULL,
    [KalenderVakantieNaam] [varchar] (10) NOT NULL,
 CONSTRAINT [DimKalender_PK_IT] PRIMARY KEY CLUSTERED
(
    [KalenderId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF
    , ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

… heb ik om de tabel te vullen, en dus effectief de schoolvakanties te berekenen dit in elkaar gestoken:

SET DATEFIRST 1

DECLARE @startdate                DATETIME
DECLARE @enddate                DATETIME
DECLARE @year                    INT
DECLARE @yearasstring            VARCHAR(4)
DECLARE @month                    INT
DECLARE @prevyearasstring        VARCHAR(4)
DECLARE @nextyearasstring        VARCHAR(4)
DECLARE @easter                    DATETIME
DECLARE @day                    INT
DECLARE @twoweeksaftereaster    DATETIME
DECLARE @firstaprilmonday        DATETIME
DECLARE @xmas                    DATETIME
DECLARE @xmasprevyear            DATETIME
DECLARE @xmasdow                INT
DECLARE @xmasdowprevyear        INT
DECLARE @eastermonday            DATETIME
DECLARE @eastermonth            INT
DECLARE @weekday                INT

SET @startdate = CONVERT(DATETIME,'01-01-1990')
SET @enddate = CONVERT(DATETIME,'01-01-2100')

WHILE @startdate < @enddate

BEGIN

SET @year = DATEPART(yy,@startdate)
SET @yearasstring = CAST(@year AS VARCHAR(4))
SET @month = DATEPART(MM,@startdate)
SET @prevyearasstring = CAST((@year-1) AS VARCHAR(4))
SET @nextyearasstring = CAST((@year+1) AS VARCHAR(4))
SET @easter = [dbo].fn_EasterSundayByYear(@yearasstring)
SET @day = DATEPART(dd,@startdate)
SET @twoweeksaftereaster = DATEADD(DD,14,@easter)
SET @firstaprilmonday = dbo.udf_nthWeekDay(1,'MON',@year,4)
SET @xmas = ('12-25-')+ @yearasstring
SET @xmasprevyear = ('12-25-')+ @prevyearasstring
SET @xmasdow = DATEPART(DW,@xmas)
SET @xmasdowprevyear = DATEPART(DW,('12-25-')+ @prevyearasstring)
SET @eastermonday = DATEADD(DD,1,@easter)
SET @eastermonth = DATEPART(MM,(@easter))
SET @weekday = DATEPART(DW,@startDate)

INSERT INTO [dbo].[DimKalender]
           ([KalenderId]
           ,[KalenderDatum]
           ,[KalenderDag]
           ,[KalenderMaand]
           ,[KalenderMaandNaam]
           ,[KalenderTrimester]
           ,[KalenderJaar]
           ,[KalenderSchoolJaar]
           ,[KalenderVakantieNaam]
           )

VALUES  (
/*[KalenderId]*/                @year*10000 + @month*100 + @day,
/*[KalenderDatum]*/                @startdate,
/*[KalenderDag]*/                @day,
/*[KalenderMaand]*/                @month,
/*[KalenderMaandNaam]*/            CASE @month
                                    WHEN 1 THEN 'Januari'
                                    WHEN 2 THEN 'Februari'
                                    WHEN 3 THEN 'Maart'
                                    WHEN 4 THEN 'April'
                                    WHEN 5 THEN 'Mei'
                                    WHEN 6 THEN 'Juni'
                                    WHEN 7 THEN 'Juli'
                                    WHEN 8 THEN 'Augustus'
                                    WHEN 9 THEN 'September'
                                    WHEN 10 THEN 'Oktober'
                                    WHEN 11 THEN 'November'
                                    WHEN 12 THEN 'December'
                                END,
/*[KalenderTrimester]*/            DATEPART(qq, @startdate),
/*[KalenderJaar]*/                @year,
/*[KalenderSchooljaar]*/        CASE WHEN @month <= 8
                                    THEN @prevyearasstring + '-' + @yearasstring
                                    ELSE @yearasstring + '-' + @nextyearasstring
                                END,
/*[KalenderVakantieNaam]*/        CASE
                                    WHEN @month = 7 THEN 'Zomer'
                                    WHEN @month = 8 THEN 'Zomer'
                                    WHEN DATEPART(dw,('11-01-' + @yearasstring)) = 7
                                        AND (@startDate between ('11-02-'+ @yearasstring)
                                        and ('11-08-'+ @yearasstring)) THEN 'Herfst'
                                    WHEN DATEPART(dw,('11-01-' + @yearasstring)) != 7
                                        AND DATEPART(WW,@startdate) = DATEPART(WW,('11-01-'+@yearasstring))
                                        THEN 'Herfst'
                                    WHEN @month = 12 AND @xmasdow = 6 AND @startdate between ('12-27-' + @yearasstring)
                                        and ('01-09-' + @nextyearasstring) THEN 'Kerst'
                                    WHEN @month = 12 AND @xmasdow = 7 AND @startdate between ('12-26-' + @yearasstring)
                                        and ('01-08-' + @nextyearasstring) THEN 'Kerst'
                                    WHEN @month = 12 AND @xmasdow < 6 AND @startdate
                                        between (DATEADD (dd,(-(@weekday - 1)),(@xmas)))
                                        and (DATEADD (dd,(- @weekday + 14),(@xmas))) THEN 'Kerst'
                                    WHEN @month = 1 AND @xmasdowprevyear = 6 AND @startdate <= ('01-09-' + @yearasstring)
                                        THEN 'Kerst'
                                    WHEN @month = 1 AND @xmasdowprevyear = 7 AND @startdate <= ('01-08-' + @yearasstring)
                                        THEN 'Kerst'
                                    WHEN @month = 1 AND @xmasdowprevyear < 6 AND @startdate
                                        between (DATEADD (dd,(-(@weekday - 1)),(@xmasprevyear)))
                                        and (DATEADD (dd,(- @weekday + 14),(@xmasprevyear))) THEN 'Kerst'
                                    WHEN @startdate = '11-11-' + @yearasstring THEN '11 November'
                                    WHEN @startdate = '05-01-' + @yearasstring THEN '1 Mei'
                                    WHEN @eastermonth = 3 AND @startdate between @eastermonday AND @twoweeksaftereaster
                                        THEN 'Pasen'
                                    WHEN @easter > ('04-15-' + @yearasstring) AND @startdate
                                        between (DATEADD(DD,-13,@easter)) AND @eastermonday THEN 'Pasen'
                                    WHEN @eastermonth != 3 AND @easter <= ('04-15-' + @yearasstring)
                                        AND @startdate between @firstaprilmonday AND DATEADD(DD,13,@firstaprilmonday)
                                            THEN 'Pasen'
                                    WHEN @startdate = DATEADD(DD,49,@twoweeksaftereaster) THEN 'PinksterMaandag'
                                    WHEN @startdate between DATEADD(DD,-48,@easter) AND DATEADD(DD,-42,@easter)
                                        THEN 'Krokus'
                                    WHEN @startdate between DATEADD(DD,39,@easter) AND DATEADD(DD,40,@easter)
                                        THEN 'Hemelvaart'
                                    ELSE 'Geen'
                                END
)

SET @startdate = DATEADD(dd,1,@startdate)

END

Enjoy ;)

Comments { 0 }