Shallow Thoughts : tags : speaking
Akkana's Musings on Open Source Computing and Technology, Science, and Nature.
Sun, 18 Jun 2023
At our last Toastmasters meeting, I delivered a book report on a
recent read that I loved:
Like, Literally, Dude: Arguing for the Good in Bad English
by Valerie Fridland.
In case you're not familiar with Toastmasters, it's an international club
for learning and practicing public speaking. One of the skills
Toastmasters stresses is avoiding what we call "filler words", particularly
ums and ahs. Every Toastmasters meeting has someone assigned to the role
of "Ah Counter", to pay attention to each speaker's filler words and
report at the end of the meeting on how everyone did. That factors in
to the book review, which went like this:
Read more ...
Tags: books, speaking
[
19:16 Jun 18, 2023
More speaking |
permalink to this entry |
]
Mon, 20 Jul 2020
Giving talks has certainly changed a lot since last year.
All those skills we practice in Toastmasters -- using the space,
expressive gestures, projecting your voice, making eye contact
with all sections of the audience? Meaningless now. In an age of
quarantine and video conferencing meetings, speakers need to learn new
skills.
Fortunately, there's Toastmasters for a painless, fun way to practice.
I was scheduled to give a talk on browser privacy.
My local LWV has a Privacy Study Group that I'm co-chairing,
and we had a meeting coming up on privacy while browsing the web.
I knew I wanted to show a series of demos in multiple browsers,
including additional windows like the Developer Tools window.
I also wanted to record the talk so I could upload it later.
In Zoom, the process of canceling a shared window and then
starting another share is slow, fumbly and error-prone.
I knew this was something I needed to practice before the talk,
to find a way to smooth the transitions..
Read more ...
Tags: speaking, video, linux, X11
[
16:35 Jul 20, 2020
More speaking |
permalink to this entry |
]
Fri, 26 Jun 2020
The LWV
Los Alamos is running a Privacy Study, which I'm co-chairing.
As preparation for our second meeting, I gave a Toastmasters talk entitled
"Browser Privacy: Cookies and Tracking and Scripts, Oh My!"
A link to the talk video, a transcript, and lots of extra details
are available on my newly created
Privacy page.
Tags: tech, privacy, speaking
[
08:58 Jun 26, 2020
More tech |
permalink to this entry |
]
Tue, 10 Dec 2019
This Friday, Dave and I will be presenting a planetarium show called
The
Hitchhiker's Guide to the Moon: Visit the Moon Without Leaving Your
Home Planet.
I'm jazzed about this show. I think it'll be the most fun
planetarium show we've given so far.
We'll be showing a variety of lunarfeatures:
maria, craters, mountains, rilles, domes, catenae and more.
For each one, we'll discuss what the feature actually is and how it
was created, where to see good examples on the moon,
and -- the important part -- where you can go on Earth,
and specifically in the Western US,
to see a similar feature up close.
Plus: a short flyover of some of the major features using the
full-dome planetarium. Some features, like Tycho, the
Straight Wall, Reiner Gamma, plus lots of rilles, look really great
in the planetarium.
If you can't get to the moon yourself,
this is the next best thing!
The Hitchhiker's Guide to the Moon:
7pm at the PEEC nature center. Admission is free.
Come find out how to explore the moon without leaving your home planet!
Tags: astronomy, science, speaking
[
18:06 Dec 10, 2019
More science/astro |
permalink to this entry |
]
Thu, 13 Jun 2019
Dave and I will be presenting a free program on Stonehenge at the Los
Alamos Nature Center tomorrow, June 14.
The nature center has a list of programs people have asked for, and
Stonehenge came up as a topic in our quarterly meeting half a year ago.
Remembering my seventh grade fascination
with Stonehenge and its astronomical alignments -- I discovered
Stonehenge Decoded at the local library, and built a desktop
model showing the stones and their alignments -- I volunteered.
But after some further reading, I realized that not all of those
alignments are all they're cracked up to be and that there might not
be much of astronomical interest to talk about, and I un-volunteered.
But after thinking about it for a bit, I realized that "not all
they're cracked up to be" makes an interesting topic in itself.
So in the next round of planning, I re-volunteered; the result is
tomorrow night's presentation.
The talk will include a lot of history of Stonehenge and its construction,
and a review of some other important or amusing henges around the world.
But this article is on the astronomy, or lack thereof.
The Background: Stonehenge Decoded
Stonehenge famously aligns with the summer solstice sunrise, and
that's when tens of thousands of people flock to Salisbury, UK to
see the event. (I'm told that the rest of the time, the monument is
fenced off so you can't get very close to it, though I've never had
the opportunity to visit.)
Curiously, archaeological evidence suggests that the summer solstice
wasn't the big time for prehistorical gatherings at Stonehenge; the
time when it was most heavily used was the winter solstice, when there's
a less obvious alignment in the other direction. But never mind that.
In 1963, Gerald Hawkins wrote an article in Nature, which he
followed up two years later with a book entitled Stonehenge Decoded.
Hawkins had access to an IBM 7090, capable of a then-impressive
100 Kflops (thousand floating point operations per second; compare
a Raspberry Pi 3 at about 190 Mflops, or about a hundred Gflops for
something like an Intel i5). It cost $2.9 million (nearly $20 million
in today's dollars).
Using the 7090, Hawkins mapped the positions of all of Stonehenge's
major stones, then looked for interesting alignments with the sun and moon.
He found quite a few of them.
(Hawkins and Fred Hoyle also had a theory about the fifty-six Aubrey
holes being a lunar eclipse predictor, which captured my seventh-grade
imagination but which most researchers today think was more likely
just a coincidence.)
But I got to thinking ... Hawkins mapped at least 38 stones if you
don't count the Aubrey holes. If you take 38 randomly distributed points,
what are the chances that you'll find interesting astronomical alignments?
A Modern Re-Creation of Hawkins' Work
Programmers today have it a lot easier than Hawkins did.
We have languages like Python, with libraries like PyEphem to handle
the astronomical calculations.
And it doesn't hurt that our computers are about a million times faster.
Anyway, my script,
skyalignments.py
takes a GPX file containing a list of geographic coordinates and compares
those points to sunrise and sunset at the equinoxes and solstices,
as well as the full moonrise and moonset nearest the solstice or equinox.
It can find alignments among all the points in the GPX file, or from a
specified "observer" point to each point in the file. It allows a slop
of a few degrees, 2 degrees by default; this is about four times the
diameter of the sun or moon, but a half-step from your observing
position can make a bigger difference than that. I don't know how
much slop Hawkins used; I'd love to see his code.
My first thought was, what if you stand on a mountain peak and look
around you at other mountain peaks? (It's easy to get GPS coordinates
for peaks; if you can't find them online you can click on them on a map.)
So I plotted the major peaks in the Jemez and Sangre de Cristo mountains
that I figured were all mutually visible. It came to 22 points; about
half what Hawkins was working with.
My program found
(114 alignments.
Yikes! Way too many. What if I cut it down? So I tried eliminating all
but the really obvious ones, the ones you really notice from across
the valley. The most prominent 11 peaks: 5 in the Jemez, 6 in the Sangres.
That was a little more manageable. Now I was down to only 22 alignments.
Now, I'm pretty sure that the Ancient Ones -- or aliens -- didn't lay
out the Jemez and Sangre de Cristo mountains to align with the rising
and setting sun and moon. No, what this tells us is that pretty much any
distribution of points will give you a bunch of astronomical alignments.
And that's just the sun and moon, all Hawkins was considering. If you
look for writing on astronomical alignments in ancient monuments,
you'll find all people claiming to have found alignments with all
sorts of other rising and setting bodies, like Sirius and
Orion's belt. Imagine how many alignments I could have found if I'd
included the hundred brightest stars.
So I'm not convinced.
Certainly Stonehenge's solstice alignment looks real; I'm not disputing that.
And there are lots of other archaeoastronomy sites that are even
more convincing, like the Chaco sun dagger. But I've also seen plenty of
web pages, and plenty of talks, where someone maps out a collection of
points at an ancient site and uses alignments among them as proof that
it was an ancient observatory. I suspect most of those alignments are more
evidence of random chance and wishful thinking than archeoastronomy.
Tags: astronomy, programming, python, mapping, GIS, speaking
[
14:54 Jun 13, 2019
More science/astro |
permalink to this entry |
]
Fri, 20 Jul 2018
Such a classic Linux story.
For a video I'll be showing during tonight's planetarium presentation
(Sextants,
Stars, and Satellites: Celestial Navigation Through the Ages, for
anyone in the Los Alamos area),
I wanted to get HDMI audio working from my laptop, running Debian Stretch.
I'd done that once before on this laptop
(HDMI
Presentation Setup Part I and
Part
II) so I had some instructions to follow; but while aplay -l
showed the HDMI audio device, aplay -D plughw:0,3
didn't play anything and alsamixer
and alsamixergui
only showed two devices, not the long list of devices I was used to seeing.
Web searches related to Linux HDMI audio all pointed to pulseaudio,
which I don't use,
and I was having trouble finding anything for plain ALSA without pulse.
In the old days, removing pulseaudio used to be the cure
for practically every Linux audio problem. But I thought to myself,
It's been a couple years since I actually tried pulse, and people have
told me it's better now. And it would be a relief to have pulseaudio
working so things like Firefox would Just Work. Maybe I should try
installing it and see what happens.
So I ran an aptitude search pulseaudio
to find the
package name I'd need to install. Imagine my surprise when it turned
out that it was already installed!
So I did some more web searching to find out how to talk to pulse and
figure out how to enable HDMI, or un-mute it, or whatever it was I needed.
But to no avail: everything I found was stuff like "In the Ubuntu
audio panel, do this". The few pages I found that listed commands
to run didn't help -- the commands all gave errors.
Running short on time,
I reverted to the old days: aptitude purge pulseaudio
.
Rebooted to make sure the audio system was reset,
ran alsamixergui
and sure enough, there were all my normal devices, including the IEC958 device
for HDMI, which was indeed muted. I unmuted it, tried the video again --
and music blasted from my TV's speakers.
I'm sure there are machines where pulseaudio works. There are even
a few people who have audio setups complicated enough to need
something like pulseaudio. But in 2018, just as in 2006,
aptitude purge pulseaudio
is the easiest solution
to a Linux sound problem.
Tags: linux, audio, pulseaudio, hdmi, speaking
[
14:17 Jul 20, 2018
More linux |
permalink to this entry |
]
Fri, 23 Feb 2018
Dave and I are giving a planetarium show at PEEC tonight on the analemma.
I've been interested in the analemma for years and have
written about it before,
here on the blog
and in the SJAA Ephemeris.
But there were a lot of things I still didn't understand as well as
I liked. When we signed up three months ago to give this talk, I had
plenty of lead time to do more investigating, uncovering lots of
interesting details regarding the analemmas of other planets,
the contributions of the two factors that go into the Equation of Time,
why some analemmas are figure-8s while some aren't,
and the supposed "moon analemmas" that have appeared on the
Astronomy Picture
of the Day. I added some new features to the analemma script I'd
written years ago as well as corresponding with an expert who'd written
some great Equation of Time code for all the planets. It's been fun.
I'll write about some of what I learned when I get a chance, but
meanwhile, people in the Los Alamos area can hear all about it
tonight, at our PEEC show:
The Analemma Dilemma,
7 pm tonight, Friday Feb 23, at the Nature Center,
admission $6/adult, $4/child.
Tags: astronomy, analemma, PEEC, planetarium, speaking
[
10:23 Feb 23, 2018
More science/astro |
permalink to this entry |
]
Fri, 05 May 2017
Late notice, but Dave and I are giving a talk on the moon
tonight at PEEC. It's called
Moonlight
Sonata, and starts at 7pm. Admission: $6/adult, $4/child
(we both prefer giving free talks, but PEEC likes to charge for
their Friday planetarium shows, and it all goes to support PEEC,
a good cause).
We'll bring a small telescope in case anyone wants to do any actual
lunar observing outside afterward, though usually planetarium
audiences don't seem very interested in that.
If you're local but can't make it this time, don't worry; the moon
isn't a one-time event, so I'm sure we'll give the moon show again at
some point.
Tags: speaking, science, astronomy
[
15:26 May 05, 2017
More speaking |
permalink to this entry |
]
Wed, 06 Jan 2016
I'm working on my GIMP talk for SCALE 14x, the Southern California Linux
Expo in Pasadena.
My talk is at 11:30 on Saturday, January 23:
Stupid GIMP tricks (and smart ones, too).
I'm sure anyone reading my blog knows
that GIMP is the GNU Image Manipulation
Program, the free open-source photo and image editing program which
just celebrated its 20th birthday last month.
I'll be covering an assortment of tips and tricks for beginning
and intermediate GIMP users, and I'll also give a quick preview
of some new and cool features that will be coming in the next
GIMP release, 2.10.
I haven't finished assembling the final talk yet -- if you have any
suggestions for things you'd love to see in a GIMP talk, let me know.
No guarantees, but if I get any requests I'll try to accommodate them.
Come to SCALE! I've spoken at SCALE several times in the past, and
it's a great conference -- plenty of meaty technical talks,
but it's also the most newbie-friendly conference I've been to,
with talks spanning the spectrum from introductions to setting up
Linux or introductory Python programming all the way to kernel
configuration and embedded boot systems.
This year, there's also an extensive "Ubucon" for Ubuntu users,
including a keynote by Mark Shuttleworth. And speaking of keynotes,
the main conference has great ones: Cory Doctorow on Friday
and Sarah Sharp on Sunday, with Saturday's keynote yet to be announced.
In the past, SCALE been held at hotels near LAX,
which is about the
ugliest
possible part of LA.
I'm excited that the conference moving to Pasadena this year: Pasadena
is a much more congenial place to be, prettier, closer to good
restaurants, and it's even close to public transportation.
And best of all, SCALE is fairly inexpensive compared to most conferences.
Even more so if you use the promo-code SPEAK for a discount
when registering.
Tags: conferences, speaking, gimp, scale, scale14x
[
16:32 Jan 06, 2016
More conferences |
permalink to this entry |
]
Fri, 30 Oct 2015
In
Part
I of HDMI Presentation Setup on Linux, I covered the basics of getting
video and audio working over HDMI. Now I want to cover some finer-grained
details: some problems I had, and ways to make it easier to enable
HDMI when you need it.
Testing follies, delays, and screen blinking/flashing woes
While I was initially trying to get this working, I was using my own
short sound clip (one of the alerts I use for IRC) and it wasn't
working. Then I tried the test I showed in part I,
$ aplay -D plughw:0,3 /usr/share/sounds/alsa/Front_Center.wav
and that worked fine.
Tried my sound clip again -- nothing. I noticed that my clip was mono
and 8-bit while the ALSA sample was stereo and 16-bit, and I wasted a
lot of time in web searches on why HDMI would play one and not the other.
Eventually I figured out that the reason my short
clip wasn't playing was that there's a delay when switching on HDMI sound,
and the first second two two of any audio may be skipped.
I found lots of complaints about people missing the first few seconds
of sound over HDMI, so this problem is quite common, and I haven't
found a solution.
So if you're giving a talk where you need to play short clips -- for
instance, a talk on bird calls -- be aware of this. I'm probably
going to make a clip of a few seconds of silence, so I can play silence
before every short clip to make sure I'm fully switched over to HDMI
before the clip starts:
aplay -D plughw:0,3 silence.wav osprey.wav
Another problem, probably related, when first starting an audio file:
the screen blinks brieftly off then on again, then blinks again a
little while after the clip ends. ("Flicker" turns out to be a better
term to use when web searching, though I just see a single blink, not
continued flickering). It's possible this is something about my home
TV, and I will have to try it with another monitor somewhere to see if
it's universal. It sounds like
kernel
bug 51421: Enabling HDMI sound makes HDMI video flicker,
but that bug was marked resolved in 2012 and I'm seeing this in 2015
on Debian Jessie.
Making HDMI the sound default
What a pain, to have to remember to add -D plughw:0,3 every time you
play a sound. And what do you do for other programs that don't have
that argument?
Fortunately, you can make HDMI your default sound output.
Create a file in your home directory called .asoundrc with
this in it (you may be able to edit this down -- I didn't try)
and then all audio will go to HDMI:
pcm.dmixer {
type dmix
ipc_key 1024
ipc_key_add_uid false
ipc_perm 0660
slave {
pcm "hw:0,3"
rate 48000
channels 2
period_time 0
period_size 1024
buffer_time 0
buffer_size 4096
}
}
pcm. !default {
type plug
slave.pcm "dmixer"
}
Great! But what about after you disconnect? Audio will still be going
to HDMI ... in other words, nowhere. So rename that file:
$ mv .asoundrc asoundrc-hdmi
Then when you connect to HDMI, you can copy it back:
$ cp asoundrc-hdmi .asoundrc
What a pain, you say again! This should happen automatically!
That's possible, but tricky: you have to set up udev rules and scripts.
See this
Arch
Linux discussion on HDMI audio output switching automatically
for the gory details. I haven't bothered, since this is something I'll
do only rarely, when I want to give one of those multimedia presentations
I sometimes contemplate but never actually give.
So for me, it's not worth fighting with udev when, by the time I
actually need HDMI audio, the udev syntax probably will have changed again.
Aliases to make switching easy
But when I finally do break down and design a multimedia presentation,
I'm not going to be wanting to do all this fiddling in the presentation
room right before the talk. I want to set up aliases to make it easy.
There are two things that need to be done in that case:
make HDMI output the default, and make sure it's unmuted.
Muting can be done automatically with amixer. First run amixer
with no arguments to find out the channel name (it gives a lot of output,
but look through the "Simple mixer control" lines, or speed that up
with amixer | grep control
.
Once you know the channel name (IEC958 on my laptop), you can run:
amixer sset IEC958 unmute
The rest of the alias is just shell hackery to create a file called
.asoundrc with the right stuff in it, and saving .asoundrc before
overwriting it. My alias in .zshrc is set up so that I can
say hdmisound on or hdmisound off (with no arguments, it
assumes on), and it looks like this:
# Send all audio output to HDMI.
# Usage: hdmisound [on|off], default is on.
hdmisound() {
if [[ $1 == 'off' ]]; then
if [[ -f ~/.asoundrc ]]; then
mv ~/.asoundrc ~/.asoundrc.hdmi
fi
amixer sset IEC958 mmute
else
if [[ -f ~/.asoundrc ]]; then
mv ~/.asoundrc ~/.asoundrc.nohdmi
fi
cat >> ~/.asoundrc <<EOF
pcm.dmixer {
type dmix
ipc_key 1024
ipc_key_add_uid false
ipc_perm 0660
slave {
pcm "hw:0,3"
rate 48000
channels 2
period_time 0
period_size 1024
buffer_time 0
buffer_size 4096
}
}
pcm. !default {
type plug
slave.pcm "dmixer"
}
EOF
amixer sset IEC958 unmute
fi
}
Of course, I could put all that .asoundrc content into a file and just
copy/rename it each time. But then I have another file I need to make
sure is in place on every laptop; I decided I'd rather make the alias
self-contained in my .zshrc.
Tags: linux, audio, speaking
[
11:57 Oct 30, 2015
More linux/laptop |
permalink to this entry |
]
Tue, 27 Oct 2015
For about a decade now I've been happily connecting to projectors to
give talks. xrandr --output VGA1 --mode 1024x768
switches
on the laptop's external VGA port, and xrandr --auto
turns it off again after I'm disconnected. No fuss.
But increasingly, local venues are eschewing video projectors and
instead using big-screen TVs, some of which offer only an HDMI port,
no VGA. I thought I'd better figure out how to present a talk over HDMI
now, so I'll be ready when I need to know.
Fortunately, my newest laptop does have an HDMI port. But in case it
ever goes on the fritz and I have to use an older laptop, I discovered
you can buy VGA to HDMI adaptors rather cheaply (about $10) on ebay.
I bought one of those, tested it on my TV at home and it at least
worked there. Be careful when shopping: you want to make sure you're
getting something that takes VGA in and outputs HDMI, rather than the
reverse. Ebay descriptions aren't always 100% clear on that, but if you
check the gender of the connector in the photo and make sure it's right
to plug into the socket on your laptop, you should be all right.
Once you're plugged in (whether via an adaptor, or native HDMI built
into your laptop), connecting is easy, just like connecting with VGA:
xrandr --output HDMI1 --mode 1024x768
Of course, you can modify the resolution as you see fit.
I plan to continue to design my presentations for a 1024x768
resolution for the forseeable future. Since my laptop is 1366x1024,
I can use the remaining 342-pixel-wide swath for my speaker notes
and leave them invisible to the audience.
But for GIMP presentations, I'll probably want to use the full width
of my laptop screen. --mode 1366x768
didn't work -- that
resolution wasn't available -- but running xrandr
with
no arguments got me a list of available resolutions, which included
1360x768. That worked fine and is what I'll use for GIMP talks and
other live demos where I want more screen space.
Sound over HDMI
My Toastmasters club had a tech session where a few of us tried out
the new monitor in our meeting room to make sure we could use it.
One person was playing a video with sound. I've never used sound in
a talk, but I've always wanted to find an excuse to try it.
Alas, it didn't "just work" -- xrandr's video settings have nothing
to do with ALSA's audio settings. So I had to wait until I got home so
I could do web searches and piece together the answer.
First, run
aplay -l
, which should show something like this:
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: STAC92xx Analog [STAC92xx Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
Find the device number for the HDMI device, which I've highlighted here:
in this case, it's 3 (which seems to be common on Intel chipsets).
Now you can run a test:
$ aplay -D plughw:0,3 /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
If you don't hear anything, don't worry: the HDMI channel is probably muted
if you've never used it before. Run either
alsamixer
or
alsamixergui
.
Now find the channel representing your HDMI connection.
(HDMI must be plugged in for this to work.) In alsamixer, it's called
S/PDIF; in alsamixergui, it's called IEC958.
If you look up either of those terms,
Wikipedia S/PDIF
will tell you that S/PDIF is the Sony/Philips Digital Interconnect Format,
a data protocol and a set of physical specifications.
Those physical specifications appear to have nothing to do with video,
and use connectors that are nothing like HDMI. So it doesn't make much
sense. Just remember that if you see IEC958 or S/PDIF in ALSA, that's
probably your HDMI channel.
In the alsamixergui screenshot, IEC958 is muted: you can tell because
the little speaker icon at the top of the column is bright white.
If it were unmuted, the speaker icon would be grey like most of the others.
Yes, this seems backward. It's Linux audio: get used to obscure user interfaces.
In the alsamixer screenshot, the mutes are at the bottom of each column,
and MM indicates a channel is muted (like the Beep channel in the screenshot).
S/PDIF is not muted here, though it appears to be at zero volume.
(The 00 doesn't tell you it's at zero volume; 00 means it's
not muted. What did I say about Linux audio?)
ALSA apparently doesn't let you adjust the volume of HDMI output:
presumably they expect that your HDMI monitor will have its own volume
control. If your S/PDIF is muted, you can use your right-arrow key to
arrow over to the S/PDIF channel, then type m to toggle muting.
You can exit alsamixer with Ctrl-C (Q and Ctrl-Q don't work).
Now try that aplay -D command again and see if it works.
With any luck, it will (loudly).
A couple of other tests you might want to try:
speaker-test -t sine -f 440 -c 2 -s 1 -D hw:0,3
plays a sine wave.
speaker-test -c 2 -r 48000 -D hw:0,3
runs a general speaker test sequence.
In
Part
II of Linux HDMI Presentations,
I'll cover some problems I had, and how to write an alias
to make it easy to turn HDMI audio on and off.
Tags: linux, audio, speaking
[
14:36 Oct 27, 2015
More linux/laptop |
permalink to this entry |
]
Thu, 10 Sep 2015
One of the adjustments we've had to make in moving to New Mexico is
getting used to the backward (compared to California) weather.
Like, rain in summer!
Not only is rain much more pleasant in summer, as a dramatic
thundershower that cools you off on a hot day instead of a constant
cold drizzle in winter (yes, I know that by now Calfornians need
a lot more of that cold drizzle! But it's still not very
pleasant being out in it). Summer rain has another unexpected effect:
flowers all summer, a constantly changing series of them.
Right now the purple asters are just starting up,
while skyrocket gilia and the last of the red penstemons add a note
of scarlet to a huge array of yellow flowers of all shapes and sizes.
Here's the vista that greeted us on a hike last weekend
on the Quemazon trail.
Down in the piñon-juniper where we live, things aren't usually
quite so colorful; we lack many red blooms, though we have just as many
purple asters as they do up on the hill, plus lots of pale trumpets
(a lovely pale violet gilia) and Cowpen daisy, a type of yellow sunflower.
But the real surprise is a plant with a modest name: snakeweed. It has
other names, but they're no better: matchbrush, broomweed. It grows
everywhere, and most of the year it just looks like a clump of bunchgrass.
Then come September, especially in a rainy year like this one,
and all that snakeweed suddenly bursts into a glorious carpet of gold.
We have plenty of other weeds -- learning how to identify Russian thistle
(tumbleweed), kochia and amaranth when they're young, so we can pull
them up before they go to seed and spread farther, has launched me on
a project of an Invasive Plants page for the nature center (we should be
ready to make that public soon).
But snakeweed, despite the name, is a welcome guest in our yard, and
it lifts my spirits to walk through it on a September evening.
By the way, if anyone in Los Alamos reads this blog, Dave and I are
giving our first planetarium show at the nature center tomorrow (that's
Friday) afternoon.
Unlike most PEEC planetarium shows, it's free! Which is probably just
as well since it's our debut. If you want to come see us, the info is here:
Night Sky Fiesta
Planetarium Show.
Tags: nature, wildflowers, astronomy, speaking
[
21:24 Sep 10, 2015
More nature |
permalink to this entry |
]
Sun, 07 Dec 2014
More on the Los Alamos "Live Exponentially" slogan saga:
There's been a flurry of letters, all opposed to the proposed slogan,
in the Los Alamos Daily Post
these last few weeks.
And now the issue is back on the council agenda; apparently they're
willing to reconsider
the October
vote to spend another $50,000 on the slogan.
But considering that only two people showed up to that October meeting,
I wrote a letter to the Post urging people to speak before the council:
Letter
to the Editor: Attend Tuesday's Council Meeting To Make Your Voice
Heard On 'Live Exponentially'.
I'll be there. I've never actually spoken at a council meeting before,
but hey, confidence in public speaking situations is what Toastmasters
is all about, right?
(Even though it means I'll have to miss an interesting sounding talk
on bats that conflicts with the council meeting. Darn it!)
A few followup details that I had no easy way to put into
the Post letter:
The page with the links to Council meeting agendas and packets is here:
Los Alamos
County Calendar.
There, you can get the short Agenda
for Tuesday's meeting, or the full
364
page Agenda Packets PDF.
The branding section covers pages 93 - 287.
But the graphics the council apparently found so compelling, which swayed
several of them from initially not liking the slogan to deciding to
spend a quarter million dollars on it, are in the final presentation
from the marketing company, starting on page p. 221 of the PDF.
In particular, a series of images like this one,
with the snappy slogan:
Breathtaking raised to the power of you
LIVE EXPONENTIALLY
That's right: the advertising graphics that were so compelling they
swayed most of the council are even dumber than the slogan by itself.
Love the superscript on the you that makes it into an exponent.
Get it ... exponentially? Oh, now it all makes sense!
There's also a sadly funny "Written Concept" section just before the graphics
(pages 242- in the PDF) where they bend over backward to work in
scientific-sounding words, in bold each time.
But there you go. Hopefully some of those Post letter writers
will come to the meeting and let the council know what they think.
The council will also be discussing the much debated proposed chicken
ordinance; that discussion runs from page 57 to 92 of the PDF.
It's a non-issue for Dave and me since we're in a rural zone that already
allows chickens, but I hope they vote to allow them everywhere.
Tags: los alamos, politics, marketing, speaking
[
18:05 Dec 07, 2014
More politics |
permalink to this entry |
]
Wed, 23 Apr 2014
If anyone has been waiting for the code repository for PiDoorbell,
the Raspberry Pi project we presented at PyCon a couple of weeks ago,
at least part of it (the parts I wrote) is also available in my GitHub
scripts repo,
in the rpi subdirectory.
It's licensed as GPLv2-or-later.
That includes the code that drives the HC-SR04 sonar rangefinder,
and the script that takes photos and handles figuring out whether you
have a USB camera or a Pi Camera module.
It doesn't include the Dropbox or Twilio code. For that I'm afraid
you'll have to wait for the official PiDoorbell repo.
I'm not clear what the holdup is on getting the repo opened up.
The camera script,
piphoto.py,
has changed quite a bit in the couple of weeks since PyCon. I've been working
on a similar project that doesn't use the rangefinder, and relies only
on the camera to detect motion, by measuring changes between the
previous photo and the current one.
I'm building a wildlife camera, and the rangefinder trick doesn't work
well if there's a bird feeder already occupying the target range.
Of course, using motion detection means I'll get a lot of spurious
photos of shadows, tree limbs bending in the wind and so forth. It'll be an
interesting challenge seeing if I can make the code smart enough to
handle that. Of course, I'll write about the project in much more detail
once I have it working.
It looks like the biggest issue will be finding a decent camera I can
control from a Pi. The Pi Camera module looked so appealing -- and it
comes in a night version, with the IR filter removed, perfect for those
coyote, rabbit and deer pictures! -- but sadly, it looks like its
quality is so poor that it really isn't useful for much of anything.
It's great for detecting what types of animals visit you (especially
at night), but, sadly, no good for taking photos you'd actually want
to display.
If anyone knows of a good camera that can be driven from Linux over
USB -- perhaps a normal digital camera that supports the USB camera
protocol? -- please let me know! My web searches so far haven't been
very illuminating.
Meanwhile, I hope someone finds the rangefinder and camera driving
software useful.
And stay tuned for more detailed articles about my wildlife camera project!
Tags: raspberry pi, speaking, conferences, maker
[
11:57 Apr 23, 2014
More hardware |
permalink to this entry |
]
Thu, 17 Apr 2014
I'm back from Montreal, settling back in.
The PiDoorbell tutorial went well, in the end. Of course just about
everything that could go wrong, did. The hard-wired ethernet
connection we'd been promised didn't materialize, and there was no way to
get the Raspberry Pis onto the conference wi-fi because it used
browser authentication (it still baffles me why anyone still uses
that! Browser authentication made sense in 2007 when lots of people
only had 801.11g and couldn't do WPA; it makes absolutely zero sense now).
Anyway, lacking a sensible way to get everyone's Pis on the net,
Deepa stepped as network engineer for the tutorial and hooked
up the router she had brought to her laptop's wi-fi connection
so the Pis could route through that.
Then we found we had too few SD cards. We didn't realize why until
afterward: when we compared the attendee count to the sign-up list
we'd gotten, we had quite a few more attendees than we'd planned for.
We had a few extra SD cards, but not enough, so I and a couple of
the other instructors/TAs had to loan out SD cards we'd brought for
our own Pis. ("Now edit /etc/network/interfaces ... okay, pretend you
didn't see that, that's the password for my home router, now delete
that and change it to ...")
Then some of the SD cards turned out not to have been updated with the
latest packages, Mac users couldn't find the drivers to run the serial
cable, Windows users (or was it Macs?) had trouble setting static
ethernet addresses so they could ssh to the Pi, all the problems we'd
expected and a few we hadn't.
But despite all the problems, the TAs: Deepa (who was more like a
co-presenter than a TA), Serpil, Lyz and Stuart, plus Rupa and I, were
able to get everyone working. All the attendees got their LEDs blinking,
their sonar rangefinders rangefinding, and the PiDoorbell script running.
Many people brought cameras and got their Pis snapping pictures when
the sensor registered someone in front of it.
Time restrictions and network problems meant that most people didn't
get the Dropbox and Twilio registration finished to get notifications
sent to their phones, but that's okay -- we knew that was a long shot,
and everybody got far enough that they can add the network
notifications later if they want.
And the most important thing is that everybody looked like they were
having a good time.
We haven't seen the reviews (I'm not sure if PyCon shares reviews with
the tutorial instructors; I hope so, but a lot of conferences don't)
but I hope everybody had fun and felt like they got something out of it.
The rest of PyCon was excellent, too. I went to some great talks, got lots
of ideas for new projects and packages I want to try, had fun meeting
new people, and got to see a little of Montreal. And ate a lot of good food.
Now I'm back in the land of enchantment, with its crazy weather -- we've
gone from snow to sun to cold breezes to HOT to threatening thunderstorm
in the couple of days I've been back. Never a dull moment!
I confess I'm missing those chocolate croissants for breakfast
just a little bit.
We still don't have internet: it's nearly 9 weeks since Comcast's
first visit, and their latest prediction (which changes every time I
talk to them) is a week from today.
But it's warm and sunny this morning,
there's a white-crowned sparrow singing outside the window,
and I've just seen our first hummingbird (a male -- I think it's a
broad-tailed, but it'll take a while to be confident of IDs on all
these new-to-me birds). PyCon was fun -- but it's nice to be home.
Tags: conferences, speaking, python
[
10:20 Apr 17, 2014
More conferences |
permalink to this entry |
]
Sun, 06 Apr 2014
Things have been hectic in the last few days before I leave for
Montreal with last-minute preparation for our PyCon tutorial,
Build
your own PiDoorbell - Learn Home Automation with Python
next Wednesday.
But New Mexico came through on my next-to-last full day with some
pretty interesting weather. A windstorm in the afternoon gave way
to thunder (but almost no lightning -- I saw maybe one indistinct flash)
which gave way to a strange fluffy hail that got gradually bigger until
it eventually grew to pea-sized snowballs, big enough and snow enough
to capture well in photographs as they came down on the junipers
and in the garden.
Then after about twenty minutes the storm stopped the sun came out.
And now I'm back to tweaking tutorial slides and thinking about packing
while watching the sunset light on the Rio Grande gorge.
But tomorrow I leave it behind and fly to Montreal.
See you at PyCon!
Tags: raspberry pi, python, hardware, programming, speaking, conferences, maker
[
18:55 Apr 06, 2014
More misc |
permalink to this entry |
]
Wed, 29 Jan 2014
The first batch of hardware has been ordered for Rupa's and my
tutorial at PyCon in Montreal this April!
We're presenting
Build
your own PiDoorbell - Learn Home Automation with Python on
the afternoon of Wednesday, April 9.
It'll be a hands-on workshop, where we'll experiment with the
Raspberry Pi's GPIO pins and learn how to control simple things like
an LED. Then we'll hook up sonar rangefinders to the RPis, and
build a little device that can be used to monitor visitors at your
front door, birds at your feeder, co-workers standing in front of your
monitor while you're away, or just about anything else you can think of.
Participants will bring their own Raspberry Pi computers and power supplies
-- attendees of last year's PyCon got them there, but a new Model A
can be gotten for $30, and a model B for $40.
We'll provide everything else.
We worried that requiring participants to bring a long list of esoteric
hardware was just asking for trouble, so we worked a deal with PyCon
and they're sponsoring hardware for attendees. Thank you, PyCon!
CodeChix is fronting the money
for the kits and helping with our travel expenses, thanks to donations
from some generous sponsors.
We'll be passing out hardware kits and SD cards at the
beginning of the workshop, which attendees can take home afterward.
We're also looking for volunteer T/As.
The key to a good hardware workshop is having lots of
helpers who can make sure everybody's keeping up and nobody's getting lost.
We have a few top-notch T/As signed up already, but we can always
use more. We can't provide hardware for T/As, but most of it's quite
inexpensive if you want to buy your own kit to practice on. And we'll
teach you everything you need to know about how get your PiDoorbell
up and running -- no need to be an expert at hardware or even at
Python, as long as you're interested in learning and in helping
other people learn.
This should be a really fun workshop! PyCon tutorial sign-ups just
opened recently, so sign up for the tutorial (we do need advance
registration so we know how many hardware kits to buy). And if you're
going to be at PyCon and are interested in being a T/A, drop me or
Rupa a line and we'll get you on the list and get you all the
information you need.
See you at PyCon!
Tags: raspberry pi, python, hardware, programming, speaking, conferences, maker
[
20:32 Jan 29, 2014
More hardware |
permalink to this entry |
]
Sun, 03 Nov 2013
While practicing a talk the other night on my new Asus laptop, my
Logitech remote presenter,
which had worked fine a few hours earlier, suddenly became flaky.
When I clicked the "next slide" button, sometimes there would be a
delay of up to ten seconds; sometimes it never worked at all, and I
had to click it again, whereupon the slide might advance once, twice,
or not at all. Obviously not useful.
Realizing that I'd been plugged into AC earlier in the day, and now
was running on battery, I plugged in the AC adaptor. And sure enough,
the presenter worked fine, no delays or glitches. So battery was the issue.
What's different about running on batteries?
I immediately suspected laptop-mode, which sets different power profiles
to help laptops save battery life when unplugged.
The presenter acts as a USB keyboard, sending key events like PAGE DOWN,
and on other distros (specifically Arch Linux) I've had problems with
USB keyboard devices disappearing when laptop-mode is active.
So I moved /etc/init.d/laptop-mode out of the way to disable it,
and rebooted. Tried the presenter again: no improvement.
But it was laptop-mode anyway.
Apparently even though /etc/init.d/laptop-mode says in its header
that its purpose is to start and stop laptop-mode, apparently
laptop-mode starts even without that file.
The key is the configuration file
/etc/laptop-mode/conf.d/usb-autosuspend.conf,
where I changed the line
CONTROL_USB_AUTOSUSPEND="auto"
to
CONTROL_USB_AUTOSUSPEND=0
In theory, I should have been able to do
service laptop-mode restart
to test it,
but I didn't trust that since I'd just established that
/etc/init.d/laptop-mode didn't actually control laptop-mode.
So I rebooted.
And the presenter worked just fine!
I was able to give my talk that afternoon without plugging in the AC cord.
Ironically, this particular talk was on giving tech talks, and one of
my points was that being prepared and practicing beforehand is
critical to giving a good talk. I'm sure glad I did that extra
practice run with the presenter and no power cord!
Tags: linux, laptop, speaking
[
16:13 Nov 03, 2013
More speaking |
permalink to this entry |
]
Tue, 06 Mar 2012
I got a request from SVLUG to fill in at the last minute for a speaker
with a health emergency. Fortunately, I'd been slated to give them my
Arduino talk from SCALE in a few months, so I was happy to accept.
I'm always glad for a chance to show off Bruce, my
Arduino-
and Linux-controlled 6-foot flying robotic shark.
And if anyone
reading this happens to be in town for PyCon, Symantec isn't that
far from Santa Clara, roughly a 10-minute drive ... and I promise there
will be at least two interesting Python scripts presented.
It's free, of course, so come hear the talk!
Here are the SVLUG meeting
details and directions.
Tags: speaking, arduino, hardware, robots, radio control, maker
[
19:25 Mar 06, 2012
More speaking |
permalink to this entry |
]
Tue, 17 Jan 2012
I've long wanted a way of converting my HTML presentation slides to PDF.
Mostly because conference organizers tend to freak out at slides in any
format other than Open/Libre Office, Powerpoint or PDF. Too many times,
I've submitted a tarball of my slides and discovered they weren't even
listed on the conference site. (I ask you, in what way is a tarball
more difficult to deal with than an .odp file?) Slide-sharing websites
also have a limited set of formats they'll accept.
A year or so ago, I added screenshot capability to my webkit-based
presentation program,
Preso,
do "screenshots", but I really needed PDF, not images.
Now, creating PDF from HTML shouldn't be that hard. Every browser has
a print function that can print to a PDF file. So why is it so hard
to create PDF from HTML in any kind of scriptable way?
After much searching and experimenting,
I finally found a Python code snippet that worked:
XHTML
to PDF using PyGTK4 Webkit from Alex Dong. It uses Python-Qt,
not GTK, so I can't integrate it into my Preso app, but that's okay --
a separate tool is just as good.
(I struggled to write an equivalent in PyGTK, but gave up due to the
complete lack of documentation of Python-Webkit-GTK, and not much
more for gtk.PrintOperation(). QWebView's documentation may not be
as complete as I'd like, but at least there is some.)
Printing from QtWebView to QPrinter
Here are the important things I learned about QWebView from fiddling
around with Alex's code to adapt it to what I needed, which is
printing a list of pages to sequentially numbered files:
- To print, you need to wait until the page has finished loading,
so connect a function to SIGNAL("loadFinished(bool)"),
then load(QUrl(url)).
- That loadFinished function remains registered, so as you load new
pages, it will be called each time. So you can load() the next URL
as the last step in your loadFinished callback.
- If you get confused about callbacks and connect more than one of
them, bad things happen, and only the last page gets printed, or
QApplication.exit() doesn't exit at all.
Things I learned about QPrinter():
- All the examples I found online set the page size with lines like
QPrinter.setPageSize(QPrinter.A4) or setPaperSize(QPrinter.A4)
(setPageSize is apparently deprecated in favor of setPaperSize); but
- If you want to set a specific size, you can do that with a line like
QPrinter.setPaperSize(QSizeF(1024, 768), QPrinter.DevicePixel)
The second argument (DevicePixel) is a
unit,
from this list.
- That line gives you the right aspect ratio. But if you think
"DevicePixels" means the size will correspond to pixels in your browser
window (just because the documentation says so), you're sadly mistaken.
- If you want a PDF page that actually corresponds to the size of your
browser window, you can get it by calling QWebView.setZoomFactor(z)
You'll have to experiment to find the right value of z;
I found I needed about 1.24 if I wanted to capture my
full 1366x768 slides, or exactly 2.0 if I wanted to restrict the
saved PDF to only the 1024x758 part that shows up in the projector.
Anyway, it's a little hacky with that empirical zoom factor ... but it works!
The program is here:
qhtmlprint:
convert HTML to PDF using Qt Webkit.
And it does produce reasonable PDF, with the text properly vectorized,
not just raster screenshots of each page.
Printing the slides in the right order
Terrific -- now I can feed a list of slides to qhtmlprint and get a
bunch of PDF files back. How do I print the right slides?
My slides are listed in order in an array inside a Javascript file,
one per line.
If I grep .html navigate.js
, I get a list like this:
"arduino.html",
"img.html?pix/arduinos/arduino-clones.jpg",
"getting_started.html",
"img.html?pix/projects/led.jpg",
//"blink.html",
"arduino-ide.html",
To pass that to qhtmlprint, I only need to remove the commented-out lines
(the ones with //) and strip off the quotes and commas. I can do that
all in one command with a grep and sed pipeline:
qhtmlprint ` fgrep .html navigate.js | grep -v // | sed -e 's/",/"/' -e 's/"//g' `
And voiaà! I have a bunch of fileNNN.pdf files.
Creating a multi-page slide deck
Okay, great! Now how do I stick those files all together into one
slide deck I can submit to conference organizers?
That part's easy -- Ghostscript can do it.
gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=slidedeck.pdf -dBATCH file*.pdf
And now slidedeck.pdf contains my whole presentation, ready to go.
Tags: programming, speaking, python
[
12:16 Jan 17, 2012
More programming |
permalink to this entry |
]
Thu, 12 Jan 2012
When I give talks that need slides, I've been using my
Slide
Presentations in HTML and JavaScript for many years.
I uploaded it in 2007 -- then left it there, without many updates.
But meanwhile, I've been giving lots of presentations, tweaking the code,
tweaking the CSS to make it display better. And every now and then I get
reminded that a few other people besides me are using this stuff.
For instance, around a year ago, I gave a talk where nearly all the
slides were just images. Silly to have to make a separate HTML file
to go with each image. Why not just have one file, img.html, that
can show different images? So I wrote some code that lets you go to
a URL like img.html?pix/whizzyphoto.jpg, and it will display
it properly, and the Next and Previous slide links will still work.
Of course, I tweak this software mainly when I have a talk coming up.
I've been working lately on my SCALE talk, coming up on January 22:
Fun
with Linux and Devices (be ready for some fun Arduino demos!)
Sometimes when I overload on talk preparation, I procrastinate
by hacking the software instead of the content of the actual talk.
So I've added some nice changes just in the past few weeks.
For instance, the speaker notes that remind me of where I am in
the talk and what's coming next. I didn't have any way to add notes on
image slides. But I need them on those slides, too -- so I added that.
Then I decided it was silly not to have some sort of automatic
reminder of what the next slide was. Why should I have to
put it in the speaker notes by hand? So that went in too.
And now I've done the less fun part -- collecting it all together and
documenting the new additions. So if you're using my HTML/JS slide
kit -- or if you think you might be interested in something like that
as an alternative to Powerpoint or Libre Office Presenter -- check
out the presentation I have explaining the package, including the
new features.
You can find it here:
Slide
Presentations in HTML and JavaScript
Tags: speaking, javascript, html, web, programming, tech
[
21:08 Jan 12, 2012
More speaking |
permalink to this entry |
]
Mon, 28 Feb 2011
Another year of
SCALE,
the Southern CAlifornia Linux Expo, is over, and it was as good as ever.
Talks
A few standout talks:
Leigh Honeywell's keynote was a lively and enjoyable discussion of
hackerspaces --
from the history of the movement to a discussion of some of the
coolest and most innovative hackerspaces around today. She had plenty of
stories and examples that left everyone in the audience itching to
get involved with a local hackerspace, or start one if necessary.
John Wise and Eugene Clement of
LinuxAstronomy.com
presented the entertaining
"A Reflection on Classroom Robotics with Linux Robots in classrooms".
They've taught kids to build and program robots that follow lines,
solve mazes, and avoid obstacles. The students have to figure out
how to solve problems, details like when and how far to back up.
What a fantastic class! I can't decide if I'd rather teach a class
like that or take it myself ...
but either way, I enjoyed the presentation.
They also had a booth in the exhibit
hall where they and several of their students presented their
Arduino-based robots exploring simulated Martian terrain.
Jonathan Thomas spoke about his OpenShot video editor and the
development community behind it, with lots of video samples of what
OpenShot can do.
Sounds like a great program and a great community as well:
I'll definitely be checking out OpenShot
next time I need to edit a video.
It's worth mentioning that both the robotics talk and the OpenShot one
were full of video clips that ran smoothly without errors.
That's rare at conferences -- videos so often cause problems
in presentations (OpenOffice is particularly bad at them).
These presenters made it look effortless, which most likely points to
a lot of preparation and practice work beforehand.
Good job, guys!
Larry Bushey's "Produce An Audio Podcast Using Linux" was clear and
informative, managing to cover the technology, both hardware and
software, and the social factors like how often to broadcast, where
to host, and how to get the word out and gain and keep listeners
while still leaving plenty of time for questions.
The Exhibit Hall
In between talks I tried to see some of the exhibit hall, which was
tough, with two big rooms jam-packed with interesting stuff.
Aside from LinuxAstronomy and their robots,
there were several other great projects for getting technology into schools:
Partimus from the bay area, and Computers4Kids more local to LA,
both doing excellent work.
The distro booths all looked lively. Ubuntu California's booth was
always so packed that it was tough getting near to say hi, Fedora was well
attended and well stocked with CDs, and SuSE had a huge array of
givaways and prizes. Debian, Gentoo, Tiny Core and NetBSD were there as well.
Distro Dilemma and "the Hallway track"
Late in the game I discovered even Arch Linux had a booth hidden off
in a corner. I spent some time there hoping I might get help for my
ongoing Arch font rendering problem, but ended up waiting a long time
for nothing. That left me with a dilemma for my talk later that day:
Arch works well on my laptop except that fonts sometimes render with
chunks missing, making them ugly and hard to read; but a recent update
of Ubuntu Lucid pulled in some weird X change that keeps killing my
window manager at unpredictable times. What a choice! In the end I
went with Ubuntu, and indeed X did go on the fritz, so I had to do
without my live demo and stick to my prepared slides. Not a tragedy,
but annoying. The talk went well otherwise.
I had a great conversation with Asheesh from the
OpenHatch project
about how to make open source projects more welcoming to new
contributors. It's something I've always felt strongly about, but I
feel powerless to change existing projects so I don't do anything.
Well, OpenHatch is doing something about it, and I hope I'll be able
to help.
The Venue
Not everything was perfect. The Hilton is a new venue for SCALE,
and there were some issues.
On Saturday, every room was full, with people
lining the walls and sitting on floors. This mostly was not a room size
problem, merely a lack of chairs. Made me wonder if we should go all
opensource on them and everybody bring their own lawn chair if
the hotel can't provide enough.
Parking was a problem too. The Hilton's parking garage fills up early,
so plan on driving for ten minutes through exhaust-choked tunnels
hoping to find a space to squeeze into. We got lucky, so I didn't
find out if you have to pay if you give up and exit without
finding a spot.
Then Sunday afternoon they ran short of validation
tickets (the ones that reduce the cost from $22 to $9), and it wasn't
clear if there was any hope of more showing up (eventually some did).
To top it off, when we finally left on Sunday
the payment machine at the exit swallowed my credit card, requiring
another 15 minutes of waiting for someone to answer the buzzer.
Eventually the parking manager came down to do a magic reset rite.
So I didn't come away with a great impression of the Hilton.
But it didn't detract much from a wonderful conference full of
interesting people -- I had a great time, and would (and do) recommend
SCALE to everyone with any interest in Linux.
But it left me musing about the pros and cons of different venues ...
a topic I will discuss in a separate post.
Tags: conferences, linux, speaking, scale, scale9x
[
22:39 Feb 28, 2011
More conferences |
permalink to this entry |
]
Wed, 21 Jul 2010
On Linux Planet yesterday: an article on how to write scripts for chdk,
the Canon Hack Development Kit -- Part 3 in my series on CHDK.
Time-Lapse
Photography with your Inexpensive Canon Camera (CHDK p. 3)
I found that CHDK scripting wasn't quite as good as I'd hoped -- some
of the functions, especially the aperture and shutter setting, were
quite flaky on my A540 so it really didn't work to write a bracketing
script. But it's fantastic for simple tasks like time-lapse photography,
or taking a series of shots like the Grass Roots Mapping folk do.
If you're at OSCON and you like scripting and photos, check out my
session on Thursday afternoon at 4:30:
Writing
GIMP Plug-ins and Scripts, in which I'll walk through several GIMP
scripts in Python and Script-Fu and show some little-known tricks
you can do with Python plug-ins.
Tags: photo, writing, programming, mapping, conferences, oscon, speaking
[
10:31 Jul 21, 2010
More photo |
permalink to this entry |
]
Sun, 20 Jun 2010
Regular readers probably know that I use
HTML
for the slides in my talks, and I present them either with Firefox
in fullscreen mode, or with my own Python
preso
tool based on webkit.
Most of the time it works great. But there's one situation that's
always been hard to deal with: low-resolution projectors.
Most modern projectors are 1024x768, and have been for quite a few years,
so that's how I set up my slides. And then I get asked to give a talk
at a school, or local astronomy club, or some other group that
has a 10-year-old projector that can only handle 800x600. Of course,
you never find out about this ahead of time, only when you plug in
right before the talk. Disaster!
Wait -- before you object that HTML pages shouldn't use pixel values and
should work regardless of the user's browser window size: I completely
agree with you. I don't specify absolute font sizes or absolute
positioning on web pages -- no one should.
But presentation slides are different: they're designed for
a controlled environment where everyone sees the same thing using the
same software and hardware.
I can maintain a separate stylesheet -- that works for making the
font size smaller but it doesn't address the problem of pictures too
large to fit (and we all like to use lots of pictures in presentations,
right?) I can maintain two separate copies of the slides for the two sizes,
but that's a lot of extra work and they're bound to get out of sync.
Here's a solution I should have thought of years ago: full-page zoom.
Most major browsers have offered that capability for years, so the
only trick is figuring out how to specify it in the slides.
IE and the Webkit browsers (Safari, Konqueror, etc.) offer a wonderful
CSS property called zoom. It works like this:
body {
zoom: 78.125%;
}
78.125% is the ratio between an 800-pixel projector and a 1024-pixel one.
Just add this line, and your whole page will be scaled down to the
right size. Lovely!
Lovely, except it doesn't work on Firefox
(bug 390936).
Fortunately, Firefox has another solution: the more general and not yet
standardized CSS transform, which Mozilla has implemented as the
Mozilla-specific property
-moz-transform.
So add these lines:
body {
position: absolute; left: 0px; top: 0px;
-moz-transform: scale(.78125, .78125);
}
The position: absolute is needed because when Firefox scales
with -moz-transform, it also centers whatever it scaled, so the
slide ends up in the top center of the screen.
On my laptop, at least, it's the upper left part of the screen that
gets sent to the projector, so slides must start in the upper left corner.
The good news is that these directives don't conflict; you can put
both zoom and -moz-transform in the same rule and things
will work fine. So I've added this to the body rule in my slides.css:
/* If you get stuck on an 800x600 projector, use these:
zoom: 78.125%;
position: absolute; left: 0px; top: 0px;
-moz-transform: scale(.78125, .78125);
*/
Uncomment in case of emergency and all will be well.
(Unless you use Opera, which doesn't seem to understand either version.)
Tags: speaking, html, css, browsers, firefox, mozilla
[
12:14 Jun 20, 2010
More tech/web |
permalink to this entry |
]
Fri, 05 Mar 2010
(and how to convert MPEG video to animated GIF)
I gave an
Ignite talk
this week at
Ignite Silicon Valley.
It was a great event! Lots of entertaining talks about all sorts of topics.
I'd always wanted to do an Ignite speech.
I always suspected the kicker would be format:
O'Reilly's guidelines specified PowerPoint format.
Of course, as a Linux user, my only option for creating PowerPoint
slides is OpenOffice. Historically, OpenOffice and I haven't gotten
along very well, and this slide show was no exception. Happily,
Ignite needs only 20 slides ... how hard can that be, right?
Most of my slides were very simple (a few words, or one picture),
with one exception: I had one simulation I wanted to show as a
video. (When I give this presentation on my own machine, I run
the simulation live, but that's not an option on someone else's machine.
Impress woes
First I wrestled with Open Office to create the non-animated slides.
It was harder than I'd expected.
I just loved having to go back and un-capitalize words that
OO kept helpfully re-capitalizing for me.
And the way it wouldn't let me change text format on any word that
triggered the spellchecker, because it needed to show me the spellcheck
context menu instead. And the guessing game clicking around trying to
find a place where OO would let me drag to move the text to somewhere
where it was approximately centered.
And when I finally thought I had everything, I saved as .ppt, re-loaded
and discovered that it had lost all my formatting, so instead of yellow
96 point centered text I had white 14-point left-aligned, and I had to
go in and select the text on each slide and change three or
four properties on each one.
And I couldn't use it for an actual presentation.
In slideshow mode, it only showed the first slide about one time out
of six. The other times, it showed a blank slide for the first 15
seconds before auto-advancing to the second one.
The auto-advance timing was off anyway (see below).
Fortunately, I didn't need use OpenOffice for this presentation;
I only needed it to create the PPT file.
I ended up making a separate version of the slides in HTML to practice with.
Inserting a movie
But I did eventually have all my static slides ready.
It was time to insert my movie, which I had converted to MPEG1
on the theory that it works everywhere. With the mpeg added,
I saved one copy to OpenOffice's native format of .odp,
plus the .ppt copy I would need for the actual presentation.
Then I quit and opened the .ppt -- and the video slide was blank.
A bit of searching revealed that this was a long-known issue,
bug 90272,
but there seems to be no interest in fixing it.
So I was out of luck if I wanted to attach an MPEG,
unless I could find someone with a real copy of PowerPoint.
Plan B: Animated GIF
Next idea: convert my 15-second video to an animated GIF.
But how to do that? Google found me quite a few web pages that claimed
to give the recipe, but they all led to the same error message:
ERROR: gif only handles the rgb24 pixel format. Use -pix_fmt rgb24.
So what? Just add -pix_fmt rgb24
to the commandline,
right? But the trick turns out to be where to add it, since
ffmpeg turns out to be highly picky about its argument order.
Here's the working formula to convert a movie to animated GIF:
$ ffmpeg -i foo.mpeg -pix_fmt rgb24 foo.gif
This produced a huge file, though, and it didn't really need to be
1024x768, so I scaled it down with ImageMagick:
convert -depth 8 -scale 800x600 flock-mpeg.gif flock-mpeg-800.gif
which brought the file size from 278M down to a much more reasonable
1.9M.
Happily, OpenOffice does seem to be able to import and save animated
GIFs, even to .ppt format. It has trouble displaying them -- that's
bug 90272
-- so you wouldn't want to use this format for a presentation you were
actually going to give in OpenOffice. But as I mentioned, OpenOffice
was already out for that.
If you do this, make sure all your static slides are finished first.
Once I loaded the animated GIF,
OpenOffice slowed to a crawl and it was hard to do anything at all.
Moving text on a slide turned into an ordeal of "hover the mouse where
you think a move cursor might show up, and wait 45 seconds ... cursor
change? No? Okay, move a few pixels and wait again." Nothing happened
in real time. A single mouse click wouldn't register for 30 seconds or
more. And this was on my fast dual-core desktop with 4G RAM;
I don't even want to think what it would be like on my laptop.
I don't know if OOo is running the animations continuously, or what --
but be sure you have everything else finished before you load any animations.
The moment of truth
I never found out whether my presentation worked in real Microsoft Powerpoint.
As it turned out, at the real event, the display machine was a Mac
running Keynote. Keynote was able to import the .ppt from OpenOffice,
and to display the animation. Whew!
One curiosity about the display: the 15 seconds per slide auto-advance
failed on the animated slide. The slide showed for 30 seconds rather
than 15. I had written this off as another OpenOffice bug, so I wasn't
prepared when Keynote did the same thing in the live presentation,
and I had to extemporize for 15 seconds.
My theory, thinking about it afterward, is that the presentation
programs don't start the counter until the animation has finished
playing. So for an Ignite presentation, you might need to set the
animation to play for exactly 15 seconds, then set that slide to
advance after 0 seconds. If that's even possible.
Or just use HTML. The great irony of this whole story is that some of
the other presenters used their own laptops, so I probably could have
used my HTML version (which had none of these problems) had I asked.
I will definitely remember that for the next Ignite!
Meanwhile, I suppose it's good for me to try OO Impress every few
years and remind myself why I avoid it the rest of the time.
Tags: speaking, open office, video, rant, flame
[
16:36 Mar 05, 2010
More speaking |
permalink to this entry |
]
Sat, 20 Feb 2010
I gave a lightning talk at the Ubucon -- the Ubuntu miniconf -- at the
SCALE 8x, Southern
California Linux Expo yesterday. I've been writing about grub2
for Linux Planet but it left
me with some, well, opinions that I wanted to share.
A lightning talk
is an informal very short talk, anywhere from 2 to 5 minutes.
Typically a conference will have a session of lightning talks,
where anyone can get up to plug a project, tell a story or flame about
an annoyance. Anything goes.
I'm a lightning talk junkie -- I love giving them, and I
love hearing what everyone else has to say.
I had some simple slides for this particular talk. Generally I've
used bold or other set-offs to indicate terms I showed on a slide.
SCALE 8x, by
the way, is awesome so far, and I'm looking forward to the next two days.
Grub2 3-minute lightning talk
What's a grub? A soft wriggly worm.
But it's also the Ubuntu Bootloader.
And in Karmic, we have a brand new grub: grub2!
Well, sort of. Karmic uses Grub 2 version 1.97 beta4.
Aside from the fact that it's a beta -- nuff said about that --
what's this business of grub TWO being version ONE point something?
Are you hearing alarm bells go off yet?
But it must be better, right?
Like, they say it cleans up partition numbering.
Yay! So that confusing syntax in grub1, where you have to say
(hd0,0) that doesn't look like anything else on Linux,
and you're always wanting to put the parenthesis in the wrong place
-- they finally fixed that?
Well, no. Now it looks like this: (hd0,1)
THEY KEPT THE CONFUSING SYNTAX BUT CHANGED THE NUMBER!
Gee, guys, thanks for making things simpler!
But at least grub2 is better at graphics, right? Like what if
you want to add a background image under that boring boot screen?
A dark image, because the text is white.
Except now Ubuntu changes the text color to black.
So you look in the config file to find out why ...
if background_image `make_system_path_relative...
set color_normal=black/black
... there it is! But why are there two blacks?
Of course, there's no documentation. They can't be fg/bg --
black on black wouldn't make any sense, right?
Well, it turns out it DOES mean foreground and background -- but the second
"black" doesn't mean black. It's a special grub2 code for "transparent".
That's right, they wrote this brand new program from scratch, but they
couldn't make a parser that understands "none" or "transparent".
What if you actually want text with a black background? I have
no idea. I guess you're out of luck.
Okay, what about dual booting? grub's great at that, right?
I have three distros installed on this laptop. There's a shared /boot
partition. When I change something, all I have to do is edit a file
in /boot/grub. It's great -- so much better than lilo! Anybody remember
what a pain lilo was?
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
Oops, wait -- not with grub2. Now I'm not supposed to edit
that file. Instead, I edit files in TWO places,
/etc/grub.d and /etc/default/grub.conf, and then
run a program in a third place, /usr/bin/update-grub.
All this has to be done from the same machine where you installed
grub2 -- if you're booted into one of your other distros, you're out
of luck.
grub2 takes us back to the bad old days of lilo.
FAIL
Grub2 really is a soft slimy worm after all.
But I have some ideas for workarounds. If you care, watch my next
few articles on LinuxPlanet.com.
Update: links to Linux Planet articles:
Part 1: Grub2 worms into Ubuntu
Part 2: Cleaning up your boot menu
Part 3: Why use Grub2? Good question!
Tags: grub, ubuntu, linux, boot, speaking, conferences
[
11:29 Feb 20, 2010
More linux |
permalink to this entry |
]
Wed, 11 Nov 2009
I almost always write my
presentation
slides using HTML. Usually I use Firefox to present them; it's
the browser I normally run, so I know it's installd and the slides
all work there. But there are several disadvantages to using Firefox:
- In fullscreen mode, it has a small "minimized urlbar" at the
top of the screen that I've never figured out to banish -- not only
is it visible to users, but it also messes up the geometry of
the slides (they have to be 762 pixels high rather than 768);
- It's very heavyweight, bad when using a mini laptop or netbook;
- Any personal browsing preferences, like no-animation,
flashblock or noscript, apply to slides too unless explicitly
disabled, which I've forgotten to do more than once before a talk.
Last year, when I was researching lightweight browsers, one of the
ones that impressed me most was something I didn't expect: the demo
app that comes with
pywebkitgtk
(package python-webkit on Ubuntu).
In just a few lines of Python, you can create your own browser with
any UI you like, with a fully functional content area.
Their current demo even has tabs.
So why not use pywebkitgtk to create a simple fullscreen
webkit-based presentation tool?
It was even simpler than I expected. Here's the code:
#!/usr/bin/env python
# python-gtk-webkit presentation program.
# Copyright (C) 2009 by Akkana Peck.
# Share and enjoy under the GPL v2 or later.
import sys
import gobject
import gtk
import webkit
class WebBrowser(gtk.Window):
def __init__(self, url):
gtk.Window.__init__(self)
self.fullscreen()
self._browser= webkit.WebView()
self.add(self._browser)
self.connect('destroy', gtk.main_quit)
self._browser.open(url)
self.show_all()
if __name__ == "__main__":
if len(sys.argv) <= 1 :
print "Usage:", sys.argv[0], "url"
sys.exit(0)
gobject.threads_init()
webbrowser = WebBrowser(sys.argv[1])
gtk.main()
That's all! No navigation needed, since the slides include javascript
navigation to skip to the next slide, previous, beginning and end.
It does need some way to quit (for now I kill it with ctrl-C)
but that should be easy to add.
Webkit and image buffering
It works great. The only problem is that webkit's image loading turns out
to be fairly poor compared to Firefox's. In a presentation where most
slides are full-page images, webkit clears the browser screen to
white, then loads the image, creating a noticable flash each time.
Having the images in cache, by stepping through the slide show then
starting from the beginning again, doesn't help much (these are local
images on disk anyway, not loaded from the net). Firefox loads the
same images with no flash and no perceptible delay.
I'm not sure if there's a solution. I asked some webkit developers and
the only suggestion I got was to rewrite the javascript in the slides
to do image preloading. I'd rather not do that -- it would complicate
the slide code quite a bit solely for a problem that exists only in
one library.
There might be some clever way to hack double-buffering in the app code.
Perhaps something like catching the 'load-started' signal,
switching to another gtk widget that's a static copy of the current
page (if there's a way to do that), then switching back on 'load-finished'.
But that will be a separate article if I figure it out. Ideas welcome!
Update, years later: I've used this for quite a few real presentations now.
Of course, I keep tweaking it: see
my scripts page
for the latest version.
Tags: programming, hack, python, web, speaking
[
17:12 Nov 11, 2009
More programming |
permalink to this entry |
]
Sat, 03 Oct 2009
Now and then I idly exchange ideas with some Toastmasters friends about
manuals we wish Toastmasters would offer. Sometimes we come up with
"meta-manuals", projects which can be done by collecting projects from
existing manuals.
Here's a manual I'd like to see.
The projects are arranged in approximate order of difficulty
and cover most of the skills needed by speakers at technical
conferences.
Each project includes suggestions for which existing Toastmasters manual
could be used.
Speaking at Conferences
Projects:
- Give a technical speech
(15-20 min, longer if club schedule allows)
Give a detailed talk on some technical aspect of your field,
for specialists in the field.
Use demos, slides and other visual aids effectively.
Handle questions (and perhaps heckling) from the audience.
(Speaking to Inform: any, or Technically Speaking: 1 or 4.)
- Give a Lightning Talk (2-3 min)
Give a short talk for the whole conference audience.
Any topic related to the field:
describe a project, teach a technique, generate enthusiasm, air a gripe.
(Use the basic manual
or Speaking to Inform, depending on subject.)
- Give a beginner talk
(15-20 min, longer if club schedule allows)
Introduce your subject to beginners in the field, or outsiders
who may not know much about it. Use visual aids and demos to
create interest and explain the topic without using jargon.
(Speaking to Inform: any, or Technically Speaking: 3.)
- Give an Ignite talk (5 min)
Give a five minute talk on any topic, using 20 slides that advance
automatically every 15 seconds, as described at
ignite.oreilly.com.
Pecha Kucha also counts.
(Many choices, depending on subject.)
- Give a keynote address
(15-20 min, longer if club schedule allows)
Give a speech suitable to be the keynote for a conference.
(The Professional Speaker: 1, or basic manual: 9.)
- Bonus project: Speak about speaking
Explain to your audience how to give a good conference speech.
(Speaking to Inform: 1-3, or Better Speaker: any.)
- Update bonus project: Dealing with heckers
Give a speech and have people in the audience try to disrupt your
talk, interrupt, contradict or sidetrack you.
(Public Relations has "Speaking under fire" but that's not
really the same thing.)
Tags: speaking, toastmasters
[
11:09 Oct 03, 2009
More speaking |
permalink to this entry |
]
Fri, 06 Feb 2009
I've written before about how I'd like to get a netbook like an Asus Eee,
except that the screen resolution puts me off: no one makes a netbook
with vertical resolution of more than 600. Since most projectors prefer
1024x768, I'm wary of buying a laptop that can't display that resolution.
(What was wrong with my beloved old Vaio? Nothing, really, except that
the continued march of software bloat means that a machine that can't
use more than 256M RAM is hurting when trying to run programs
(*cough* Firefox *cough) that start life by grabbing about 90M and
goes steadily up from there. I can find lightweight alternatives for
nearly everything else, but not for the browser -- Dillo just doesn't
cut it.)
Ebay turned out to be the answer: there are lots of subnotebooks
there, nice used machines with full displays at netbook prices.
And so a month before LCA I landed a nice Vaio TX650 with 1.5G RAM,
Pentium M, Intel 915GM graphics and Centrino networking.
All nice Linux-supported hardware.
But that raised another issue: how do widescreen laptops
(the TX650 is 1366x768) talk to a projector?
I knew it was possible -- I see people presenting from widescreen
machines all the time -- but nobody ever writes about how it works.
The first step was to get it talking to an external monitor at all.
I ran a VGA cable to my monitor, plugged the other end into the Vaio
(it's so nice not to need a video dongle!) and booted. Nothing. Hmm.
But after some poking and googling, I learned that
with Intel graphics, xrandr is the answer:
xrandr --output VGA --mode 1024x768
switches the external VGA signal on, and
xrandr --auto
switches it back off.
Update, April 2010: With Ubuntu Lucid, this has changed and now it's
xrandr --output VGA1 --mode 1024x768
-- in other words, VGA changed to VGA1. You can run xrandr
with no arguments to get a list of possible output devices and find
out whether X sees the external projector or screen correctly.
Well, mostly. Sometimes it doesn't work -- like, unfortunately,
at the lightning talk session, so I had to give my
talk without visuals. I haven't figured that out yet.
Does the projector have to be connected before I run xrandr?
Should it not be connected until after I've already run xrandr?
Once it's failed, it doesn't help to run xrandr again ... but
a lot of fiddling and re-plugging the cable and power cycling the
projector can sometimes fix the problem, which obviously isn't helpful
in a lightning talk situation.
Eventually I'll figure that out and blog it (ideas, anyone?)
but the real point of today's article is resolution. What I
wanted to know was: what happened to that wide 1366-pixel screen when
I was projecting 1024 pixels? Would it show me some horrible elongated
interpolated screen? Would it display on the left part of the laptop
screen, or the middle part?
The answer, I was happy to learn, is that it does the best thing
possible: it sends the leftmost 1024 pixels to the projector, while
still showing me all 1366 pixels on the laptop screen.
Why ... that means ... I can write notes for myself, to display in
the rightmost 342 screen pixels!
All it took was a little bit of
CSS hacking
in my
HTML slide
presentation package, and it worked fine.
Now I have notes just like my Mac friends with their Powerpoint and
their dual-head video cards, only I get to use Linux and HTML.
How marvellous! I could get used to this widescreen stuff.
Tags: laptop, X11, linux, speaking, projector, lca2009, linux.conf.au
[
22:12 Feb 06, 2009
More linux/laptop |
permalink to this entry |
]
Thu, 22 Jan 2009
The highlight of Thursday morning was a filler: one of the speakers
had to cancel, so Paul Fenwick filled in with a combination of two
short talks: "The Art of Klingon Programming" and "What's new in Perl
5.10?" I'm not a Perl programmer (at least not when I have a choice)
but his talks were entertaining and even educational. What struck me
most was that showmanship and humor don't have to detract from
technical content. I'd had a discussion the previous day about the
balance of offering lots of technical content versus entertaining the
audience and not overwhelming them. Most technical talks are either
dry, content heavy and so jam packed with information that you can't
possibly remember everything, or lighter weight and glitzy but with
not much real technical content and a "watered down" feeling.
Paul's Klingon talk was one of the most content-full presentations
I've seen at a conference, with lots of code examples, yet it kept
the audence laughing, listening and grokking (to mix SF metaphors)
all the way through. Showmanship can make it easier, not harder,
to remember technical content.
In the afternoon, I'd been very much looking forward to the Arduino
tutorial (Jonathan Oxer and Hugh Blemings) but it was a bit of a
disappointment.
The acoustics of the room and the handheld microphone, combined with
the interactive nature of the presentation, meant that I could barely
understand a word High Blemings said, and only some of what Jon Oxer
said. (I've heard Jon Oxer talk before and never had trouble, so
I primarily blame the room.)
Partway through, I skipped out to go check Donna Benjamin's "The Joy
of Inkscape." It had been moved from its original lecture hall to a
much smaller room with tables. The smaller room was Standing Room
Only, a raucous and enthusiastic bunch who (the sitting ones, at
least) were nearly all tapping away on laptops exploring either the
demo Donna was showing or other Inkscape projects.
It was clearly a
hugely successful and fun tutorial and I wanted to stay, but I
couldn't find a place to sit where I could both see the screen and
hear Donna, so I made my way back to Arduino.
The second half, when they
demoed various interesting sensors and a few unusual Arduino
applications, was better than the first. But talking to folks later,
a number of us were surprised because we expected a more interactive
tutorial (the prep had encouraged us to bring or buy Arduino hardware).
The hot talk of the day was one I missed, after the tea break.
I went to a talk on Spring, a robotics library (Clinton Roy),
which was interesting
enough and certainly popular (lots of people sitting by the door
because all the seats were full) but afterward all I heard
was people enthusing about Jeff Arnold's amazing Ksplice talk.
He demonstrated a system of updating kernels in place, with no
reboot required. People couldn't say enough about the talk,
and I'm looking forward to downloading the video and seeing what I missed.
Tags: lca2009, linux.conf.au, speaking, arduino
[
14:41 Jan 22, 2009
More conferences/lca2009 |
permalink to this entry |
]
Sat, 09 Aug 2008
Every summer I volunteer as an instructor for a one-day Javascript
programming class at the GetSET
summer technology camp for high school girls. GetSET is a great
program run by the Society of Women Engineers.
it's intended for minority girls from relatively poor neighborhoods,
and the camp is free to the girls (thanks to some great corporate
sponsors). They're selected through a competitive interview process
so they're all amazingly smart and motivated, and it's always rewarding
being involved.
Teaching programming in one day to people with no programming
background at all is challenging, of course. You can't get into any
of the details you'd like to cover, like style, or debugging
techniques. By the time you get through if-else, for and while loops,
some basic display methods, the usual debugging issues like reading
error messages, and typographical issues like
"Yes, uppercase and lowercase really are different" and "No, sorry,
that's a colon, you need a semicolon", it's a pretty full day and
the students are saturated.
I got drafted as lead presenter several years ago, by default by
virtue of being the only one of the workshop leaders who actually
programs in Javascript. For several years I'd been asking for a chance
to rewrite the course to try to make it more fun and visual
(originally it used a lot of form validation exercises), and
starting with last year's class I finally got the chance. I built
up a series of graphics and game exercises (using some of Sara
Falamaki's Hangman code, which seemed perfect since she wrote it
when she was about the same age as the girls in the class) and
it went pretty well. Of course, we had no idea how fast the girls
would go or how much material we could get through, so I tried to
keep it flexible and we adjusted as needed.
Last year went pretty well, and in the time since then we've
exchanged a lot of email about how we could improve it.
We re-ordered some of the exercises, shifted our emphasis in a few
places, factored some of the re-used code (like windowWidth()) into
a library file so the exercise files weren't so long, and moved more of
the visual examples earlier.
I also eliminated a lot of the slides. One of the biggest surprises
last year was the "board work". I had one exercise where the user
clicks in the page, and the student has to write the code to figure
out whether the click was over the image or not. I had been nervous
about that exercise -- I considered it the hardest of the exercises.
You have to take the X and Y coordinates of the mouse click, the X and
Y coordinates of the image (the upper left corner of the <div>
or <img> tag), and the size of the image (assumed to be 200x200),
and turn that all into a couple of lines of working Javascript code.
Not hard once you understand the concepts, but hard to explain, right?
I hadn't made a slide for that, so we went to the whiteboard to draw
out the image, the location of the mouse click, the location of the
image's upper left corner, and figure out the math ...
and the students, who had mostly been sitting passively
through the heavily slide-intensive earlier stuff, came alive. They
understood the diagram, they were able to fill in the blanks and keep
track of mouse click X versus image X, and they didn't even have much
trouble turning that into code they typed into their exercise. Fantastic!
Remembering that, I tried to use a lot fewer slides this year.
I felt like I still needed to have slides to explain the basic
concepts that they actually needed to use for the exercises -- but
if there was anything I thought they could figure out from context,
or anything that was just background, I cut it. I tried for as few
slides as possible between exercises, and more places where we could
elicit answers from the students. I think we still have too many slides
and not enough "board work" -- but we're definitely making progress,
and this year went a lot better and kept them much better engaged.
We're considering next year doing the first several exercises on the
board first, then letting them type it in to their own copies to
verify that it works.
We did find we needed to leave code examples visible:
after showing slides saying something like "Ex 7:
Write a loop that writes a line of text in each color", I had to
back up to the previous slide where I'd showed what the code actually
looked like. I had planned on their using my "Javascript Quick
Reference" handout for reference and not needing that information
on the slides; but in fact, I think they were confused about the
quickref and most never even opened it. Either that information needs
to be in the handout, or it needs to be displayed on the screen as
they work, or I have to direct them to the quickref page explicitly
("Now turn to page 3 in ...") or put that information in the exercises.
The graphical flower exercises were a big hit this year (I showed them
early and promised we'd get to them, and when we did, just before
lunch, several girls cheered) and, like last year, some of the girls
who finished them earlier decided on their own that they wanted to
change them to use other images, which was also a big hit. Several
other girls decided they wanted more than 10 flowers displayed, and
others hit on the idea of changing the timeout to be a lot shorter,
which made for some very fun displays. Surprisingly, hardly anyone
got into infinite loops and had to kill the browser (always a
potential problem with javascript, especially when using popups
like alert() or prompt()).
I still have some issues I haven't solved, like what to do about
semicolons and braces. Javascript is fairly agnostic about
them. Should I tell the girls that they're required? (I did that
this year, but it's confusing because then when you get to "if"
statements you have to explain why that's different.) Not mention
them at all? (I'm leaning toward that for next year.)
And it's always a problem figuring out what the fastest girls should
do while waiting for the rest to finish.
This year, in addition to trying to make each exercise shorter,
we tried having the girls work on them in groups of
two or three, so they could help each other. It didn't quite work out
that way -- they all worked on their own copies of the exercises
but they did seem to collaborate more, and I think that's the best
balance. We also encourage the ones who finish first to help the girls
around them, which mostly they do on their own anyway.
And we really do need to find a better editor we can use on the
Windows lab machines instead of Wordpad. Wordpad's font is too small on
the projection machine, and on the lab machines it's impossible for
most of us to tell the difference between parentheses, brackets and
braces, which leads to lots of time-wasting subtle bugs. Surely
there's something available for Windows that's easy to use,
freely distributable, makes it easy to change the font, and has
parenthesis and brace matching (syntax highlighting would be nice too).
Well, we have a year to look for one now.
All in all, we had a good day and most of the girls gave the class
high marks. Even the ones who concluded "I learned I shouldn't
be a programmer because it takes too much attention to detail"
said they liked the class. And we're fine with that --
not everybody wants to be a programmer, and the point isn't to
force them into any specific track. We're happy if we can give
them an idea of what computer programming is really like ...
then they'll decide for themselves what they want to be.
Tags: education, javascript, programming, speaking
[
12:54 Aug 09, 2008
More education |
permalink to this entry |
]
Thu, 06 Mar 2008
With all the zillions of Toastmasters club web pages, very few
people seem to write about them. A conversation in our club today
about the advanced manuals made me realize that I'd never seen a
review of the various Toastmasters advanced manuals -- which ones
are useful, which ones are fun, which ones are poorly written or
contain gotchas that makes it hard to complete their projects?
So I wrote one: a
Review of
Toastmasters manuals.
Tags: speaking, toastmasters
[
21:16 Mar 06, 2008
More speaking |
permalink to this entry |
]
Wed, 24 Oct 2007
I just got back from
She's Geeky.
What a rush! It'll take me a while to wind down from this fabulous
all-women meeting.
I have to admit, I was initially dubious. A conference for geeky women
sounded great, but it struck me as kind of
expensive -- $175 (with a $125 early-bird rate). That's very cheap
as tech conferences go, but for a two-day "unconference", it was
enough to turn off most local techie women I know: nearly all of them
knew about She's Geeky and said "I'd love to go but I can't afford
it." Full disclosure: I said the same thing, and wouldn't have gone
myself had I not gotten a "scholarship", for which I am immensely grateful.
(In retrospect, considering how well run it was, it probably
would have been worth the early-bird price. But that's not easy
to tell ahead of time.)
Monday consisted of lunch and informal discussion followed by
two sessions of scheduled talks. I particularly liked the afternoon
schedule, which included two different sessions of speaker training:
the theory being that one factor holding women back in technology
jobs is that we don't make ourselves visible by public speaking
as much as we could. I went to the "Lightening (sic) Talks" session,
headed by Danese Cooper. It didn't make me lighter, but we got some
great advice at giving conference talks (lightning and otherwise)
plus two rounds of practice at three minute talks.
I'm not sure what I enjoyed more, the practice and useful feedback or
the chance to listen to so many great short talks on disparate and
interesting subjects.
Tuesday started way before normal geek time, with bagels and espresso
and an explanation by conference organizer Kaliya Hamlin on how we'd
use the Open Space process.
Sessions would be an hour long, and we had eight rooms to work with,
all charted on a huge grid on the wall. Anyone could run a session
(or several). Write it (and your name) on a card, get up and tell the
group about it, then find a time and space for it and tape it on
the grid. Rules for sessions were few.
For session leaders, Whoever comes to your session is the right
audience, and whatever happens is what should have happened.
For people attending a session there's the Rule of Two Feet:
if you're not getting anything out of the session you're in,
you should get up and get yourself to somewhere where
you're contributing and/or learning. Not hard when there are seven
other sessions to choose from.
This all worked exactly as described. Whatever hesitance many
women may feel toward public speaking, there was no lack of volunteer
session leaders on a wide variety of topics, both technical and social.
I signed up to give a GIMP session before lunch; then in a morning
session on server and firewall configuration given by fellow
LinuxChix Gloria W. and Gaba,
I noticed a few people having a lot of general Linux questions,
in particular command-line questions, so I ran back to the wall
grid and added an afternoon session on "Understanding the Linux
command line".
Easily my favorite session of the conference was the Google Maps API
talk by Pamela Fox of Google. I've been meaning to experiment
with Google Maps and KML for a long time. I even have books on it
sitting on my shelf. But I never seem to get over the hump: find a
project and a specific task, then go
RTFM
and figure out how to write
a KML file from scratch to do something fun and useful. Pamela got
me over that in a hurry -- she showed us the "My Maps" tab in
Google Maps (you have to be signed on to a Google account to use
it). It includes tools for generating some starter KML
interactively, and it even has a polygon editor, all implemented
in AJAX (Javascript) and running in a browser. Wow! What a great
way to get a running start on map mashups. There's also a whole open
source Javascript API and set of libraries for writing creative web
mapping apps. I'm sure I'll be experimenting with this a lot more
and writing about it separately. Just this talk alone made the
conference worthwhile, even without all the other great sessions.
But I didn't get a chance to experiment right away with any of
that cool mapping stuff, because right after that session was
one by speaker and comedian Heather
Gold. Heather had given Saturday night's evening entertainment,
and I am very sorry to have had to miss the show to go to a night class.
The session was on self confidence, getting over fear of speaking,
and connecting with the audience. Since the allotted space was noisy
(the same one I'd ended up with for my GIMP talk, and the noise was
definitely a problem), Heather led our small group out onto the
balcony to enjoy the warm weather. The group was diverse and included
women at very different levels of speaking, but Heather had great tips
for all of us. She has great presence and a lot of useful things to
say, and she's funny -- I'd love to see her on stage.
Everybody had a really positive attitude.
At the Lightning Talks session on Saturday, Danese stressed
"No whinging" as a general rule to follow (in talks or anywhere else),
and I'd say the whole conference followed it.
While we heard about lots of serious topics women face, I
didn't hear any whining or "men are keeping us down" or that sort
of negativism. There were some bad experiences shared as well as good
ones, but the point was in finding solutions and making progress, not
dwelling on problems. This was a group of women doing things.
There are only two changes I can think of that could have improved the
conference at all.
First, I already mentioned the cost. While it was fair
considering the fantastic organization, great people, plus catered
meals, it still lets out some of the women who could have benefitted the
most: students and the un- and under-employed. A few of us LinuxChix
talked about how much we'd love to see a similar conference held at
a cheaper facility, without the handouts or the catered meals.
Maybe some day we'll be able to make it happen.
Second (and this is a very minor point), it might have been helpful
to have runners reminding people when sessions were ending, and
perhaps making the sessions 55 minutes instead of an hour to encourage
getting to the next session and starting on promptly.
Even without that, people mostly stuck to the schedule and Tuesday
finished right on time: pretty amazing for a conference whose agenda
had been made that morning with cardboard, tape and marking pens.
I've seen unconferences before, and they're usually a disorganized mess.
This one ran better than most scheduled conferences. Kaliya and her
fellow organizers clearly know how to make this process work.
We all pitched in to clean up the room, and I braved the rush-hour
freeway.
And arrived home to find that my husband had cooked dinner and it
was just about ready.
What a nice ending to the day!
Tags: conferences, tech, chix, speaking
[
00:01 Oct 24, 2007
More misc |
permalink to this entry |
]
Thu, 15 Feb 2007
I got a nifty new toy: a Logitech Cordless Presenter.
I've been watching some of the videos from
LCA2007,
and I like how some of the speakers made their presentations
smoother, and avoided being tied to standing next to their computer,
by using remote slide-changing gizmos. It wouldn't help for my GIMP
presentations, since those are usually live demos, but I do give
other types of talks.
I didn't find much on the web about remote presenters and Linux,
and wasn't at all sure whether or how they worked. As usual with
hardware, the only way to find out is to buy one and try it.
As it turns out, it works just fine, so I wrote up a
review
with details.
Tags: linux, speaking
[
15:34 Feb 15, 2007
More linux |
permalink to this entry |
]
Tue, 25 Apr 2006
I've long been an advocate of making
presentations
in HTML rather than using more complex presentation software such as
PowerPoint, Open Office Presenter, etc. For one thing, those
presentation apps are rather heavyweight for my poor slow laptop.
For another, you can put an HTML presentation on the web and everyone
can see it right away, without needing to download the whole
presentation and fire up extra software to see it.
The problem is that Mozilla's fullscreen mode doesn't give you an easy
way to get rid of the URL/navigation bar, so your presentations look
like you're showing web pages in a browser. That's fine for some
audiences, but in some cases it looks a bit unpolished.
In the old Mozilla suite, I solved the problem by having a separate
profile which I used only for presentations, in which I customized
my browser to show no urlbar. But having separate profiles means you
always have to specify one when you start up, and you can't quickly
switch into presentation mode from a running browser. Surely there was
a better way.
After some fruitless poking in the source, I decided to ask around
on IRC, and Derek Pomery (nemo) came up with a wonderful CSS hack to
do it. Just add one line to your chrome/userChrome.css file.
In Firefox:
#toolbar-menubar[moz-collapsed=true] + #nav-bar { display: none !important; }
In Seamonkey:
#main-menubar[moz-collapsed=true] + #nav-bar { display: none !important; }
This uses a nice CSS trick I hadn't seen before, adjacent
sibling selectors, to set the visibility of one item based on the state
of a sibling which appears earlier in the DOM tree.
(A tip for using the DOM Inspector to find out the names of
items in fullscreen mode: since the menus are no longer visible, use
Ctrl-Shift-I to bring up the DOM Inspector window.
Then File->Inspect a Window and select the main content window,
which gets you the chrome of the window, not just the content.
Then you can explore the XUL hierarchy.)
This one-line CSS hack turns either Firefox or Seamonkey
into an excellent presentation tool. If you haven't tried using
HTML for presentations, I encourage you to try it. You may find
that it has a lot of advantages over dedicated presentation
software.
Addendum: I probably should have mentioned that
View->Toolbars->Navigation Controls
turns off the toolbar if you just need it for a one-time
presentation or can't modify userChrome.css.
You have to do it before you flip to fullscreen, of course,
since the menus won't be there afterward,
and then again when you flip back.
I wasn't happy with this solution myself because of the two
extra steps required every time, particularly because the steps
are awkward since they require using the laptop's trackpad.
Tags: tech, web, firefox, speaking
[
17:59 Apr 25, 2006
More tech/web |
permalink to this entry |
]