About GNOME · Download · Users · Art & Themes · Developers · Foundation · Contact

May 09, 2008

Rack servers in Boston, make money

We're looking for a neat, meticulous person to help us rack and wire some servers next week, on Tuesday and Wednesday. The tasks are unboxing, carrying, mounting, screwing, wiring, and testing the servers.  Pay is $20/hour, duration is until we're done, location is in Waltham (we'll pay for your transport).

If you're interested, send mail to pzb@novell.com and mention any relevant experience or skills.

Canon 450D RAW & Ubuntu Hardy

If you've been trying to develop a Canon EOS 450D RAW file using ufraw on the latest Ubuntu release, you might have run into something like this:

Pink, sweet!
Pink, sweet!


While we could wait until this lands through the new dcraw (bug opened), some of us want to develop pictures now.

For those, I've built a patched ufraw. It's retrievable through my Ubuntu PPA. Enjoy!

An even better OpenSSH interface

As I've mentioned before, in my spare time I've been working on a fun project to replace the Unix terminal and shell with native graphics and a high-level language runtime. One thing that I quickly found out though was that certain applications require a real VT100 terminal emulator; for example, less is a highly optimized program, and while replacing it with a proper X11 app would be possible, it would not be trivial and would largely be a distraction from my goals anyways. Another situation where you need a terminal emulator is connecting to remote Unix hosts; while I have complete control over the software on my laptop, it's hard to change all the existing servers out there.


SSH in particular is something that really cries out for a nice application around it, rather than launching it primitively from an existing terminal emulator. Earlier I mentioned the result of a few hours of PyGTK hacking. Over the last week or two I've been working on improving it. Today David Ascher of Thunderbird fame asked for it, so I should probably kick it out the door (though HotSSH is primarily for X11/Unix and not the Mac).



New connection with history


As you can see, the new version of HotSSH now remembers what you do, automatically. For example:

  • If you connect to a host and use a custom username, the next time you open HotSSH and type the host again, it defaults to that custom username, without you having to do anything

  • It has pretty good completion on the Host entry, based both on ~/.ssh/known_hosts as well as its own history

  • Open windows and tabs are saved automatically, Firefox style


The only dependencies are CPython, GTK+, DBus, and OpenSSH. I've broken it out of where it previously lived in the Hotwire tarball into a separate source tarball. You can currently get it from the Hotwire downloads page, though my long term plan is to import it into GNOME SVN and ideally have it come with GNOME out of the box. The code is currently here, and bug reports here. It works well enough for me now; about all it might make sense to add is some sort of color scheme (we currently just pull from the gnome-terminal defaults). To run, you can just unpack the tar and python ui/hotwire-ssh. If you install it, it should create a default bash alias for ssh, but this is something that package distributors will need to make sure integrates well.

Getting constructive about Nokia and maemo

There has been some criticism recently of Nokia and its handling of maemo - improving the state of affairs is one of the reasons why Quim contacted me and asked me if I’d be willing to work with the project to improve things.

The key to solving any problem is straightforward:

  1. Identify and characterise the problem
  2. Address one after the other the root causes of the problem
  3. Evaluate the situation after each change

This is similar to Federico Mena Quintero’s characterisation of profiling code. In fact, a surprising array of problems are suitable for attach with measure, change, re-measure, rinse, repeat.

The over-riding arc I’ve been hearing so far is “Nokia is hoarding control over the project, and aren’t doing enough to help the maemo community”. I think that’s a mite unfair, and often I get the feeling that people on the mailing list are confusing a reality where there are problems, but they are poorly characterised, and malicious intent on the part of Nokia.

Some examples:

  • No, Nokia isn’t all-powerful, and can’t make Google fix Reader so it works better in microb
  • Parts of the platform are restricted and can’t easily be replaced with later versions. Let’s get an explanation for that, and talk to the right person to get it fixed. Right now we don’t have the reasoning behind the decision, and that’s what’s missing in characterising the problem
  • “Nokia is keeping control of the project” - what are Nokia keeping control of? Let’s identify the list of resources that would be useful to community members, and work, one by one, on seeing if Nokia is actually keeping control of them
  • “The N8×0 tablets ship with proprietary components” - my priority is to ensure that you have documentation for everything possible on the tablet, but to me, there are two different things, maemo, the community project, and the N8×0 tablets, which are commercial ventures using maemo [*]

So I plan to apply this optimisation technique to various problems in maemo. For each proposal I make, I will be looking for feedback from Nokia and the maemo community to see if it is a step in the right direction.

For a start, I will be proposing policies for access to maemo resources, including maemo.org email addresses, the maemo trademark (which is of course linked to the email addresses), and any parts of the maemo platform which community members don’t feel are sufficiently open.

My goal is not to get everything open in doing this. It is to make clear the limits of the maemo project, and in this way ensure that expectations on both sides of the equation are coherent. I hope that Nokia will accept the proposals I make, but even if there are arguments against, I believe those arguments can be open, and clearly understood by all involved.

* I don’t believe that there has ever been ambiguity about this - all of the tablet which can be open is open, but some decisions to use closed components were made in the interests of product differentiation, cost and other reasons. The N8×0 is not meant to be a completely Free product (unlike the Neo1971 or OLPC, which do aim to be completely Free). What we should insist on is that someone buying an N8×0 has all of the tools they need to paperweight it with custom, non-Nokia, software, and access as much of the hardware as possible with free software.

2008-05-09: Friday

  • Up, prepped babes for (pre-)school; recovered my x86_64 RAID setup; good; poked at and filed Noel's gcc buglet with test case. Managed (by swapping disks variously) to get 11.0 Beta2 installed on the system whose only chance of boot media is a floppy disk: looking good there too.
  • Lunch, Bruce & Anne around - lovely to see them, back from Paris. Nailed three nasty yast2-gtk bugs.

Maker Faire 2008 - Part 5

The final batch from this years Faire, including some which are slightly out of focus. Hopefully the links will give you a better idea.

Four Lego related ones. There are 16 motors in that crane. Also the LEGO Train Town and Village from the Bay Area Lego Users Group.

We got the Forbidden Lego book out of the library a few months ago, with the idea that we could try to build some of the models, only to find out that it uses a lot of non-standard parts. Grr!

That's Robyn Beer preparing a piece for enameling, another hobby I'd like to try when I can find the time. Also glass bending, the CandyFab Project and grow your own mushrooms.

Various robots,robot-like scuptures and blinky things. That's the work of Mike Scioli. Also Voxhead from Michael Brady, and a couple of AntBot's.

Pong Watch. There was also another playing asteroids. Plus some kinetic metal sculptures including the Giant Squid.

What to do with your prototyping failures, The Incredible Marble machine and motorized armchair. That woman was having a great time.

[]

[]

[]

[]

Elisa on Windows and new resources for contributors

So our Windows developer strike force came up with a windows version of Elisa, Windows XP and Vista are supported. Check out the Elisa download page to find the alpha version of the installer. There are some issues, this is an alpha, you're warned :)

Alessandro and Olivier cooked 2 tutorials showing off how to develop new features for Elisa, by example. The API of the upcoming 0.5 branch of Elisa has also been published, it might evolve a bit but it's already a good starting point for motivated contributors out there :)

Conferences Over the Summer

I had submitted two abstracts in April to two conferences over the summer. The good news is both of them have been accepted!
o OpenSolaris Developer Conference, June 25-27, 2008 Prague, Czech Republic.
o GUADEC 2008, July 7-12, 2008, Istanbul, Turkey.

The schedule for both conferences have now been published OSDEVCON 2008 schedule and GUADEC 2008 schedule.

The OSDEVCON is also about Printing Tools, it is primarily concentrated on Presto on OpenSolaris Desktop. While I have been looking forwards going to Prague (never been there before) to talk about Presto and also meet face to face with many of the OpenSolaris developers. Despite all the good reasons to go, I could not make it due to unforeseen family circumstances. So to this end, Michal Pryc has kindly agreed to present the paper on my behalf. Thanks Migi!

The GUADEC session is a BOF on Printing Tools, so in order to make it to work well, I need input/involvement of the communities. So I really look forwards to see everyone who is interested in printing or your applications have printing elements in them to be there! I plan to provide you an update on the GSOC project that I am mentoring on Integrated Printer Management. So Rui, pressure is ON! :)

Nice interview in redhatmagazine


In which our heros (mostly uwog) talk about all things AbiWord.


http://www.redhatmagazine.com/2008/05/08/abiword-team-interview/


</shamlessplug>


Thanks mether!

Irony of ironies

I finally got a copy of Getting things done from Amazon about 3 weeks ago. Now if only I could find the time to read it…

Switching to multiple threads, with a non-thread-safe resource

Your application used to be single threaded and is consuming a resource that is not thread-safe. You’re splitting your application up into two or more threads. Both threads want to consume the non-thread-safe resource.

In this GNOME-Live item I explain how to use GThreadPool for this.

It’s a wiki so if you find any discrepancies in the sample and or text, just correct them. I’m subscribed so I’ll review it that way.

The GNOME-Live item is done in a similar way to the item about using asynchronous DBus bindings and the AsyncWorker item.

10/10

There are days when one takes a step back and thanks whosoever is watching above us for being generous, kind and making magic happen. Magic has been happening for a decade now :)

All Hail the Royal Mail [1]

A few years back, like everything else, the RoyalMail got privatised – can’t exactly remember when, since I wasn’t really paying attention, and they did it in stages. Anyway since privatisation things haven’t always gone well, but there is at least something they are doing right – you can buy postage online!

Just weigh and measure your letter or parcel, enter the address, and pay (either from a prepay account or on a credit card) and presto a pdf label in a choice of formats (DL envelope, quarter, half, or whole A4) is created. Print, stick, and then post in any postbox. I don’t think I’ve sent as much mail in the last 5 years as the last couple of months – partly because now I’ve discovered this service, putting DVD’s and books on Amazon is a lot less daunting and friends and family have benefited from my new found postal renaissance. It’s easy to work out the postage beforehand (to see if the item is even worth selling) and then no mad rush to the post office to get the parcel sent once it’s gets sold.

Now, despite all this gushy gushy stuff, the service is far from perfect. The doesn’t appear to be a developer API, so no direct integration with Amazon, Ebay, Evo Addressbook, or other service is possible (yet). Hence lots of annoying copying and pasting. It would be useful to be able to build up a page of labels to avoid wasting paper printing each label in the top left corner. Also they use some layer feature on the pdf’s that doesn’t work (yet) in Evince, so I had to install the official Adobe reader.

Now if they can just stop losing mail (and money) things will be golden.

OpenSolaris Developer Summit Intros

Deirdre did a rocking job at recording the intros at the summit. I totally recommend anyone who couldn’t attend the summit to check them out and match faces with names. Thanks Deirdre!

9 May 2008

Modern CPUs are great. They have all sorts of advanced power saving features, which is one of those nice cases where everyone can save money, gain performance and claim environmental credentials at the same time. Everyone's a winner.

Well. Everyone's a winner as long as your software doesn't suck.

I've talked about the benefits of the tickless kernels and reducing wakeups and spending longer in deep C states before, so if you don't know about them then go and read that first. This time I'm going to focus on a different level of hardware, and a different level of suck.

For a long time, laptops supported changing the speed of processors when switching between AC and battery. CPU power consumption is proportional to frequency, so dropping the frequency meant a longer battery life. Of course, it also meant that it took longer to get anything done - the reason this was still a win was because CPUs in those days consumed just as much power when idle as when running. Transmeta introduced a technology called Longrun with their Crusoe processors, bringing the ability to drop both the frequency and the voltage of the CPU simultaneously. With power consumption being proportional to the square of the voltage, even a small drop resulted in worthwhile power savings. As the only really worthwhile thing Transmeta brought to the x86 world[1], this was unsurprisingly ripped off by everyone else. Intel introduced their Enhanced Speedstep, AMD gave people PowerNow and VIA have Longhaul.

Obviously, reducing the frequency of the CPU increased battery life. Everyone's happy?

No[2].

The problem is that nowadays, processors don't consume as much energy when they're idle as when they're running. The aforementioned C states mean that an idle processor consumes a tiny percentage of a loaded one - an ultra-low voltage Intel part will draw on the order of a watt. Executing code, even at the lowest voltage and frequency, will draw far more power. Obviously, we want to keep the processor idle for as long as possible. The easiest way to do this would be to never run anything, but that's not a real option. The alternative is to run when we have to, but make sure that we get it over with as quickly as possible so we can return to the idle state. Counterintuitively, that means switching to the highest voltage and frequency, executing the code and then dropping back into the idle state. By going faster, we save power[3].

In summary, the only sensible way to use a CPU is to run it as fast as possible in order to let it idle as much as possible, and drop the frequency and voltage when it's not doing anything. The. Only. Sensible. Way.

Some people write software that lets you choose different power profiles depending on whether you're on AC or battery. Typically, one of the choices lets you reduce the speed of your processor when you're on battery. This is bad. It is wrong. The people who implement these programs are dangerous. Do not listen to them. Do not endorse their product and/or newsletter. Do not allow your eldest child to engage in conjugal acts with them. Doing this will reduce your battery life. It will heat up your home. It will kill baby seals. The sea will rise and your car will float away. If you are already running it, make sure that it always sets your cpufreq governor to ondemand and does not limit the frequencies in use. Failure to do so will result in me setting you on fire[4].

The only legitimate reasons for limiting the speed of your CPU are to avoid overheating (which should be fixed in the kernel, really - having userspace in charge of ensuring the continued functioning of the machine is madness) or to make the machine quieter. And if you want your machine to be quieter, there should be a tickbox marked "Reduce performance in order to reduce noise" or something, which would take into account all the sources of heat in your machine rather than just your CPU. Encouraging the managing of acoustic levels by asking users to restrict the functionality of their CPU is just another way of saying "Look! We suck!". Letting the user choose a specific CPU governor or a specific frequency is not a useful thing to do. Don't do it unless you want to see dead kittens. Delivered by UPS.

[1] And, presumably, whatever else Intel and everyone else ended up licensing off them which resulted in their reinvention as an IP company rather than a CPU one, but that's just not interesting to me.

[2] Even ignoring the people that are unhappy for entirely unrelated reasons, such as injured toenails or the brutal murder of their family

[3] There's a corner case here, which is a system that is always entirely CPU bound. Say we halve the CPU's speed. Along with the voltage drop, that gets us down to about 20% of the original power consumption. Of course, it now takes twice as long to do anything and your screen, RAM, hard drive, chipset and so on are still drawing power, so will end up costing you twice as much power as they would have done if you'd run at full speed. If you do the maths, it works out that you save power if your processor's full-speed power consumption is more than 1.7 times that of the rest of the platform. In the real world, things are made more complicated by the rest of your platform consuming more power if you're working over a longer period of time - your hard drive is going to end up spending more time spun up, your memory bus is going to be active for longer and so on. You're basically not going to hit this case.

[4] While the burning of your body will result in carbon emissions, the reduction in power usage should offset this in the long run


SVG Source

Crack, and uncrocked

I was amazed by FunPidgin. Whilst some of the features aren't actually crack, making things like these options is:
An option to use stock GTK+ close buttons on tabs.
An option?!

Anyway, Totem's playlist parser is now ported to GIO. I'll make a release soon, but I'd like to ask people to please test the hell out of it. If opening or saving a particular playlist produces warnings, errors, or crashes, please file a bug.

You can test easily by recompiling and using as normal: Rhythmbox (Podcast and playlist parsing, playlist saving), and Totem and its web browser plugin.

May 08, 2008

Utah Python Users Group

If your in the greater Salt Lake area and love python swing by the meeting this evening! We’re doing a python editor head-to-head, should be fun!

Pillow howto

lazyweb, poll time!

When you sleep, how do you use your pillow ?

  1. the middle part of the back of your head rests on the lower end of your pillow, your neck floats freely, your shoulder blades rest on the bed
  2. the middle part of the back of your head rests on the pillow, your neck rests lightly on the lower end of your pillow, your shoulder blades rest on the bed
  3. the middle part of the back and your shoulder blades rest on the pillow
  4. something else (please specify)

2008-05-08: Thursday

  • Awoke in the morning, to discover a crushed mouse in the "better mousetrap", the part-time vegan (have to one-up Miguel) in me not inconsiderably upset by this; binned it.
  • To work, phone call with Noel - who has isolated a most interesting 64bit compiler bug afflicting the OO.o test-tool: nice. Dug at mail. Filed bugs, played with Soeren's display properties capplet, and was unfeasibly pleased to see it working so nicely.
  • Amused by Philip's extraordinary analysis of BS 1363 as Wikipedia says This plug is often described as the safest in the world. What is meant by this concern for static electricity is quite unclear to me; by design (as is common), the earth pin is connected before the live & neutral pins are so the device casing is earthed: ie. it should not be possible to have a device (even with a live -> earth fault) whose casing is live & un-earthed. Consequently - you can touch the earth pin as much as you like (or drop tin foil on it or whatever) and if you get a static shock - this is because you have a nylon carpet you were just shuffling about on: you would get the same effect from the tap, a lamp-post, or well anything good earth.
  • Call with Florian, lunch with Lydia. Booted the Gnome Live-CD on x86_64 - looks beautiful, configured my awkward monitor correctly too: nice. Did the install with yast-ncurses to avoid the now fixed yast2-gtk live installer bug.
  • Chased nasty nautilus bug a bit; played with the babes; conference call with Greg & crew on the OSRB - interesting. Installed all the good stuff onto the x86_64 live CD install system: the joy of zypper etc.

GSoC 2008 students on Planet GNOME

Let’s say Welcome! to our GSoC students! From now on, you’ll see their blog posts on Planet GNOME with this GSoC mini-banner:

Not many of them have sent me their blog feed info but I’m working on getting most of our students on Planet as soon as possible. Students, it’s time to introduce yourselves! :-)

Asus Eee PC And NX

We always are testing ideas for lowering the costs associated with employees that have to work in the field. In years past, many of the EVDO cards required Microsoft Windows drivers to work. So that meant buying full fat clients so that that people could do thin client work.

My coworkers at the police department did some experimental work with the Asus Eee PC and got it working on Linux. It dials the EVDO card perfectly. The NX client loaded and they were able to log into the City network and access the full suite of City applications. Very cool.

So I got my hands on the device and did some cleanups on the servers to make it work better. The screen is 800x480 so when users log in, their desktop icons were displaying "off screen" because they had been configured for 1024x768 or higher. So, I put in a few lines of code pre gnome-session that detects resolution and lowers the icon scaled size:

THUMBS_NAUTILUS="standard"

TMP1=`/usr/bin/xdpyinfo | grep dimensions`
TMP2=` echo $TMP1 | awk -F " " ' {print $2}'`
SCREEN_WIDTH=` echo $TMP2 | awk -F "x" ' {print $1}'`
SCREEN_HEIGHT=` echo $TMP2 | awk -F "x" ' {print $2}'`

if [[ $SCREEN_HEIGHT = 600 ]]
then
THUMBS_NAUTILUS="small"
fi

if [[ $SCREEN_HEIGHT = 480 ]]
then
THUMBS_NAUTILUS="smaller"
fi

/opt/gnome/bin/gconftool-2 --type String --set /apps/nautilus/icon_view/default_zoom_level $THUMBS_NAUTILUS

I'm formulating a plan in my head now to lower the font point size to 8 when they log into this device, but want to make sure I am able to restore their desired fonts when logging into a regular resolution. I'm sure a simple flat file storage of settings will be pretty easy.

Obligatory picture, with regular keyboard for scale size.




Edit: We are testing the 4G model, prices start at $299. 4G On Amazon

Olympics and China Tours

If you were planning on going to the Summer Olympics in Beijing this year, but have not yet purchased your tickets, then be glad you waited. Turn your trip to see the Olympics into a tour of China, and save money with the whole package. Go to http://skyhoppertravel.com/china2008/ to book your tickets for a 9 day or more tore of china, including the Beijing Olympics, starting at $1499.00 departing from LAX.


Searching for a new find

It’s time to start looking into a new search method for Thunderbird. One of the major changes planned for Thunderbird is a new and improve search, but what does that mean?

What do we have?

First lets look at what we have for a search system.  At a very simple level most search systems break down into two pieces, a search interface for filtering and a results interface for listing.  Thunderbird does this in a couple places.

Quick Search

The quick search entry is always at the top right of the Thunderbird window and allows people to search over the current view.  The results of a quick search fill into the current view, replacing whatever listing was previously shown.

The Quick Search defaults to searching only the Subject or Sender and will only search mail that Thunderbird has downloaded already.  Messages that are not listed in the current view (like in another folder) will not be searched unless that folder is selected, otherwise a person needs to use the Advanced Search.

Advanced Search

Hidden under the Edit Menu and Find Sub-Menu is an advanced search dialog that can make use of the remote mail or news protocol to perform a full search instead of just a local search.   The Search Messages dialog provides it’s own search interface as well as it’s own results view directly below the search.  While the Search Messages dialog provides some more advanced search methods over the quick search it’s hard to find and difficult to use effectively.

The Search Messages dialog allows for complex search queries to be built with multiple search terms composed of a number of different field type selectors.  The queries require a lot of input from the user because of the tight structure used to create them.  The same search and results interface code is used for creating mail filters.

Edit -> Find -> Search Messages…

Advanced Search Dialog

What do we want?

I was lucky enough to chat with Andrew Gilmartin yesterday and he framed a future goal very well.  “We’re not looking to make search an added feature box on the side of Thunderbird“, we’re looking to make search the definitive method for viewing mail.

What does “Search as the definitive viewing method for your mail” mean?  That’s a good question and I’m not sure exactly what a good answer is yet. A search would help you find the message you’re looking for, and perhaps a search view never lets you lose that message in the first place.  There’s a lot to explore.

Here are two important pieces of a search system and view that need to be examined and somehow exposed in the interface.

Search and Filter

An impediment of the current search system is requiring people to choose a search type (Subject or Sender) before they even enter any text.  To help people hunt for the correct item you want to allow for starting their search very broad and then allow them to narrow down that broad search with filters like subject or sender.

The current search system has some speed issues that likely prevented a broad to filter system of searching to be implemented.  The mail client Mail.app provides a decent filter bar when searching mail that allows people to see what the current filters are (folder, account) and change them.

Browse and Filter

The SEEK extension is an excellent example of how offering a system of browsing mail by grouped attributes from the start can help people find the item or group of items they were looking for.  Instead of starting with a search term you give the person a list of attributes they might use to filter the list of messages.

An inspiring system for a similar searching, browsing, and filtering methods is things, you should try it if you haven’t already.

Getting What we Want

Moving towards a new search based paradigm will take some adventurous steps and it’s important not to disturb current usage while making those steps.  Here are a number of changes to look at making.

Merging Search Interfaces

Each of the two current search interfaces provide some needed features and capabilities, however having two separate interfaces for searching is confusing and difficult to understand.  We need to combine the ability to do a quick search with the ability to perform a full search into a single interface with an improved results view.

With a single search interface Thunderbird will be searching the local and remote mail (like IMAP) at the same time.  However local results will be listing quickly and remote results will likely take a little more time.  Both sets of results, local and remote, can be merged into the same search results view by showing local results instantly and filling in remote results as they arrive.

Offline Cached and Indexed Mail

In order to have a fast search system even while offline Thunderbird needs to do a much better job of caching and indexing mail as it encounters it.  With new messages instantly cached and indexed they can be made available to search queries, filters, and views immediately.

This is an excellent time to start thinking about the data mining mail in a way that helps searching messages later.  It’s also time to think about making the defaults tuned towards offline usage while still allowing people to control online / offline caching.

Auto Complete

With mail data indexed locally and quickly available Thunderbird should be able to provide a slick and fun auto-complete on search terms it knows about.   Auto complete when searching for items you’re already aware exists helps with miss-spelling errors and more complete matching.  The awesomebar shows how with just a little broken memory of a title or url you can easily find the page you saw once before.

Fetching Results

Our current drive is to investigate some indexing on messages (at least subjects), pull the new auto-complete into Thunderbird, and get a search bar using that fancy auto-complete on mail subjects and hopefully the addition of a couple more fun things.  Leave some comments or jump on the newsgroup to participate.

Search Yesterday and Attachments

A wire frame of a possible mail search auto-complete

Banshee Podcast Support Coming in Beta 2

First, a quick note to people using the Ubuntu Banshee 1.0 PPA packages. Unfortunately, the packager messed up and at first released packages without iPod or MTP support. And now it has come to my attention (via comments and bugs from disappointed users) that the packages include the podcast extension, when it is pre-alpha and should not have been included. Hopefully the Ubuntu guys will get fixed packages out soon, and be more careful with packaging in the future. Jorge is working to make things right.

We do expect to have the podcast extension ready by Beta 2. And Beta 2 will have auto-rip support which I just committed last night. After enabling it in your Preferences, whenever you insert a CD it will automatically begin importing it, if it's not already in your library and if MusicBrainz information can be found for it. Very useful if you are ripping many CDs.

I want pizza!


(sorry for my painful english)

In the last weeks, I had trouble using SVN in my University. I talked to the network admin, he said it should be working, and now he is going to fix it. That’s good news for next week. But I couldn’t wait: I did an incredible workaround (”gambiarra” in portuguese… do you know Gambiarra? :P ), so incredible that I’m ashamed of writing about it in details.

I’ve been reading several tomboy addins code, and got the idea of the implementations. I’ve already coded something I think will be the “skeleton” for my addin. C# is very easy - but I think it’s weird. Even Java is more elegant… Anyway, I prefer Python ;D.

Monodevelop is very nice. Monodoc is cool. I just didn’t get the point on not using devhelp instead. (Okay, maybe they wanted to keep .NET documentation grouped and isolated from the rest…).

Everything seems to be alright, the only problem now is: I haven’t eat pizza for two weeks. I ran out of money traveling to Porto Alegre (FISL) and now I’m desperated!

P.S.: 10% of my GSoC money is reserved to pizza. Plus other 10%, for home-delivered pizza, and 10% for that frozen pizzas we can buy in supermarkets.

Maker Faire 2008 - Part 4

Two shots of a steampunk motorcycle scooter (thanks Corey) and two electric bikes.

There was a camera providing a stereoscopic 3D effect, so I took a couple pictures of myself. Grab your anaglyph glasses for best viewing.

Here's Artoo-Detoo (that the adventurous of you can make for yourself). It's even better than the real thing (according to Gizmodo).

Robbie was there too, but a little less animated.

Winner of the cutest robot at the show (by far) is the Pleo. What you can't tell from the photo is that it's gently moving around (like it's trying to get comfy) and making endearing little noises. Also a picture of one that had been flayed.

This is what I want for Christmas. Or I'll take it as a gift. I'm not proud. Some examples of what you can make with it. Similar CNC PC controlled router for foam.

And finally a miscellaneous set. A really nice home made, computer driven etch-a-sketch.

The Hydraulic Flight Simulator

Outside they had a huge "pond" setup for robotic model warships to shoot at each other and fight to the death (more info). There was a large battleship under several inches of water still shooting away (shells now becoming torpedoes). The top part had come off. I guess the boards inside must of been waterproof although they didn't look it.

In the Dark Room there were several POV machines.

Last batch of photos tomorrow.

[]

[]

[]

[]

Hello Planet

Since my posts are now being amplified by Planet Gnome I should take this time to introduce myself... Hi, my name is Robert Ancell and I am an open-source developer currently active in Gnome Games (particularly the chess game which I started many years ago and was merged into Gnome in 2.18) and I am the maintainer of GCalctool having taken over from Rich Burridge for the 2.22 release (I swear he sneaked that over to me when I wasn't watching ;) ).

In my more pays-the-rent side of life I am a software engineer having come from an embedded background and now working for a large financial organisation in Sydney, Australia. I get into open-source code when I have some spare time which leads to fairly unpredictable progress on projects (actually I normally find I have time after a release so I get a release worth of duplicates before the change is released - now that's Murphey's law!).

My goals for Gnome currently is to get the code I'm working on simpler and more reliable. This goal will inevitable slip when I find some flashy feature to introduce :).

p.s. I don't actually play chess so fear ye all who left me writing the Gnome version!

Apport/Bug Buddy disabled in Ubuntu 8.04?

After upgrading to Ubuntu 8.04 it appears my automatic bug reporting is disabled. Due to the number of Ubuntu sourced reports coming in for Gnome Games it can't be disabled on everyone's system... So a bit of investigation showed it might be apport. Looking in /etc/init.d/apport showed this was disabled so I enabled that by editing /etc/default/apport and set enabled=1. After /etc/init.d/apport restart I could happily file away a nautilus bug.

But wait a minute... That report went to Launchpad, not Gnome Bugzilla! (Wouldn't it be a nice world in which Ubuntu got the flood of duplicates for the things we fix but they never update </gripe>). It appears apport is only enabled during development so I shouldn't have had to enable it. I figure it is bug-buddy that normally catches bugs and sends to Gnome; is anyone else getting this/know how to tell if the crash catcher is running?

Gabriel Schulhof’s words of wisdom for today

To some people, the opposite of increment is excrement.

That is all.

BIOS Update for T61

If you are using a new T61 or T61p please check your bios version. You can do this using:

lshal | grep system.firmware.version

If you are not running 7LETB7WW, then you really need to update your BIOS to v2.17-1.08

Symptoms of an old BIOS version are hard hangs when docking/undocking from the smart dock, or the USB might mysteriously stop working with Disabling IRQ #19 in the logs.

Bloody hell.

What the hell is wrong with some of the people in this country? Some of the other papers have comments as well, but many of them are so sickening I couldn’t link to them.

While i’m here, why did ubuntu 8.04 install a damn beta of firefox? At least it’s easy to downgrade.

The New Look Invest Applet

Thanks to the superb work of Matteo Zandi the invest applet has undergone some major improvements. If you ever worried about the strange grey square, then the next gnome-applets release if for you.

  • The stock-health indicator has been integrated with the main icon, it now looks better and takes less space.
  • Spark-lines show recent activity.
  • Non-US stocks have better support.
  • Column headings are now printed: you don't have to guess what the numbers mean.
  • You don't have to right-click in exactly the right place to get the menu.

Matteo has more improvements in the pipeline, but for now here are the before and after shots.



before



after

LugRadio Live USA videos

For those of you who missed the greatness that was LugRadio Live USA, or those lucky lucky people who were there and couldn’t see all the talks, we’re now starting to make videos of the talks available for download! Tony Whitmore, our hyper-competent video guy, is busily processing the videos, and as they’re made available we’re adding them to the LugRadio Live USA schedule. Currently there’s video of the LugRadio live show recording, Ted Haeger talking about “Freedom and the Cloud”, and Emma Jane Hogbin talking about women in open source. More will be appearing over the next few weeks! Keep an eye on that page to find video that you can stream or download in a load of formats.

(Those of you who are hyper-keen can actually get the videos quicker by watching the official video thread in the LugRadio forums, too.)

blast from the past

I thought i’d try something a bit different and recreate some Amiga demo routines I wrote 15 years ago (hmm, was it that long).

tunnel image

Hmm, still some way to go … The next bit of this routine is going to be tricky without the blitter and a bitplane oriented display …

May 07, 2008

Hell in Wrocław

I’ll be attending and giving a presentation at Libre Graphics Meeting this year in Wrocław.

Title: ”Programmer’s hell: working with a UI designer”.

Time: Friday, 14:25.

Lot’s of fun guaranteed, come to feel some hot flames.

Karl Lattimer is my hero

I just can't help but appreciate how this dude comes to my desk and solves my complicated problem within minutes. My python problems were all solved when he removed the link (/usr/bin/python) to absolute path (/usr/bin/python2.5) and recreated it, only this time using relative path. Either he is too smart or I am too stupid. :)

stroke my ego

Knew Steph wouldn't be home late until tonight, and chances to do this on a whim are going to run out, so I decided to wander around the UWA campus after work with a tripod and my camera. Most of the photos I took were lemons, but there were a couple that came good. My fragile ego wants to know what people think. Constructive criticism also gratefully accepted.

winthrop hall (back)
the back of Winthrop Hall

winthrop hall (front)
and the front, overlooking the reflection pond

My 40 ringgit tripod behaves pretty much how you'd expect: poorly. It's very, very shaky. Many of the photos took several attempts. Some that I thought would work really well, like the library, didn't turn out at all. I hadn't originally intended to walk up to the reflection pond, but sat on the pavement I think I got some really nice shots.

reflection pond
reflection pond

clocktower
clocktower

On the technical front; I upgraded my laptop to the new Ubuntu today using their upgrade app and everything. Things actually went perfectly. Upon rebooting and seeing X start I thought about how far we've come (and how I still have such low expectations). Everything seems much less broken than the betas I tried when writing the GNOME release notes. Ubuntu's non-free driver applet seems to need 10MB of writable memory for something though... that seems strange.

Finally, football at night makes for interesting photography. I got quite a few good shots, but I think this was my favourite:

soccer on James Oval
some people move more than others

On the act of subverting the British nation

A few days ago I made a completely correct analysis of how the Schuko standard for power sockets and plugs, used on the continent of Europe, is superior to the British BS1363 standard.

Today I noticed the fruits of our hard work of trying to convert the British people to the fine uses and traditions of the people who live on the European continent. I saw a carton “Gezeefde Tomaten / Purée de Tomates” at a supermarket in Durham UK.

Just like how politics in Belgium work we have started applying the principle of divide and conqueror: instead of using their native language English, we are now sending them products with dual language branding and descriptions. Just like in our own country. This introduces doubt about their English identity. To divide you first need to generate fear and doubt (Am I really English? I’m not Welsh either? Maybe I’m Dutch? Maybe French!! Wouh!). Then you conqueror them by telling them, with a soft voice:

No no, you are Europe.

Works great! Just make them believe those Belgian “Purée de Tomates or Gezeefde Tomaten” are good. Once they grasped that, tell them: “but the tomatoes and the brand itself (Valfrutta) actually comes from Italy”. That’ll completely confuse them! Then relax them by softly putting your hand on their forehead and say: you are European, don’t be afraid child.

ps. Dear people who don’t live in Europe: this post is sarcasm, irony, a joke.

Free Software at work

Today someone at work asked me what graphing component our stats portal uses. I didn’t know either, so I took a look in our website code. Seems we use something called Open Flash Chart. I’m not a big fan of Flash for the obvious reasons, but it sure does get the job done and looks pretty doing it.

Quote from their website:

And it’s really free?!

Yes. Once upon a time I had to deal with a company who sell flash charting components, their component had a bug that I needed fixing, so I emailed them about it asking when it’d be fixed. (Remember that I had paid real money for this software.) They were so incompetent, rude and obnoxious that after three or four weeks of emails I thought to myself “I could learn Flash and Actionscript and write my own charting component, release it as Open Source, host it on sourceforge and build up a community of helpful coders faster than they can fix a single bug.” And that is what I did. And that is why it is free. I guess the moral of the lesson is: don’t piss off your customers.

How can any Free Software hacker not like that story ? Don’t piss off your customers, put into practice.

Git Workflow

Havoc’s recent post on git was interesting because it shows how frustrating git can be if you try and treat it as “just another CVS”. From that perspective, git just seems like it’s just some bizarre way for kernel hackers to torture those who just want to get work done.

I turned that corner with git when I learned about “git-rebase -i” and came to the startling realisation that git’s history is editable. Basically, this allows you to change your workflow such that you can hack away at will, commit often and then rewrite the history of your hacking session so that you have a coherent set of patches/commits at the end of it with a useful changelog.

e.g. you can go from:

A1---B1---A2---A3---C1---B2---C2---C3

to:

A1---A2---A3---B1---B2---C1---C2---C3

or even:

A'---B'---C'

Using git rebasing, I found that I could use a similar workflow to using quilt with CVS, or mercurial with its patch queue (mq) extension. The revision history becomes less about tracking the progress of your work, and more a maleable mechanism for preparing patches before submitting upstream.

Red Hat Magazine has a nice article explaining all this, and I even picked up some new tricks to try out:

  • git-merge –squash : merge a branch/tag into the current branch, but squash all the commits together as an uncommitted change to the working tree. When you go to commit the result, the changelog of all the merged commits is available in the commit message editor so you can munge them together into a useful changelog.
  • git-cherry-pick –no-commit : apply the changes from a given commit to your working tree, but do not commit it. Could be used to achieve something similar to a squashed merge, but where you selectively merge only some of the commits.
  • git-add –patch/–interactive : add some changes from the working tree to the index, but e.g. selectively add only some of the patch hunks from a given file. Allows you to make a bunch of changes to a file, but commit the changes as individual commits.

ASCII art User Interface mockups

I have the pleasure of knowing the great mpt. He actually spent a couple of months in Brazil back in 2006 and we ended up sharing the same apartment during this period. One of the great things he masters is the art of writing ascii art mockups of user interfaces As I am a mere beginner might not be the best person to explain this. However I will make an attempt to explain the basic principles, in the effort of having this written down somewhere.

In this blog post I will focus on commonly used interactive widgets available in Gtk+, since these are the ones I tend to care the most about.

GtkEntry

An entry is straight forward, you use brackets in the beginning and the end and underscores to fill up the allocated width of the widget:

[____________]

If you want a text, just replace the underscores with letters

[Hello World____]

GtkButton

Buttons are similar to entries, the main difference is the lack of underscores and the use of capital letters. Icons are usually ignored as they often are rather tricky to represent using the ASCII alphabet. A cancel button looks like this:

[ CANCEL ]

GtkToggleButton and GtkRadioButton

Toggle buttons uses brackets around the toggle part and no brackets around the rest. If the value of the radio should be active, use a lowercase x to say so:

[ ] Buy milk and cheese for breakfast

[x] Eat strawberries after lunch

Radio buttons are similar but uses parenthesis and o, eg:

(o) Fresh fish

( ) Rotten eggs

GtkSpinButton

Spin buttons are similar to entries, but they have two small arrows on the right hand side. To represent the arrows, use H:

[1234 H]

This might not look good in all fonts, but it’s the best that can be done, at least as far as I know.

GtkComboBox

A combobox tend to be represented again by using brackes in the beginning and the end. To represent the arrow, use a lower case v and separate it from the text by using a | (pipe) sign.

[ Stockholm | v]

GtkDialog

Prett simple, use _ (underscore) and | (pipe) for the borders, titles and window manager buttons can usually be skipped since they are mostly noise to us in this context:

 ________________________________
|                                |
| Do you want to close the open  |
| document and lose the changes  |
| made to it?                    |
|         [ CONTINUE ] [ QUIT ]  |
|________________________________|

These are the widgets I usually end up using in my mockups. Have any missed any important onces? Or I have I done any serious mistakes? Comments appreciated!

(more…)

Using GtkListStore in Python

I often end up reading code using GtkListStore in Python, either in existing projects or on irc when someone asks me to fix their program. It’s pretty straight-forward to using the GtkTreeModel interface and it’s various implementations such as GtkListStore and GtkTreeStore. However, due to lack of proper documentation, the small pieces of Python sugar on top of the raw C wrappers is seldomly used. In this blog post I will attempt to document the most useful one in hope that some popular search engines will pick this up and help someone in the future.

Construction

For starters, let’s look into construction of GtkListStores:

model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_INT, gobject.TYPE_FLOAT)

This creates a liststore with three columns, a string, an integer and a float. The column types are specified using the constants available in the gobject python module. Since I’m hardly a normal person, I’ll immediatelly get frustrated when I see that kind of code. Instead, I wish people could write the following code instead, which is shorter and thus easier to parse:

model = gtk.ListStore(str, int, float)

It does exactly the same things, interally str is mapped to the gobject.TYPE_STRING constant and so on.

Appending data

At some point during the life time of a program you want to insert data into a model. A common way of doing is that is

the following:

iter = model.append()

model.set(iter, 0, “foobar”)

model.set(iter, 1, 1138)

model.set(iter, 2, 3.14)

This appends a new row and sets the values”foobar”,1138 and 3.14 to the three columns. You can avoid the three different calls by sending in a list to append as the first argument, eg:

model.append([”foobar”, 1138, 3.14])

Which again, is the exact same thing. (Modula saving a reference to the inserted tree iter of course)

Fetching values

To fetch a value from the a model you usually get an iter, for example from a selection:

model, path = selection.get_selected()

value = model.get_value(model.get_iter(path) , 0)

Two things can be simplified here: First of all we take advantage that model implementes a list like api, you can just access the model list a list, eg: model[n]. Secondly you can send in either an index, path or iter as n, so the example above is simplified to:

model, path = selection.get_selected()

value = model[path][0]

Iteration

Iteration over all the values in the model is usually done something like this:

iter = model.get_iter_first()

while True:

value = model.get_value(iter, 0)

iter = model.iter_next(iter)

if iter is None:

break

Which can also be considerably simplified:

for row in model:

value = model[row][0]

Also note that using the variable name iter in a python program is always wrong, since there is a builtin variable with the same name. Avoid the name iter, and use for instance titer instead, which is almost as short and a bit clearer.

Banshee 1.0 Beta 1 Released

We have just released Banshee 1.0 Beta 1, aka 0.99.1! This release adds some major features and lots of polish.


MTP and iPod device support have landed! Both MTP and iPod support album artwork, on-the-fly transcoding (converting between file formats), and video support!

Animation showing Banshee playing music, transferring files to a MTP device, and showing large cover art.
Banshee playing music, showing cover art, and transferring to an MTP device

Other features and fixes include:
  • Fullscreen video playback (go to Now Playing and press f or hit the Fullscreen button)
  • Extensions can be enabled and disabled in the new Mange Extensions tab within your Preferences.
  • Banshee can be scripted using Boo
  • Improved gstreamer error handling (for missing files, codecs, etc)
  • A bug with play counts, introduced in Alpha 3, has been fixed
  • Writing metadata to file was not working in the Alphas, is fixed
  • Issues with the play queue should all be resolved
  • Limiting smart playlists by file size or duration works
  • Shuffle and repeat are automatically disabled while playing Last.fm

Default smart playlists in Banshee
Default Smart Playlists
This release also features default smart playlists, created for new users and users with zero smart playlists. There is a more extensive list of predefined smart playlists, including the defaults, available in the New Smart Playlist dialog.

Thanks to Aaron Bockover, Alexander Hixon, Bertrand Lorentz, Christopher Rogers, Scott Peterson, Sebastian Dröge, and Wouter Bolsterlee for code contributions for this release, and to Daniel Nylander (sv), Gabor Kelemen (hu), Jordi Mas (ca), and Wouter Bolsterlee (nl) for updated translations! And to Jorge Castro for testing and release notes help, and Michael Monreal and Andrew Conkling for testing and bugzilla work!

You can follow the posts of Banshee contributors on Planet Banshee. We are a friendly, vibrant community and always glad to have people join us! If you have been wanting to contribute back to free software and GNOME, I think you'll find Banshee's code and C# a pleasure to work in, and a healthy amount of support and encouragement from a very active community. Join us on our mailing list, in our IRC chatroom, and on our wiki!

Digg It!

Fedora Stickers



Inkscape source is here (temporarily; I have very little hosting space o_O thanks skvidal!)

Now that I have more space, also enjoy the Scribus source for above sticker sheet (with proper Fedora colors) as well as this design for a sheet to be included with Fedora 9 presskit:



(PDF behind the link)


What do u think?

May 06, 2008

6 May 2008

One of the advantages of working in a biology lab is getting deliveries of stuff in dry ice and getting to play with the dry ice afterwards. Sadly, while dry ice is clearly very cool (a-ha ha ha ha ha (dies)) it makes a lousy way of cooling down your drinks[1]. With a latent heat of sublimation of merely 199kJ/kg, CO2 draws less energy out of the liquid than ice's latent head of melting of 334kJ/kg. That's easily dealt with by using larger blocks of dry ice, but the fundamental problem seems to be that most of the sublimed CO2 boils straight out of the glass and just gently cools the atmosphere instead. Maybe ethanol cubes are the way forward.

[1] Much like Red Stripe, it is also a lousy fabric softner.

new altlaw feature

Altlaw, the restoring-caselaw-to-the-public-domain-where-it-belongs project I’ve been involved with on and off since last year, just got a new feature; it now parses the cases that are cited and shows them as sidebar links. It hasn’t propagated to all cases yet, but you can see an example here. (I stumbled across this by looking up that case for my exam tomorrow, rather than because anyone actually told me what was going on. Clearly I should be subscribed to the site’s news feed. :) Still needs some love, but it is great to see it getting there- impressive what can be done these days on a very serious shoestring.

an admission

I subscribe to cairo-list just to read what Carl Worth has to say. Carl is smart, fair, level-headed, perceptive, very sympathetic to people that come with problems, yet opinionated as well. It's refreshing, inspiring, and humbling at the same time.

This blathering inspired by one random post, although it could have been any other post just as well.

Cross-platform, standalone Silverilght Applications

Tamir Khason published an interesting approach at hosting standalone Silverlight applications.

His solution is a Windows.Forms application that hosts a Windows.Forms.WebControl and inside the WebControl he hosts Silverlight.

Unlike my proposal for standalone Silverlight Applications that is currently Moonlight-specific (and currently limited to Linux/X11) this approach works on Windows with .NET and with Linux using Mono and Moonlight:

Left side: .NET hosting WebControl and Silverlight on Windows; Right side: Mono hosting WebControl and Moonlight running on Linux.

In addition to hosting the WebControl for hosting Silverlight, a thread is running to dispatch http requests locally using HttpListener. HttpListener is an embeddable HTTP server that is part of the class libraries, and exposes a very limited API. You can host ASP.NET with HttpListener by doing the bindings by hand, or you could use our Mono.WebServer library (part of our XSP/mod_mono distribution) to allow your applications to have a fully hosted ASP.NET server.

Mono.WebServer is what iFolder uses to embed the ASP.NET server to expose SOAP-based WebServices to clients.

Of course, this currently does not work on MacOS X as we do have no implementation of WebControl for Windows.Forms on OSX, something that a contributor might want to look into.

You can get the source for the sample from Tamir's page.

Consulting Gig at Novell

We are looking for consultants to work on a six to nine month project at Novell to write a prototype for a Visual Studio addin in C# or C++ that will connect Visual Studio and its debugging infrastructure to a remote Linux machine running Mono and the Mono Debugger.

If you are interested in working with us in this project, you must have good C# and C++ skills, experience with networking and protocol design, knowledge of COM and assembly language programming are pluses.

We are looking to bring two consultants for the duration of this project. If you are interested, please click this link and attach your resume, pointers to some existing projects of yours and so on.

Roadmap and project hosting

I created a project page and a roadmap for my as-yet-unnamed (or rather, currently named poorly) SoC project. It can be found here, although there's currently not a whole lot of information up there beyond a basic roadmap. I guess this means I've officially started "work" for the summer.

Wireless internet under Linux in the Amsterdam Public Library

The public library of Amsterdam, i.e. the Openbare Bibliotheek Amsterdam (Wikipedia entry, check out the pictures!) not only offers a enormous amount of books, cd’s and several reading and conference rooms inside their great building, but also offers free access to their wireless network, so that you can access the internet.

Before I start, a few words to help people find this blog post using Dutch query terms: Dit artikel beschrijft hoe ik onder Linux het draadloos internet in de Openbare Bibliotheek Amsterdam aan de praat heb gekregen. Het draadloze netwerk werkt goed, maar alleen als je weet hoe je het moet instellen!

First, you need to register an account. Instructions can be found at various places in the building, and you should activate it by showing your ID at the reception desk near the entrance.

Then you need to configure your computer. However, only instructions to set up the wlan in Windows and Mac operating systems. Linux users like me are left in the dark.

It took me quite some time to get it to work, mostly because none of the Network Manager configuration options worked for me. That is, none of the options provided in the popup window that asks for connection authentication tokens and the security setting (WEP, WPA, and so on). I’m using version 0.6.6, by the way. The trick is that you need to use the connect to other wireless network option instead of just picking the right network from the menu:

Network Manager menu

Network Manager menu. Choose the highlighted option, not the OBA Hotspot Service item.

The next step is to configure the network settings. Choose WPA Enterprise, fill in the network name, specify PEAP and Dynamic WEP, and fill in your username and password. The screenshot below shows the result:

Network settings for the OBA network

Network settings for the OBA network

Hit the connect button and a connection will be made. That’s it: happy surfing! The internet connection is quite fast and pretty much unrestricted, e.g. you can use SSH without trouble, for instance. This is definitely not always the case, e.g. you can’t in the Public Library of Den Haag (The Hague).

For completeness, here’s an alternative, manual way (hacky and ugly) if you don’t (want to) use Network Manager. You may stop reading here if you’re using Network Manager (I heartily recommend it). Beware, the next few paragraphs require you to know how to work with a shell and how to edit system configuration files properly! Only proceed if you know what you’re doing!

You will have to edit the /etc/wpa_supplicant/wpa_supplicant.conf configuration file manually (create it if it’s not there already) to be able to connect to the OBA Hotspot Service wireless network. The relevant snippets you need can be dow