Friday, October 29, 2010

Please chip in

Amber and Pete Graner house was struck by lightning while they were at UDS. Their kids and dog are fine, but their stuff is all burnt up. It'll be a while before insurance gets all worked out, and in the meantime, they need to be able to get things like clothes, shoes, etc. Rikki Kite setup a Chip In for the Graners for anyone who wants to give them a bit of money to get back on their feet. Consider it an early Christmas/Hanukkah/Yule/Wintereenmas gift.






This is the third one of these events where the community came together to help out after a disaster, and I find it really amazing. It's reminding me a bit of what I read about the Amish recently.

Monday, October 4, 2010

Help Bryen out

Bryen Yunashko of GNOME Accessibility had his equipment stolen. He's in Spain for the GNOME-A11y Hackfest, and on his way from Barcelona to Sevilla (where the hackfest is going on), his bags with his 17" laptop, Kindle, 1TB hard disk, and camera were stolen. He's visually impaired and deaf (so screen-readers are out), so those items were bought with that in mind. 17" so he can see the screen, Kindle because it zooms unlike paper, and a camera with many lenses because it helps him see. He picked up a cheap netbook so he can still hack while at the hackfest, but the tiny screen makes it hard to use with his vision.



A collection is being taken to replace the stolen equipment.


Click here to lend your support to: Replace Bryen

Introducing Gally

For my senior design project in school, I decided to design and write a program for teaching sign languages on Linux. It was in a "working prototype" stage when I presented it in school in April. I had a few more things I wanted to get right before announcing it to the whole FOSS world, but I just got confirmation from Nigel Babu that the last known bug in RC3 is fixed, so it's time to release!



Here's what it looks like (though that "France" sign video is removed since I did the sign backwards…should probably correct the text under it…oops):


Gally screenshot (France)

Packages for version 0.5 (what I'm calling the first stable release) are in the Gally stable release PPA for Lucid, and in Universe for Maverick. It'll be uploaded to Debian Unstable soon.



This release only supports American Sign Language, but some of the lessons have been translated into French and German. On the roadmap for 1.0 is support for installing multiple sign languages (yes, places have different sign languages), hopefully through KGetHotNewStuff. Quizzing should also be in that version. That means that people who know BSL, LSF, DSL, Auslan, NZSL, or any of the others whose names I don't know are certainly wanted to start preparing lessons for that version!


I suspect a bit of an FAQ is in order:



  1. Why name it "Gally"?
    • That is the nickname for Gallaudet, which can refer either to Gallaudet University or Thomas Gallaudet, who started the first deaf school in the US. It was based on French teaching methods.


  2. What licence is it under?
    • GPLv3

  3. What's it written in?
    • PyKDE


  4. What if I use GNOME?
    • Use sudo apt-get install --no-install-recommends gally to avoid pulling in half of Kubuntu

  5. Is there an IRC channel?

    • Yes, #gally on irc.freenode.net

  6. How can I help?
    • Suggest lesson topics


    • Write up a lesson plan (list of signs for a suggested lesson or one you thought of)

    • Convert a lesson plan into XML

    • Submit videos of you signing what's in a lesson plan

    • Make or find CC-BY or CC-BY-SA clipart or photos to work as "context" with the lessons (like the French flag in the screenshot)

    • Help make the GUI translatable



You will need to download the ASL lesson pack (link is to this month's snapshot) to study ASL. Use your favourite archive manager (Ark, File Roller, tar) to put the contents in either ~/.kde/share/apps/gally/ (if only you will use it) or /usr/share/kde4/apps/gally/ (for all users on the system). That means the lessons.lang ends up in ~/.kde/share/apps/gally/ASL/ or /usr/share/kde4/apps/gally/ASL/


Thanks go to the folks who've been testing and Nigel in particular for helping me roll through RCs, Paul Hummer for writing the original setup.py when I am new enough to Python to have never done this, and Karen Rustad for making a nice icon (which isn't in the screenshot, since it's an old one) based on the ASL sign for "teach."

Friday, October 1, 2010

Algorithms, Reverse Engineering, and Crochet

Sing along: One of these things is not like the other. One of these things just doesn't belong…



Actually, not really. These things can all go together: algorithms, reverse engineering, and crochet. I've been crocheting since I was so young I don't remember not crocheting. My Mimi (what I call my grandmother) taught me. There exist crochet patterns you can buy on paper or find online, but she doesn't know how to read them. I've read one pattern. It was for a doily I made in high school. So, how did Mimi and I know what to do when crocheting the rest of our lives? Reverse engineering!


Mimi had a big clear plastic bin in her nightstand full of samples of crochet. They were usually about 10x20cm or 5x8in and done in whatever scraps of yarn she had sitting around, so it was a very colourful pile. Each one had a different pattern in it. She was always fond of the seashell patterns though. There were others that looked like little rows of pillars on a Greek building and she had one very complicated one that sort of made a starburst shape within itself. If she wanted a certain effect, she'd just dig up her sample, poke at it a bit and look really close, and then copy how it was done. Maybe she'd add a few extra stitches to make the seashells wider or something, but to her a finished example was better than written instructions. I didn't learn the term until a few years ago, but poking at things to see how they work, then using that knowledge to go make some more? That's reverse engineering.


I've had a few people express surprise at someone being into artsy right-brain things and computery left-brain things. One was in the car on the way to Southeast LinuxFest, as I was sitting in the back crocheting. I responded by reciting the pattern of what I was doing as a bunch of nested for-loops. Hey, it's an algorithm. Here's a picture of me crocheting at the speakers dinner. I was making a pink snood based on the white one I'm wearing in the photo. I figured I'd be asked about being Amish less frequently if I had a pink one.



Dustin wrote a couple weeks ago about teaching his wife to code. She also crochets. I mentioned in his comments that reverse engineering and algorithms are a big part of crochet too. To demonstrate, today I finished crocheting a scarf. Here's the algorithm, in Python:


#!/usr/bin/python
for i in range(20):
print "ch",

for i in range(6):
for j in range(2):
print "ch",
print "\nnext: "
for j in range(20):
print "s",
print "ch",
for j in range(10):
for k in range(3):
print "ch",
print "\nnext: "
for k in range(10):
print "d ch",
for j in range(2):
print "ch",
print "\nnext: "
for k in range(20):
print "s",

Key:




  • ch: chain

  • d: double crochet

  • s: single crochet


Thanks to Kim Kirkland for correcting my long-hand stitch names into the standard abbreviations.



PS: the scarf is aubergine ;-)

Using ODBC with bind

I ran into this last week, and the Google was failing me, so here's the reason why you sometimes get "Required token $zone$ not found." when debugging why bind won't start with ODBC. The answer is: because the DLZ documentation is slightly wrong. It delimits "zone" and "record" with % instead of $. That is, the directions show:



{select zone from dns_records where zone = '%zone%'}

But really, it should be:


{select zone from dns_records where zone = '$zone$'}

There you go. That's where that error comes from. Now hopefully the next person who hits this will be able to find an actual useful answer when they search for the error.