﻿Hope that it works and I'll be ready to change the world ;-) [okrueger]

Test by piotrz :)
junheider is Top Posting this file�people hate this on mailing lists.

Flex committers can use this file to check their svn access.
"I love work; it fascinates me; I can sit and watch it for hours." -- Jerome K. Jerome
It is COLD today in Boston!  But today it is hot and humid!
It is RAINY today in Seattle!
Apathy - i could take it or leave it.
s9tpepper was here.

rduartes wrote this here:
(you have to listen to this being recited by Douglas Campbell in Loreena McKennit's Lullaby song)

Oh for a voice like Thunder, and a tongue to drown the voice of war,
When the soul is driven to madness,
WHO CAN STAND ?
When the souls of the oppressed fight in the troubled air that rages,
WHO CAN STAND ?
When the whirlwind of fury comes from the throne of GOD,
WHO CAN STAND ?
Testing CR-LF on commit / only this line was changed.
When the frowns of his countenance drive the nations together,
WHO CAN STAND?
When sin claps his broad wings over the battle, and sails rejoicing in the flood of death,
When the souls are torn to everlasting fire, and fiends of Hell rejoice upon the slain,
Oh who can stand?
Oh who has caused this?
Oh who can answer at the throne of God?
The Kings and Nobles of the land have done it,
Hear it not Heaven,
Thy Ministers have done it !

William Blake

Surfing on sine waves is the only way to get through life - mschmalle

A dyslexic man walks into a bra. - Tink

Dear diary: Jackpot. -Glen Quagmire (via jonbcampos)

"In Soviet Russia, code debug you" - peterelst

"Programming is 10% science, 20% ingenuity, and 70% getting the ingenuity to work with the science." - akpetteroe

"Oh, God help us. We're in the hands of engineers." -Ian Malcom (via sdelamater)

"Any fool can criticize, condemn and complain and most fools do" Benjamin Franklin (via espenskogen)

"Experience is a dear teacher, and only fools will learn from no other." Ben Franklin (via frishy)

"A foolish consistency is the hobgoblin of little minds" Ralph Waldo Emerson (via jmclean)

"Money is only important to those who don't have any" (via quetwo)

"Beware the young doctor and old barber" (Ben Franklin)

The World was all before them, where to choose
Thir place of rest, and Providence thir guide:
They hand in hand with wandring steps and slow,
Through Eden took thir solitarie way.
(John Milton, last lines of Paradise Lost, via gordonsmith)

"We can do so much more. We can save this world... with the right leadership." (Adrian Veidt, Ozymandias in Watchmen Graphic Novel, via carlosrovira)

Testing from another computer Frédéric Thomas (fthomas).

It's a trap!

Checking to see if I'm able to push this back to origin.

Me too.  Woot.

mamsellem git commit first try (2013/09/29)

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. (Brian Kernighan)

Testing, testing (jfernandes)

I'll just leave this here... --chrsmrtn

Hello from joshtynjala!

ello from Michael Schmalle

Did it work? I won't get my hopes up. (May 30, 2015) -kmg ..

My git commit (yishayw).

First commit (Sept 7 , 2016).
I wish I was composed entirely of acoustic vibrations. Then I would finally be 'of sound mind and body'. (gregdove)