I did an interview for Rikki Endsley about the talk I gave at Open Source Bridge in June.
You should definitely check out the article, but here is the interview in its entirety...
What inspired you to give your talk at OS Bridge this year?
I have 3 boys of my own who are either in or entering the public
school system, and I am seeing a real void in the education they are
receiving with computers. Obviously, computers are everywhere in
schools now, but it is really disappointing to see kids only being
taught how to use programs, not create them. As with most things, if
you want to see change, you have to do something. I started hosting a
programming club for my son and his friends, which turned out to be
really easy to pull off. I wanted to share with others about my
experiences and motivate them to run their own clubs.
I also see a real opportunity to "bring up" and mentor the next
generation of open source citizens. Communities like Scratch can be a
great way for kids to see how open source works and how powerful it
can be. From simple things like sharing your source code with others
(there is no way to share your program on Scratch and not share your
source), to good etiquette when commenting on other programs, to more
complicated concepts like forking someone else's code (Scratch calls
it a remix). I wanted to show people the importance and value of
instilling the culture of open source in our kids at a young age.
What did you focus on in your talk? What was the feedback/response from attendees?
I wanted to convey the excitement kids experience when they are
exposed to the source code of a program. Both from the perspective of
creating the code, and from seeing the inner workings of other
people's code. I remember as a kid playing Castle Wolfenstein with my
brother on our Commodore 64 and how it felt when we discovered we
could open the source code up and give ourselves extra lives! It's
great to see first hand someone's mind expanding when they discover
what's behind that game or app that they love, or that there really
are no limits to what you can make your program do... including making
it "crash" or "glitch"!
I think this connected with a lot of the attendees because most
programmers can think back to times when they've had these sort of
mind-altering moments. I think it's easy for us programmers to forget
that most people don't see computers the same way that we do. People
who haven't been shown or taught about programming naturally think
there's a lot of magic or voodoo behind the scenes when they click a
button. I think the attendees could relate to their own experiences
with OS's and platforms that are becoming more and more closed, and
see that the chance kids will naturally have their minds opened up to
the world of programming is getting pretty slim.
Are you currently working on any kid-focused open source project right now (and if so, what are they)?
I am continuing with the programming club for my kids and their
friends. This has also led to teachers requesting that I run a session
at the school for all of the kids which I think would be really
interesting.
What other kid-focused events or projects do you see going on in open source right now? What would you like to see (new projects, efforts from companies, products, etc.)
I really love the things that are popping up like KidsRuby and a book
"Invent Your Own Computer Games with Python". I think Scratch is a
really great starting point, but it definitely has many, many
limitations. The sooner you can get kids into a real programming
language and interacting with communities like GitHub, the better.
What I would like to see happen is for our elementary and middle
school curriculum to include programming. With tools like Scratch and
projects like KidsRuby out there, there's really no excuse anymore.
Anything you'd like to add?
Open source as a culture and a way of getting things done in the real
world is so powerful. I think it will be invaluable if we can bring up
an entire generation who have been exposed to it from a young age.
posted at 2011-10-27T17:10:31 by baerg
I've been programming Perl for years and started using Devel:REPL recently,
but I didn't really appreciate it until now. I'm creating a site for my
son to post the comics that he draws using Dancer.
The combination of Dancer and Devel::REPL is really quite nice. Simply running
$ re.pl
$ use Dancer
from within your Dancer App directory will import everything you need to start playing around with your Dancer App, so this:
$ template 'index'
will display the generated html of your index template, and this:
$ template 'index', { page_title => 'Enjoy!' }
will pass the template options.
Plus, Devel::REPL isn't just another interactive mode, its got plugins! -- colours, auto-completion, pretty printing data structures... Here's my ~/.re.pl/repl.rc
use Modern::Perl;
use Term::ANSIColor;
no warnings 'redefine';
my @plugins = (
'ReadLineHistory', # history saved across sessions
'Colors', # colorize return value and errors
'Refresh', # refresh before every eval
'Interrupt', # improve handling of ^C
'OutputCache', # access previous results
'Nopaste', # paste session with #nopaste
'DDS', # format output with Data::Dumper::Concise
'PPI', # PPI dumping of Perl code
'MultiLine::PPI', # allow multiple lines
'Completion',
'CompletionDriver::Keywords', # substr, while, etc
'CompletionDriver::LexEnv', # current environment
'CompletionDriver::Globals', # global variables
'CompletionDriver::INC', # loading new modules
'CompletionDriver::Methods', # class method completion
'CompletionDriver::Turtles', # turtle command completion
);
$_REPL->load_plugin($_) for @plugins;
$_REPL->normal_color('blue');
$Devel::REPL::Plugin::Packages::PKG_SAVE = 'main';
END {
print "\n";
}
posted at 2011-08-27T17:18:30 by baerg
I have always loved stained glass windows.

posted at 2011-07-21T02:40:39 by baerg
We found the sun! Apparently, it was hiding on Prince Edward Island. We enjoyed an evening and afternoon on the
red sands of the Northumberland beach. As we were about to leave, I noticed the daisies growing on the bluffs. Perfect!

posted at 2011-07-20T01:22:45 by baerg
Much of our time in the Maritimes has been rainy so far. We managed to get nice days
for our visits to Peggy's Cove and the Fortress of Louisbourg, which were both amazing,
but otherwise, it's been foggy and soggy. However, one of the nice side effects of rainy weather is
that you can get really great lighting for outdoor photography in the middle of the day.
This photo from the public gardens in Halifax was taken around noon and is a great example.

posted at 2011-07-16T02:31:58 by baerg
It's raining. And cold. We spent 2 hours shopping in Crappy Tire and not so Small Mart today.

posted at 2011-07-15T01:21:44 by baerg
I find it interesting how I have pictures in my mind of a place
before I even experience it. Peggy's Cove was one of those places.
The pictures I have in my mind after experiencing it are so much more amazing.
I really don't think that any actual pictures I have taken of it can come
close to what I experienced, but I will try with this one.

posted at 2011-07-14T01:57:42 by baerg
If you haven't heard of geocaching yet or
don't know much about it you should really check out the guide.
It's pretty much just a giant scavenger hunt game, and
now that most people have gps+internet on their phone, it is
really easy to get into it.
One of the things that I love most about geocaching, is that it takes
me to interesting places that I wouldn't otherwise experience, or take
pictures of. This photo was taken while searching for Across The Lake.

posted at 2011-07-12T03:26:00 by baerg
We made it! My feet have been immersed in the Atlantic Ocean!
I have flown on an airplane much farther away from home than where I am now -
Indonesia, England, and Mexico - but having traversed over 5,000 km of pavement
across prairies, through forests, beside lakes and along rivers, I feel much
farther away from home than I have ever been. Not a day goes by that our (almost) 4
year old doesn't mention that "we are so. far. from our house."

posted at 2011-07-11T02:42:30 by baerg
In general, I would say that I don't enjoy taking portrait photos. But I have
always enjoyed capturing portraits of my boys.


posted at 2011-07-10T02:53:19 by baerg
I absolutely love bicycles (in all shapes and sizes). This one
is on Rue Saint-Amable just off of Place Jaques-Cartier in Montreal.

posted at 2011-07-10T02:47:19 by baerg
There was no lack of statues today on our walking tour of Old Montreal.

posted at 2011-07-08T03:37:56 by baerg
We are now farther East than I have ever been before in Canada. It surpised me
how nervous I was about entering a gas station, wondering if I should say "bonjour"
or "hello". Quite silly actually.
We crossed over the St. Lawrence and will cross back over again tomorrow to
visit Old Montreal.

posted at 2011-07-08T03:36:24 by baerg
posted at 2011-07-05T02:31:32 by baerg
The best books force you to think about something differently.
I'm currently doing something that I only do when I'm on vacation -
read a novel.
Beatrice & Virgil by Yann Martel is forcing me to think
about the Holocaust differently, but not in the sense that it's
from a different perspective. It's not simply a story from a certain
point of view. I didn't even realize that I was reading a novel
about the Holocaust until I was over 3/4 of the way through! The
characters in the book struggle with how to write and talk
about the Holocaust which in turn has shown me new ways of thinking
about it.
posted at 2011-07-04T04:14:30 by baerg
I'm quite sure that the diversity of flowers could keep my camera shutter busy for a very long time.

posted at 2011-07-03T15:02:22 by baerg
There is a special bond between cousins that doesn't seem to be found in any other kind of relationship.

posted at 2011-07-02T04:38:15 by baerg
I love beaches in the evening. Some of my most vivid childhood memories are of swimming
at dusk. The water is usually calm, and always feels warmer as the air gets cooler. My Dad has
a picture from when our family lived in India of my Mom and I strolling along a beach at sunset, holding
hands, with sailboats littering the skyline. I was 2 years old. Maybe a part of me gets
transported back to that moment whenever I experience a beach at dusk.

posted at 2011-07-01T02:56:40 by baerg
The 4th day of my photo-blogging challenge and I have no photo, only a blog post.
I have discovered that the probability of finding good coffee at a coffee shop can be determined solely by the existence (or absence) of certain terms in their name.
- "espresso" (10%)
- an entirely Italian name, i.e. "Caffe Artigiano" or "Brazza" - as long as it doesn't include "espresso" (80%)
- something misspelled, i.e. "expresso" or "blenz" (0%)
- "java" (30%)
- "cafe" (0%)
- "coffee house" or just "coffee" (50/50)
- no coffee related terms at all (90%)
You can also reliably predict whether you will get a good cup of coffee simply based on whether or not you can find a brand name on the espresso machine they are using (bonus points if it sounds Italian like "La Marzocco"). This is somewhat less convenient and much more time consuming, but extremely effective.
Strangely, roasting their own beans does not seem to play a factor at all. I have had both terrible and extremely good coffee from a coffee shop/roaster. Although usually, if they are roasting at the same location as the actual coffee shop, that's a warning sign.
posted at 2011-06-30T04:55:20 by baerg
We have a lot of really great prarie sunsets back home (in Calgary), but I rarely ever have the time to enjoy them.
I actually suspect that sunsets are no more spectacular wherever I find myself on vacation. Here's the one
I was able to enjoy today sitting on the dock at Jessie Lake, MN with my son, Jaxson.

posted at 2011-06-29T04:38:22 by baerg
Day 2 of my self-imposed photo blogging challenge.
We're on a minor detour due to the massive amounts of flooding in Southern Saskatchewan and North Dakota,
which means we get to spend another day on the beautiful (and pot-hole ridden) Trans Canada Highway... the Number 1.

posted at 2011-06-28T05:25:14 by baerg
I'm driving across Canada with my family, almost coast to coast. Calgary to Halifax with a lot of stops
in between. It's going to take us about 5 weeks for the round trip which is 35 days. I am setting a goal
to post at least 1 photo for each day. I can honestly say that I love photography. And I love not just
taking pictures, but I also love massaging a picture into something that represents what I "saw" when I took it.
So, here is Day 1. We drove from Calgary to Herbert, SK today which is where my wife's Grandma lives. The
drive went surprisingly quick. If you ever find yourself in need of some great coffee in Medicine Hat,
the Madhatter Coffee Roastery is
actually quite stellar. They promise not to sell you beans that are more than 3 days old, I got a
very smooth latte, and they only take cash - hard core!
From Grandma's window, you have this great view of a lake and behind it is a little white church
on a hill. I commented on it, to which Grandma replied, "Sometimes when the water is like glass, the whole
church is mirrored. It's so perfect, I'm sure even I could take a picture of it." But she doesn't because
she has her window to look out of all the time. Here it is...

posted at 2011-06-28T05:23:33 by baerg
I know this sounds like I'm bragging, but I'm going to say it anyways. My son is an artist. I know this because the things that he creates are interesting. Because he sees things in his mind that he can only express by creating art. I have no grand illusions of him becoming a famous artist someday, but I do appreciate the art that he is creating right now. Including this self-portrait masterpiece:

posted at 2011-06-10T06:05:52 by baerg
I would love to be able to blog using nothing more than vim and scp.
Here is the plan...
Each post will simply be a text file. The file name will be the title, and the content will be converted to html using Markdown. The file modification time will be used for the news feed.
A single directory will hold all of the content - posts, images, audio, video and comments. Publishing a post will be accomplished by copying the files to this directory. Images, audio, video and comments will be stored in corresponding subdirectories and additional subdirectories can be created to store posts. The index page will display the posts stored in the root directory and the site navigation will be generated from the subdirectories.
Images will be automatically resized (ImageMagick). Audio and video files will be automatically transcoded (ffmpeg) and playable inline (html5).Comments will be screened for spam using email confirmation and unconfirmed comments will auto-expire.
posted at 2011-06-10T06:05:52 by baerg
I don't do screencasts a lot, so it never fails that when I want to record a screencast,
I have to re-learn how to accomplish it or go searching for a good app. My requirements
are always pretty simple... choose my window, then record and output a high-quality video
file. A while back I wrote a simple little script that pulls together a few utilities
(xwininfo, recordmydesktop, and ffmpeg), and my problem is solved! Now I just have to
remember that I have a script. :)
#!/usr/bin/env perl
use Modern::Perl;
## Get window geometry and position from xwininfo
my $wininfo = `xwininfo`;
$wininfo =~ /-geometry (\d+)x(\d+)(\+|\-)(\d+)(\+|\-)(\d+)/;
my $width = $1;
my $height = $2;
$wininfo =~ /Absolute upper-left X:\s+(\d+)/;
my $x = $1;
$wininfo =~ /Absolute upper-left Y:\s+(\d+)/;
my $y = $1;
## Run recordmydesktop
system "recordmydesktop -x $x -y $y --width $width --height $height -o $ENV{HOME}/Desktop/screencast";
## Convert to mp4
system "ffmpeg -sameq -i $ENV{HOME}/Desktop/screencast.ogv $ENV{HOME}/Desktop/screencast.mp4";
Note that ctrl-alt-s will stop the recording. (ctrl-alt-p will pause/resume it)
posted at 2011-06-10T06:05:52 by baerg
I am loving Markdown. But I am left wanting a lazier way of including images. I don't want to have to worry about creating thumbnails or different image sizes. I would like to be able to copy an image to my blog and from there simply give the image name and resolution, so that something like this:

would produce something like this:
<a href='/link/to/original/or/detail/view'><img src='/path/to/640/foobar.jpg' /></a>
Obviously this requires a little bit of "Magick" in the background to find the path and ensure that the correct size thumb actually exists somewhere, but here's the code that I've come up with so far which accomplishes what I want (the "Magick" is hidden in the "images" function):
while ($_->{content} =~ /\n\!\[(\d+)\]\((.+)\)/) {
my @image = images($2, $1);
my $html = $image[0]->{html} || "";
$_->{content} =~ s/\n\!\[\Q$1\E\]\(\Q$2\E\)/$html/;
}
Now this:

becomes this:

posted at 2011-06-10T06:05:52 by baerg