Recent blog entries for ted

Kinda like Fedora

I admit it, I'm a little jealous of the Fedora feature of being able to install signed packages without a password prompt. I set out to get close on Ubuntu. The way that you edit the PolicyKit practices towards package install is to edit the file /usr/share/polkit-1/actions/. If you look at the action for "Install packages" you can change <allow_active>auth_admin_keep</allow_active> to <allow_active>yes</allow_active>. Then software center works as expected.

Syndicated 2009-11-19 17:44:00 from TedBlog

Desktop Summit Talk

I gave a talk at my first ever Desktop Summit, which went well, though a little short. Brought out some of the technical underpinnings of the messaging menu and indicator system, and had some frank discussion about the mistakes that we've made (and are fixing). I've put up the slides for those not there, I'm told there will be video shortly.

Desktop Summit '09 Talk

Also, I forgot to blog about the talk that I was giving to my local Rotary chapter about Free Software. It was a fun talk and one that was more of an emotional talk than the technical talks that I normally give. Which allowed me to be a little more Tufte-ian.

Rotary Talk

Lastly, I made a project on Launchpad for people to put thier presentations in so that they're easy to find. It's creatively called "presentations" you can upload your presentation with: bzr push lp:~<lp username>/presentations/<talk name>

Syndicated 2009-07-08 00:28:00 from TedBlog

What's GNU?

I saw this at Target today. It made me laugh; enjoy.

A children's game called 'What's GNU?'

Syndicated 2009-02-10 20:46:00 from TedBlog

A small utility you probably don't know

Back when I wrote the Bazaar Power Management plugin (still the only VCS with desktop power integration) I also wrote a small little command line utility. The utility came out of a discussion at UDS that no one wanted computers sleep by default if there was no easy way for command line apps to ensure that the computer won't go to sleep while they're running. I really want all Linux desktops to sleep by default. So I wrote this small utility.

And a few people asked me questions, which resulted in me sending it to them, and then I thought that I'd just make things simple and put it into the gnome-power-manager package for everyone. And I did. And that shipped with Intrepid. But nobody uses it because I never promoted it. Now I am.

If you go and you call the utility gnome-power-manager-inhibit it won't do much. That's because it works similarly to nice and time in that it works while the rest of the command line is running. So if you do:

$ gnome-power-manager-inhibit ls
Then you can rest assured that your computer won't go to sleep while listing that directory. What is more common for me is that I'll kick off a build before going to bed:
$ gnome-power-manager-inhibit make install
Where I know that if the build takes over a half hour (my configured sleep time) the computer won't go to sleep. But, my computer will be asleep when I wake up in the morning.

I hope that helps people to start configuring their laptops (and desktops) to sleep automatically. It really is important.

Syndicated 2009-01-24 04:28:00 from TedBlog

Inkscape works on Cancer

Pinkitude for life!  A pink reminder that self breast exams are 'for life' by QuichLouraine

When people try to talk about how working on Open Source is some sort of social work I'm usually dismissive; saying something like "well, we're not curing cancer." Wouldn't you know it? People are trying to prove me wrong!

Recently Deviant Art held a contest with the Susan G. Koman foundation to make art informing people (okay, mostly women) about breast cancer. Lorain A. Baird won for her work titled Pinkitude for life (right) which was done in Inkscape. For those who don't know Deviant Art it's a website where artists from all over using all different mediums gather to share and comment on each other's work. This means that that the contest included entries spanning the possibilities of tools and techniques, and an Inkscape entry won. Of course, the true credit there goes to Lorain for her great work, but I'm proud for Inkscape too.

Louise Brooks the silent film star by Quiche Louraine

Looking through Lorain's Gallery there is a ton to love, but I started reading through the comments on her portrait of Louise Brooks and noticed a comment that was really nice. From montroytana:

ive never seen a piece of art (before yours) and said GOD ive got to have the program that made that! your stuff is really wonderful
That's the feeling that I want everyone to have when thinking about choosing Open Source software. I want them to be so impressed with what they can do that they feel empowered to go get it done.

I'm hugely proud of the Inkscape team in what we've accomplished and I think that I can speak for all of us and say that we're impressed with all the great work that Inkscape artists do to make us look good.

Syndicated 2009-01-12 04:05:00 from TedBlog

Let applications be applications

One thing that kept bothering me in the GNOME UI Hackfest was how little data applications export out to the desktop. As I was in the shell group we were discussing various things that we wanted to do and John Mccann kept having to remind me not to worry about the implementation as I would get frustrated that we simply didn't have the data. I want to fix this. I want to have the data in a structured way.

What I've come to realize is that we need to let applications be applications, let panels be panels and let applets be applets. With the notification area specification we created a way for applications to break through this barrier and put a little segment of the application into the panel. While this sounds great, and it has created a quick way to prototype some interesting ideas, it's also created a complete mess in our panels. There is no consistency of action nor in look for that section of the panel. I like to call the notification area the "bag of crap." While it's created a way for applications to innovate, it's drastically stalled innovation for panels and shells.

What I'd like to put forward is the idea of little flags that applications can hold up to say what they're thinking or doing, which I'm going to call indicators. The application can then represent in a structured way that it's got something of interest to the desktop as a whole, and then the desktop can represent that to the user. How ever it likes. It's not the application's responsibility to figure out how to do this, or if it needs to be done in a single place or multiple, or anything other than raising the flag. While I think that this might frustrate application developers at first in that they don't have control over the display of this information, I think that long term it will empower them in that they don't have to fiddle with this type of interaction any more.

First off I want to build something simple (start small, think big), the messaging indicator, which will mostly consist of a GNOME panel applet. It will do simple things like represent IMs and e-mail and not a lot more, but the real goal is starting to get applications like Evolution and Pidgin to export this information. Once we're there, then we can start to look at new ways to use it. I love the idea of having the Evolution icon having the number of unread messages a la Apple or Gwibber also putting messages in the messaging indicator. Those are all next steps, but I think important ones in starting to explore how we can get data out of the applications and to the users in usable and attractive ways.

Syndicated 2009-01-06 04:52:00 from TedBlog

Where music is going

I'm going to make a bold prediction here, hold on to your hats! I'm going to predict that the next music player I buy will have more storage than the one I have now. I'd bet even the one after that will have more than that one!

While that prediction isn't groundbreaking, thinking about it lead me down an interesting path. I, like probably a lot of people, got onto the bandwagon of ripping my CDs to MP3s pretty early. It was exciting to have my whole collection of music on my hard drive (portable players were pretty rare back then) and compared to my computer speakers the quality was amazing! After doing that, I was then at the point of realizing that I needed to do it again. Things like reliable tagging made it so most of the files weren't useless, but I would get better results by just starting from scratch. So I did.

I then realized that I never want to do this again so I needed to rip all my music into a lossless format, but no player could hold all that data, at least not yet. In turn that forced me to realize that over time storage will probably grow faster than the amount of music I'm interested in, but the variable I can adjust is quality. So I can build a bunch of 96 kbps MP3s for my phone and keep 256 kbps OGGs for my laptop. And, eventually, everyone will just have those flac files I originally ripped. Whew, now getting from A to B.

I decided that I needed to make a Makefile for a few different reasons:

  • Make handles the idea of transformations pretty easily, so the idea of a transformation between flac and another format would be simple to express.
  • Make already tracks which jobs are complete by looking at the file times and which files are created. This would make it easy to rip new CDs as only the new files would be re-encoded.
  • Make can parallelize the whole thing for me to work on my dual-core processor. nice make -j 2
  • If I quit half way make will delete the half built files and allow me to pick up where I left off.
The one problem that I had using Make is that it doesn't easily handle file names with spaces in them. This was easy enough to change:
$ find . -name "*.flac" -exec rename "y/ /_/" {} \;
Which is a small one line operation to find all the files ending in .flac and replace all the spaces in their name with underscores.

Here is the Makefile and the small shell script that I'm using to do the conversion (mostly stolen from a forum thread I can't find now). Everything is grossly hardc oded, but it works great for my situation. My situation includes putting both of these in the Flac folder and wanting to put all the MP3s into the ../mp3 folder. Currently it only builds MP3s at 96 kbps. Good luck, hopefully my collection will be encoded in a couple of days.

Syndicated 2008-12-31 02:29:00 from TedBlog

Where are my messages?

One of the improvements that we worked on for the Intrepid release is building a combined applet with the fast user switching, session management and maintaining instant message status. I'm happy with how this turned out. I'm planning on continuing the messaging story in Jaunty.

An interesting aspect of messaging on the desktop is that while you can get messages, and get a notification of their appearance, you still may want to respond to them. Currently every messaging app you run provides this through it's own icon into the notification area. Many people I know have both Pidgin and XChat icons in their notification area routinely. Besides the fact that both of these work significantly differently, they also are very different visually providing the appearance of clutter in the panel.

How do we fix this? I think that a reasonable approach is to consolidate them into what I'm coining as a "messaging indicator." The goal of the messaging indicator is provide a simple and clean way for messaging apps to provide the notification to the user that other people are trying to talk them while not having to put something in the notification area. The notification area is evil. Here's a simple use case done as an SVG mockup:

I'm sorry, it seems that your browser does not support SVG. Here is the diagram, please upgrade your browser to a newer version.
Or, you're reading this through a planet, which apparently doesn't like SVG. Sadly.

The diagram is simple, and that's a really good thing. Here we're seeing a IM message coming in. The notification disappears into the messaging icon and the message can be found underneath that icon. Nothing complex, but it allows the user to know that all of their messages are a single tidy place and there is only one graphic required on the panel for all messaging.

What is a message? It's really easy to over reach with the idea of what a message is. One could say: "Apparmor is messaging me that I can't edit that file." While that sentence is correct, it's important to note that users don't agree. So my goal is limit this indicator to messages sent from other humans to the human using the computer. Now I need to go and fight some feature creep.

Syndicated 2008-12-12 01:01:00 from TedBlog

Saving the world one uW at a time

I'm here at UDS and joined a session between the kernel and desktop teams talking about power. Like all of such sessions the kernel team thinks that the desktop should fix all the problems and vice versa. At their suggestion, I took an action item.

One of the features of GTK+ is that it provides two timeout functions: gtk_timeout_add and gtk_timeout_add_seconds. The difference is much more important than not having to add a "* 1000" in one and not the other. The important thing that the second function does is that it tried to group wake-ups to ensure that the program wakes up as little as possible. This is never perfect, but it's a small thing that can help to save some power and reduce the number of wake-ups.

So I looked through the Ubuntu main archive to figure out how many applications use the more precise function, but just pass in several seconds as the parameter. I figured this would be a few apps, and I'd submit a couple patches, then I could go back to blaming the kernel team for all our problems. There are more than a couple packages. There are a lot of packages. The results of the grep and a cleaned up list of packages that are likely to have easy fixes.

I realize now that I can't do this by myself, the only hope is to document how to fix it.

So if you'd like to help save a little power on your machine, follow these instructions.

  1. Take one of the packages in the list above and find it in the package repository (instructions).
  2. Branch it:
    $ bzr branch localfix
  3. Find the instances that might be causing the problem.
    $ rgrep timeout_add *
  4. Commit and build a package:
    $ bzr commit -m "Saving the world"
    $ dch -i
    $ debuild
  5. Test it on your system, make sure things still work reasonably.
  6. Generate a patch:
    $ bzr diff -r ancestor:
  7. Submit it upstream!

Syndicated 2008-12-10 20:28:00 from TedBlog

Right side status

Updated FUSA menu with session management and status

We started with a mock up and an idea of how we wanted to redesign the fast-user switching applet. The goal was to integrate in session management and IM status into the applet and put it into a prime location in the default desktop. Now we have code an screenshots to show the work. It's not perfect yet, but we're very happy with where it is. You can grab test versions either for Hardy or Intrepid in my PPA.

We used the old FUSA applet to base our code on as we're using GDM 2.20 in Ubuntu. In this case there isn't much of a reason to merge upstream but to make things easier if upstream wanted our patch, or for other people to use the code, I've split out the various functionality into a set of Bazaar branches. Each one represents a patch that we're including. The patches are:

  • ltsp_client is an older patch that we've had in Ubuntu for a while, but now updated. It disables switching to the login screen on LTSP clients.
  • guest_account is a patch that connects to the GDM patches that are currently in Intrepid to add a guest account. This is an unprivileged account that you can switch to when you hand your laptop to a friend.
  • session_management adds all of the session management commands to user switching menu.
  • fusa_menu_changes includes the changes to the basic user switching menu items. This includes removing the check boxes and the icons and also includes the 'conflict mode' where if two names that are the same adds the username.
  • status_icons is a theft of the Empathy icons. But since we're not making Empathy the default IM client, I had to steal them. They're uuencoded so that this can be a patch.
  • show_status is the code that connects to and shows the status information from an IM client whether it is Empathy and Pidgin. It also allows for setting status in those clients.

Keeping track all of these is a little bit of a trick. But, if you want to generate the patches from Bazaar branches you can use this little shell script that I wrote.

Syndicated 2008-09-18 14:54:00 from TedBlog

4 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!