GNOME People
February 8, 2010
I followed through and canceled my DirecTV service today. My MythTV / Boxee setup has been running great the last couple of weeks and I kept DirecTV through yesterday just as a backup as I hosted a Super Bowl party.
This all started due to extremely poor customer service from DirecTV. My high-def DVR was dying in November, specifically the hard drive, as I could hear it grinding from twelve feet away over the sound of my speakers and the buffering and audio / video playback was terrible.
I had to reboot my DVR every 2-3 days, and performance would be better, then degrade. Calling DirecTV, they made me jump through a number of hoops to diagnose it which resulted in it taking almost a month and three phone calls before they agreed to replace it. Now, I don’t own this HD-DVR receiver – I lease it from DirecTV. When I first signed up for DirecTV 11 years ago you had to buy your hardware, now you just lease it from them for $5 / month.
They finally agreed to replace it, but they were going to charge me a $20 shipping & handling fee. My wife runs a small business out of the house, and I know it doesn’t cost $20 to ship one of those, especially in bulk. To say I was livid that I had to pay to get a receiver repaired that they own is an understatement. Each time I called in, they also tried to “upgrade” me on the last receiver that I actually owned – so I’d have to pay them another lease fee. I always told I’d only upgrade if it was a DVR, not just a standard receiver, and they always declined. (I had been able to take advantage of this a couple years ago, so I know they can upgrade old receivers to a DVR).
I emailed and called their customer service to complain – and their response was: “Sorry, that’s our policy”.
So now they’ve lost a customer. I may have had their lowest tier of service, but I also bought the March Madness and NFL Sunday Ticket packages each year, so from a revenue per customer standpoint I was above average.
When I called to cancel, they offered me $20 per month off for the next twelve months and a free DVR upgrade. Too little, too late. When they asked why I was cancelling, I said poor customer service for my HD-DVR experience this past November. So the cusotmer service rep processed my cancellation, and then let me know I’d be receiving a box with pre-paid shipping to send my HD-DVR back to them. Where exactly was this pre-paid box when I needed to get it repaired? (The state of Washington is suing DirecTV over hidden fees).
What gets me is the focus DirecTV, cable companies and cell phone companies have on customer acquisition rather than keeping existing customers happy. Even though I had already contacted them and complained they weren’t willing to do anything about it until I actually cancelled. In my opinion, they need to keep a balance between these two groups of customers. This wasn’t the first customer service incident I’ve had with them over the years, but enough was enough. Thanks to innovations like Boxee I can make up some (but not all) of the content I’ll be missing from going over-the-air only. A loyal customer will pay dividends – do you think I’ll be recommending DirecTV to friends in the future?
The Mutliplayblog today published the results of a survey measuring customer satisfaction levels in satellite, cable and telco TV subscriptions:
Low Perceived “Value for Money” among all Digital Pay TV customers
Virtually across the board—and irrespective of platform—respondents reported low satisfaction in the metric of `Value for Money.’ There was very little measurable difference by platform among respondents, and in all cases, fewer than 22% of respondents felt the service “exceeded” or “greatly exceeded” expectations of value for money.
This is among the most important findings of study, as it underlines the vulnerability of pay television in its current state. Indeed, in a report published in 2008, we found that over 50% of US digital pay television customers would be willing to scale back or completely drop their television service if household budgetary circumstances dictated.
I highly recommend reading the rest of the blog post, as these companies are at a tipping point. We’ve seen it in the music industry, the video industry is feeling it, and now pay TV services will be feeling the pressure as technological innovations will put their business models at risk. Will they embrace their customers and these new technologies or will they become extinct? First they need to look in the mirror and see if they’re keeping their existing customers happy before trying to sign up more. And I’ve already had a few people ask me about my setup and express interest in ditching pay TV…
I hope a few people wondered why my blog looked a little bit neglected in the past few months. Well finally I can say that I have been busy with several larger projects I was not supposed to talk about. For two projects I am involved in there are related press releases from our customers and business partners.
One project is the Linux port to the Höft & Wessel skeye.pos mobile – I really like the press release because it mentions the fact the supplied devices are running Linux and what the devices are used for. The filesystem on these devices is built with OpenEmbedded and is based on an older Angström release.
The other big project is closely related to both my job for kernel concepts and OpenEmbedded which is one of my favourite open source projects. The µCross distribution will support chip- and device vendors who are going to ship Linux-based solutions. The main idea is to combine the power OpenEmbedded and its large community with a good portion simplicity and a few additions. I do not want to mention too many boring details here so I will just introduce the basic concept: The idea is to offer customers binary packages matching their target architecture, matching toolchains and tools for assembling and configuring filesystem images for their devices.
There is not really an offical announcement yet but one of our business partners just announced a nice SBC module which will come with a µCross-based SDK. The TK71 is a QSeven format module powered by a Marvell 88F6281 SoC (Sheeva core based).
A third project that gained some love is the updated Linux port to the Toshiba Topas910 and TopasA900 boards. I am trying to maintain an upstream compatible and up to date Linux port to these devices here – for the people who do not want to use several year old kernels or this strange Aura stuff. The latest achievement is that I got some patches to make NAND flash work which is vital for the TopasA900 because its small NOR flash can’t keep a decent filesystem image with GUI.
Ok now I’m done with showing off and I should return to do something useful… such as writing a short report about FOSDEM!
Following Libcaca 0.99beta17 release (including plenty of new stuff like dirty rectangle framework, troff output, php and java bindings, triangle texture mapping), I uploaded today the first package of neercs into Mandriva Cooker.
Using the power of my new laptop I also captured a video demonstrating process grabbing (ogv, Youtube), and one showing the cube effect (ogv, Youtube).
Process grabbing still only works under Linux x86/x86_64 so help to port it to *BSD, OSX, Windows, Hurd and other Linux architectures is welcome.
neercs is still experimental so actually all tests and bug reports are welcome (patches too of course)
Had to approve a email message to foundation-list. Noticed a spam message in the queue from WebEx. Already knew that company, but apparently it is (now?) owned by Cisco. Anyway, there is no excuse for sending this to foundation-list.
The email ends with a sad:
This email may be an advertisement or solicitation. If you do not wish to receive marketing messages from WebEx, please select this link for removal.
Wonder what other solutions like WebEx exists. This as the company I work for unfortunately is a customer of WebEx.
This is my update for work done for the GNOME Foundation. For a higher level overview for what I do as the Executive Director, see What do I do as Executive Director of the GNOME Foundation? or my earlier updates.
Edited a GNOME Journal article. Check out the latest issue with its multimedia focus!
Published the GNOME Q4 2009 Quarterly Report! Thanks to all the teams that wrote things up - we have some great write-ups about some awesome work.
Submitted the GNOME Google Adwords account for approval. I was bummed when the automated response says it could take up to three months to get approval. However, it was approved within a few days! We've been running ads for Friends of GNOME and Women's Outreach for the past week or so. I've played with the keywords and ads some and gotten some feedback from the marketing list as well. Anyone with experience with Google Adwords would be appreciated!
Conversations with several board members about how things are going for the Board and how things are running with the GNOME Foundation.
Many one on one conversations with GNOME Advisory Board members. These were mostly brief chats 20-30 minutes about how things were going for them and how we could best work together. Discussed things like hackfests and GUADEC as well.
Friends of GNOME update for December 2009 and January 2010. We had a stellar 2009! In 2009, Friends of GNOME raised $29,578 for GNOME! That is the same amount raised by 3 large companies. From community contributions. It's enough for several hackfests and close to the amount needed annually for a part time system administrator. In December we raised $2,663, more than any other December. Spread the word!
Sent thank you's to people who donated money to GNOME. Sent a few postcards out for the Adopt a Hacker program. Sent on addresses to others who also owe thank you postcards.
GNOME Jobs. Heard about several GNOME jobs and asked people to post them on the GNOME Jobs board.
Had 1:1 meeting with Rosanna. Still working with her to try to get her workload balanced.
GNOME Board of Directors meeting.
Pinged a lot of people about a lot of things. Including GUADEC sponsorships.
Checked on getting a Euro account for the GNOME Foundation. Found one option that is good for large amounts but has excessive wire fees for small amounts.
Attended the Women in Free Software IRC meeting.
Attended a "Benchmarking Women Leadership" event put on by the White House Project. I was expecting more data about the new report but instead I met a lot of interesting people that may be able to help with contacts for the GNOME Outreach Program for Women.
Started planning a "Meet the Funders" event with other free software projects. We'll invite people from Foundations and other funders to learn more about free software projects.
This week:
- Attending the FOSS Workshop.
- Hoping to meet with Rosanna and a few more advisory board members.
- Blogging about the GNOME Outreach Program for Women.
- Pinging lots of people about lots of things.
This is my update for work done for the GNOME Foundation. For a higher level overview for what I do as the Executive Director, see What do I do as Executive Director of the GNOME Foundation? or my earlier updates.
Edited a GNOME Journal article. Check out the latest issue with its multimedia focus!
Published the GNOME Q4 2009 Quarterly Report! Thanks to all the teams that wrote things up - we have some great write-ups about some awesome work.
Submitted the GNOME Google Adwords account for approval. I was bummed when the automated response says it could take up to three months to get approval. However, it was approved within a few days! We've been running ads for Friends of GNOME and Women's Outreach for the past week or so. I've played with the keywords and ads some and gotten some feedback from the marketing list as well. Anyone with experience with Google Adwords would be appreciated!
Conversations with several board members about how things are going for the Board and how things are running with the GNOME Foundation.
Many one on one conversations with GNOME Advisory Board members. These were mostly brief chats 20-30 minutes about how things were going for them and how we could best work together. Discussed things like hackfests and GUADEC as well.
Friends of GNOME update for December 2009 and January 2010. We had a stellar 2009! In 2009, Friends of GNOME raised $29,578 for GNOME! That is the same amount raised by 3 large companies. From community contributions. It's enough for several hackfests and close to the amount needed annually for a part time system administrator. In December we raised $2,663, more than any other December. Spread the word!
Sent thank you's to people who donated money to GNOME. Sent a few postcards out for the Adopt a Hacker program. Sent on addresses to others who also owe thank you postcards.
GNOME Jobs. Heard about several GNOME jobs and asked people to post them on the GNOME Jobs board.
Had 1:1 meeting with Rosanna. Still working with her to try to get her workload balanced.
GNOME Board of Directors meeting.
Pinged a lot of people about a lot of things. Including GUADEC sponsorships.
Checked on getting a Euro account for the GNOME Foundation. Found one option that is good for large amounts but has excessive wire fees for small amounts.
Attended the Women in Free Software IRC meeting.
Attended a "Benchmarking Women Leadership" event put on by the White House Project. I was expecting more data about the new report but instead I met a lot of interesting people that may be able to help with contacts for the GNOME Outreach Program for Women.
Started planning a "Meet the Funders" event with other free software projects. We'll invite people from Foundations and other funders to learn more about free software projects.
This week:
- Attending the FOSS Workshop.
- Hoping to meet with Rosanna and a few more advisory board members.
- Blogging about the GNOME Outreach Program for Women.
- Pinging lots of people about lots of things.
I spent a little time this weekend doing one of the things I've wanted to do for years - eradicate one of the oldest files in Banshee: banshee-dialogs.glade.
The vast majority of Banshee's UI is custom widgetry that is laid out dynamically at runtime. The main window and the preferences dialog hasn't been restricted by Glade for a couple of years, but all the other dialogs were defined in part in Glade:
- Open Location
- Seek To
- Import Media
- Smart Playlist Editor
- Error list dialog (very unlikely anyone has ever seen this)
- Last.FM Station Editor
These were all fairly simple dialogs in Glade -- mostly consisting of a table, some static labels, and placeholders to pack in custom widgets at runtime (e.g. the import source combo box in the Import Media dialog, or the actual query builder UI packed in the Smart Playlist Editor dialog).
These are now fully defined in code, allowing the dialogs to derive directly from BansheeDialog, which provides extra common functionality for dialogs on top of Gtk.Dialog.
The big take-away here is no longer depending on the deprecated libglade/glade-sharp libraries (well, almost -- later this week Gabriel will port Muinshee -- an alternative Banshee client in the image of Muine, but not a core component). Additionally, I removed our dependency on libgnome/gnome-sharp, which is also deprecated.
This means that Banshee 1.5.4 will be GNOME 3.0 ready. The last thing to do is implement a udev hardware backend. We already have partial DeviceKit support, and GIO support. However, we don't take a hard dependency on HAL. The removal of the last Glade file represents the eradication of any hard obsolete GNOME 2.0 dependencies. Exciting!
As a quick aside: what was really nice about the porting from Glade to C# was the use of C# 3.0 features - specifically type inference and object initializers. This permits interface construction using a more terse syntax than available in C# 2.0, yielding improved readability and organization. For instance:
var table = new Table (2, 2, false) { RowSpacing = 12, ColumnSpacing = 6 }; table.Attach (new Label () { Text = Catalog.GetString ("Station _Type:"), UseUnderline = true, Xalign = 0.0f }, 0, 1, 0, 1, AttachOptions.Fill, AttachOptions.Shrink, 0, 0);Bring it on, GNOME 3.0. We are ready!
-
Luciana was munching on sausage slices. She grabbed the curved end of one sausage, looked carefully at it, and exclaimed, "look, a little vault!".
I guess that's what she learns in this house.
As many of you may have heard, from blogs by Eitan, Mike and Joanie, as well as an e-mail to the gnome-foundation-lists by Fernando, the Gnome a11y community is having a tough time.
I have been interacting with the a11y community for over two years now, and in that time the funding situation has never looked good. I do not wish to insult or demean companies that are no-longer involved in funding Gnome a11y. Companies and individuals have their own priorities that they must follow. Work they have done in the past on Gnome is very much appreciated by me, even if they cannot continue that work in-to the future.
That said, I believe that in the past two and a half years Gnome a11y has lost a huge amount of funding. First from IBM, which, to many peoples dismay, pulled out of a11y funding before I started work on AT-SPI. I was glad to hear that Mozilla is providing $10,000 to the Gnome foundation for a11y work. I’m extremely grateful for that, but I do not believe that Mozilla are providing the level of funding that they have done in the past. Our work on AT-SPI D-Bus has been funded jointly by Codethink, Sun, and another un-named benefactor. None of this funding is likely to continue past the end of February. All of this would seem slight were it not for the news that Oracle have let-go of important Gnome a11y community members working for the Sun Accessibility Project Office. Sun have been the major contributor to Gnome a11y, and this is a worrying signal that Oracle do not intend to continue the current level of contribution.
Assuming that Oracle do not wish to involve themselves in Gnome a11y, my back-of-the-envelope calculations indicate that we may have lost greater than $200,000 in anual funding over the last three years.
Although huge amounts of Gnome development takes place un-funded, by hackers, volunteers, users and hobbyists you would probably be surprised how much is done by folks working a 9-5. I don’t expect the figures to be the same, but as an example, 75% of kernel developers are paid by corporations for their work. The loss of the Sun Accessibility Project Office and other sources of funding will be felt very heavily by the Gnome a11y community.
Accessibility is incredibly important to the Gnome project, and not only to its users. Gnome has a fantastic, credible, accessibility story. This, to me, marks Gnome out as a class ‘A’ open-source project. Were we to lose this, it would be a turning point. In my eyes Gnome would then be a project in decline.
What can we do?
Firstly we need to go on a cohesive search for funding. The Linux Foundation has an accessibility group that I have been involved in for a long time. This seems to me the best place to combine our efforts in the great funding drive. Funding channeled through the Linux Foundation would not be Gnome specific, but cross desktop a11y technology is what we have long been striving for.
Ideally enough funding would be found to hire someone to work full time on Linux Desktop accessibility.
Outside of the search for cash all Gnome developers need to spend more time on accessibility. Its not always easy to make ones application accessible, and I’m sure it can seem daunting. There are still a11y community members ready to help out though. All is not lost. I’m damn near certain that we are going to pull together. Gnome 3.0 will have the same great accessibility that has made me proud of past Gnome releases.
In the continued interests of helping to make Ubuntu rock as a platform for scratching itches and making awesome apps, I am putting together a new online learning event: Ubuntu Opportunistic Developer Week, happening online between 1st – 6th March 2010.
The week will be just like our previous online learning events such as Ubuntu Developer Week and Ubuntu Open Week, but instead providing a week jam packed with awesome sessions about writing applications that scratch your itch, and predominantly focusing on Python tools and frameworks, Bazaar, Launchpad and infrastructure. The goal for the week is give attendees a head start on a given technology useful for applications.
So, I am looking for volunteers. If you feel you could give a tutorial about a given Python module or associated technology (e.g. Glade, Launchpad, Bazaar etc), please drop me an email at jono AT ubuntu DOT com and I will liaise with you to get it scheduled. I am also look for some showcase sessions: stories about how you put together an application, how it scratched your itch and what tools you used. Thanks to everyone who contributes to leading a session!
The week has already been added as a Lernid event and I am going to encourage session leaders to create slides for their sessions. As each session is confirmed it will appear in Lernid and on the wiki page. Rocking!
February 7, 2010
I had a crack at creating some electronic music. I know, not metal. I figured I would share this, and I have never done this before, so be gentle.
Check out Master Of The Situation in MP3 and Ogg format.
Created in Cubase with Halion One, a KeyRig and Drumkit From Hell.
I have been on the road for the last two weeks. Headed back to Seattle tomorrow after a great FOSDEM in Brussels.
While on the road I have heard all sorts of news regarding GNOME accessibility, none of it good. I am angry, I feel like blaming somebody or something, but I am not sure what. Right now I am directing my frustration towards academics who still have funding to continue various assistive technology research that will probably never see the light of day as a usable application while the real bread and butter of an accessible platform is being taken away. It’s reflexive, I know it. Maybe later I will have a clearer picture of how we move forward.
Until then, here are some notes from Joanie and Mike.
While my initial reaction was what a damper this is on our first a11y hackfest, I really hope that it will be an opportunity to regroup, have some good discussions, interact with the wider a11y community, and have some business interactions. So please come to San Diego, you know who you are!
When a web application needs to display many items, e.g. search results or large lists of records, it is often desirable to chunk the total list of items into equal-sized pages for easy navigation. This process is called pagination. Alternative techniques like continuous scrolling might also be worth considering, but this blog article is just about pagination.
If multiple pages of results are available, navigation links should be displayed on the output pages so that users can browse to other result pages. The list of links is what I call a pagination control. A pagination control could look something like this, where each item is a link to the corresponding page.
previous 1 … 5 6 [7] 8 9 … 15 nextIn my examples the active page is shown in square brackets. I also set the display width to 9 (see below). For all examples the total number of pages is assumed to be 15, unless stated otherwise.
Controls like these are quite intuitive to use, and many websites (e.g. search engines) use pagination controls similar to this one, with subtle differences in their implementations. For example, some have ‘first’ and ‘last’ links, some don’t. There are many other choices to make.
Implementing pagination controls like the above seems trivial at first sight, but there are a few corner cases to consider, and it takes some thinking to get all cases right.
Display widthIn my implementation, I assume a fixed number of links, so that the resulting output is always has more or less the same size, which I find very useful since the control would look roughly the same on all pages. I use the term display width to denote this value. In the example above the display width is set to 9. The gaps (shown with an ellipsis) are also considered, since those take roughly the same space as the links to the pages. (Optional ‘previous’ and ‘next’ links are not counted.)
A small exception to the fixed display width is that if there are less pages than the display width of the control, the complete list of pages is shown. For example, if there are only 8 pages in total, it looks like this:
previous 1 2 3 4 5 6 [7] 8 nextNote that the display width should be set to an uneven number to ensure a nicely balanced output. (For even display widths, the algorithm favours showing one extra link after the active page, since if a user is making its way through many pages, it is much more likely the user navigates in forward order.)
Which links to show?The control should always show the active, first and last pages, which make for three items in the list. In the remaining space, the control should show as as much context around the current page as space (defined by the display width) permits.
Gaps within the range of page numbers should be easy to spot to make it clear there are more pages available than the visible links. Gaps should be avoided if possible, so when the active page is close to the first or the last page, the control should try to align the numbers so that only one side of the control has a gap. The example below should clarify this:
[1] 2 3 4 5 6 7 … 15 1 [2] 3 4 5 6 7 … 15 1 2 [3] 4 5 6 7 … 15 1 2 3 [4] 5 6 7 … 15 1 2 3 4 [5] 6 7 … 15 1 … 4 5 [6] 7 8 … 15 1 … 5 6 [7] 8 9 … 15 1 … 6 7 [8] 9 10 … 15 1 … 7 8 [9] 10 11 … 15 1 … 8 9 [10] 11 12 … 15 1 … 9 10 [11] 12 13 14 15 1 … 9 10 11 [12] 13 14 15 1 … 9 10 11 12 [13] 14 15 1 … 9 10 11 12 13 [14] 15 1 … 9 10 11 12 13 14 [15]So, given these requirements, how to decide which links to show in the pagination control? The problem at hand is defined by three variables: the display width, the total number of pages, and of course the active page.
I wrote an algorithm that (as far as I can see) satisfies all constraints expressed above for all display widths of at least 7, since a display width of less than 7 items does not make any sense — the reason why is left as an exercise to the reader. (Hint: pagination controls are designed for navigating to other pages.) A quite clean Python implementation, which I hereby put in the public domain, can be obtained here:
Download pagination.py
Just run the script to see some example output. Porting this code to other languages should be trivial. Rendering nice XHTML out of the resulting list of numbers is very application-specific and hence left as an exercise to the reader.
With this approach showing back and forward buttons only if appropriate is trivial. If the current page is larger than 1, a ‘previous’ link should be included. Similarly, if the current page is smaller than the number of pages, a ‘next’ link should be shown. ‘First’ and ‘last’ links should not be rendered, since page 1 and the last page are always included in the output and extra links would not offer the user anything that the other links already offer.
I’m currently reading a book on modern legal drafting (read: ‘plain english for dummies, I mean, lawyers’). It is very good so far, but I think this is a telling stat about lawyers: 127 pages are devoted to why clear, modern english is a good idea. That is 22 pages more than are devoted to how to write clear, modern english.
Modern Legal Drafting, by Peter Butt and Richard Castle
This imbalance isn’t as insane as it sounds at first; there are some not-crazy reasons to re-use old language in legal documents, and explaining why they aren’t actually correct is a useful service. Still… given that some of the complaints about legalese cited by the book are over 200 years old, you would think the profession might at least by now realize that much legalese is a bad idea, even if we haven’t yet learned how to get rid of it…
(Favorite sentence from the book: “My client has discussed your proposal to fill the ditch with his partners.“)
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 ClassWell, 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.)
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.
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:
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 OwnHere’s the lesson sheet we used for class on Friday:
Introduction to Inkscape Lesson 7As 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 ClassIn line with what I usually do at conferences, I lost my glasses at the GNOME Beer event this year. If somebody found it, and maybe even has it, please let me know. It’s kinda hard to see presentations without it.
Warning: rant follows.
So today at the ‘release party’ in Toronto (I use this term in the loosest possible sense), certain KDE developers decided to have a go at me for my refusal to use KDE 4 in favour of KDE 3. Admittedly one of them was particularly drunk after only a couple of pints, so I won’t take his input too seriously, but it did raise some concerns with the mentality I’m now (more often) seeing within the KDE community that I never used to see.
For me, KDE always stood for being free to do whatever you want. Surely that’s the philosophy of free software as a whole? If I want to use my machine to herd cats in my garden whilst terrorising them with a giant torch? Sure [0]. If I want to make my desktop look like other, well down, proprietary desktop environments - why not? You get my point.
However, today my objections to KDE 4 were met with an unbelievable barrier of closed-mindedness. For example; I use bitmap fonts with my terminal. Why? Because at small font sizes (read: 6px high) I’d rather have my supremely readable bitmap font that I’ve been using for aeons than some scaled one. But Konsole4 I’ve found does not like to play nicely with bitmap fonts (admittedly this may be fixed by now). The unanimous answer from the KDE developers present? “You’re an idiot for using small fonts - it’s totally pointless”. Wow, way to go for the whole “free to do what you want” thing. I’ve also just done a quick benchmark and found its scrolling speed to be significantly slower than Konsole3’s. [1]
Second gratuitous example; I do not like desktop effects. They annoy me. I do not enable composite. I’m entitled to this opinion. Furthermore, it seems that enabling desktop effects increases power consumption. I spend a lot of time away from power (for example: at shooting ranges), and wish to maximise my battery life accordingly. Again, I was greeted with comments such as “why do you need to have good battery life?”, “it’s a ridiculous use case because you’re never away from a power socket for that long” and “you’re a corner case” (referring to the rifle range example) [2]. Nice to know that apparently wishing to minimise power consumption is a corner case now.
I was also greeted with a barrage of what I can only describe as sheer stupidity when I explained that I do 99% of my work in a terminal. This is also, apparently, frowned upon now.
Has KDE now become a desktop environment only useful to people whose usage patterns fit with what KDE prescribes as acceptable? Is there some sort of judge now in KDE who is able to decree whether someone’s usage pattern is “acceptable” or not? I do hope not. [3]
Very disappointed. [4]
[0] - OK I don’t actually do that, for a number of reasons really.
[1] - http://lwn.net/Articles/88249/; Konsole3 on my machine whacked out the whole thing in about 30s. Konsole4 (SVN trunk from a few months ago) took nearly 2 minutes. Both used the same font.
[2] - A fine example of deliberately missing the point to try and win an argument; the case of “wishing to extend battery life” is not a corner case. Mine is simply a specialisation of that.
[3] - To be fair, I am unfairly extrapolating the views of some KDE developers to the entire community, which I know does not as a whole think like this. But other people may not be so understanding. Fix it.
[4] - I don’t actually care all that much about KDE 4 as I’ve assessed it for my needs and have concluded it does not fit my requirements as well as KDE 3 does. I’m sure it’s fine for a lot of people. However, as stated at the beginning of this rant, I am somewhat dismayed with the direction the mentality of an increasing number of developers is taking. Just accept that I don’t like it, and sod off.
Edit: due to popular demand, comments are now enabled. Flame away.
February 6, 2010
Me: "I think I'm done buying computers that I can't run my own code on."
Friend: "Just think of the iPad as being a pile of books. You can't run your code on those either."
Me: "Thinking of a computer as being a pile of books is like thinking of a guitar as being Abbey Road by the Beatles."
Andrew Tridgell - FOSS and Patents
This informative talk went into a bit of detail on the current situation with (software) patents and some best practices for open source projects who want to avoid litigation. First, if you do get contacted by a company who claims your project violates one of their patents, contact public defenders, such as the Software Freedom Law Center or Electronic Frontier Foundation. In general, it's useful to know how to read patents, such as reading the abstract (but not stopping there, since they can often be misleading), then skipping ahead to the individual claims (which are the core of the patent), and then referring back to the diagrams, definitions, etc. as necessary.
And important point is that the "prior art" defense that so many people like to cite is actually very hard to win. This requires that the prior art covers every single claim in the patent. Instead, a "non-infringement" defense only requires that your work not (exactly) match every independent claim in the patent. There tend to be far more dependent claims than independent claims, so this defense tends to be easier to win.
An interesting point Andrew brought up was that he doesn't think it's to our advantage to avoid reading patents. His point is that even single damages (in the case that you unknowingly infringe a patent) is enough to end an open source project, so if you are forced to pay triple damages (in case you are aware of the patent), that doesn't change the end result. I unfortunately didn't have time to ask him this: wouldn't it matter to the author themselves whether they have to pay $LARGE_SUM_OF_MONEY or 3*$LARGE_SUM_OF_MONEY out of their own pocket? In either case, it's an ugly situation that you can be punished for being more knowledgeable.
Finally, Andrew suggested this strategy for open source projects to make themselves worse targets for patent suits (which is really all that matters): find and widely publicize work-arounds to patents. Closed-source companies are unlikely to do so, since a work-around could be a business advantage over another competitor who might otherwise be forced to license the patent. That way, we'll appear (and effectively be) a lot more work for patent owners to troll. That way, we can build up a reputation for not being worth the hassle. A great thing to aspire to.
Paul Mackerras -- Perf Events (in the kernel)
A replacement for perf counters, perf events provide kernel probes and simple API to perform fine-grained performance benchmarking on a Linux system. Whenever possible, perf events use hardware to get the most-precise data possible. There's a reasonable software-only fallback based on the high-resolution system clock (which most systems support at this point).
The API is essentially just one system call (which returns a file descriptor) and specific content behavior from that virtual file. Everything else is read(), close(), etc.
Events can be per task, per CPU, and, recently added, per-task-per-CPU. Per-task tracking can be recursive (forked processes get a copy of the parent counter struct and its final values are added to the parent upon exiting or explicitly synchronizing).
Perf events can trace cache (including TLB) activity, page faults, context switches, CPU migrations, and data alignment and instruction emulation traps.
Useful benchmarking always starts with good tools, and it sounds like we're finally getting a great tool with perf events!
Rusty Russell -- FOSS Fun with a Wiimote
Rusty detailed his geeky plans for making sure his daughter grows up to be a geek. These mainly involve writing some software to (ideally) translate her hand movements to actions on their TV. The idea was to help her establish causality at an early age, I think.
Anyway, I can't really do it justice in writing. You'll have to wait until the video is posted to see for yourself.
Carl Worth -- Making the GPU do its job
After giving a brief history of computer graphics an GPU development, Carl explained how hardware graphics support has sort of oscillated between discrete and integrated (into the CPU) hardware. (I wasn't aware that we'd already made the integrated → discrete → integrated cycle once before our current (in some contexts) migration back to integrated graphics).
The main problem with graphics in Linux right now is that we often have bad performance (which also means bad power consumption) and we need two drivers per video card (family, at least) -- one for 2D and one for 3D.
In order to figure out our bottlenecks, Carl created cairo-trace to measure the actual performance. This nifty program records the timing of cairo API calls for any program running under it. These traces can be played back through cairo at any time (at maximum speed), to continually improve performance for real-world uses of Cairo. I'm not sure if it's already in place, but these could easily be added to the (from what I hear, very good) automated cairo test suite, to avoid releasing regressions. If only more open source projects took testing and performance this seriously!
As it turns out, the current performance in most cases was actually better in pure software than in cairo-xlib (the latest stable backend for cairo).
An experimental GPU-accelerated backend (cairo-drm), in which Cairo bypasses X and uses GEM to render directly in the kernel, improves performance dramatically (10x speedup for Firefox). But the caveat is that it requires yet another driver per video card (bringing us to 3 total, for those of you keeping track at home).
Another approach, cairo-gl, which has Cairo bypass X to render to MESA, requires only 2 drivers total and should eventually have performance closer to that of cairo-drm. But for the moment, its performance is much worse than cairo-xlib.
Robert O'Callahan -- Open video on the web
Video on the web right now has two major players: Flash and Silverlight. (Maybe I just took ambiguous notes, but it's obvious that Silverlight is nowhere near Flash in terms of marketshare).
Beyond the obvious problem of software freedom, Flash is notoriously unstable (apparently a huge percentage of crashes of OS X are directly Flash's fault). Mozilla has decided that it's time to do something to push open media formats, to ensure this important (and growing) chunk of the Web retains the openness that has made the rest of it so popular and useful.
Some questions about the open formats:
- Should we ignore patents?
- This is only feasible while open formats are irrelevant, which isn't a great strategy.
- Wait for the patents to expire?
- They'll just be replaced with the next closed format.
- Just pay the licensing fees?
- Using a codec means you need to license it for your market size and per viewing (according to MPEGLA's fee structure), which is impossible for most websites serving content and for Mozilla to pay for distributing Firefox.
Another issue: video is not just about YouTube (passive watching). Flash adds interactivity (related videos, captioning, relevant ads, etc.), so we'll need an open counterpart to this as well.
Mozilla's solution for open video is Ogg Theora, which has had nice advances lately. GStreamer developer David Schleef got decent performance on OMAP3's DSP (in the N900 and other embedded devices) for Theora. The Ogg Index project adds indexing to the Ogg (container format?) to fix stream seeking over the web (which is frequently unusable without an index).
Mozilla has been shipping Theora support in Firefox 3.5+, since it doesn't want to pay, can't pay, and shouldn't pay for licensing codecs. If suddenly software patents were invalid, it'd be fine to just standardize on h.264, but that probably won't happen.
A big part of the chicken-and-egg push for open formats requires working with content providers and distribution networks. So Mozilla has gotten Dailymotion, the Internet Archive, and other websites to support Ogg Vorbis and Theora.
The other half is getting the browser to support the formats. Firefox 3.5+ can handle a Theora tag; Chrome ships Theora (and H.264) support; Opera will ship Theora only. In FireFox 3.6, we'll get fullscreen Theora. Also in the pipeline is GPU-accelerated playback and Mobile/Maemo optimizations.
Partial successes in this push to open video include Vimeo and YouTube planning to support HTML 5's tag on their sites (though they'll only be using the non-free H.264 codec).
So open media formats are slowly advancing on the web. We're basically at the point where most web standards are friendly to free software; if Gecko and (or) WebKit can't implement it, people don't propose it as a standard.
I love being married, it has opened up an incredible sense of commitment and security in my life and my wife’s life. Love is love, and I would never want to prevent anyone from enjoying what I am afforded the privilage of enjoying. This includes gay people. As such, I have joined this Facebook group to get 1,000,000 who support same sex marriage. I usually hate these kinds of groups, but I think it could be interesting to visualize the support behind this issue. Worthy, methinks.


