What's GNU?
I saw this at Target today. It made me laugh; enjoy.
What's GNU?
I saw this at Target today. It made me laugh; enjoy.
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.
Inkscape works on Cancer
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.
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 wonderfulThat'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.
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.
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:
$ 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.
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:
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.
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.
Right side 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:
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.
Nature isn't straight
As hurricane Ike is coming closer to my house than I'd like, I've been watching the predicted path maps on the National Weather Service's homepage. What bugs me is that there are straight lines between all the points. How silly is that? Nature never moves in straight lines, so I had to make my own map.
What I did was take the map and then place a path over it using the spiro splines live path effect in Inkscape. Spiro splines are amazingly natural, and so I figured they'd work very well here also. I like the results, and it seems just from looking at it, to make more sense as a path for the hurricane. Perhaps they should use Inkscape at the National Weather Center?
Location, Location, Location
It's said that in real estate the most important thing is the location, and that's also true when thinking of screen real estate. How big something is and where it's located is tied closely to how useful it is.
The point is accentuated when it comes to the corners of the screen. These four precious areas are very easy to mouse to, making them very quick for oft used items. In the current Ubuntu default desktop we've chosen to give the upper right hand corner to bringing up the logout/power dialog. While this is a good use, I think we can do better.
One of the problems with that solution is that we're using a whole corner for basically only one function. While it's an important function (turns out the center of the Earth isn't oil) it would be nice if we could put more functionality into that location.
The functionality that we're looking at putting into that corner is managing your IM status. Almost every user I see today is using some form of messaging client. If we look to optimize the interactions with instant messaging we're likely to see productivity gains for large numbers of users.
The other piece of functionality that we'd like to put on the same menu is fast user switching. This is a very handy function, but it is directly related to logging in and logging out. In many ways it is similar to "Pause session."
All in all, the better use we can make of our corners, the more efficient we make our users. If we have users that are 100 times more productive, even if we only have 5% of users, we can rule the world!
This update may or may not make users 100 times more productive, it hasn't been tested so it might, we just don't know. Remember, numbers never lie.
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!