Sound problem finally fixed on Ubuntu Dapper

When I the installed Ubuntu Dapper testing releases, my sound card didn’t work anymore. It is a HDA Intel card, part of the Dell Dimension 5100 computer I use at work. The card was recognized but the volume seemed to be muted. The master and PCM channels were all maximized though.

I thought this problem was going to be fixed in the final release, but when Dapper was released my sound was still muted.

Today I came across a bug report describing the same problem and a solution.

It appears the surround control was muted, which caused everything to be muted as well.

So after also showing the surround control, and unmuting it in the Gnome volume control, my problem was fixed:

[img:177662313,medium]

I hope this is useful for people who experienced the same problem.


Edit: apparantly this also fixes the sound problem on Macbook Pro laptops.

Modifying a UIML interface from the application logic

As I posted in an earlier article, Uiml.net allows us to connect the application logic with the user interface.

I showed that it’s possible to create a callback that listens to certain events, optionally only coming from a specific part. In these callbacks we can examine the part that has sent the event using the Uiml.net API.

But is it also possible to modify that part?

Of course we could operate on the widget-set specific user interface object (e.g. a System.Windows.Forms.Button), but that would require different code for each target widget set. Here is how we would change a button’s label when it is clicked using this approach:

public class ModifyTest
{
  public ModifyTest()
  {
    ...
 
    // connect only to the hello button
    uimlDoc.Connect(this, "b_hello");
 
    ...
  }
 
  [UimlEventHandler("ButtonPressed")]
  public void OnButtonClicked(Part sender, UimlEventArgs e)
  {
    // get the concrete UI object
    System.Windows.Forms.Button b = (System.Windows.Forms.Button) sender.UiObject;
 
    // change its text to 'Do it again!'
    b.Text = "Do it again!";
  }
}

Uiml.net provides a property setter interface that can apply any property. We only need the renderer instance in order to access it. We could use this API to modify the user interface in a generic way, if we rely on a shared class and property among all widget set vocabularies. In our example, the Button class exists for all vocabularies that Uiml.net supports, and has a label property in each vocabulary.

Let’s have a look at the generic solution. We only list the important code:

public class ModifyTest
{
  IRenderer _renderer;
 
  ...
 
  [UimlEventHandler("ButtonPressed")]
  public void OnButtonClicked(Part sender, UimlEventArgs e)
  {
    // create a label property
    Property p = new Property();
    p.PartName = sender.Identifier;
    p.Name = "label";
 
    // set its value to 'Do it again!'
    p.Value = "Do it again!";
 
    // apply the property on the sender part
    _renderer.PropertySetter.ApplyProperty(sender, p); 
  }
}

Moved

Yesterday me and Evelien (my girlfriend) moved to our apartment in Houthalen. It was time to fly the parental nest :-)

There are of course still some things to be done, but we could already move in yesterday thanks to the help from our parents and family. The apartment is getting really cosy. We have a large terrace in the back, and a smaller one at the front, which is very nice in the summer time. Now let’s hope the weather gets better again.

I will upload some pictures of our place to my Flickr page when everything is sorted out. We are also waiting for our internet connection (should only be about 2 weeks now).

I can conclude that it’s a nice feeling to have a place of your own :-)

CADUI 2006

This week, I was in Bucharest for CADUI 2006. I presented the demo paper Kris, Kristof and I submitted for the conference (A Generic Approach for Multi-Device User Interface Rendering with UIML). Actually I am still in Bucharest at the moment, tomorrow I’m flying back to Belgium.

CADUI was the first conference I ever attended. At first, I didn’t really know what to expect, but it turned out to be a very pleasant experience. I met a lot of nice people, and saw interesting talks. CADUI is a very friendly conference, which resulted in a comfortable atmosphere that only further fueled the interaction.

After the last presentation today, there were books handed out from Springer-Verlag for the best paper and best talk, and also a lottery giving away another four books amongst the participants of the conference. The best paper was A Generic Approach for Pen-based User Interface Development by S. Mancé and E. Anquetil, which describes a pretty impressive system.

First I won a book from the lottery, and then I also got the best talk award! So my backpack is going to be a bit heavier on the way back I guess :-)