XML-RPC support for Uiml.net

I meant to blog about this a long time ago, but I never actually got to it. In August, I implemented an extension to the call mechanism in Uiml.net that allows a UIML interface to call external application logic via the XML-RPC protocol.

I made an example UIML interface, which connects to the UserLand Betty server at betty.userland.com. It then resolves the state name from a state code entered by the user. Here are some screenshots of the rendered interface:

[img:91400205,medium]

[img:91400206,medium]

We use the standard UIML call tag. Here’s how we specify the behavior of the user interface:

<behavior>
  <rule>
    <condition>
      <event part-name="go" class="ButtonPressed"/>
    </condition>
    <action>
      <property part-name="stateName" name="text">
        <call name="Betty.GetStateName">
          <param>
            <property part-name="stateCode" name="text"/>
          </param>
        </call>
      </property>
    </action>
  </rule>
</behavior>

The XML-RPC web service is described in the logic part like this:

<logic>
  <d-component id="Betty" location="xmlrpc://betty.userland.com/RPC2">
    <d-method id="GetStateName" returns-value="System.String" maps-to="examples.getStateName">
      <d-param id="code" type="System.Int32"/>
    </d-method>
  </d-component>
</logic>

What has changed is that Uiml.net now checks for a protocol handler in the location attribute. If it’s xmlrpc://, we try to resolve the call using XML-RPC. Remember that local calls just specify the maps-to attribute.

We didn’t implement XML-RPC communication from scratch, but used a simple XML-RPC library for .NET: XmlRpcCS. The project seems to be dead since 2003, but it still works fine.

Takis has provided packages for XmlRpcCS (xmlrpccs) itself and for the dynamic Uiml.net XML-RPC glue library (uimlnet-xml-rpc).

Package updates for Uiml.net

There are new packages available for Uiml.net. Previously, when you just ran uiml.net.exe, it would exit saying that it could not find the frontend UIML files. These are now included in the packages, meaning that you get a nice graphical interface for choosing a UIML file to render. There is now also a dependency on at least one of the rendering backends.

Takis also moved his repository to another server. To install Uiml.net or Cassowary.net packages, just add this line to your /etc/apt/sources.list:

deb http://issaris.be/breezy/ ./

In other news, Takis has been playing with a Nokia 770 lately:

Google Talk now open for other Jabber users

Google opened up it’s Google Talk service. This means you can talk to any other IM service from the Google Talk service using the XMPP protocol (also known as Jabber).

While Google already used the XMPP protocol for Google Talk, there was no communication possible between Google Talk users and other Jabber users. Until now.

Since millions of people have a GMail account, this means there are now also millions more Jabber users. This could really push the adoption of XMPP, and hopefully paves the way for instant messaging through open, non-proprietary and standardized protocols.

Keeping the audience’s attention

Came across an article describing the process behind the curtains of Apple’s keynotes by Steve Jobs.

I always found his presentations very good. He surely manages to get, and maybe even more important, keep your attention. Ok, sometimes he exaggerates a bit, but if you want to draw people’s attention or convince people of your opinion, I suggest you have a look at one of his presentations, and start learning. A good candidate might be yesterday’s Macworld keynote, where Steve introduced the first Intel-based Mac. You might also have a look at last year’s WWDC keynote (where Steve introduced the move to Intel, and had to explain why this was necessary and beneficial).

The article discusses what I already suspected: the presentations are very carefully planned and prepared. Having it all in your head in advance allows you to concentrate more on the message you’re trying to transfer, and leaves room to improvise.

A common mistake when presenting is putting far too much content on your slides. To the audience, it’s like trying to read an article in a 9pt font with no paragraph divisions. After a while, you just give up.

A lot of tips and tricks about giving presentations can be found at Presentation Zen. It also features an article comparing the presentation styles of Bill Gates and Steve Jobs.

Cassowary.net and Uiml.net packages for Ubuntu

As I mentioned earlier, there was still some news that I needed to blog about.

Takis created Ubuntu Breezy packages for both Cassowary.net and Uiml.net. I wanted to test them on a clean Ubuntu Breezy install first, before making a public announce. We haven’t tried them on a Debian system, but they might work. Feel free to try it out, and let us know!

To use them, just add this line to your /etc/apt/sources.list:

deb http://lumumba.uhasselt.be/~takis/breezy/ ./

The following packages are available for Uiml.net:

  • uimlnet
  • uimlnet-gtk-sharp
  • uimlnet-swf
  • uimlnet-compact-swf
  • uimlnet-wxnet
  • uimlnet-xml-rpc
  • uimlnet-all

Cassowary.net consists of just one package:

  • cassowarynet

Thanks to Takis’ work, the infrastructure is now in place to easily provide updates to our packages.

His repository is still growing. If you’re looking for bleeding edge Ubuntu packages, you might find what you need there (e.g. Vim 7, Gaim 2.0 beta, daily git builds, etc.).