February 08, 2010

whats in drm-radeon-testing?
I'll try and post these regularly when I make major additions/removals.

drm-radeon-testing is the cutting edge KMS radeon branch, it is going to be rebased and things will be added/removed as they are worked on by developers. So you can base patches on it but you should talk to the developer who owns the area first.

git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git drm-radeon-testing

I've just pushed a rebased tree now with the following:

latest i2c algo + hw i2c engine code + all fixes squashed: This adds support for hw i2c engines found on radeons and
exposes them + sw i2c buses to userspace so i2c tools can use them. (agd5f).

pll algorithm reworking + quirks: cleans up the code to allow for the selection of the old pll algorithm on some hardware. (agd5f)

pm support so far: Adds all the current PM patches - just does engine reclocking so far using the power tables from the BIOS. (Zajec/agd5f)

Evergreen (Radeon HD 5xxx) support: basic KMS support for the evergreen range of devices - no irqs or accel yet. (agd5f)

radeon unlocked ioctl support (airlied)

bad CS recording (glisse)

misc cleanups/fixes - Dell/Sun server support ported from userspace hopefully.

The tree did contain Jerome's r600 CS checker but I've dropped it for now at his request as he has newer patches
in testing.

February 07, 2010

Inkscape Class Day 7

Friday morning, I taught the seventh session of an 8-session (40 minutes per session) course on Inkscape at a Boston-area middle school. (For more general details about the class check out my blog post on day 1.)

Friday’s Class

Well, this Inkscape course is quickly wrapping up. One more class after this past one on Friday. The students’ work was due at the end of this class and they all did great work in prepping their designs for the printer. I handed out a sheet with the export instructions (available for download below.)

Inkscape Class Day 7

Inkscape Class Day 7

We weren’t exactly sure the best approach to gather up the files at first; Ken had set up a shared drive on the network for the students to save their work to, but on some of the Macs, Inkscape’s export bitmap dialog could not see the shared drive (and some could!) What we ended up doing:

  • Have the students export their work out to the desktop – 300 dpi, PNG format.
  • I asked them to use either their band name or their own name in the file so I could tell them apart.
  • Then, ask them open up the appropriate network drive folder and drag both the exported file and original SVG into it from the desktop.
  • I then connected to the shared drive, inspected all the files to make sure they had exported correctly (they had! If they hadn’t, I would have gone back to the students whose files had issues and tried to help them re-export them.)
  • I then copied the files from the network drive onto a USB key.
  • Immediately after I got back to the office, I went through the files carefully, adding the requested T-shirt size from the students’ filled-out T-shirt size sign-up sheet from day 5 of class. My naming scheme was the following format:

    01-studentfirstname-bandname-sizeS.png

  • I then uploaded the files to a URL, both as individual files and bundled in a zip file for Walter’s convenience – then I emailed Walter the URLs.
  • John called Walter from EmbroidMe Chelmsford up to make sure he had gotten the email (he hadn’t yet, so great thinking on John’s part) and Walter set out setting up the T-shirts that morning.

Inkscape Class Day 7

Inkscape Class Day 7

A few things we learned from this process I think you could take away in teaching a similar class to make it run more smoothly:

  • Make sure you pass that T-shirt size signup sheet around early on, and keep bringing it back to class until every student has filled it out. Students are absent sometimes, especially in the winter cold season, and you want to make sure you’ve got each student’s size.
  • We had one student absent this past Friday. We’ll get his file on the last day of class and get his T-shirt to him after the class is over. That being said, you may want to have the students save out to a shared drive throughout the class (we weren’t doing that, we were having them use their individual accounts) and in the days of class past the halfway mark of the entire course, ask the students if they are going to be there for every day, and if not would they like us to go ahead and print their files if they’re not there or to wait.
  • Make it easier for your printer and put the students’ T-shirt sizes in the file name. :)
  • Make sure you get the students’ SVGs as well as PNGs! Rendering PNGs from SVGs with a lot of blurs can take a long time! I was really surprised by this. The Whisp logo took the longest – a good 15-20 minutes to render! If you have the students’ SVG files as well and run out of time during class, it enables you to do the rendering on your own post-class to make sure the printer will get the files on time. It’s also good to have the SVGs in case you or the printer notice any issues with the PNG that might have been missed during class.
  • Bundling the files into one compressed file makes it easier for them to download than individual files.
  • If you’re on a tight deadline, don’t rely on email only – give your printer a call! :)

Many students were finished with time to spare, so they had the rest of the period to explore Inkscape on their own. They came up with some very cool sketches using the techniques they learned throughout the class:

Inkscape Class Day 7

Inkscape Class Day 7

Inkscape Class Day 7

You can see the full set of photos John took of the students’ work in the Flickr album for session 7. On Tuesday, if all goes well (fingers crossed!) we’ll hand out the T-shirts and do some fun exercises with Inkscape, so look forward to those photos. :)

Follow Along on Your Own

Here’s the lesson sheet we used for class on Friday:

Introduction to Inkscape Lesson 7

lesson 7

As always, the OpenOffice.org source files and the outlines for the entire course are at the course page on my website – but please note that’s a rough outline; as we progress through the class I’m coming up with the more-solid lesson plans based on how far the students get each session. By the end of the course I hope to have the course page organized much better.

By the way, if you’d like to follow all the blog posts about this class at one URL without getting the rest of my feed, I’ve set up a category in WordPress specifically for these posts:

http://mairin.wordpress.com/category/inkscape-class/

Enjoy! And please do let me know in the comments if you have any questions or suggestions

This course is sponsored by

Filed under: Inkscape Class

February 06, 2010

Action Pack

We have been inspired by GNOME.  Moved to act by the ideas, ideals, and opportunities.  Encouraged to stay as we grow ourselves and as a community.  We know that the true measure of strength is not how much you can take but how much you can afford to give.  And we have demonstrated that, by sharing, we can all succeed.

GNOME is a story that continues to inspire me.  And in my eight years and counting, if I have achieved little more than making one person feel hopeful for and empowered to change their future, I will feel very good about the work we are doing.

As we march towards GNOME 3, I feel very strongly that our truest measure of success won’t be the technology, design, or ideology – but simply this: Will we continue to inspire?  I am very hopeful.  The signs are looking very good.  Back in June I asked, “Will a new crop of heroes emerge?”  Well, let me tell a short story and let you decide.

In November and again in early January, we posted some new design proposals for GNOME Shell.  Many of them went into a release of the design document and SVG mockups.  Others came out of discussions on IRC.  Now, nearly all of these changes are complete.  That shouldn’t surprise you too much if you know some of the hackers on the original Shell core team.  Those dudes are among the best we have.  However, that’s not how it went down.  It has been much more interesting than that.

Mockup from 6 January 2010

There are actually a lot of changes introduced here but I’d like to point out a set of exemplary and highly visible changes:

  1. A new linear workspace presentation
  2. Added undo functionality into the core system
  3. New look for App running indicators
  4. Updated presentation of the left dash and App Menu item in the Top Bar
  5. Allow close windows directly from the window picker
  6. No icons on desktop backdrop
  7. Include eject buttons for removable media

All done.  Now let’s look at how, when, and by whom.

  1. On Jan 22, Maxim Ermilov pushed the fix for bug 593844. Jan 23, Florian Müllner pushed a few more refinements.
  2. Feb 5, Maxim Ermilov wrote the fix for bug 608933.
  3. Jan 7, Florian Müllner pushed a fix for bug 606257.
  4. Jan 7, Colin Walters pushed fixes for bug 605491.
  5. In Nov and Dec, Florian Müllner pushed a few patches for bugs 602532, 603691, etc.
  6. Feb 3, Maxim Ermilov pushed the fix for bug 591912
  7. Nov 27, Florian Müllner pushed a fix for bug 602976.

You all know Colin Walters (Debian, Rhythmbox, Fedora, Mugshot, D-Bus, hacker man-machine) but you may not yet know Maxim and Florian because from what they tell me they are pretty new contributors to our community – but hell they sure know how to make an entrance.  Stay tuned.

By no means has the rest of the Shell community been slacking.  A ton of work is going on a bit behind the scenes and on the rapidly evolving Message Tray.  In the next few days we’ll be discussing the the next iteration of UX mockups and designs as well as exciting plan for evaluation of some of the claims we’ve made in our design process so far.  Come be a part of the action.

the fosdem dance

<video controls="true"><source src="http://www.0xdeadbeef.com/~blizzard/weblog-videos/2010-02-06-fosdem-dance/fosdem-dance-2010.ogv" type="video/ogg"><source src="http://www.0xdeadbeef.com/~blizzard/weblog-videos/2010-02-06-fosdem-dance/fosdem-dance-2010.mp4" type="video/mp4"><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/9m9FFjPlowk&amp;hl=en_US&amp;fs=1&amp;"/><param name="allowFullScreen" value="true"/><param name="allowscriptaccess" value="always"/><embed allowfullscreen="true" allowscriptaccess="always" height="344" src="http://www.youtube.com/v/9m9FFjPlowk&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" width="425"></embed></object></video>

February 05, 2010

Shaping young minds
I'm off to CMU at the weekend, in order to do a couple of talks on Monday (the 8th). I'll be giving an introduction to ACPI to the operating systems class in the morning, and an open presentation on Fedora, some of the challenges we face and how to get involved in Linux in the afternoon. This is as a result of our cooperation with CMU, which has led to things like the request on the right. How could we refuse?

February 04, 2010

Unless the enemy has studied his Agrippa, which I have

In a few days we’ll release Epiphany 2.29.90, so this is a good time as any to show a few of the new cool things it will bring.

The big one is, without doubt, good enough support for HTML5 video tag for the Youtube HTML5 beta to work. Pretty much all of the credit goes to the dynamic duo of Sebastian Dröge and Philippe Normand, which have been working tirelessly to improve our media support all across the board. As you probably know we use GStreamer for all our media needs, so if you happen to have the right codecs installed stuff will just work out of the box, like it should. Here you can see it in action, playing one scene everybody should know and love:

Screenshot-YouTube - The Chatty Duel---The Princess Bride

Another recently fixed bug is support for windowless NPAPI plugins, contributed by Brian Tarricone. For those of you still enslaved to plugins it should fix a few annoyances, not to mention that it allows for the plugin content to be manipulated alongside the rest of the web content, since it’s rendered directly in the browser window.

The world-famous Diego Escalante, who is doing an internship in our company with the mission of fixing as many Epiphany bugs as he possibly can, reimplemented EphyEmbedPersist on top of WebKitDownload , which will have the visible effect of making those mysteriously broken save-related context menu items work again.

On the same “kill all regressions” mood I spent some time implementing acceptance policies for cookies in libsoup and hooking the new APIs here and there. The result? This pesky items in the preferences dialog should do something again:

Screenshot-Preferences

When I was not doing that or losing my youth in the depths of WebKit chasing some nasty bugs I’ve also been spending some time on the GObject DOM bindings for WebKit. I’m happy to say that a couple of preliminary patches have been already committed, and the first big-step patch of the process is under active review and hopefully will be accepted shortly, so you should begin to get some exciting new APIs to manipulate web content in a not-so-distant release!

There are just a few of the latest things we have been working on. I’ll, as usual, keep you more or less up to date here, but if you want the gory details of the day to day business, or even get your hands dirty on the stuff yourself, don’t hesitate to join our IRC channels (#epiphany on GimpNet and #webkit-gtk on FreeNode) or mailing lists. Happy hacking!

video of GPU switching
Here's a really badly shot video of GPU switching in action ;-0 - whiteouts are mostly be logging out and in ;-)

<lj-embed id="1">

February 03, 2010

DEV300_m71

DEV300_m71, svx, soltools and accessibility all 0 unused methods now. ucb reportdesign and sal nearly unused free. sc and sw creep up again. Over all count -17

Unpackaged Font of the Week: Gillius ADF

Gillius ADF is a sans-serif typeface, heavily inspired by the famous Gill Sans MT typeface by Eric Gill – who designed Gill Sans inspired by the Johnston typeface designed for the London Underground which Gill had worked on as an apprentice.

The Arkandis Digital Foundry created the Gillius ADF font under the GPL with font exception. There is an alternative version available too (that also needs packaging :) ) called Gillus ADF No. 2. Each font has regular and condensed variants, each with bold, italic, and bold italic versions. The coverage is not bad for extended Latin characters:

Gillius ADF is a nice, clean font that should serve you well both in regular body text in documents as well as for headings and logo treatments. It’s a versatile and very readable font, just like the Gill Sans typeface that inspired it. One thing you might want to be aware of when working with Gillius ADF – just as cultural context anyway – in the same way that Helvetica is used heavily in the United States, especially on municipal and transit system signage, Gill Sans is used heavily in the UK and recalls ‘mid-century’ type usage in the UK. Gillius ADF, since it refers so closely to Gill Sans, might carry a bit of a UK connotation to it.

(Btw, I purposely picked a word with a lowercase ‘g’ in it for my little type sample because I really like the ‘g’ in Gillius Sans. :) )

Gillus ADF is licensed under the GPL with Font Exception.

So, you want to package Gillius ADF?

Zomg! You’re sweet! You’ll want to follow the first steps here next to the ‘if you intend to do some packaging’ header:

Our fonts packaging policy, which the above refers to, is documented here:

And if you have any questions throughout the process, don’t hesitate to ask on the Fedora Fonts SIG mailing list:

Last Week’s Font

Last week’s font was League Gothic by The League of Moveable Type. Nobody has picked up the font package request yet! Would you like to?

Filed under: Unpackaged Font of the Week
hybrid graphics : the story continues (part 3)
v6 of the patch + another patch which needs some work before I can merge it are available now.

This mainly cleans up the patch architecture a lot and allow for Matthew to put his nvidia code in easier hopefully. Its moves the ATPX specific code to the radeon driver.

The second patch is from an experiment that I videod on a webcam but am now failing to upload, I'll probably get a better video tomorrow, the lighting was fairly bad for it today.

It basically allows for a delayed gpu switch ( it changes the debugfs API ), and allows gpu drivers to block the switch.

The switch file now takes ON/OFF like always, but the PCI IDs input is gone. There are 4 commands

IGD - try and switch now to the integrated device - can fail if drm drivers block it (mainly if X has the device open)
DIS - try and switch now to the discrete device - can fail if drm drivers block it (X again).
DIGD - try a delayed switch to integrated device
DDIS - try a delayed switch to discrete device.

So with X running you can echo DDIS to the file and log off X, it'll then switch as soon as X closes the drm device, and when
gdm restarts X it'll be running on the discrete GPU. If we had a shiny GUI on top of this it'd be as close as MacOSX can do it.
When you select to do a delayed switch we power up the other GPU straight away so the switch is quicker.

It needs more debugging, some open issues include:

after a few switches it can die on its ass
powering up the Intel glitches the display even when running the AMD
there may be race conditions in the patch, probably need a mutex around device open + this stuff
suspend/resume - since we D3 the card, if you do an s/r cycle it'll resume it, we need a flag in the
driver to say its powered off by the mux and to ignore s/r cycles - I've started adding this to radeon.

mjg59 has access to an nvidia laptop and is looking closely at how to make that all work.
See you at RPI!

Rensselaer Polytechnic Institute, or more affectionately known as RPI, is my alma mater. It was pretty clear to me early on that it was the right school for me. Behold, the RPI campus computing center (Voorhees Computing Center):

RPI Voorhees Computing Center

That’s right, it’s inside of a church – they take computing seriously at RPI – obviously a great place to recruit current and future free & open source hackers! :)

I’ll be at the RPI Spring 2010 Career Fair in Troy, NY with my colleague John (who also started the Inkscape class project) – we’ll be representing Red Hat as two past RPI students. If you are an RPI student and are interested in a career at Red Hat, please stop by our booth at the Armory between 12 – 5 pm tomorrow – say hi and see what opportunities we might have for you!

By the way, I’ll be back on campus this Friday, February 5th to give a talk about Fedora, from 4-5 PM in JEC 3117. More details are at the Rensselaer Center for Open Source website. I’ll have plenty of Fedora swag, so if you’re in the capital region and are interested please stop by and say hi if you can! :)

Filed under: Uncategorized
Engaged

February 02, 2010

Inkscape Class Day 6

Yesterday morning, I taught the sixth session of an 8-session (40 minutes per session) course on Inkscape at a Boston-area middle school. (For more general details about the class check out my blog post on day 1.)

Yesterday’s Class

Yesterday’s class, like last Thursday’s class, was primarily a working class. After this class we have only two sessions left, and the students’ artwork is due at the end of next session, so we’ve been giving them as much time as possible during class to work on their designs.

When I passed out the shirt size signup sheet last week, one of the students was absent, so I got his size and sent Walter at EmbroidMe Chelmsford a quick email listing of all the T-shirt sizes we’d need so he would be ready to have the shirts printed when we send the designs on Friday.

I gave some quick instructions on working with the align & distribute tool in Inkscape – since we are getting close to the end of class, I thought going over alignments would be helpful for the students in making final preparations for their artwork to be handed off. One of the scenarios I used to explain align & distribute was making a template for a CD design, and how to use the tool to center the hole in the center of the CD to the circle shape for the actual disc.

Some things that came up while the students worked on their designs.

Inkscape Class Day 6 Student Work

One student wanted to space some shapes surrounding a center circle at even intervals. I struggled a bit to explain how to do this – we tried using the ‘Remove overlaps’ section of the align & distribute tool, but it turns out that ‘remove overlaps’ behaves really strangely when you’re working with circular shapes. I would expect it to either calculate the spacing between the two objects based on the frame around the circular object, or between the outer edge of the shape at the point where the two shapes are closest together. Instead, it calculates based on the right-most point of the left circle, and the left-most point of the right circle, which results in the tool taking somewhat un-intuitive actions. I ended up instructing her to go around the center circle, clicking two of the outside objects at a time, and using the right-align, bottom-align, left-align, and top-align buttons all around the center circle to get things lined up. A bit more tedious, but at least it seemed to work more predictably than using ‘Remove overlaps.’ You can see her design in the photo above, in case this issue is hard to visualize.

Inkscape Class Day 6 Student Work

Another student wanted a sword to run through a snake such that one part of the snake was above the sword, and the other was under the sword. We made a copy of the snake using Ctrl + D and a copy of the sword using Ctrl + D, then we used Path > Intersect to get two pieces of the sword from where the snake intersected with it. We used Path > Break Apart to seperate the two sword pieces, and deleted the sword piece that covered the snake in the area where she wanted the snake to run over the sword.

Inkscape Class Day 6 Student Work

One of the students made some really cool textures using a radial gradient with a lot of different points. However, he faced the challenge of part of his band name not being readable because the background coloration was so vivid behind the letters. I showed him how to make a copy of the text, give it a thick stroke in either white or black, then place it behind the original text so that there was a white outline behind the text to help make it readable. I also showed him how to blur the outline to give it more of a glow effect.

You can see the full set of photos John took of the students work in the Flickr album for session 6. You might start to notice a ‘blood’ theme here :) I think maybe all the vampires from Twilight have had a bit of influence on our youth ;-)

I mentioned in earlier posts that the students were very quiet – during these working sessions they’re definitely a bit more social now, talking to each other and helping each other out. I’m really happy to see that happening. :)

Follow Along on Your Own

Here’s the lesson sheet we used for class yesterday:

Introduction to Inkscape Lesson 6

lesson 5

As always, the OpenOffice.org source files and the outlines for the entire course are at the course page on my website – but please note that’s a rough outline; as we progress through the class I’m coming up with the more-solid lesson plans based on how far the students get each session. By the end of the course I hope to have the course page organized much better.

By the way, if you’d like to follow all the blog posts about this class at one URL without getting the rest of my feed, I’ve set up a category in WordPress specifically for these posts:

http://mairin.wordpress.com/category/inkscape-class/

Enjoy! And please do let me know in the comments if you have any questions or suggestions

This course is sponsored by

Filed under: Inkscape Class
hybrid graphics on Linux (Part 2)
Okay v4 of the patch is available at

http://people.freedesktop.org/~airlied/vgaswitcheroo/
http://people.freedesktop.org/~airlied/vgaswitcheroo/0001-vga_switcheroo-initial-implementation-v4.patch

First thing I added was power up/down methods. This calls the DRM suspend/resume methods + along with the cut power for discrete GPU. I'm not sure dynamic Windows ever does this as it seems to take a bit of work, I suspect they just run the second GPU in really low power modes. This is slow because we have to repost the ATI card after turning it back on.

I then talked to mjg59 and worked over the ATPX detection. I removed all the DMI code and it should detect *any* laptop that uses ATPX (i.e. ATI/ATI and Intel/ATI) from what I can see. I've tested on Lenovo W500 and T500 now and it appears to work on both. Would be nice if someone on a ATI/ATI and/or ASUS ATI/ATI or ATI/Intel machines could give it a whirl. I think the main problem with ATI/ATI is the poweroff methods have a hardcoded Intel PCI ID. I've no idea yet how to tell on an ATI/ATI which device is the IGD and which is discrete. Its probably more than likely the IGD is the one with the ATPX method on it.

It doesn't switch off at boot yet but I've added commands to let you do it.

echo "OFF" > switch - turns off the not in use card, so if Intel and ATI are on at boot, it will turn off ATI
echo "ON" > switch - turns back on not in use card
echo "PCIID" > switch - causes a switch with full off/on cycles.

nvidia combos appear to use a DSM method and in theory nouveau_acpi.c should be detecting that, so it might be possible for someone to hook that up.

I've also started looking at some desktop integration via gdm or logout - but its not my usual place to code so going is a bit slower ;-)

February 01, 2010

hybrid graphics on Linux
So someone thought it would be a good idea to make laptops with two graphics chips in them and switch betweem them to save power.

Now other OSes support this to varying degrees, I think XP + MacOSX require a logout cycle and Vista/Win7 can dynamically switch while running, while Linux basically falls over in a heap.

So I sat down today with a Lenovo W500 which has an Intel GM45 and AMD Radeon 3650 Mobility in it, and I wrote a patch to try and get closer to the XP/MacOSX level.

The result of one days straight hacking is at:
http://people.freedesktop.org/~airlied/vgaswitcheroo/

The patch is totally focused on the Lenovo W500, other switchers will need to add stuff to this codebase.

So what works?
Boot in switchable graphics - which boots with intel and radeon turned on
KMS drivers load for radeon and intel, radeon BIOS stored in start of VRAM (driver hacked to read it)
bind to both drivers + fbs for both.
mount debugfs - cat /sys/kernel/debug/vgaswitcheroo/switch
2
0 :0000:01:00.0
1+:0000:00:02.0
shows the 02.0 (intel) device is in charge of the MUX.
goto runlevel 5, play with X under the Intel driver, goto runlevel 3 kill X
at fbcon echo "0000:01:00.0" > /sys/kernel/debug/vgaswitcheroo/switch
barely glitches console and switches
goto runlevel 5, play with X under the ATI driver, goto runlevel 3 kill X
echo "0000:00:02.0" > /sys/kernel/debug/vgaswitcheroo/switch
goto runlevel 5, play with X under intel again.
wash and repeat.

What does it do?
So far its just switching the MUX using the ACPI method and remapping all the console to the other framebuffer device,
it also reset the bits that denotes which devices is the boot vga device which X uses to pick the primary GPU. This
means X doesn't need an xorg.conf to switch. (I think all those patches are in upstream X server).

What does it not do?
It doesn't powerdown the radeon when its not in use yet. I know the ACPI call to power it off/on, and since I have
the BIOS I should be able to repost it. So I'll try adding the callbacks into the KMS driver to do this soon.
It doesn't poewrdown the intel when its not in use yet. Not sure what I can do here, since there is no ACPI method to turn
it off. I think I can just D3 the GPU, and use the normal s/r paths to bring it back. Again requires more investigation.
The whole what ACPI + methods map to what device, how the mux ids match etc will probably all need to be stored in the DMI table.
Anything not a Lenovo W500 - probably not that hard to add other Intel/AMD variants to this, add DMI and mux switching method.
nouveau isn't hooked up - this could probably be done by some interested party - the driver hooks so far aren't very hard.
No idea about ATI/ATI or NV/NV ones either.

I'm really hoping interested community people can make this actually useful to them on other hw, I won't have permanent access to the W500 to keep this all tested in the future.

Can we do dynamic switch without restarting X?
No. X needs a lot of work, a lot more than the day it took to hack the kernel.

How do we go forward?
We probably need to add gdm support to move this forward. A logout button that is "Switch GPU", that gdm kills the X server,
then hits the switch port and starts a new X server. I'll try and talk to some gdm hackers over the next few days.
I'll try and push this into a git tree against Linus current, and we can add tested patches for other machines as they go in.
Also the DMI section is only imaginary of what I think others might need, we might have to rip it all out. Also I've no idea
if there are ACPI methods to query the switchable modes etc.

January 31, 2010

Inkscape Class Day 5

This past Thursday morning, I taught the fifth session of an 8-session (40 minutes per session) course on Inkscape at a Boston-area middle school. (For more general details about the class check out my blog post on day 1.)

Thursday’s Class

Thursday’s class was primarily a working class.

First, we passed around a sheet for the students to write out their name, band name, and T-shirt size so EmbroidMe Chelmsford can have the correct size T-shirts ready to go. Then we passed out sheets with a calendar / schedule for the rest of the class. We’re halfway through the course – there are 4 sessions left – so the students’ due date for their design is the end of the second-to-last class on February 5th.

Then, I set out a sheet with some suggested band names that any student who was still stuck on a name could pick from. One idea for using this sheet in your own class could be to cut the band names into little squares and have students pick them out of a hat early on in the course. The students seemed to have settled on either using a band name of their choice (one student is doing the logo for a band he is actually in!) or doing ‘band’ logo using their name.

Last week, I sent Walter at EmbroidMe Chelmsford a demo design created in Inkscape for us to test out how well Inkscape-produced files work with his printing process. Some of the effects such as path clipping and blur did not come out right when he tried the SVG, so we decided to work with 300 dpi PNG exports. The shirt came out great, and I wore it to class as an example for the students, showing them the original file and finished T-shirt side-by-side. I then quickly showed the students how to set their canvas size to 13″ x 15″ so they could see the boundaries of where their designs would print on the T-shirt. One important thing I tried to remind them of is that the shirts will be heather grey, and there is no white ink, so any areas that are white in their file will turn out heather grey / no ink. You can see this in the snowcap of the Inkscape logo mountain in the test t-shirt, as I’m pointing out in the photo below:

Inkscape Class Test Shirt

The only instruction besides that was a quick run-through on linear and radial gradients. I did not have a sheet prepared for that, but I have prepared one here for your usage. Originally, I had prepared a sheet on importing Open Clip Art graphics, but as Eve and I were talking on the car ride into class we decided that it’d be better to go over gradients – getting the students working with Open Clip Art too early we feared might encourage them to lean too heavily on found art rather than hone their still-developing skills in creating their own artwork. I’ll use that material for the last day of class.

After the explanation on gradients, we encouraged the students to raise their hands as soon as they got stuck on something. By far, the most common issue that has gotten students stuck is the alpha setting in the fill dialog somehow getting turned all the way down, so when they start drawing with the calligraphy pen or shape tools, they can’t see their artwork at all. It’s the ‘alpha’ slider, not the ‘opacity’ slider (the latter they seem very comfortable with.) I’m pretty sure the stuck students were not setting the alpha in that dialog deliberately, so I am not sure how it keeps getting turned down.

Some other issues that came up:

  • A couple of students over the course of the class have gotten ‘lost’ on the canvas. We’ve instructed them to hit ‘5′ on the keyboard to get brought ‘back to center’ to find their artwork again.
  • A couple of students have gotten confused when a shape didn’t have nodes – I’ve had to remind them to convert the shape to a path first.
  • One student today had a really nice illustration of a snake that she made with the calligraphy tool, but she did it in separate strokes and was not sure how to link them together. I showed her how to hold down Shift, select the pieces she wanted to unify, then go to Path > Union to make them one shape. It was a little hard for her to ‘collect all the pieces’ but once she got them all selected she was back on track.

I don’t think these are necessarily flaws in Inkscape, just humps that beginners to the program should learn how to resolve!

I forgot to take photos of the students’ work again – I will try harder for class 6 tomorrow!

Follow Along on Your Own

We have a lot of materials this week for folks following at home.

Here’s the lesson sheet we used for class on Thursday:

Introduction to Inkscape Lesson 5

lesson 5

Here’s the other materials we handed out:

T-Shirt Size Signup Sheet

tshirt size signup sheet

Band Name Suggestions Sheet

band name suggestions sheet

Class Calendar with Deadlines

class calendar with deadlines

Here’s the sample design for the Inkscape T-shirt, both in SVG and the 300-dpi PNG Walter used to print the shirt out (the same shirt you see in this post’s photo!)

Sample T-Shirt Design SVG

sample tshirt design svg

Sample T-Shirt Design 300-DPI PNG

sample tshirt design png

As always, the OpenOffice.org source files and the outlines for the entire course are at the course page on my website – but please note that’s a rough outline; as we progress through the class I’m coming up with the more-solid lesson plans based on how far the students get each session. By the end of the course I hope to have the course page organized much better.

By the way, if you’d like to follow all the blog posts about this class at one URL without getting the rest of my feed, I’ve set up a category in WordPress specifically for these posts:

http://mairin.wordpress.com/category/inkscape-class/

Enjoy! And please do let me know in the comments if you have any questions or suggestions

This course is sponsored by

Filed under: Inkscape Class
Taking Notice

Over the last few weekends I’ve been working with Christian Hammond to try to get our notification specification, libnotify, and notification-daemon story in order.

Bugeye by bensonkua

Long story made short – things had become a bit fragmented over the last year or two.  A number of people tried valiantly to move the spec along but were unsuccessful in getting their changes published.  Everyone on the planet that was shipping libnotify and notification-daemon shipped them with a different set of patches.  This meant we had lots of different micro-forks of both the implementation and specification.  We even had a hard time agreeing on the version numbers for the specification.  Version 0.10 happened after version 1.0 was published.  Yikes, what a mess.

Some downstream distributions either decided to try to differentiate by writing their own notification-daemon implementation or writing custom bubble themes.  This kind of differentiation or fragmentation is dangerous (or at best anti-social) and should usually be viewed with some skepticism.  I should not be spared from this criticism either since I wrote a new theme that we used in Fedora 12.  (It is now included upstream)

So, out of respect for the original authors and innovators I put some time in to try to straighten this all out.

The canonical implementations have a new home:

The notification specification source has a new home:

The bug tracker does too:

We still need to find a place to host the new 1.1 version of the specification on the GNOME web site.  After discussing this with Fred Peters it seems like http://library.gnome.org/devel/references#standards is an appropriate place for it.  Hopefully we can decide in the next few days.

I have to give credit where it is due.  Most of what I’ve done is merging the changes from Andrew Walton and Aurélien Gâteau.  Thanks dudes for continuing to do the right thing and pushing changes upstream – even or especially when it was hard.  And thanks to Christian Hammond, Mike Hearn, and J5 for their vision and hard work in getting us to this point.

Now, hackers we need you.  Please grab these from git and test them out and file bugs.  I’d like to do a release in the next few days but it would be great if they got some testing before then.  Thank you!

A year later

Continuing the long-term obsession with adhesives and chemical bonding in general...

Folks might remember the printer ink project from a year ago. The biggest concern, all around, was that the composition of the inks was and is generally a trade secret. Ink usually has some alcohol component but you can never be sure which one, so choosing a plastic and an adhesive can be tricky. What is perfectly good for containing ethanol often won't work with methanol, or isopropyl. etc.

What I didn't expect was chemical welds to be susceptible:

Polycarb is rated for most alcohols and the tubes generally withstood the ink. However, all the chemical welds (IPS #40, indicated for polycarb) crazed badly and two tubes cracked all the way through at the point of the weld. I suppose several problems could be at play... The MMA content of the weld, surface stresses that chemical welding invariably causes, etc. To add insult to injury, the failsafe marine epoxy was also thoroughly undermined. It turns out that most consumer-grade marine epoxy... isn't rated for continuous immersion. Uhhh... what?

So, I've rebuilt things with industrial B45 epoxy, which is supposedly rated for Hell, High Water, and Alcohol:

Shortly after making the B45 versions I discovered by accident that despite claims otherwise all over the web, aquarium-grade silicone will bond to polycarbonate just fine (it does not adhere to many other plastics. Polycarb is not one of them). The bond isn't any more structural than silicone ever is, but the adhesion is very good. Silicone will absolutely stand up to anything in the ink. If the B45-bonded tubes fail, silicone versions will have to be next.

Another update in a year I suppose...

January 30, 2010

first release

Just in time for the Fedora 13 feature freeze, I’ve created the first real releases of my little accounts dialog project and the service that goes with it. I’m continuing to enjoy working on a young project, where one can still make changes without upsetting people. So, what has changed in the accounts dialog in the last two weeks ?

  • The login screen options are now being saved – implementing that was a nice reminder why we need DConf…
  • The somewhat annoying column of “Change…” buttons has been replaced by much smoother in-place editing
  • I’m now using PolicyKit lock buttons to avoid popping up authentication dialogs in unexpected places
  • Finally, working hot-plug for webcams – the future is here ! Many thanks go to Bastien for that…

In-place editing

The next steps in this little adventure are to finish my gdm patch to make talk to the service instead of parsing /etc/passwd itself. Once that is working, gdm needs to learn to be helpful by showing password hints.

For updates and more screenshots, head to the Fedora feature page, or to the project page that I have just begun to put together.

January 28, 2010

Shared-mime-info patches
Ooh, the strain.

If you filed a bug against shared-mime-info in the past and wonder why your requested mime-type still isn't in, it's just a lack of time, and the fact that most of the bug reports require too much work on my side to be integrated.

If your bug doesn't include a test case, I won't look at it.
If your bug is a copy/paste of a stand-alone mime definition file, I won't look at it.
If your bug doesn't contain any reference information, I won't look at it.
If your patch isn't git-formatted, I won't look at it.
If your patch breaks the test suite, I won't look at it.

Given the requirements to compiling shared-mime-info (git, a C compiler, and glib), I don't think I'm setting the barrier too high. Furthermore, all those requirements are spelled out in the HACKING file.

Let me know if you have any questions, or want clarification on some points, so I can update the HACKING file with that information.
thousands of one – hidden treasure – march, 2009

I took this video with a Flip-cam back in Alllston, MA in March, 2009. I just found it on my hard drive and thought others might like it. It’s low-fi, but a lot of fun. (I would pay quite a bit of money for a handy camera that actually had good sound pick-ups – makes up for poor video quality.)

The band is Thousands of One. My brother is the drummer and they are based out of Ithaca, NY.

<video controls="true"><source src="http://www.0xdeadbeef.com/~blizzard/weblog-videos/2010-01-27-thousands-of-one/Thousands%20of%20One%20-%20Hidden%20Treasure%20-%202009-03-08.ogv" type="video/ogg"><source src="http://www.0xdeadbeef.com/~blizzard/weblog-videos/2010-01-27-thousands-of-one/Thousands%20of%20One%20-%20Hidden%20Treasure%20-%202009-03-08.mov" type="video/mp4"><object height="300" width="400"><param name="allowfullscreen" value="true"/><param name="allowscriptaccess" value="always"/><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3536196&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1"/><embed allowfullscreen="true" allowscriptaccess="always" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=3536196&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" width="400"></embed></object>

Thousands of One – Hidden Treasure from Christopher Blizzard on Vimeo.

</video>

January 27, 2010

Creating printer profiles with gnome-color-manager

Work on gnome-color-manager continues. Display, scanner and camera profiling seems to work very well now, but I would really like to move on to creating profiles for printers. To do this I need to buy some expensive kit, something like a ColorMunki. If anyone has one of these sitting in a draw being unloved, it would be all I need to add support to gnome-color-manager. It’s not something I can expense, as it’s not really part of the day job. Anybody?

Unpackaged Open Font of the Week: League Gothic

League Gothic is a sans-serif Gothic typeface, originally designed by American typeface designer Morris Fuller Benton in 1903. The League of Moveable Type has made this typeface available as a font under the the Open Font License as it was designed pre-Steamboat Willie and is under the public domain. Morris Fuller Benton designed over fifty typefaces, including well-known (to designers at least) ones such as Franklin Gothic, ATF Bodoni, Century Schoolbook, News Gothic, and Parisian.

How can you use League Gothic? It’s a very bold and strong font, easily readable from far away. Actually, it reminds me a lot of the Marvel Comics logo, so naturally I used it to create a tightly-spaced Batman (DC Comics) related type specimen. In all caps, the font has a very tall feeling because the legs of the letters are very tall – the x-height seems to be much taller in proportion to the full letter height than in other typefaces. The League of Moveable Type page for League Gothic has a nice type specimen for the font – it’s a clear and readable typeface for info graphics, but also could make for a nice, epic-feeling logo.

League Gothic has coverage of some accented characters in Latin Supplemental, but Latin Extended A and B are not covered:

League Gothic is licensed under the Open Font License.

So, you want to package League Gothic?

Way to go – you’re rad! You’ll want to follow the first steps here next to the ‘if you intend to do some packaging’ header:

Our fonts packaging policy, which the above refers to, is documented here:

And if you have any questions throughout the process, don’t hesitate to ask on the Fedora Fonts SIG mailing list:

Last Week’s Font

Last week’s font was Tuffy Infants 2 by Thatcher Ulrich. Nobody has picked up the font package request yet! Would you like to?

Posted in Unpackaged Font of the Week

January 26, 2010

spamassassin-3.3.0 RPM Packages for Fedora or RHEL-5
spamassassin-3.3.0 release on January 26th, 2010 by the Apache Software Foundation.  This is a very important upgrade for mail administrators as this is the first major version upgrade in nearly 3 years.  While many improvements were made to the rules, for the most part it is almost a simple matter of a drop-in replacement for spamassassin-3.2.x.  3.3.0 trunk has generally of better quality in both stability and spam detection capability than 3.2.5 for many months now. I personally have been running snapshots leading to this beta release on my production RHEL5 server since early 2009.
Picture for no particular reason except that any picture makes a blog post more interesting.

While 3.3.0 is much improved, the most exciting part of the 3.3.x series is improving upstream processes to enable more frequent rule updates, in order to better combat changing spamming patterns.
  • Rule development and auto-promotion to stable rule updates happen in the same source control, encouraging new and updated rules to land in the sa-update channel far more regularly.
  • Expanded recruitment of additional volunteers for the Nightly MassCheck.  While any volunteers willing to sort mail are helpful, non-English speakers are in high demand.  More variety of types of ham and spam used in nightly automated checks of SpamAssassin helps to improve the quality and safety of rules.  A larger sample size allows for Rescore MassChecks to happen more often, allowing for more frequent balancing of new rules and greater overall safety.  If you can sort mail into separate ham/spam folders, you can help to improve spamasssasin.

Major Changes Specific to Fedora/RHEL SpamAssassin 3.3.0 RPM Packages
  • See upstream's release notes for complete details of this new upstream release.  Many of the rules were made safer especially for a few non-English languages (Japanese and Italian tested), while many other rules were improved or added since the 3.2.x series.
  • Rule updates are now ENABLED BY DEFAULT on a nightly basis.  As of 3.3.0 upstream considers rule updates mandatory.  You may edit /etc/cron.d/sa-update if you wish to modify or disable the scheduled time where update occurs.  /usr/share/spamassassin/sa-update.cron is the script that runs.  Channel definitions are defined in .conf files contained in /etc/mail/spamassassin/channel.d/ where you can see the simple config format and make your own .conf file if you wish to add additional channels.  You will note that the script updates by default only if it sees a spamd, amavisd or mimedefang daemon running.
  • Justin Mason's SOUGHT anti-fraud channel is enabled by default for nightly updates.  From personal testing SOUGHT is the only non-default channel that I personally trust as safe and effective.  Read about its interesting auto-generation methodology.
  • Subscribe for Spamassassin RPM News at Warren's announce-only mailing list.  You will occasionally receive news and helpful tips to improve your spamassassin configuration.

Upgrade Notes (some stuff that I'm aware of that may effect Fedora or RHEL users)
  • amavisd-new-2.6.2 is the minimum compatible version with spamassassin-3.3.0.  This ticket contains a possible quick workaround to make your old version of amavis compatible.  This is only an issue for EPEL5 users which currently has an older version of amavisd-new.  Steve is aware of the issue and will be upgrading the EPEL5 version soon.
  • maia-1.0.2a is INCOMPATIBLE with spamassassin-3.3.0.  Upstream is aware of the issue and said they are working on this.
  • mimedefang versions in EPEL5 and Fedora are reportedly good.
  • STOP USING SARE or OpenProtect.  They died a long time ago.  Some of their rules are dangerous or redundant.  Many of the better rules were integrated into spamassassin upstream.

Download RPM Packages

  • Packages for Fedora 12 or Fedora 11.
  • RHEL5: I personally use these scratch builds.  You will need some new perl module dependencies from EPEL5. The plan is to push spamassassin-3.3.0 final + new perl modules to RHEL-5 sometime early 2010 after extensive testing.  But for now these are unofficial test packages.  Please file bugs if you see any problems.
  • Optional packages: These packages are not required, but they probably will improve your spam filtering results.
    • yum install perl-Mail-DKIM perl-Mail-SPF pyzor perl-Razor-Agent

File Bugs
  • SpamAssassin Bugzilla for most issues.  If you report upstream please indicate the exact package version you are running as reported by rpm -q spamassassin and where you obtained that package.
  • Red Hat Bugzilla if you are having an issue specific to my Fedora or RHEL5 package.

Subscribe for Fedora/RHEL SpamAssassin RPM News
  • Warren runs this announce-only mailing list.  You will occasionally receive news and helpful tips to improve your spamassassin configuration, or warnings of new problems and workarounds, or news about how you can help to improve spamassassin.

Help Wanted: Non-English Volunteers

  • Do you receive lots of non-English legitimate mail?  Want to help to improve SpamAssassin upstream for your language?  While we need help from speakers of any language, we especially need volunteer participants from China, Hong Kong, Taiwan, Korea or other Asian countries. 
  • Volunteering is easy, you only sort mail into folders then run a script on your folders every night in a cron job, which then uploads your logs to the central server.  Your mail remains private.
  • Contact Warren Togami or Fedora's auto-mass-check recruitment coordinator Nick Bebout if you are interested in joining.
spamassassin-3.3.0 RPM Packages for Fedora or RHEL-5
spamassassin-3.3.0 release on January 26th, 2010 by the Apache Software Foundation.  This is a very important upgrade for mail administrators as this is the first major version upgrade in nearly 3 years.  While many improvements were made to the rules, for the most part it is almost a simple matter of a drop-in replacement for spamassassin-3.2.x.  3.3.0 trunk has generally of better quality in both stability and spam detection capability than 3.2.5 for many months now. I personally have been running snapshots leading to this beta release on my production RHEL5 server since early 2009.
Picture for no particular reason except that any picture makes a blog post more interesting.

While 3.3.0 is much improved, the most exciting part of the 3.3.x series is improving upstream processes to enable more frequent rule updates, in order to better combat changing spamming patterns.
  • Rule development and auto-promotion to stable rule updates happen in the same source control, encouraging new and updated rules to land in the sa-update channel far more regularly.
  • Expanded recruitment of additional volunteers for the Nightly MassCheck.  While any volunteers willing to sort mail are helpful, non-English speakers are in high demand.  More variety of types of ham and spam used in nightly automated checks of SpamAssassin helps to improve the quality and safety of rules.  A larger sample size allows for Rescore MassChecks to happen more often, allowing for more frequent balancing of new rules and greater overall safety.  If you can sort mail into separate ham/spam folders, you can help to improve spamasssasin.

Major Changes Specific to Fedora/RHEL SpamAssassin 3.3.0 RPM Packages
  • See upstream's release notes for complete details of this new upstream release.  Many of the rules were made safer especially for a few non-English languages (Japanese and Italian tested), while many other rules were improved or added since the 3.2.x series.
  • Rule updates are now ENABLED BY DEFAULT on a nightly basis.  As of 3.3.0 upstream considers rule updates mandatory.  You may edit /etc/cron.d/sa-update if you wish to modify or disable the scheduled time where update occurs.  /usr/share/spamassassin/sa-update.cron is the script that runs.  Channel definitions are defined in .conf files contained in /etc/mail/spamassassin/channel.d/ where you can see the simple config format and make your own .conf file if you wish to add additional channels.  You will note that the script updates by default only if it sees a spamd, amavisd or mimedefang daemon running.
  • Justin Mason's SOUGHT anti-fraud channel is enabled by default for nightly updates.  From personal testing SOUGHT is the only non-default channel that I personally trust as safe and effective.  Read about its interesting auto-generation methodology.
  • Subscribe for Spamassassin RPM News at Warren's announce-only mailing list.  You will occasionally receive news and helpful tips to improve your spamassassin configuration.

Upgrade Notes (some stuff that I'm aware of that may effect Fedora or RHEL users)
  • amavisd-new-2.6.2 is the minimum compatible version with spamassassin-3.3.0.  This ticket contains a possible quick workaround to make your old version of amavis compatible.  This is only an issue for EPEL5 users which currently has an older version of amavisd-new.  Steve is aware of the issue and will be upgrading the EPEL5 version soon.
  • maia-1.0.2a is INCOMPATIBLE with spamassassin-3.3.0.  Upstream is aware of the issue and said they are working on this.
  • mimedefang versions in EPEL5 and Fedora are reportedly good.
  • STOP USING SARE or OpenProtect.  They died a long time ago.  Some of their rules are dangerous or redundant.  Many of the better rules were integrated into spamassassin upstream.

Download RPM Packages

  • Packages for Fedora 12 or Fedora 11.
  • RHEL5: I personally use these scratch builds.  You will need some new perl module dependencies from EPEL5. The plan is to push spamassassin-3.3.0 final + new perl modules to RHEL-5 sometime early 2010 after extensive testing.  But for now these are unofficial test packages.  Please file bugs if you see any problems.
  • Optional packages: These packages are not required, but they probably will improve your spam filtering results.
    • yum install perl-Mail-DKIM perl-Mail-SPF pyzor perl-Razor-Agent

File Bugs
  • SpamAssassin Bugzilla for most issues.  If you report upstream please indicate the exact package version you are running as reported by rpm -q spamassassin and where you obtained that package.
  • Red Hat Bugzilla if you are having an issue specific to my Fedora or RHEL5 package.

Subscribe for Fedora/RHEL SpamAssassin RPM News
  • Warren runs this announce-only mailing list.  You will occasionally receive news and helpful tips to improve your spamassassin configuration, or warnings of new problems and workarounds, or news about how you can help to improve spamassassin.

Help Wanted: Non-English Volunteers

  • Do you receive lots of non-English legitimate mail?  Want to help to improve SpamAssassin upstream for your language?  While we need help from speakers of any language, we especially need volunteer participants from China, Hong Kong, Taiwan, Korea or other Asian countries. 
  • Volunteering is easy, you only sort mail into folders then run a script on your folders every night in a cron job, which then uploads your logs to the central server.  Your mail remains private.
  • Contact Warren Togami or Fedora's auto-mass-check recruitment coordinator Nick Bebout if you are interested in joining.

January 25, 2010

gedit 2.29.5

I just rolled the tarball for the next development release of gedit. This release marks an important milestone, since we completed all the goals we had on our roadmap for 2.30.

In particular this release overhauls the internals of I/O handling in gedit by always using gio for file loading and saving (we only used gio for saving remote files) and by taking advantage of the new data conversion api added by Alex.

For the casual gedit user these changes should be pretty much transparent, since they do not introduce new features except for the ability of forcing different line endings (Window’s CRLF, old MacOS CR and the usual UNIX LF). However since they are affecting one of the most important parts of the gedit codebase we would like to ask anyone running the development version and in particular who uses files with encodings different from UTF-8, to heavily test file loading and saving  and report any problem or regression.

FOSDEM, ah well, why not?

Okay, after checking exam dates, chatting with Olav and the Openismus crew, and having the Maemo and GNOME communities in mind I’d like to state:

I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting
Just booked a one-way flight to Brussels, not decided yet how and where to go back.

HTML5 video and H.264 – what history tells us and why we’re standing with the web

For background on the free software angle on this story please check out Robert O’Callahan’s post on this topic. Also check out Mike Shaver’s shorter background post as well. This post differs from theirs in that I want to talk about network effects, why codecs should be considered a fundamental web technology and what the long-term effects of the choices at this inflection point might look like.

Recently Youtube announced that you could test out an HTML5-enabled version of their site. They said that they were doing this partially based on people’s “number one request” that Youtube do more with HTML5. (They left out the other half of that #1 request – that the implementation be based on open codecs, but more on that later.) Not to be outdone, Vimeo rushed to announce a beta version of their player based on their site that claims HTML5 support as well.

To be clear, this is great news. This is just the latest in a long string of changes for video on the web. We started with a raw “player” delivered by Real Media. Then on to media embedded directly in pages via Windows Media + Quicktime. More recently video on the web has been a a platform play by Flash. And finally to a place where media becomes a first class citizen on the web without a single source provider. These moves by Google and Vimeo (and before either of them, DailyMotion) show that things are changing for the better, and faster than I think anyone could have imagined.

The players from Google and Vimeo do present a pretty serious problem, though. Each of these require a proprietary H.264 codec to be able to view them. These codecs aren’t compatible with the royalty-free web standards that the rest of the web is built on. The fact that they are being so unabashedly hyped along with the new darling of the web – HTML5 – means that most people don’t understand that something very dangerous is taking place behind the scenes.

If you think that this isn’t an issue that’s worth worrying about you need to read the rest of this post. In particular the history of GIF shows us what happens when patented technologies are used on the web and what happens when network effects over-run the natural drive to royalty-free technologies at scale. MP3 pricing gives us a glimpse into the strategy around H.264 licensing and what the landscape might look like 5 years from now, assuming H.264 were baked into the web platform as a requirement. I’ll also talk about other options that might be coming in the near future that most people don’t know about.

The Web Exploded on Royalty-Free

The web has always been based on the assumption of Royalty Free. In fact, participation in a working group at the W3C requires that any parties disclose and make available any essential claims on the technology covered by that working group.

But that’s just a technicality. The truth is in the tests: you can still build a web browser, spider, client, web server, image editor, a JS library, a CSS library, an HTML editor, a web publishing system, commerce system – anything that is based on fundamental web technologies – without asking anyone for permission. This is a fundamental reason why the web has spread everywhere. Because everyone had the chance to add to the mix.

It’s worth saying twice. Anyone can create technology or services on the web and they don’t have to ask anyone for permission to do it. This is why we’ve had billions of dollars of investment and a fundamental shift in the way that western society acts and communicates – all in the course of a very short period of time. The web grew up on Royalty-Free.

Learning from GIF

The web in 1999 was a lot smaller than it is today, so a lot of people don’t remember what happened back when Unisys decided to start to enforce their GIF-related patents. GIF was already widely used on the web as a fundamental web technology. Much like the codecs we’re talking about today it wasn’t in any particular spec but thanks to network effects it was in use basically everywhere.

Unisys was asking some web site owners $5,000-$7,500 to able to use GIFs on their sites. Note that these patents expired about five years ago, so this isn’t an issue today, but it’s still instructive. It’s scary to think of a world where you would have to fork up $5000 just to be able to use images on a web site. Think about all of the opportunity, the weblogs, the search engines (even Google!) and all the other the simple ideas that became major services that would never have been started because of a huge tax being put on being able to use a fundamental web technology. It makes the web as a democratic technology distinctly un-democratic.

We’re looking at the same situation with H.264, except at a far larger scale.

So let’s talk about what makes a fundamental web technology, and how they should be licensed. First, the licensing. I think that Apple said it best:

After careful consideration of the draft patent policy, Apple believes that it is essential to continued interoperability and development of the Web that fundamental W3C standards be available on a royalty-free basis. In line with the W3C’s mission to “lead the Web to its full potential,” Apple supports a W3C patent policy with an immutable commitment to royalty-free licensing for fundamental Web standards. Apple offers this statement in support of its position.

(The post then goes on to talk about an opt-out mechanism for participating members.)

This leads to the obvious question: is the codec a fundamental web technology? The HTML5 working group argued and punted on the issue. Given that the standard is mum on the issue it falls to the actors in the market to determine what’s required to support HTML5. Given the state of online video today this basically boils down to one actor: Google.

Google has a near-monopoly in online video thanks to the ubiquity of Youtube. This means that they are the effective arbiter of codec choices for HTML5 video. If you want Youtube to work, you have to support whatever they are using. (Right now that’s Flash or a native Youtube app for mobile devices, but it’s clearly changing.) Let’s set up a strawman and say that it’s going to be H.264. (I’ll discuss later why I don’t think that this will be a requirement, but let’s say that it is.)

Their choice for H.264 had an immediate effect. It’s a signal to the market that it’s OK to start using H.264 as the main codec for HTML5 video. This is proven out by Vimeo’s HTML5 beta player launch. Vimeo is a secondary player, but were perfectly happy doing what Google did. The effects of that move have spread quickly and you can see it in people’s reactions: John Gruber getting angry at Mozilla as a result of Google’s actions, people on twitter claiming that we don’t support HTML5 at all because of Google’s use of a proprietary codec (Not true! Firefox actually leads in HTML5 support in a huge number of areas.) and Gizmodo’s choice comment: “Luckily, YouTube accounts for a hefty chunk of said architecture, their catalog is rendered in HTML5-friendly h.264 format. This is what network effects look like in real time.

So if you think that Google has settled on H.264 as the only codec they will support (unlikely) it would appear that they have set us up to have another GIF-like situation. Note that I think that this will not actually be the case, as I discuss later, but it’s worth thinking about as a framework. So instead let’s talk about what that situation would look like, with MP3 as the model for the H.264 licensing strategy.

Rising Costs and Unpredictable Licensing

So what can we learn about H.264’s licensing strategy as it pertains to pricing? Much like GIF we already have a model to look at that is already near the end of its cycle: MP3. Network effects and goverment-sponsored monopolies make a very powerful combination. But getting the most out of them requires a very specific strategy, one we saw with MP3 and we’re seeing again with H.264.

History is instructive. We know that MP3 was licensed quite liberally early in its lifespan. Before 2002, “no license fee is expected for desktop software mp3 decoders/players that are distributed free-of-charge via the Internet for personal use of end-users”. They changed that after the network effects had already taken their toll. Not only were decoders free for free software, but bulk flat rate licenses were available to large distributors. That’s how widely distributed software picked up with ability to play back MP3-encoded files.

But as the cycle continued and MP3 became a requirement for playback the pricing changed to where we are today. So let’s talk about what it looks 8 years later.

If you look at the public published rates for a couple of the MP3 licensors (and there are more than just two) someone who wanted to use it would be looking at a royalty rate of about $1/downloaded unit. So if you were doing, say, two million downloads a day you would be looking at about $2,000,000 per day just to have permission from those companies to include an MP3 decoder. Could you negotiate a lower rate? Probably. But that gives you a sense of the scale if you’re a small provider in a world where getting started on the web is hard and you don’t have much negotiating power.

People casually say that we should support licensed codecs like MP3, but they haven’t done the research. We have.

Much like MP3, H.264 is currently liberally licensed and also has a license that changes from year to year, depending on market conditions. This means that something that’s free today might not be free tomorrow. Like sending an H.264 file over the Internet.

In fact there are already royalties charged to some people using H.264 for streaming, according to Jan Ozer. Some quotes from that article:

Whenever I speak at industry groups about H.264, and detail the upcoming royalty obligation, some attendees are invariably surprised that using H.264 will generate royalties. Here’s what you need to know about H.264 and royalties, in an except from an article that I wrote for StreamingMedia.com [ed: full article here.]

When I spoke with Harkness, he stated that the patent group hadn’t yet decided the license provisions for internet broadcast, or even if there would be a license, though he conceded that it would make little sense for the patent group to forego this revenue. The only thing certain is that the royalty provisions must be announced by January 2010 for royalties that would be payable the following year.

OK. This paragraph hits all of the big points:

  • Right now there aren’t any fees for “internet broadcast.”
  • But there might be in the future
  • The license changes from year to year.

Remember, this is still very early in H.264’s history so the licensing is very friendly, just like it used to be for MP3. The companies who own the IP in these large patent pools aren’t in this for the fun of it – this is what they do. They patent and they enforce and then enjoy the royalties. If they are in a position to charge more, they will. We can expect that if we allow H.264 to become a fundamental web technology that we’ll see license requirements get more onerous and more expensive over time, with little recourse.

Selective Enforcement

One reason why a lot of this isn’t known is because patents can be selectively enforced. And because it’s still early in H.264’s lifespan it’s extremely advantageous to lightly enforce the patents in the patent pool. MP3 and GIF both prove that if you allow liberal licensing early in a technology’s lifespan, network effects create much more value down the road when you can change licenses to capture value created by delivering images and data in those formats. Basically wait for everyone to start using it and then make everyone pay down the road. (Three words: unpredictable business costs.)

The other problem is that the Internet, because of it’s global nature, hides many of these costs. Everyone – and I mean everyone – uses tools from parts of the world where there are no software patents to transcode and edit videos. (One of the world’s largest free software downloads after Firefox? VLC. 111M last time I checked.) This grey area for tools means that these heavily patented formats gain much of the same advantage as free formats – lots of free tools and tons of ad-hoc support from free software people – but with the ability to still enforce and monetize in parts of the world where patents are enforced. It’s actually a brilliant strategy, even though the outcome is that the true costs of patents are hidden from the view of most people.

So What Now?

Remember that my setup for this was that Google’s choice was going to be H.264-only and that their decision would have network effects on the web, setting up another GIF-like situation for the web.

But I, like many others, have reason to believe that H.264 will not be Google’s final choice. There’s good reason to believe this: they are purchasing On2. On2 has technologies that are supposed to be better than H.264. If Google owns the rights to those technologies they are very likely to use them on their properties to promote them and are also likely to license them in a web-friendly (i.e. royalty-free) fashion. Google actually has a decent history of doing this. In particular you can get a sense of this from their post on The meaning of open:

If there are existing standards for handling user data, then we should adhere to them. If a standard doesn’t exist, we should work to create an open one that benefits the entire web, even if a closed standard appears to be better for us (remember — it’s not!). In the meantime we need to do whatever we can to make leaving Google as easy as possible. Google is not the Hotel California — you can check out any time you like and you CAN, in fact, leave!

In this case they were talking about user data, not video formats. But it’s the same set of principles at work. It’s also very hard to imagine Google licensing proprietary codecs as a revenue stream. It just doesn’t align with how they have worked in the past.

So it’s very likely that Google will be using a codec that’s superior to H.264 in terms of bandwidth usage and will also have web-friendly licensing attached to it. I know that at Mozilla we would support that and would very likely incorporate that technology into our browser, much like we did with Theora and Vorbis.

In Summary

So that’s the case for supporting free formats and also describes why we should be avoiding H.264 as a fundamental web standard. We don’t want to set ourselves up with another GIF situation and set up licensing like MP3 where we’ll be dealing with increased costs and restrictions over time. Google is likely to support something other than H.264 on Youtube and we’re likely to end up with something that’s better on a royalty-free basis as a result. And as I mention below, Theora and Vorbis are still excellent alternatives even if they for some reason don’t do as we expect.

Mozilla and Firefox continue to stand with the web on this topic. We don’t think that fundamental web technologies should be encumbered with patents and our actions and messages reflect that. We hope that you will stand with us on this.

A Note About Theora and Vorbis

Many of you might notice that I haven’t talked much about Theora or Vorbis. In fact some of you might read this post as me throwing them under the bus. That couldn’t be further from the truth. What I’ve really been talking about is one part of a larger ecosystem. What the web is really asking for is a codec that is implemented everywhere, that competes well on quality and doesn’t come with GIF-like surprises. Theora and Vorbis fit every part of this bill. You can actually use them on all of the desktop browsers, either via native support or via a Java plugin that actually works pretty well.

On the quality side what we’ve been able to do at Mozilla, with the help of the rest of the Xiph community, is to show that even though Theora is based on older, royalty-free technology, most people can’t really tell the difference between a video encoded with a decent Theora encoder and a video encoded with H.264.

But given the situation with submarine patents it would actually be a good idea for us to have more than one royalty-free codec available for browser vendors, site owners and content publishers. That way if one of them turns out to have issues, you just turn one of them off and continue to use the other one That’s why I think that if Google did offer a new codec that it would make a wonderful addition to the list of codecs we could use on the web. And if they want to use it on Youtube and other Google sites, that’s great. But it’s good to have other options in the wings.

So this means that Theora and Vorbis aren’t going anywhere. There are other reasons to continue to support (and promote!) Theora and Vorbis as well:

  • There’s a growing corpus of Theora content on sites like the Internet Archive, Wordpress and Dailymotion, not to mention all the private sites that are out there starting to use it.
  • Vorbis is far better quality than MP3 for the same bandwidth and I would expect that Google would use it as the audio codec of choice to match a free video codec.
  • Vorbis is actually supported in a large number of hardware devices, often quietly. My phone supports it, for example.
  • Theora with Ogg as a container actually is a fantastic live streaming format for HTTP. This is often overlooked. While Apple has had to add a bunch of code and description files trying to get live streaming to work with their proprietary H.264 codec and MPEG containers, we’ve been doing live streaming over HTTP out of the box ever since Theora and Ogg were part of the browser without any changes to standards. This is largely a function of history. Vorbis and Ogg were originally built as a radio streaming format. It’s possible to jump into the middle of a stream and start decoding. (As a side note it will be interesting to see if Google ends up trying to build their own container format. Ogg is simple, and it works.)

So I wouldn’t expect these formats to go anywhere. Instead I would expect to see them implemented everywhere either as backups or to support existing content and streaming.

January 24, 2010

Inkscape Class Day 4

This past Thursday morning, I taught the fourth session of an 8-session (40 minutes per session) course on Inkscape at a Boston-area middle school. (For more general details about the class check out my blog post on day 1.)

Thursday’s Class

Thursday’s class was the first class the students really got a big chunk of time to start working on their project. With only 20 minutes or so under their belt, working on their rock band logo assignment, they’ve already come up with some pretty impressive designs!

Music Artist Logo Review

We started class off by walking through example logo designs from music artists of various genres – I pointed out some of the features about each logo and asked the students to think about how they contributed to the message the logo put across. I also pointed out that they should think about the kind of message they want their logo to send, and brainstorm ways they could change up the design of the logo to follow that message. For example, I contrasted the curves, hearts, stars, and bright colors of Katy Perry’s logo to the sharp angles of Metallica’s logo and asked them to think about each band’s music and how the design fit with the music.

We went over logos Eve and I pulled together from the following bands:

  • Adam Ezra Group
  • Atmosphere
  • Black Flag
  • Boys Like Girls
  • Britney Spears
  • Bullet for My Valentine
  • Cobra Starship
  • Katy Perry
  • Lady Gaga
  • Metallica
  • Muse
  • My Chemical Romance
  • Nirvana
  • Norah Jones
  • Pink
  • Prince
  • The Coup
  • The Killers

I would happily post the logo slideshow we put together, but these logos are all property of other folks and I’m not sure if it’s kosher for me to redistribute them. But you’d probably want to customize the logos you use to your own students’ taste anyway. A few of the groups listed there students in the class explicitly told me they liked the first day when I asked them their favorite groups. I also asked John for some suggestions via his daughter’s taste as to what kids in this age group are listening to today, because I am definitely behind on the times on music these days. :)

I was happy to find some of the students weren’t familiar with some of the artists, like the Adam Ezra group and Norah Jones, because it gave them an opportunity to try to figure out what type of music the artist played based on the logo design, and then I was able to tell them what genre the music really was.

I had the idea to arrange for a playlist of a sample of each band’s music – I put one together using a playlist in totem and Amazon’s music preview links. Turns out those preview links expire after 20 minutes or so, so when I went to play the playlist later on, it didn’t work! Oh, well. If you teach this class to your own students, consider picking up some sample music to play for the students as part of a “What genre is this group based on its logo” guessing game. :) I think it could be a fun way to get the students to think critically about what message the different attributes of the logo designs support.

Color Palettes

We talked a little bit about how color palettes can be an inspiration and help convey a message in a logo. I brought in two color palette books that I left out on the center table of the computer lab for the students to use during class if they wanted (none of them ended up using them.) The books are:

I also referred them to ColourLovers.com which is a great site for inspirational color palettes.

More Material on the Text Tool

I had just a little bit more material on working with the text tool – kerning, line spacing, letter spacing… and we had to just skip pretty much all of it. Why? For some reason, the Inkscape keyboard shortcuts for kerning and letter spacing do not work on a Mac. Does anybody know why this is? On my Fedora machine, for example, I simply use Alt+ to adjust letter spacing. We tried every key combo we could think of on the Mac to try to get it to work – command+>, alt+command+>, ctrl+alt+>, etc. etc. Any ideas from the Mac Inkscape users out there?

Anyhow, I kind of cheated and had the students convert text to paths and move letters manually with the arrow keys on the keyboard to get the same effects that the type tool should have offered. We also put text on paths…. although I have to say, have text run along the inside of a circular path vs the outside of the path is still really confusing. Path > Reverse doesn’t work when the text is already on the path, you have to take the text off the path first. Maybe worth filing a bug?

Logo Assignment

Finally the students got to work on their logo assignment. I read over the guidelines on the assignment sheet and let them go. Strangely, four classes now and the students are still very quiet! As you can see from the photos though, their results were impressive – they are very serious and focused on their work:

Inkscape Class Day 4
Inkscape Class Day 4
Inkscape Class Day 4
Inkscape Class Day 4

Some of the students struggled to come up with a band name. Eve and I offered a few suggestions to help them get unstuck and start playing with Inkscape:

  • If you have the style of the band in mind and just can’t come up with the perfect name, design a logo using your own first or last name, and when you think of a good band name you can replace it.
  • Use an online band name generator.
  • Work on an illustration to accompany the band’s name as part of a logo, and maybe a name will come to mind as you work on the illustration.

That being said, I think I should have maybe had a set of index cards with pre-picked fake band names and genre specifications for stumped students to pick through. It might still be useful for session 5. If I have time I may try to put these together…

Follow Along on Your Own

For those of you following along at home, here’s the lesson plan and exercise sheets we used for the class today:

Introduction to Inkscape Lesson 4

lesson 4

Introduction to Inkscape Lesson 4 Logo Assignment

lesson 4 exercises

How To Download & Install Inkscape


Today we handed out this sheet – although I should have put this together and handed it out on the first day. It’s instructions for the students to download and install Inkscape on their home computers. It includes instructions for Windows and the various OS X versions. There were already students who had Inkscape installed at home when I handed this out – but I think it helps to have instructions and an explanation of what the software is for parents who might worry otherwise:

As always, the OpenOffice.org source files and the outlines for the entire course are at the course page on my website – but please note that’s a rough outline; as we progress through the class I’m coming up with the more-solid lesson plans based on how far the students get each session. By the end of the course I hope to have the course page organized much better.

By the way, if you’d like to follow all the blog posts about this class at one URL without getting the rest of my feed, I’ve set up a category in WordPress specifically for these posts:

http://mairin.wordpress.com/category/inkscape-class/

Enjoy! And please do let me know in the comments if you have any questions or suggestions

This course is sponsored by

Posted in Inkscape Class

January 23, 2010

King George on his throne

The novelty of a baby who smiles all the time...

January 22, 2010

LCA 2010 talk
So I originally was going to attend LCA 2010 for the week, but real life interjected and I couldn't abandon family commitments for that long, so I ended up doing a crazy cross-Tasman dash. As well as the change in flights, Isabel came down with a virus and Gia also got it, I think I got a milder version of it, but they both seem alright by the time I left but I had little sleep the previous two nights.

So I flew on Wednesday morning, got in Wed afternoon, met up with ppl, had a couple of beers, wrote slides, slept, finished slides, went to Thur morning, drugged myself up on Nurofen Plus to combat viral effects, gave my talk, went to see ajax talk, went to professional network dinner, went for beers with ajax + benh (listening to an American and a Frenchman speaking about wine while listening to drum n bass in a Wellington pub was a bit wierd). Decided to push on through, so got back to room at 3am or so, checked out/left for airport at 4:20am, flew at 6:20am, into BNE at 7am, home, bed, sleep for a few hours and mind Isabel for afternoon.

So my talk was "So you've put kernel graphics drivers in the kernel... what next? can I haz ponies?". My slide deck is off the 0-content style + lots of pictures of various ponies, which I've found, they'll be on the LCA site soon and I'll upload them when I plug that laptop in again.

(a) stop people reading ahead of your bullet points so they don't doze off while you are catching up
(b) gives them something to look at apart from me while they actually have to listen to me :-P

It seemed well received, the room was pretty packed out (ppl standing/sitting - LCA schedulers you listening?) and I don't think the sickness or lack of decent preparation made a big difference. I'd like to apologise for not even mentioning SGX/poulsbo, I'm not sure how but it totally slipped my mind, but the situation hasn't really changed in terms of how screwed it is.

January 21, 2010

DEV300_m70

DEV300_m70 callcatcher results show four new unused methods arising out of the (cool) new printing changes.

Inkscape Class Day 3

Yesterday I taught the third session of an 8-session (40 minutes per session) course on Inkscape at a Boston-area middle school. (For more general details about the class check out my blog post on day 1.)

Yesterday’s Class

Yesterday’s class was jam-packed with information, and it proved to be too much material to allow the students enough time to really play around with and try out the techniques in the lesson!

We covered:

  • Using the pen tool to create Bezier curves
  • The different types of nodes
  • Working with node handles
  • Converting nodes between types
  • Adding & Removing nodes
  • Scaling and rotating nodes
  • The pencil tool
  • Simplifying Paths
  • The tweak tool
  • The fill tool
  • Converting type to paths

The general approach I wanted to take was to show how to manipulate the nodes on a path in an advanced way, then show additional ways to create paths and form paths (pencil, tweak, fill, type) and show that the node manipulation skills could be applied to any path created using any of those techniques or the shapes from lesson 2.

I think it was a little too ambitious for only 40 minutes of classtime, though – I’m feeling the crunch of having only 8 sessions. If I could have an extra session and if I could go back and edit the lesson plan, I would focus solely on node types and manipulation and give the students plenty of exercises and time to play around with them on their own. As Eve said after class, working with nodes and the pen tool is a bit of a mental leap as well as a technically difficult thing to do – they need a full session. After splitting that out into its own session, I would then split the rest of the content in the class into a separate session, and proceed with the material for lesson 4 as if it was lesson 5.

That being said, class went okay. I think the students picked up on everything – I checked monitors after each section and it seemed the few who were not yet caught up were quickly caught up to speed with Eve’s help. One of the students even had an elaborate design of a bird going in between the quick exercises.

One thing John, Eve, Ken and I discussed after the class is that 3 classes in and the students seem very quiet and focused. I’m hoping for more collaboration between the students in session 4 – I’ve planned to take up no more than 10 minutes going over a little bit more on working with type in Inkscape, then giving them the rest of the class period to work on their band logos.

Class was so jam-packed for this third session that I didn’t get an opportunity to whip out the camera. I’ll be sure to do so in tomorrow morning’s session 4!

By the way, I received permission from Walter to post his notes on T-shirt printing technologies and his specifications for the project – I updated the Inkscape Class Day 2 post with the link.

Follow Along on Your Own

For those of you following along at home, here’s the lesson plan and exercise sheets we used for the class today:

Introduction to Inkscape Lesson 3

lesson 3

Introduction to Inkscape Lesson 3 Exercises

lesson 3 exercises

As always, the OpenOffice.org source files and the outlines for the entire course are at the course page on my website – but please note that’s a rough outline; as we progress through the class I’m coming up with the more-solid lesson plans based on how far the students get each session. By the end of the course I hope to have the course page organized much better.

By the way, if you’d like to follow all the blog posts about this class at one URL without getting the rest of my feed, I’ve set up a category in WordPress specifically for these posts:

http://mairin.wordpress.com/category/inkscape-class/

Enjoy! And please do let me know in the comments if you have any questions or suggestions!

This course is sponsored by

Posted in Inkscape Class

January 20, 2010

GNOME Outreach Program for Women

The GNOME community would like to ensure a consistent, on-going effort to engage more women with the project and is therefore organizing a new Outreach Program for Women. The goal of the program is to encourage women’s participation throughout the year and create internship opportunities in the summer. This program is a part of a larger free software community effort to increase women’s participation.

The reason we need to have information and opportunities targeted specifically towards women is that this will get more of them involved.  It will allow more of them to learn how exciting, varied and valuable work on GNOME can be and how inclusive the community really is.

We already have a good list of mentors for the program and would love to have more sign up, so please add your name to the list if you are interested. A couple women have already come across the information about the program and gotten in touch with the mentors. Their involvement with the projects and guidance from the mentors can start now, which means that the program is basically providing them with the information on how to get started contributing to GNOME and a friendly contact for the questions they will likely have. We are encouraging students and mentors to work together before the application period, so that the students are well familiar with the projects before they apply for the internships and the mentors have the contributions they can take into account during the selection process.

Having summer internships with GNOME will create an opportunity for women to dedicate more time to their work on free software and make a greater contribution to the project. We would like to have these opportunities available in addition to the Google Summer of Code because this will allow us to have a more focused program and will ensure that more women learn about and participate in it. Moreover, we would like the new program to include non-programming projects such as graphics design, interaction design, documentation, and marketing. We are also considering organizing the program so that participants can work as part of the team starting with smaller contributions and progressing to larger ones, rather than working on stand-alone projects. This is more similar to the way companies run their internship programs and will ensure that contributions get incorporated into GNOME throughout the summer.

The GNOME Foundation would like to be able to provide stipends to several students similar to the ones offered in the Google Summer of Code and we need to raise funds for this purpose. I’d like to ask you to consider contributing towards this program or to make a comment that you’d like your contribution to be used towards this program when contributing through Friends of GNOME. We are also seeking corporate sponsorship for the program, so please let us know if your company would like to participate.

GNOME Outreach Program for Women will allow more women to learn how exciting and approachable the free software is and to gain the necessary qualifications to work in the free software industry, contribute to and create free software projects. I am personally very excited about having this program in GNOME because the knowledge and experiences that I have gained by working in the free software community have greatly enriched my life and I believe it is important that more women have such similar opportunities.

hair
hair in movement

hair in movement

Why is it so hard to take a good bio pic?

Camilla and I spent a while taking 'headshot' pics because I need one for a bio. Out of all the pics, guess which was the only one that looked decent...

Wanted: Samsung SWC-E100 WiMAX ExpressCard
Yota's Samsung SWC-E100: $65 (1,990 rubles)

Yota's Samsung SWC-E100: $65 (1,990 rubles)

XOHM's SWC-E100: $55 (when you could buy it)

XOHM's SWC-E100: $55 (when you could buy it)

Do you have either of these devices?  Or do you want to buy one?  And then send it to me?  I’ll even PayPal you up to $100 for it.  Let me know!  I believe the Yota device can still be purchased, but the XOHM variant stopped being sold last year after the XOHM/Clear merger.

January 19, 2010

India, 360 Degrees at a Time, Part Seven

Here's the seventh and final part of my ongoing series.

One of the grandest sights in Delhi is Humayun's tomb, a predecessor of the greatest mausoleum of them all, the Taj Mahal:

Humayun's Tomb

A little bit further down a view on the garden:

Humayun's Tomb

From a different corner:

Humayun's Tomb

We'll finish with our last panorama that shows the courtyard the Jama Masjid of Old Delhi:

Jama Masjid

That's all panoramas from this trip. Thanks for your interest.

January 18, 2010

Nook GPL update
"We are currently working on getting the code shipped out, we have your shipping address on file and will ship the code out as soon as it is ready, this will be by the end of this month."

2/10, must try harder. Even ignoring the fact that it's taking the best part of two months to get from shipping binaries to shipping source, it'll be interesting to see which version of the firmware the source release corresponds to given that the 1.1.0 update included a new kernel.

Speaking of firmware updates - as shipped, the nook was a disaster. The firmware update improved things greatly, but I'm still stuck with cases where books render with the last couple of words in a page left out, and the order of books in the local content library is now based on last modification time rather than, say, author name. The continuing lack of any way to implement catagorisation or provide worthwhile metadata means that it's frustrating having to remember which order the books in a series go in. The fact that there's even a distinction between content you've obtained from B&N and content you've obtained from elsewhere is mindboggling. You need to explicitly switch between the two, which means that collections are broken up if you've had the audacity to buy some books from B&N and some books from elsewhere.

Having now spent a while travelling with the nook, it's clear that it's still not an especially effective example of its type. If my Sony hadn't suffered an unfortunate accident, I'd be using it instead. The nook's hardware is significantly better and as a platform it's got much more potential, but it just doesn't do a terribly good job at its core role - reading books. It'll get better with time, but if you're in the market for something that actually works today then go elsewhere.

There's other little things that are upsetting at a conceptual level. The 1.0.0 firmware will flash unsigned firmware, which is useful[1] but also an obvious wtf. The filesystem is full of scripts that are world writable and executed as root. There's a libGLES, but the coverflow implementation appears to be handled entirely in software. There's a general feeling that the platform's been put together by people who either don't know what they're doing, don't care about doing it properly or were working under sufficient time constraints that getting it right wasn't an option. I'm really not impressed.

[1] Especially given that the 1.1.0 firmware will happily flash the 1.0.0 firmware...
India, 360 Degrees at a Time, Part Six

Here's the sixth part of my ongoing series.

Leaving Jodhpur we continued our journey to Jaisalmer, a sand castle of a town in the Thar desert:

Jaisalmer

In the vicinity of Jaisalmer you'll find cliche sand dunes like you'd expect from a grown-up desert:

Jaisalmer

Our next station after a long, cold and dusty train ride was Delhi. The principal mosque of Old Delhi is the Jama Masjid:

Jama Masjid

That's all for now, tomorrow I'll post the rest of my panoramas from this trip, all from Delhi.

happy mlk day

Here’s some joy from The Gregory Brothers.

<video controls="true"><source src="http://www.0xdeadbeef.com/~blizzard/weblog-videos/2010-01-18-mlk/mlk-memphis.ogv" type="video/ogg"><source http:="http:" type="video/mp4 src="><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/FbqNaIRW9vY&amp;hl=en_US&amp;fs=1&amp;"/><param name="allowFullScreen" value="true"/><param name="allowscriptaccess" value="always"/><embed allowfullscreen="true" allowscriptaccess="always" height="344" src="http://www.youtube.com/v/FbqNaIRW9vY&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" width="425"></embed></object></video>

Don’t see a video above? Try the original at Youtube.

Long time no blog

Hi there! It’s been a long time since I last wrote something on this blog, which reminds me how many things have happened in my life in the last year and a half.

As some of you might know, I’ve been working part-time for Collabora (on Empathy), helping fixing misc bugs and implementing nice things like file transfer, the accounts dialog user interface and the transition to the Mission Control 5 framework.

In the meanwhile I kept myself busy with my university and finally, last week, I took the last exam of my course! This means I’ll hopefully graduate on April :) Since November, I already started digging into my thesis, which will be aTelepathy implementation of the XTLS protocol, an end to end solution to crypt communication over XMPP.

In order for Telepathy to support channel encryption, some new interfaces need to be written. I drafted some proposals for this on the telepathy mailing list in the last few months, and I’m happy that Eitan Isaacson picked them up and turned them into something more concrete. In order to discuss with him and the rest of Collabora about the proposal, I’ll visit the Cambridge office at the end of the month, right in time to attend FOSDEM and the XMPP summit together with the Collabora gang.

After that, the items on my TODO list include:

  • draft a proof-of-concept implementation of the XTLS handshake into Wocky(I already started coding for this before I had to stop for my exams).
  • make sure the new Telepathy interfaces work fine in telepathy-glib
  • implement the interfaces into Gabble.

Hope to see you all in FOSDEM :)

maemo.org: SNAFU ;-)

The last two weeks were a bit… stressful.

First of all some Nokia-internal changes with regard to Error Management, then maemo.org Bugzilla moving to a new server. Unexpected side effect was data loss. Spent part of last Monday restoring what I still had in my bugmail. Still it leads to confusion and mistrust (”Why was my account deleted?” – “You probably created it in that data loss time frame?” – “Ah.”).

Then we had the Maemo5 PR1.1 release on Thursday (with a nice ChangeLog) and some problems on Saturday and Sunday, hence bugmail (change notifications) was not delivered.

Sharing other thoughts on broader issues that are currently on my mind:

Before writing the very first bug report (maybe even of your life) it’s recommended that reporters take a look at the How-To. Good bug reports save everybody’s time and issues get fixed faster. We should put this information on the first Bugzilla page to avoid frustration on both sides.

Also the number of incoming reports is constantly high, hence I am sometimes short with my comments (as I also have to take a look at the internal comments for public tickets, verify some reported issues in newer internal versions, keep stuff in sync, and other stuff). Depending on cultural backgrounds some of my comments might be misinterpreted as unfriendlyness.

For the high workload Ubuntu has a nice approach called 5 A Day which is asking community members to triage five bug reports a day. I’d be happy with any number though. ;-)
On a related note, for some reasons I expect more Nokians to be around in maemo.org Bugzilla after the next feature release (PR1.2) has been published. Looking forward to it.

Another problem is that many normal users don’t understand the difference between a bug report and a forum (I’ve blogged about this before, anyway). That’s predictable if you’ve never seen a bugtracker before, but if everybody wants Nokia to be more present in maemo.org Bugzilla and folks actually reading bugmail and responding, please reduce adding comments on what is helpful and avoid unneeded fullquotes or answering above the quote.
Especially if instructions how to provide further information have been posted already adding just another “I have this problem too” comment is unhelpful and creates bugmail noise in everybody’s inbox. Bug reports with hundreds of comments, mixing up issues with similar outcome but different reasons quickly become unreadable so the same questions or comments get reposted plus subscribed people tend to ignore new comments. Of course this is also a question of providing better information on how to provide logs etc – should spend time on this in the next weeks.

In general of course reading before posting is required, but people are lazy. “If this is RESOLVED FIXED, then why do I still see that issue here?” It’s explained that FIXED does not mean PUBLISHED, but we could consider renaming FIXED after having Bugzilla 3.4 in place, as it confuses many people. Red Hat for example calls an internal fix “RESOLVED ON_QA” in their Bugzilla until the fix is really available for public.

So that’s the reason why I educate people ask people to please “behave”. Sometimes I scare some people or maybe have less friends at the end of the day, sometimes people are fine with what I’m doing.
In any way it’s necessary, I just felt a need to explain my intentions in public after a bit of negative feedback in the last days.

January 17, 2010

India, 360 Degrees at a Time, Part Five

Here's the fourth part of my ongoing series.

After Udaipur the next stop on our trip was Jodhpur, the blue city. Which is called that way due of the blue colour of many of its houses:

Jodhpur

On a hill next to Mehrangarh Fort, one of the biggest Forts in India (the big sand castle on the hill in the panorama above), you find the Jaswant Thada, a memorial of the Maharajas of Jodhpur:

Jodhpur

Inside the fort you'll find highly decorated courtyards:

Jodhpur

That's all for Jodhpur, tomorrow I'll post more panoramas, from other stops of our trip.

How to set up the Canon Pixma MX860 with Fedora

Canon MX860 Setup

So for Christmas I bought myself Unclutter Your Life in One Week by Erin Doland of unclutterer.com. One of the things she suggests in the book is to create a personal digital library of documents, scanning in (most of) the papers you’ve got lying around and shredding and recycling the paper copies. Actually, I think it’s a pretty awesome idea – I had a neatly-bundled, chronologically-ordered stack of SprintPCS phone bills from 1999. I’m now on my 3rd phone carrier since Sprint – so why was I letting that useless junk take up my space?

One complication Erin’s advice introduces is that scanning a couple filing cabinets’ worth of papers you do want to keep some record of with a typical flatbed scanner is time-consuming and not exactly fun. Erin suggests using an ADF (Auto-Document Feeder) scanner like the Fujitsu ScanSnap – problem is, for $1100+ I’d be substantially towards my way at buying another car. Does the ScanSnap work in Linux? No idea.

Then I started to notice that many $200 and under multi-function inkjet printers had ADFs built-in. I have a non-color laser jet which is really great, but I can’t print in color or print photos or do crafts or any of that sort of thing. Also, it is not a network printer, wired or wireless, so it is in my living room so the USB cable is reachable. The Canon MX860 seemed a good answer to all of this, and searching around on the internet seemed to indicate a basic level of Linux compatibility, so I decided to give it a shot.

When I got my MX860, I plugged its power cord in and turned it on. Nothing. I went through the menu, saw it has a wireless access point called BJNPSETUP, and tried to connect to it – nothing. I was a little afraid that I needed a Windows or Mac to run a setup program just to tell the printer my access point’s name and key.

Now I don’t own a single Windows or Mac machine. I have an old Mac G3, the smooth, forgiving curves of which cradle my feet under my desk at work (I think it was last booted in 2006.) I didn’t want to have to bring the MX860 (a behemoth compared to my laser printer) into work just to do the initial setup The instructions that come with the MX860 are non-existent for Linux, but I think it’s equal-opportunity suckage because the instructions that come for Windows and Mac are really terrible.

No worries, though. You don’t need a Mac or Windows to complete initial setup of the MX860. But you will need an ethernet cable:

Canon MX860 Initial Setup

  1. Connect your MX860 directly to your wireless access point via an ethernet cable. If the MX860’s front ‘Canon’ logo is facing you, the ethernet jack is in the rear on the right side – there’s a white pull tab in it.
  2. Turn the MX860 on. Once it boots up:
    • hit the ‘Menu’ button
    • navigate 3 icons over using the right arrow button to the ‘Settings’ icon and hit the ‘OK’ button
    • now navigate 2 icons ove rusing the right arrow button to the ‘Device Settings’ icon and hit ‘OK’
    • Navigate four items down to select ‘LAN Settings’ and hit ‘OK’
    • Select the first item in the next menu, ‘Change WLAN/LAN’, and hit ‘OK’
    • Turn on the wired ethernet by selecting the second button ‘Wired LAN Acive’ on the screen.
  3. Turn the MX860 off and back on again. You might not need to, but it’s a reliable way to get the MX860 to pick up an IP address.
  4. Now that the MX860 is back on, you need to get the IP address:
    • hit the ‘Menu’ button
    • select the ‘Settings’ icon and hit the ‘OK’ button
    • select the ‘Device Settings’ icon and hit ‘OK’
    • select ‘LAN Settings’ and hit ‘OK’
    • select ‘LAN Settings List’ and hit ‘OK’. The IP address of the MX860 should be listed there – write it down.
  5. Go to the IP address in your browser’s URL bar. You’ll see a ‘Network Configuration’ UI as shown below:
    Canon MX860 Setup
  6. Click the ‘Advanced’ button in the lower right of the screen. Go to the ‘Wireless LAN Setting’ button on the left navbar and fill out the details of your wireless network:
    Canon MX860 Setup
  7. If you have a MAC address filter on your access point, make sure you add the MX860’s (WIRELESS, not wired) mac addy to your mac filter. I was halfway there – but by accident copied down the wired MAC instead of the wireless MAC and had a very confusing 10-15 minutes following that. :)
  8. Go back through the LAN settings menu as detailed above, and turn the wireless LAN on.
  9. Turn the MX860 off, then back on. Check your access point’s DHCP clients list – you should see it there.
  10. Okay now your MX860 is on your wireless network.

    Setting up a 32-bit client

    Now you’ve got the MX860 on the wireless network, but what good is that if you can’t connect to it from your Fedora laptop or desktop? The Canon drivers are 32-bit only, so getting them to work on a 32-bit machine is obviously a lot cleaner and nicer than on a 64-bit machine.

    1. On your Fedora machine, download the Canon linux drivers from Canon EU – download the RPM version labeled ‘Printer Driver for Linux (rpm)’.
    2. Install the drivers. You’ll get a tar.gz, so in a terminal in the directory you downloaded it to, run tar -zxvf cnijfilter-mx860series-3.10-1-i386-rpm.tar.gz. Then, cd into the cnijfilter* directory, and run the install.sh script inside by running ./install.sh.
    3. The MX860 has a USB cable. Plug that USB cable into your Fedora machine. The drivers will automatically be detected (you’ll see a pop-up message telling you as much.)
    4. In a terminal, run the following command as root to verify your Fedora computer can see the printer over wireless: /usr/lib/cups/backend/cnijnet
    5. Go to your Fedora computer’s CUPS setup by visiting http://localhost:631 in a browser and adding the MX860. It should already be in all the menus:
      Canon MX860 printer setup
      Canon MX860 printer setup
    6. Plug out the USB cable. You should be ready to print wirelessly.

    Setting up a 64-bit client

    So as previously mentioned, the Canon drivers are 32-bit only. The license posted on Canon Australia seems to claim they are GPL – well, I tried to build them for x86_64 using source download which handily included the spec and SRPM, but, unfortunately the sources include a binary library with no included source so it’s not possible to build the driver for x86_64. (I’ve been meaning to write Canon a note about that….)

    So, you have a couple of options if your machine is x86_64:

    • Connect to the printer via USB. Yeh, it defeats the point of wireless. But it works. Here’s the Canon MX860 PPD file, extracted from the drivers, if you care to set it up this way.
    • Make your x86_64 machine multilib and install the x86 drivers on it.

    Since I only use the MX860 for scanning with my x86_64 machine, I simply use a USB key plugged into the MX860 to save the scans to, then I transfer them to my x86_64 machine by plugging the USB key into it.

    Conclusion

    Anyway I hope this guide has been helpful. If anyone has better ideas on getting the drivers to work on x86_64 or convincing Canon to fix their source I’d love to hear them.

    Posted in Uncategorized
equality

It’s accepted wisdom that all men are created equal. A lot of people derive from this the idea that all people should be treated equally and have the same rights. It’s the basis for democracy after all. As such, many communities strive to achieve equality and even set it as their explicit goal.

However, in recent times there were two cases that made me doubt in equality as a good goal for any community. The first was the discussion about Fedora’s target audience, in particular defining the target as someone who “is likely to collaborate [...] with Fedora” which excludes a whole lot of lazy or uninterested people. The other is Lefty’s surveys where nobody wondered that the surveys assume everyone’s opinion is equally important.

Then there are a lot of places where not having equality is normal and everybody would look at you funny if you were to advocate it. Meritocracy is a very positive world in the open source development communities for example. It’s a known fact that the maintainer decides which patches go in and which don’t. (audio of the talk) So what’s the right way here?

I had a discussion about this with my girlfriend and we found a lot of similar places in the real world where groups wanted to appeal to everyone and ended up being unrecognizable from everyone surrounding them: The Greens for example became just another party without any differences. Apple is in the process of losing it’s style – you’re not special anymore if you have an iPhone or an iPod – everybody has one. And Google does evil these days. All of them saw an increase in “market share” in the process though.

So it seems that in the end it all comes down to this: Is it worth giving up one’s values for more market share?

I personally think everybody who tries to be inclusive is betraying his foundations and original goals. I’m not goint to call it “sells their soul”, because it sounds cheesy, but that’s how it feels to me. So GNOME, please do not give up requesting Freedom. And Fedora, please continue to target the people involved in being bleeding edge. Because the people who are crazy enough to think they can change the world, are the ones who do.

January 16, 2010

India, 360 Degrees at a Time, Part Four

Here's the fourth part of my ongoing series.

After Hampi we went to Bangalore to attend foss.in. (Fantastic conference, btw. The concerts at the venue are unparalleled.) From there we flew up to Udaipur, in Rajasthan. Udaipur is (among other things) famous for being the place where the central scenes of Octopussy were filmed. Octopussy's famous white palace is on Jagniwas Island in Lake Pichola:

Udaipur

This panorama was taken from another island in the lake, Jagmandir Island, which is visible in the following shot on the left:

Udaipur

Udaipur's scenery, seen from the Maharaja's City Palace down onto Pichola Lake:

Udaipur

That's all for Udaipur, tomorrow I'll post more panoramas, from other stops of our trip.

Announcing udev-browse

It's easy to get lost in /sys and not much fun typing long udevadm info command lines all the time. Today, when I had enough of that I sat down and spent an hour to write a little UI for exploring the udev/sysfs tree: udev-browse. I wrote it for my own use, but I am quite sure I am not the only one who wants a little bit simpler access to the device tree. So here you go.

And since everybody loves screenshots here you go:

udev-browse

Two usability hints: if you run udev-browse from a directory in /sys udev-browse will automatically present the device of that path on startup. And if you know the name of a device you can just type it into the device listbox (which is focussed by default). The usual Gtk+ live search will then find you the right entry right-away. It's pretty nifty.

It's written in Vala with minimal dependencies.

I want to keep the maintainership burden for this minimal. So no tarballs, no releases, and I won't reply to your emails regarding this tool, unless they include a good, clean, git formatted patch. Thank you for your understanding.

Anyone wants to package this for Fedora? I'd be very thankful if someone would pick it up.

Have fun.

January 15, 2010

Old promises

Back when the gdm rewrite was happening, we knew that we did not want to carry the old gdmsetup tool forward, since it was not very usable and had a ’show-me-all-your-obscure-settings’ approach. But still, some things on the login screen need to be configured, like the user who gets automatically logged in, or whether to show a user list, and similar things.

At the same time, we have collection of more or less inadaequate tools for managing user accounts in Fedora. On the one side, there is system-config-user with its more 1-1 translation of /etc/passwd and /etc/group into widgetry, on the other side, we have gnome-about-me, which is just a variant evolution contact dialog. I once tried to fill out the ‘Assistant’ field, but it didn’t work. The assistants never showed up in my office…

So we sat down and did a bunch of design work for a new user account dialog that would also cover login options, back in Spring of 2008. Somehow, we never got beyond the planning phase, unfortunately.

So, during the X-mas break, I decided to see if I could put together at least a prototype implementation. It was a fun experience to start a coding projects from scratch for a change, after years of mostly patching old and crufty^Hmature codebases like GTK+.  This has been going better than I thought, and you can find the results so far in the accountsservice and accounts-dialog repositories.

Screenshot-Overview

Recently, Bastien joined in the fun and added photo support, via cheese, which is really fun to play with.

The next steps for this tool are outlined in the Fedora feature, mostly getting gdm and other programs to work with the data provided by the accounts service. I should probably also work on setting up more proper project infrastructure, so that we can accept contributions from others more easily. Until I get around to that, patches are welcome via mail…

User accounts dialogue
Over Christmas, Matthias worked on the first pass at the long awaited user accounts tool.

I did my bit and committed this afternoon the new icon selection popup, which allows you to capture and crop a picture from your webcam (through my earlier cheese work). I also committed the ability to save your fingerprints, as was available in gnome-about-me.

Screenshots below. More information on the Fedora Features page.

The new icon selection popup

Fingerprint enrollment

Webcam capture and cropping