 Hello everybody. I'm going to talk about Bluepad. Bluepad is a remote control for Linux. I correct for GNU Linux. Lucky me, Mr. Stelman is not in the audience. Bluepad is better. These don't work. Okay. The idea behind Bluepad. Bluepad has created an ubiquitous computing course at the University of Everett in Portugal. We had to make a client server application. The client side must be a cell phone. The phone and the computer must communicate in some ways. The server part must be a web service. But this must communicate with the cell phone. We have some curiosity about the Bluetooth technology. Along came the idea of transforming a cell phone in a remote controller. The idea came up in this explanation in Avra, Portugal. Later, we have the idea of extending our previous idea of controlling games too. Not just applications, but games too. So anyone can use a pocket gamepad and have these in everywhere. We go further and extend what is the pros and the cons of our idea. So it makes your cell phone more valuable. Of course, you have a pocket gamepad there and a remote controller. You don't have to buy a controller. The controller's existence in the market are very limited to Windows. I don't know if anyone has one that works well in Linux. This is very useful for keynotes, but also for home users. You are at home, you can control your favorite media player application, a movie, a music, anything. The cons, of course, promote the gain of weight because you don't need to get out of your sofa to press the computer keys. I think it's the only cons. Just a note, when I say we, I'm talking about the other creator of Blu-pad, my friend joking Russia. The state of art. We don't know if there is any application like that. In the moment we have the idea. We go to the internet and make some search and we find some applications. There are very hard to configure and install. Are available only for a small number of devices. Lots of them are only available for the devices or the device, the mobile device of the creator of the application. They are not so useful and they control only a certain number of applications. So it's really too useful to control only a player. I think no. I like Totten, for example, or Amarok. It's productive to, every time you want to change application, you go to your computing and change the key there. I think it's better we control everything. Of course, I can't control my favorite applications. I am sad with that. But we think the group approach is control everything. Of course, if I control everything, I have freedom to choose my applications. I am happy with that. So, our development approach. In the beginning, we have only these three main profiles, presentations, music and movies, and games. And later we create the mouse profile to control the mouse. If we want to control all applications, we have to control the application on focus. We don't have to send some sort of configuration for, say, this is Amarok. Please dial Amarok plus anything. You control the application on focus and blue pad should be easy to install and use and should have a high portability. So, some technical details. This is the theory. First, we create a connection between the cell phone and the computer. Then the cell phone sends some key codes to the computer and the computer emulates the key codes by the input kernel driver. We use Bluetooth, of course. We use this protocol, L2KAP protocol. We have to choose between L2KAP and RFCOM. RFCOM is equivalent to TCP in computer networks. When you lose a package, the connection goes down. This L2KAP protocol has segmentation and resemblance of the package. So, if you lose a package, it's not a problem. You can go there and lose the connection and right in go here now and the connection is up. We think this is the better choice. I don't know this. When we start developing blue pad, we don't know anything about Bluetooth. Only the way it works, nothing more. Some technical advice about the server application. We made blue pad with Python. We choose Python because it has a powerful API and you can write applications with a few lines of code. This increases our productivity. We develop blue pad in only four weeks, developing and testing. Without Python, I think this is not possible for us. We use Glade to make the user interface in the PC part. We follow the Gnome guidelines. We use PyGTK to add actions to the Glade interface. We use PyBlueZ to control the BlueZ stack. The Bluetooth stack of Linux is a wrapper for the BlueZ stack. We use PyNotify to display the little buttons, the little balloons that you see. For example, a network manager or Ubuntu dates. We use the input driver to inject the data into the kernel. These drivers are made to make drivers for controlling, for example, joysticks, gamepads, things like this. He is able to inject directly data into the kernel. If you send a key code there, these data react on the Windows on focus. In the cell phone part, we choose to develop blue pad with Java for mobiles because it adds white portability. Lots of mobiles have Java. We don't like to watch the internalization system that came with Java for mobiles. We made a system from scratch. This system caused problems. We discovered it later. Because the Symbian device like CERIS-60 don't have very good support for UTF encoding. If you load a file in UTF with SymbianOS, the phone gives an exception. Because of that, blue pad don't run in the CERIS-60 in the standard version. We have a version without other language than English for these devices. We follow the approach of every keys configured in the phone because if you switch application or you need to set a new key, you don't need to go to your laptop or your PC to configure them. And we think it's clear and simple interface in the phone. This is the main Windows of choosing profiles, the four profiles. And here is when the choose device option to discover your laptop or PC. This is an example of the music movie profiles. That icons are from the Tango project. There are open source too, but not made by us. And this is a wheel interface to choose the keys to attribute to the actions of the phone or the PC. This is very quick, very fast to set the key because this is like a wheel. You scroll down and they are fast and you can quickly set the key if you want. So, a word to the community. Blue pad is a very, very new project. We uploaded it to Salesforce in August. We received lots of feedback, lots of mails saying that blue pad doesn't work or things like that. And many future requests, some of these are very mad, others are good. Now we have blue pad translated in that language, Dutch in polish in progress. We need translators, testers. We need lots of testers because they have lots of phones there, lots of phones screens, different phones screens. We need more ideas and this number is up to date. And now it's something like a thousand of downloads. Anybody in the room test out blue pad, no? You can test and then send me an email telling that blue pad sucks or don't work or don't fit on your mobile screen. Because this is a very, is a big problem. You have lots of screens and the branding don't respect the specification of Java machine. They take out features of the Java machine for, I don't know, maybe for gain money or just for make the Java machine more likely. I don't know. And if you have a specification that must be run everywhere, Java is it, run everywhere, you write the code and it's run everywhere. But if the brands take out features, you don't be able to develop a think tech run everywhere in all phones. And we need testers for this that say to us that the blue pad don't fit on the screens or don't run because of some kind of exceptions. Some phones don't have frame pointer support, for example. Okay, I think it's, sorry about my English, it's not too good. But if you don't understand anything, you can talk here or make a question. I hope you gonna try out blue pad and send me some emails. You are open to participate, to send patches, translation, anything you wish. Thank you.