Shallow Thoughts : : Nov
Akkana's Musings on Open Source Computing and Technology, Science, and Nature.
Tue, 22 Nov 2005
It's Mars season (Mars was at opposition at the beginning of
November, so Mars is relatively close this month and it's a
good time to observe it) and I've been making pencil sketches
of my observations.
Of course, that also means firing up the scanner
in order to put the sketches on a web page.
Last weekend I scanned the early sketches.
It was the first time in quite a while that I'd used the scanner
(which seldom gets used except for sketches), and probably only the
second time since I switched to Ubuntu. I was unreasonably pleased
when I plugged it in, went to GIMP's Acquire menu, and was able to
pull up xsane with no extra fiddling. (Hooray for Ubuntu!
Using Debian for a while gives you perspective, so you can get
great joy over little things like "I needed to use my scanner
and it still works! I needed to make a printout and printing hasn't
broken recently!")
Anyway, xsane worked fine, but the scans all came out
looking garish -- bright and washed out, losing most of the detail
in the shading. I know the scanner is capable of handling sketches
(it's a fairly good scanner, an Epson Perfection 2400 Photo) but
nothing I did with the brightness, contrast, and gamma adjustments
got the detail back.
The adjustment I needed turned out to live in the "Standard Options"
window in xsane: a Brightness slider which apparently
controls the brightness of the light (it's different from the
brightness adjustment in the main xsane scanning window).
Setting this to -2 gave me beautiful scans, and I was able to
update my 2005
Mars sketch page.
Tags: tech
[
14:13 Nov 22, 2005
More tech |
permalink to this entry |
]
Fri, 18 Nov 2005
I found myself in a situation where a package was mostly installed,
but it was missing some files, notably the startup file in
/etc/init.d/
packagename. No problem, right? Just reinstall
the package.
Well, no. dpkg -i packagename spun and looked busy for a
while, but the missing file didn't appear. Removing the package first
with dpkg -r packagename, then reinstalling, didn't help either,
nor did dpkg -i --force-newconfig packagename.
(I didn't try dpkg -r --purge packagename because I already
had invested some time into setting up the files in the package
and was hoping to avoid losing that work.)
Of course, I could have extracted the .deb somewhere else and pulled
the single init.d file out of it; but I was worried that I might be
missing other files, and end up with a flaky package.
Well, as far as I can tell, there really isn't any way to do this
"right" in Debian: there's no way to tell dpkg "Really install this
package, every file in it, even if you think maybe some of the files
already got installed before", or "Install any file in this package
which doesn't currently exist on disk." It's amazing (I'm pretty
sure RPM offered both of these options) but apparently this isn't
something dpkg allows.
I found a way to trick it, though:
rm /var/lib/dpkg/info/packagename.*
dpkg -i packagename
You get a lovely warning that
dpkg: serious warning: files list file for package `packagename'
missing, assuming package has no files currently installed.
and then dpkg finally goes ahead and reinstalls all the files.
Whew!
Update: Aha! It is possible after all. dpkg i --force-confmiss is
the option I wasn't seeing. Thanks, Yosh!
Tags: linux, debian
[
19:01 Nov 18, 2005
More linux |
permalink to this entry |
]
Wed, 16 Nov 2005
I've been meaning to write up my impression of a few MP3 players
I've tried, since although the web is full of MP3 player reviews,
hardly any of them give you any idea of how the beast actually
works when playing music -- does it remember its position
in a song? Does it stay in random mode, and how hard is it to
get into that mode? Can you fast forward? All those details that
are critical in day to day use, but which are impossible to tell
from the packaging or, sadly, from most reviews.
The review came out rather long, so instead of making it a
blog entry I've put it on its own MP3 Player Review page.
Tags: tech
[
18:48 Nov 16, 2005
More tech |
permalink to this entry |
]
Mon, 07 Nov 2005
Update: Some of this has changed; see my newer entry,
Update
on writing udev rules for flash card readers.
Dave had one of those nifty front-panel multiple flash card readers
sitting on a shelf, so I borrowed it. It's USB based, fits in a
CD drive bay, and has slots for all the common types of flash memory,
as well as a generic USB socket.
With the device installed, I booted into my usual Ubuntu (hoary)
partition, inserted an SD card and checked dmesg.
Nothing! The four logical units of the device had been seen at boot
time, but nothing new happened when I inserted a card.
I tried mounting /dev/sda1, /dev/sdb1, /dev/sdc1, /dev/sdd1, and
/dev/sde1 anyway, but got "No such device" each time.
Dave muttered darkly about udev and hal and said I should try
it under an older Debian with a normal /dev.
I rebooted my old sid partition, with a kernel I built myself.
I needed a kernel with "Probe all LUNs on each SCSI device", of course.
I still got no messages or hotplug events when inserting the card,
but /dev/sdd1 mounted the SD card.
(For anyone reading this who's not familiar with Linux' handling
of USB storage devices, sd in /dev/sdd1 stands for "SCSI disk" and has
nothing to do with the fact that I was using a "secure digital" media card.
Any USB disk or flash card is supposed to show up under
/dev/sdsomething and the main trick is figuring out the
something. Which is part of what udev and hal are supposed
to help with.)
Then I discovered
that doing an fdisk -l /dev/hdd gave the right answer (one
partition) for the SD card. And as soon as I did that, the /dev/sdd1
device appeared and I was able to mount it normally.
Apparently, when udev sees the logical units at boot time,
with no cards inserted, it decides that there's a /dev/sdd, but it has
no partitions on it so there's no such device as /dev/sdd1. Since
inserting a card later doesn't generate a hotplug event, udev never
re-evaluates this, unless somehow forced to (apparently running fdisk
forces it, though I'm not sure why). Dave was right: udev/hal are the
culprit here, and the kernel was fine.
A helpful person on #ubuntu pointed me to this
tutorial
on writing rules for udev. It mentions the problem with multi USB
card readers not getting additional events when cards are plugged in,
and suggests modifying the NAME key in the rules (which seem
to be in /etc/udev/rules.d/udev.rules to:
BUS="usb", SYSFS{product}="USB 2.0 Storage Device", NAME{all_partitions}="usbhd"
Elsewhere in the document, it suggests getting that SYSFS{product}
string by running a command like
udevinfo -a -p /sys/block/sdd
Unfortunately, that seems to be completely ignored. udevinfo told me
the string was "CardReader SD ", but plugging that in to
udev.rules did not create any /dev/usbhd* devices.
It also seemed clear that udev is using BUS="scsi" rather than
BUS="usb" for these devices, based on the device names that are
being created (sd* rather than ub*). But making that change didn't
help.
Eventually I found a combination that worked. Ubuntu's current rules
for usb-storage devices are:
BUS="scsi", KERNEL="sd[a-z]*", PROGRAM="/etc/udev/scripts/removable.sh %k", RESULT="1", NAME="%k", MODE="0640", GROUP="plugdev"
BUS="usb", KERNEL="ub[a-z]*", NAME="%k", MODE="0640", GROUP="plugdev"
(I don't know what devices create the ub* devices. It's nothing I've
used so far).
I changed the "sd[a-z]*" to "sd[e-z]*", so that it
wouldn't apply to the four devices grabbed by the multicard reader.
Then I added these four lines:
BUS="scsi", KERNEL="sda*", PROGRAM="/etc/udev/scripts/removable.sh %k", RESULT="1", NAME{all_partitions}="cfcard", MODE="0640", GROUP="plugdev"
BUS="scsi", KERNEL="sdb*", PROGRAM="/etc/udev/scripts/removable.sh %k", RESULT="1", NAME{all_partitions}="smcard", MODE="0640", GROUP="plugdev"
BUS="scsi", KERNEL="sdc*", PROGRAM="/etc/udev/scripts/removable.sh %k", RESULT="1", NAME{all_partitions}="mscard", MODE="0640", GROUP="plugdev"
BUS="scsi", KERNEL="sdd*", PROGRAM="/etc/udev/scripts/removable.sh %k", RESULT="1", NAME{all_partitions}="sdcard", MODE="0640", GROUP="plugdev"
That worked. Now udev creates /dev/sdcard[1-15] as well as
/dev/sdcard (and likewise for the other three flash types),
and I can make a normal /etc/fstab entry:
/dev/sdcard1 /sd auto rw,user,noauto 0 0
Now as a user I can say mount /sd without needing to su to root
or do any extra fiddling. Hurrah!
Tags: linux, udev, hal
[
16:49 Nov 07, 2005
More linux |
permalink to this entry |
]
Thu, 03 Nov 2005
I presented an astronomy program for a group of middle school girls --
and survived!
The American Association of University Women runs a program with some
of the local high schools to encourage girls to study science, math
and engineering. I've volunteered at the star party at their
"Tech Trek"
summer camp at Stanford quite a few times; the girls at the camp are
always energetic, smart and enthusiastic.
Last summer I asked the camp organizers whether they did any programs
during the school year. Before I knew it, I was (gulp) signed up to
run one!
AAUW's format: the girls rotate among four different "stations",
spending about fifteen minutes at each station. That
wasn't long enough to do any real problem solving or teach them
any mathematical techniques, so I had to stick to fairly simple
concepts while trying to give them a taste of several different
aspects of astronomy.
Then the school played a dirty trick on us, and told us when we
showed up at dawn-thirty that most of the girls were having an
important test (having something to do with state standards)
that day and so we'd only get ten girls instead of 25.
What, do they not plan the standards tests any earlier than
the day they give them? It seemed rather rude of the school
to spring this on a group of volunteers who have to show up
early in the morning for a program that's been planned for months.
The stations:
Telescopes: I showed them several different types of telescopes,
and explain the difference between reflectors and refractors and what
each is good for. My little Coulter CT-100 came in
handy since it's so open that it's easy to see the arrangement of
the mirrors. For the refractor, I used an 80mm f/7 because it's easy
to transport and set up (though something on an equatorial mount
would have been nice). Then I had my cheapie homebuilt 6-inch f/4
Dobsonian so that they could play with a dob mount and see how it
was built (and to show that telescopes don't have to be expensive).
I had hoped to show the sun through the 80f7, but the sky didn't
cooperate (no big surprise, in November). I also had a collection
of eyepieces and binocular parts for them to disassemble and play
with. Some girls were a lot more willing to play with things than
others; several didn't seem to want to look or touch until
specifically instructed "Stand there, look there, push there".
Mars: With Mars just past closest approach, of course there
had to be a Mars station. I had them make Mars icosohedron
globes and brought a selection of "Mars rocks" (mostly red
oxidized basalt). They liked learning that Mars is red because it's
rusty, but some of them had trouble assembling the icosohedrons.
Moon: A 100W light bulb and some ping-pong balls created a
model of why the moon goes through phases, and what the difference is
between phases and an eclipse. (I think the adult AAUW helpers may
have learned as much from this exercise as the girls.) Moon maps and
displays and "moon rocks" (basalt) rounded out the station.
Spectra and the Doppler Shift:
A few weeks ago I made a "Doppler ball" to illustrate the Doppler
effect with sound. Split a whiffle ball in half (the hard part here
is finding one: toy stores and Target only sell them in quantity, but
I found a 2-pack at a dollar store). Then install a buzzer (from Radio
Shack) and a 9-volt battery inside the ball (and a switch, plug, or
some other way to turn it on). Tie a string to the ball and whirl it
around your head, or have people toss it back and forth, and listen
to the frequency change according to whether the ball is coming or
going. It's very effective!
In addition, we had diffraction gratings (from Edmund Scientific;
there doesn't seem to be any place in the bay area where you can
just walk in and buy consumer-quality diffraction gratings) and prisms,
and incandescent lamp and fluorescent (mercury vapor) lamps to show
the difference between a line spectrum and a continuous one.
One of the other women got the idea to burn calcium citrate tablets
to show a calcium line, but I didn't get a chance to see how that
worked. Another woman brought a wonderful bell: she's in a
bell-ringing choir, and showed how you can demonstrate the Doppler
effect and also, by immersing a low-frequency bell in water,
illustrate sine waves very effectively. Cool stuff!
(I had tried out the Doppler ball and the gratings on my Toastmasters
group a few weeks earlier, and it worked well there too. The ball
swinging, one spectrum, and some discussion of why spectra are
important and what they can tell us about the universe, all just
barely fit in a seven-minute speech.)
Overall the day went well, considering that we started late and
had a much smaller group than we expected. The smaller group meant
that we got more chance to talk and explain things and encourage them
to play around. The evaluations were all fairly positive, there
weren't any stations that seemed unpopular or just didn't work,
and lots of them said they liked all the activities. (I was too busy
running the telescope station to get a chance to peek in on any
of the others, alas.)
I'd like to get a chance to lead a group of girls in a project with
more depth, where they actually have to solve a problem, build
something, or calculate something. That would require a few hours
rather than fifteen minutes. But the "several small stations" approach
is great for someone inexperienced in leading school programs, like
me, or when you're not familiar with the girls and their interests and
capabilities. It wasn't nearly as scary as I thought it would be,
and was fun for all concerned.
Tags: education
[
18:48 Nov 03, 2005
More education |
permalink to this entry |
]