Category Archives: Planet GPUL

Vagalume: D-Bus support for its desktop version

Published / by mario / 3 Comments on Vagalume: D-Bus support for its desktop version

As you can check out in the vagalume-devel@garage.maemo.org mailing list archives:

https://garage.maemo.org/pipermail/vagalume-devel/2008-June/000151.html

…today I’ve finished the implementation of a new patch for Vagalume which will enable D-Bus support in the desktop version of this nice player, since so far D-Bus interaction was only allowed in the maemo platform (due to using functions from libosso for RPC methods, instead of dbus-glib).

So, this is how the vagalumectl script (formerly known as vagalume-dbus) would work from now on in a “regular” GNU/Linux machine:

mario@bender:~$ vagalumectl
Usage:
vagalumectl
(Vagalume will be automatically started if not already running)

COMMAND:
play:              start playing the current radio
skip:              skip to the nex song in the current radio
stop:              stop playing the current radio
love:              mark the current song as ‘loved’
ban:               mark the current song as ‘banned’
tag :         change to a ‘global tag’ radio.
artist :   change to a ‘similar artists’ radio
group :     change to a ‘last.fm group’ radio
loved :      change to a ‘loved’ radio for a specific user
neighbours : change to a ‘neighbours’ radio for a specific user
personal :   change to a ‘personal’ radio for a specific user
playlist :   change to a ‘playlist’ radio for a specific user
playurl :     just play the specified URL on Vagalume
volumeup [INC]:    increase playback volume
volumedown [INC]:  decrease playback volume
volume :    set the playback volume to a specific value
start:             start Vagalume (if not already running)
close:             close Vagalume (if not already closed)
help:              print this information

Double quotes are REQUIRED when specifying parameters to some commands,
such as TAG or ARTIST, because of the white spaces they might contain, e.g:

$ vagalumectl tag “hard rock”
$ vagalumectl artist “Led Zeppelin”

mario@bender:~$ vagalumectl loved homemaxico
Command ‘loved’ successfully executed
mario@bender:~$

Well… perhaps not a too much useful ‘screenshot’ after all… but believe me, that’s the proof that D-Bus is working fine on my GNOME desktop from now on.

I hope you can enjoy the patch soon (as soon as Berto applies it to the SVN trunk)… perhaps in Vagalume 0.7 ;-), who knows…

(freedesktop) Tray icon for Vagalume

Published / by mario / 2 Comments on (freedesktop) Tray icon for Vagalume

As you might know, some time ago I developed a plugin for the maemo version of Vagalume which would allow the user to manage the most basic features from a tiny icon in the status bar.

After that, I thought it could be a good idea to implement a freedesktop tray icon as well, so you would be able to hide/show Vagalume with a tray icon in the notification area, in the same way you could do it with some other programs such as pidgin, xchat or rhythmbox, for instance. Moreover, some people told me that it would be very nice to have a tray icon in the desktop version of vagalume, so everything seemed to say that I was not mad after all and that it could be a good idea…

So, I’ve started working on its implementation (using a GtkStatusIcon) some weeks ago and now I finally managed to get the enough ‘spare time’ to plug everything together and to finally finish the patch for being applied to one of the latest revisions of the SVN trunk (158). In fact, at this moment I’ve already sent it to vagalume-devel@maemo.org mailing list and I’m waiting for Berto to take a look into it to finally integrate it for (hopefully) the next release :-)

Update [2008/04/29]: After working a bit more on this new tray icon during the past weekend I’ve added libnotify support to allow the tray icon to show a notification each time Vagalume starts playing a new song. Of course, as I know there’re people who might dislike this feature, I’ve also added the possibility of disabling these notifications from the ‘Settings’ dialog in the GNOME version of the application. I’ve also added an screenshot of the notifications working at the end of this post.

To finish with this post, and knowing that sometimes an image is better than just a description, here you are a couple of screenshots of the new tray icon working in my GNOME environment:

Vagalume's tray icon: showing the menu

Vagalume’s tray icon: showing the menu

Vagalume's tray icon: showing the tooltip

Vagalume’s tray icon: showing the tooltip

Vagalume's tray icon: showing playback notifications

Update [2008/04/29]: Vagalume’s tray icon: showing playback notifications

And that’s all. I hope the patch is good enough to integrate it with the next release of Vagalume. Of course, suggestions and criticisms are always welcome, so don’t hesitate to leave your comments here.

I hope you like it ;-)

Installing a VNC server on a maemo Internet Tablet

Published / by mario

Today, I’m going to give a talk about Vagalume in the VIII Jornadas de Software Libre de GPUL 2008, since Berto finally won’t be able to be there, as it was initially planned, so I’ll be charged with the responsibility of telling the people how cool Vagalume, Maemo and GNOME are in only 30 minutes… quite a big challenge for me, since I seldom can speak in a concise, short and effective way without going on and on.

So, yesterday I spent some time looking for an easy and effective way for showing people attending to the talk how cool this cute device (my N810) is… and thinking about the past I remembered when Andres gave a talk/workshop about the Maemo development platform, where he used an VNC server installed in the device to show the N810 “screen” to everyone in the room, just using an VNC client in the laptop connected to the proyector.

IIRC, Andrés compiled the VNC server for the device to get it working, but yesterday I found a much easier way to get it working, so here you are the receipt (I use too much this word in my blog, perhaps I should consider to become a cook… ):

  • Download the pre-compiled .deb package for your device from this web.
  • Copy the .deb file to your device and install it following one of the following methods:
    • Install it with the Application installer from the Control Panel (N770).
    • Install it with the Application Manager from the ‘Settings’ Menu (N800 / N810). It’s required to have the red-pill mode enabled. To know how to enable this “peculiar” mode, check this out.
    • Open a root terminal in the device with a remote ssh connection and install it this way:
    • dpkg -i x11vnc_0.9.3-1_armel.deb

  • Configure it to use a password with the default username available in the device (‘user‘):
    • Make sure you are running the terminal as ‘user’, by executing the command:
    • su user

    • Create a VNC password (recommended):
    • x11vnc -storepasswd

      • This will store your password (encrypted) under /home/user/.vnc/passwd
  • Start the server:
    • Not using the password: from Menu -> Extras, click on x11vnc.
    • Using the password (recommended):
      • Open a terminal for ‘user’
      • Execute the command:
      • x11vnc –usepw

  • Connect to server (already running on the device, at port 5900):
    • Using any VNC client connect to your device’s IP, using the following credentials if you started the server with –usepw:
      • Username: user
      • Password: (whatever you’ve set with –storepasswd)

Of course, there are lots of options you can pass to x11vnc (see x11vnc –help) but these ones worked fine for me: I have an easy VNC server working with password authentication :-)

And to finish this post, just a last advice: If you think you’re going to use always (like me) the VNC server with password authentication, it could be more nice for you to edit the /usr/bin/x11vnc.sh script so it also includes the –usepw. This way, you can always start the VNC server from Menu -> Extras, withouth having to open a terminal for it… although, to be honest, I still prefer a remote terminal for most of the times, because of the output I continously get through it… but hey! that’s just a very personal opinion! :-)

Back from California

Published / by mario / 4 Comments on Back from California

As my mate Berto has already commented on his blog, we’re back from California after attending to the Mobile Rules! ’08 awards ceremony, and I’d like to say that we had a great time there, even though we didn’t win the prize… but being a finalist was already a very nice kind of price, don’t you think?

Mario at the San Jose City Hall Rotunda

Moreover, maybe we didn’t get the acknowledgement of being the “Mobile Ruler ’08” under the Multimedia category, but we met a lot of people indeed, and we enjoyed a lot of the event, which was nicely arranged to allow all the participants to meet each other and to have a good dinner at the San Jose City Hall Rotunda (look at the picture to see me in front of the beautiful San Jose City Hall).

So, maybe the next time we could have more luck with Vagalume, but now it’s the present and, as Berto said in his last post, it’s time to get back to work and keep on getting Vagalume even better with some nice improvements we already have in mind and others that I’m sure are still to come.

PS: This was the first time I’ve been to the US West Coast, and I have to say that I loved California… such a lovely place, such a lovely place. I hope I could go back soon :-)

Automatically mounting LUKS encrypted partitions with pam_mount

Published / by mario / 2 Comments on Automatically mounting LUKS encrypted partitions with pam_mount

Yesterday I’ve got my new Thinkpad T61 laptop and I had to spend some time installing a GNU/Linux distribution on it, so doing all those related tasks that are a must: partitioning, installing linux, installing emacs… and besides to all those tasks a very important one: encrypting some disk partitions.

To do that, I just followed the instructions that Berto had posted some months ago in his blog, either for encrypting full regular partitions with LUKS as for encrypting temporary filesystems, say, /tmp and swap partitions.

So, once I got those tasks done (quite easy if you follow the steps Berto‘s explained in his posts), only one more task was still left: to make those LUKS encrypted partitions to be automatically mounted when logging into the system with my username.

The idea behind this is just that you use the same password both for logging into the system with your username as for decrypting those LUKS partitions before mounting them. To do this, I’ve just used the pam_mount module so it took care of using the user password to automatically mount those partitions right after the user gets identified in the system. And of course, that pam module also takes care of unmounting those partitions right after you log out and no open sessions with your username remains active.

So, I’d like to share with you a recipe to get all this stuff easily working:

  1. Follow the steps in Berto‘s post to encrypt a full partition with LUKS.
  2. When you add a LUKS password for that encrypted partition, use the same password you use to log into your system with your username. LUKS allows you to add more than one password for your partitions, so at least one of them should be the same than your user password.
  3. Install the pam_mount module:
  4. sudo apt-get install libpam-mount

  5. Edit your /etc/security/pam_mount.conf file and append there a line like the following one (one for each encrypted partition you’d like to automatically mount):
  6. volume USERNAME crypt – DEV_FILE MOUNTPOINT – – –

    For example, to mount a encripted partition present in /dev/sda6 under a /encrypted folder whenever the user ‘mario’ logs into the system, you should append the following line:

    volume mario crypt – /dev/sda6 /encrypted – – –

  7. Edit /etc/pam.d/login so it looks as follows at the end of the file
  8. […]
    # Standard Un*x account and session
    @include common-account
    @include common-session
    @include common-pammount
    @include common-password

  9. And, if you use GDM (as me), you should also edit /etc/pam.d/gdm in a similar way:
  10. […]
    @include common-account
    session required pam_limits.so
    @include common-session
    @include common-pammount
    session optional pam_gnome_keyring.so auto_start
    @include common-password

  11. At last make sure that you have removed (or commented) some lines in /etc/fstab and /etc/crypttab, in order to avoid both asking for the LUKS password at startup (because the crypttab file) as trying to mount a not decrypted partition (because of fstab). For instance, this is how those files would look for the example given:
      • /etc/crypttab:

        #encrypted /dev/sda6 none luks,check=ext2
        cswap /dev/sda8 /dev/urandom swap
        ctmp /dev/sda9 /dev/urandom tmp

      • /etc/fstab:

        […]
        #/dev/mapper/encrypted /encrypted ext3 defaults 0 2
        […]

    Once you have followed all those steps, you should be able to reboot and see how the encrypted partition gets mounted right after you login in your system, either by using GDM as by using a text-mode terminal.

    And that’s all. I hope you find it useful.

My sloppy, dirty, ugly… but (maybe) useful script for the Vagalume D-Bus interface

Published / by mario / 4 Comments on My sloppy, dirty, ugly… but (maybe) useful script for the Vagalume D-Bus interface

Vagalume playing on my hi-fi system

Today, while doing the houseworks, I plugged the N800 to the AUX input of my mini hi-fi system (see the photo), in order to listen my online radios with Vagalume while I was doing several tasks all around my flat.

Then, after finishing those tasks, I sat in front of my laptop and I began to do some tipical tasks: read mail, surf the internet, talk with some friends through IM… while Vagalume kept playing music through my hi-fi system in the living room. And then, while I was thinking how nice is to listen Last.fm through a couple of good speakers, I suddenly found out that I should face the big dilemma:

  • Sometimes I’d like to change the radio station which is being played in Vagalume, or just to Skip some songs.
  • I love to listen music through the hi-fi system, even when I’m not in the living room (likely, my neighbours love this too), so stopping Vagalume from running on the N800 and running it in my laptop would not be an option.
  • The N800 is in another room, so I should leave the chair if I want to interact with Vagalume.

Maybe, you could be thinking of me as a very lazy person, but first just think of yourself in a similar situation and maybe you could understand what I’m talking about :-)

So, this stupid situation was the perfect excuse for me to write an small, sloppy and ugly script that, at least, works pretty well on the N800, and which allows to easily manage some of the functions of Vagalume that are available via its D-Bus interface:

  • Run / Close Vagalume application (via D-Bus methods).
  • Play / Skip / Stop songs.
  • Setting the current radio to:
    • A ‘global tags’ radio, specifiying tags separated by spaces.
    • A ‘similar artists’ radio, specifying an artist name.
    • A ‘last.fm group’ radio, specifying the name of the group.
    • An ‘user’s loved / neighbours / personal / playlist’ radio, specifying the username.
    • A custom radio, just specifying a valid lastfm URL.

So, now I’m able to remotely manage Vagalume in the N800 in an easy way, while it’s playing music in the living room and I am, say, in my bedroom working on my laptop, just by ‘implementing’ the following recipe:

  • A ssh server (available through the maemo-extras repository, IIRC) running on the N800.
  • My sloppy script installed on the N800 as well.
  • A X terminal running on my laptop, to remotely control Vagalume.
  • A bottle of a good beer near the laptop, to minimize the need of leaving the chair without a good reason (not mandatory ;-)).

For instance, this is how I’d skip a song and then I’d set a hard rock radio:

$ vagalume-dbus skip
$ vagalume-dbus tag “hard rock”

So, here you are the script just in case you’re so lazy as me and you’d like to use it too: vagalume-dbus script.

Please notice that this is not an official script of Vagalume, at least not yet :-). I’ll talk to Berto to see if it would be or not a good idea to bundle it with the next release of Vagalume. Perhaps it could be useful after all :-).

What do you think?

“Going to California”

Published / by mario

Yep… I know that this is a Led Zeppelin song, from Led Zeppelin IV album to be exact. And why not? BTW A great song, a great 70’s rock band (one of my favourite ones) an a great album… so what are you waiting for? Go listening Led Zeppelin for hours right after reading this post! :-)

However, I’m afraid this post is not about the same topics of that Led Zeppelin song, but also about ‘going to California’ though…

As you could read during the last weeks in our planet igalia, the last version of Vagalume (0.5.1) was out on February 15th, including some new features and UI improvements that tried to make it a better and more good-looking application. At first, it seemed that the new icons bundled with Vagalume 0.5 didn’t rock too much :-), but then Berto ran a survey to be sure about what the people thought about them, and then changed that for the release 0.5.1 based on the overwhelming results.

And then, just three days after publishing the last 0.5.1 release, Berto found out that Vagalume was in the list of finalists for the ‘mobile rules’ competition!! Well, I think that he would agree with me if I say that we were so surprised and, of course, so glad with the good new when we found it out.

So, right after knowing that the ‘mobile rules’ organization team would invite two people to attend to the awards ceremony, which will take place in San Jose (California) on March 19th, we were thinking here at Igalia who could be the companion for Berto‘s trip… and we finally decided that I would go with him.

And what can I say… I’m really happy to know I’m going there with him, not just for the trip, of course, but for all what it means for Vagalume, for Igalia, for us… although I can’t lie either: the trip looks very interesting too :-).

I hope we have the chance to visit some interesting places round there, take some photos and… why not? to have a lot of fun there besides to attending to the awards ceremony, which I’m sure is going to be very interesting, regardless of Vagalume finally wins a prize or not. After all, being a finalist is already a very nice kind of gratitude, isn’t it?

So, see you then in California!

The new status bar plugin for Vagalume

Published / by mario / 1 Comment on The new status bar plugin for Vagalume

Hi all,

It has been a long time since my last post (April 15th, 2007), so I think that it’s time to write something again… and I can’t think of a better chance to do it that talking about this… :-)

As many of you could know, last November 1st my mate Berto released the first version of his Gnome/Maemo Last.fm (codenamed “Vagalume 0.1”), which started being just a “three-button application” and evolved to be a nice application to listen your favorite custom radio stations, providing lots of the typical features that a Last.fm user would expect.

So, besides to all the new features Berto has been adding everyday, and besides to the nice new UI enhancements Felipe has been working on (which will be out with release 0.5)… I also wished to contribute to Vagalume with a new component: a status bar plugin for the Maemo platform.

And taking into account Berto has just committed my patch yesterday (revision 86 of SVN trunk [*]), I thought of it could be a good moment to talk about the new plugin itself, so here it goes…

The new status bar plugin would allow Vagalume users to control some features of the application from the status bar:

  • Check out basic info about the song being played: title / artist / album.
  • Play / Stop / Skip songs.
  • Love and Ban songs
  • Bring Vagalume main window to the front.
  • Close Vagalume.

And that’s all. As you can see there are only a couple of commands available to be executed from the plugin, but we thought it would be the right way not to overcharge it too much with “advanced” features, and just to focus it to provide only basic actions. After all, it was designed to be an small plugin, wasn’t it?

At last, just to point out communication is currently carried out by specific Dbus messages between Vagalume and the plugin, although, in the future, this could change into one of the following ways:

  • Change the Dbus methods (with specific destination set: Vagalume main app or the plugin) into broadcast signals, so any application in the platform could interact with Vagalume in the same way the plugin does.
  • …or maybe supporting MPRIS standard interface could be a better way to allow integration between Vagalume any other application (Thanks for your suggestion, Juan).

Of course there are more improvements planned for the near future of the plugin, such as:

  • Adding support for OS2006 and OS2007 in maemo platforms (now, the plugin only works with OS2008).
  • Adding a new dock plugin supporting freedesktop.org specs, to allow desktop users to have a similar plugin.
  • Adding a new action to allow hiding the Vagalume main app so it’s not shown in the “tasks list panel” (desktop), or in the “task navigator” (Maemo).
  • … any suggestions? ;-)

So, I think that’s all so far. Now I just hope Vagalume users enjoy this plugin as much as I enjoyed developing it (and using it, of course). IMHO, I think it’s a nice way to “control” basic actions of Vagalume from the status bar, without having to open the main window when you’re running another application (the web browser or talking with the IM application, for instance), and just by using the drop down panel by clicking in the icon.

But of course, this is my (personal) opinion, so please post any comment you want about this. They will be highly appreciated!

So, let’s wait for the 0.5 release to see what people think about the new version of Vagalume, I have the feeling it’s going to rock! ;-)

In the meanwhile, here you are a example of the status bar plugin being usen while surfing the web:

Vagalume status bar plugin screenshot

Stay tuned, it’s coming soon!

[*] :: To checkout the code from SVN trunk:

svn co https://garage.maemo.org/svn/vagalume/trunk

Live report from DudesConf (3 a.m. in the morning)

Published / by mario / 4 Comments on Live report from DudesConf (3 a.m. in the morning)

Today was a nice day here in the DudesConf 07, full of interesting talks about debian and meeting new (and not so new) people from differents parts of the world who came just because one main reason: talk about the debian distro, its current state and about several related things, in general terms. (more info at http://www.dudesconf.org).

At first I thought I couldn’t attend this interesting event, but at last I could and I’m happy to do so, because it was an interesting day in which, even though I wasn’t able to pay as much attention as I wished, I learned several new things and met new people that could be difficult in other way apart from this one. And we even had a GPG signing party in which we shared our fingerprints and get our gpg keys signed by each other.

But, apart from the main reason of this conference, we had some interesting experiences after dinner, leaded by a “queimada”, and a session of playing “Frets On Fire” videogame which was a really fun and funny situation: everyone staring at someone who played an “electric guitar” with a keyboard while something like a guitar-karaoke was reproduced in the projector used for the talks.

Here you are some photos of this last “experience”:

Conxuro da Queimada Berto with a debian t-shirt

Chema performing an impressive guitar playing with a keyboard Frets On Fire played on the DudesConf projector

Update [21:32]: I’ve added another photo of some igalians (Chema, Calvaris, Berto, Javi and me) with Steve Langasek, one of the Debian etch release managers:

Some igalians with Steve Langasek

See you next time guys!

Ubuntu 7.04 (Feisty Fawn) working perfectly

Published / by mario / 1 Comment on Ubuntu 7.04 (Feisty Fawn) working perfectly

Last sunday, going back home after three days of several interesting speechs at the Guademy, I’ve decided to upgrade my ubuntu distribution in my laptop from the 6.10 version (name-coded “Edgy Eft”) to the new beta released version 7.04 (name-coded “Feisty Fawn”) and I have to say that everything is working pretty well: I had no problems upgrading (not even one), my Ati graphics card works with 3D acceleration, and I can enjoy the new Gnome 2.18 desktop… and the new baobab ringschart developed by Igalia, which is included by default in Gnome in the “Disk usage analyzer” application (formerly known as “baobab”).

The only “problem” I’ve found out up to date is that some applications are not translated yet, but that’s a minor problem that will be probably fixed in not much time… so don’t worry and make a dist-upgrade to your cutting-edge distribution or wait a month for the release of the stable version if you don’t want to live “in the limit” ;-)

By the way, for all those fans (like me and berto) of the Last.fm client and the packages for debian and ubuntu which are
in the berto’s personal web, I have to say that the .deb for Ubuntu edgy is perfectly working on Feisty, so don’t worry… you’re still able to listen berto’s radio after upgrading your system!

eFortunes 0.1: a distributed, scalable and fault-tolerant fortunes server developed in Erlang

Published / by mario / 4 Comments on eFortunes 0.1: a distributed, scalable and fault-tolerant fortunes server developed in Erlang

Well, after naming this post in this way I think it could be a good idea to explain what this is about… :)

As the result of working in my Master Thesis, I developed an small “ad-hoc” framework for programming simple and so-so-small web applications using Erlang, since a requirement for doing my Thesis was using distributed functional technology… and web applications are not usually developed with this kind of tools. Well, I know that with ErlyWeb this assertion could be wrong in a matter of months ;), but when I started my work (a year ago) the situation was so much different from now.

In the other hand, my fellow worker Javier Muñoz had recently developed a so much practical script (“Erlang On Rails”, as he called it) for easily start with the development of Erlang applications, without getting lost (and bored) with several commonly needed issues, such as the application definition file, the compilation process or the launcher script. On this post you can read more about “Erlang On Rails”, as it was told by Javi some days ago.

With this background on mind, I felt myself encouraged to develop an small web application that let me to carry on learning about the Erlang world, now that my Thesis is (at last) over… and I thinked about doing an “absurd” (well, this is subjective :)) fortunes server could be a good choice, since I could learn with it more about so many issues about Erlang I haven’t learnt yet, or get a deeper knowledge about issues I’ve already know. For instance:

  • Distributed persistence of data (fortunes) using Mnesia, a Erlang-based objectual DBMS.
  • Persistence into a relational DBMS (such as PostgreSQL) using the ODBC API provided by the Erlang/OTP platform. (Nowadays, it seems Mnesia is not suitable for storing large amounts of data)
  • Developing reliable and fault-tolerance applications on Erlang according the design principles of the supervision tree, as suggested on the Erlang/OTP documentation at erlang.org. (Well, sometimes fortunes are a really-critical information… don’t you think?)
  • Designing of web applications with Erlang using Yaws, a light web server developed on Erlang which is quickly growing on these days, adding more and more capabilities with each version that is out (such as AJAX or haXe support).
  • Testing several frameworks I’ve recently discovered on the web, and that I wasn’t able on my Thesis because of a matter of time: Yatsy, ErlyDB, ErlTL, ErlyWeb
  • And so on…

In fact, all these points could be abbreviated as “learning more about Erlang and having an workbench for testing all those issues I’d like”. And if, while learning in this way, I get a distributed, scalable and fault-tolerant fortunes server for being able to safely store jokes and spontaneus comments… “better than better” XD

At last, I’d like to thank my Master Thesis’s director (Víctor M. Gulías) for letting me to license my work under the terms of the GNU General Public License, in order to let everyone to get the source of eFortunes and use it as needed.

Now I’ll end this post by telling the current features of eFortunes 0.1, the TODO list (this one could change, of course) for eFortunes 0.2 and some screenshots of it. And, of course… you can download the source code if you want from here:

efortunes-0.1.tar.gz

eFortunes 0.1 features:

  • List, create, edit or remove fortunes from server
  • Underlying distributed persistence layer based on the Mnesia DBMS
  • Easy access to the services offered by efortunes by using a simple web interface (powered by yaws)
  • Internationalization (i18n) support for the implementation of the web interface

eFortunes 0.2 TODO list:

  • Bug fixing ;)
  • Add the capability of importing/exporting from/to regular fortunes files
  • Add search interface for making possible to look for fortunes according some specific criteria
  • Improve the web interface ( well… this is a must ;) )
  • Add an user profiles management tool (currently, only an user admin/admin exists)
  • Create an standalone, deployable daemon of efortunes (maybe, yaws should be embedded into an erlang application)
  • Documentation and code-cleaning

eFortunes screenshots (sorry, only spanish text on them):

List all the fortunes

Edit a fortune Deployment of eFortunes

About the origin of foo, bar, baz and so on…

Published / by mario / 1 Comment on About the origin of foo, bar, baz and so on…

I recently felt a strange curiosity about the actual origin of those typical words that are “foo”, “bar” and “baz”, commonly used in computer-related issues such as programming examples. I already knew that they were a wide used way of naming example functions, params… but I really wanted to deeply know about the origin of them, so I googled for a while and I finally reached the wikipedia topic explaining this concept.

Once there, it was a surprise for me knowing about some theories about this, as that one which speculates about foobar to be a phonological interpretation of the first letters of the Runic alphabet. However, the fact which was more surprisingly for me was the existence of an actual RFC talking about this issue: RFC 3092.

I must confess I wasn’t able to stand without taking a brief look into it and I think it’s really funny to read some of the explanations around the foo term, and that’s why I wrote this post: for all the people who, like me, don’t know the meaning of these strange words yet and want to know.

See you

Stressing servers with Tsung

Published / by mario

Tsung is a testing tool used to stress servers and see how they perform under high load conditions. It’s designed to work both with the HTTP/HTTPS and the Jabber protocols, and it seems that stressing PostgreSQL servers will be another feature in a near future (still experimental). Tsung is able, for instance, to simulate hundreds of users from a single CPU working as clients of a client-server aplication, in order to stress the server with high load and see how it works under such those contidions.

A very interesting issue about Tsung is that it was written using the Erlang language, which was designed for being used on some kind of environments where real-time issues, concurrency, fault tolerance and distributed computing are required features. On this way, Tsung uses the Erlang lightweight processes to simulate each hipothetical user, and that’s why Tsung is able to “create” a so impressive amount of simultaneous users from a single CPU.

Another interesting feature is that, since Erlang was designed for distributed environments, Tsung is designed to take advantage of this when designing the “stressing architecture” for your server: you can have only a client stressing a server, of course, but you also have the chance of having a cluster of Erlang nodes working together for being able to stress even more the “defenceless” server. And that’s the reason I wrote this post: today I was benchmarking an application I started some time ago, and I was really impressed by the way Tsung manages this task… and the ease of getting it working just from downloading the sources from its web site.

Unfortunately, documentation about Tsung it’s not too much (but enough), so might be you spend some time trying to understand how you can configure it, and how to use it… but, when you already know that issues, it’s so easy to use it and so impressive to see the results… especially if you are stressing an application running over the yaws web server, which is also developed using Erlang and is able to work with lots of simultaneous requests, as you can see here.

In conclusion, if you are currently looking for a tool to test your server, I’d suggest you to take a look into the Tsung web site and give it a try… especially if you have several computers connected through a LAN, and you can use them as a “stressing cluster”. I think you’ll like it.

Enjoy it!