This is a common mistake I see every time an English speaker tries to speak Spanish, or a Spanish speaker tries to speak English.

  • Mister = Señor
  • Sir = Caballero

When in English you would say “Sir, your umbrella”, do not say “Señor, su paraguas” but “Caballero, su paraguas”. Also, never say “Gracias, señor” for “Thank you, Sir” but just a plain “Gracias”.

I received an invitation to Shapeways, a 3D printing service. How it works is easy: you upload a 3D model (X3D, COLLADA or STL) and they use a fancy 3D printer to produce a stereolithography in the material you choose (there are 4 options as of now), which is sent to you in 10 working days.

Obvious uses of this service: produce the coolest and greatest anime or RPG miniatures

Not-so-obvious uses of this service: build impossible to find pieces for home appliances, vintage computers or anything else you can think of.

It’s been painful, but I’ve finally upgraded to WordPress 2.6 from 1.2.2. I’ve needed to go all through 1.2.2 to 1.5, 1.5 to 2.0, 2.0 to 2.1, 2.1 to 2.2, 2.2 to 2.3, 2.3 to 2.5 and 2.5 to 2.6. And I took a DB backup each time in case it failed!

The jump from 2.1 to 2.2 was painful due to the UTF8 issue. I tried to fix that using this helper script but it didn’t work and in the end, I found an easier fix: instead of converting my database to UTF8 and have have this wp_config.php

define(‘DB_CHARSET’, ‘utf8’);
define(‘DB_COLLATE’, ”);

I did the exact opposite: I kept my database as latin1_swedish_ci and changed wp_config.php to read

define(‘DB_CHARSET’, ”);
define(‘DB_COLLATE’, ‘latin1_swedish_ci’);

The upgrade from 2.3 to 2.5 was also painful: the public blog worked fine but I was not able to log in to the site admin interface, there was an infinite redirection loop to /wordpress/wp-admin. I was left with only two options: move restore the WordPress 2.3 DB backup and reinstall WordPress 2.3, in the hope of finding what was wrong, or move forward to WordPress 2.6 and cross my fingers hoping that it’d work. I did the latter and I’m fortunate it has worked, yay!

ffmpeg has been able to record a screencast on X11 for a long time now, using the x11grab input format and the :0.0 device (for the first instance of X). You’d run
ffmpeg -f x11grab -y -r 12 -s 800x600 -i :0.0+480,200 -vcodec ffv1 -sameq ./out.avi
and get a lossless video of the upper right 800×600 area of a 1280×800 desktop. Easy. You could even transcode to a lossy format (such as H.264, Xvid or Theora) if you had a powerful machine.

On Windows it was not that easy. First of all, Windows is not X11, so x11grab does not work on Windows. You need to use GDI or DirectX but ffmpeg did not have support for GDI or DirectX capture. If you wanted screen-grabbing features in you application, either you developed your own solution (ugly, specially because of the video encoding part) or you used Camtasia Studio (Wink does not include a DLL or ActiveX component you can use in your app).

Ramiro Polla and Christophe Gisquet had a heated discussion about one and a half years ago and some very interesting code was shown. Unfortunately, neither Ramiro’s nor Christophe’s code would work with current ffmpeg.

Today I’ve finally brought Ramiro’s code up to date and it works with ffmpeg trunk. It is not perfect, though: it does not capture the mouse pointer, contextual menus shown as a result of a right-click and video scaling and color is not perfect (ffplay shows the video a little blue-ish). Patch. I’ll try and bring Christophe’s code up to date tomorrow, or fix Ramiro’s code.

PS: A request for ffmpeg developers: please, replace your custom configure script with some cross-platform build system. I like CMake but Scons, Waf and others would also do.

On Wednesday July 23rd I’ll try and upgrade my blog from the ancient WordPress I’m using (1.2.2) to the latest and newest one (2.6). I expect the transition NOT to go smoothly due to the many antispam customizations I made to WordPress 1.2.2, so downtime might be long.

Yesterday was a very kitchen-intensive day: about 10 hours baking pastries: muffins (magdalenes in Catalan), tarts (coca de la calda), eggrolls (rotllos d’ou; not Chinese/Korean eggrolls!) and almojàvenes (although here we do not add cheese to the recipe). It was a hard work but I’ve got breakfast and tea snacks for one month 🙂

Today my wishlist hit 1,000 books. It’d cost about US $30,000 (roughtly 22,000 EUR) to buy every book in the list. Most likely, I won’t be able to buy all those books unless I win the lottery and a) I have enough money to spend on books, and b) I buy a facility to store them all.

The worst of all (actually “the best” to me) is that there is no single book in that list I don’t want to read even though I already have a stockpile of books I own but have not had time to read on the shelves sitting next to me.

If I’d had to classify them, about 40% of the books are computer-related: systems administration, software development, vintage computers, etc. Another 30% are popular science books, people who know me know I really love popular science and most of the books I read are science books. Management books are my next target, to most people they are boring but that 20% of my wishlist makes an interesting read and what you learn from them, you can apply not only to company management but to everything in your life. A remaining 10% of the books are about miscellaneous topics: music, biographies, emergency medicine, etc

Of course you can buy me some books: you only have to pay for them and Amazon will kindly deliver them to my home :-).

For almost 4 years I worked for a small company, Venue Network, as a Systems Administrator. At the beginning my job meant dealing with Windows 2000 Server and Windows 2003 Server systems. As time went by I was able to introduce Linux and FreeBSD servers in some clients, saving them money and us hassle. The last 18 months there I barely touched Windows systems: the increasing demand for Linux and the storage-hungry users led me to focus on SANs and NASes and Linux. I still did some very specific (read: complex) work on webservers, but that was the exception as I was already overloaded with work.

One day at the end of October 2006 I received an e-mail from another company saying they read about me in the aKademy 2006 site (I gave a conference last year) and would like to know more about me. I sent them my phone number and the next day we talked on the phone for about 20 minutes: they wanted me to work as a C++/Linux/Qt developer. I told Jesús (the CTO and one of the founders of the company) I had never had a developer job. The most ressembling job I had held was a summer internship in 2002 as a multimedia script writer but I didn’t think that qualified. I was not the person they were looking for. He insisted and we arranged a meeting for next week at their offices. Truth is I thought Jesús was crazy and I would be wasting his time and mine, but I agreed. How could I possibly have a job as a C++ developer? It had been years since I programmed in C/C++ and I only developed in Ruby and as a hobby (Ruby, QtRuby, Rails, etc). My visit to Arisnova went very well: Jesús was full of confidence I would be able to do the job and he was so convicing even I started to believe it (actually he was so confident I tried to hand him my resume and he declined the offer :-O)

Would it work? Venue Network was a tiny company where I held a very comfortable position and I already had earned my medals, I did not need to demonstrate anything anymore. At Arisnova I was going to start from scratch!

Fast forward to May 2007.

Turns out I accepted the offer and I have been working for Arisnova for 4 months now. My main job is porting our Integrated Platform Management System from Windows to Linux (auxiliary libraries, middleware, applications, everything). This software manages ships (frigates, corvettes, etc) and has been in use on Windows for several years now, ships have been sold for several countries and they all are very impressed with the software.

We use a lot of open source for the IPMS: Qt, Boost, ACE, ZeroC ICE, OpenSceneGraph, Lua and the list goes on. As the building blocks were already cross-platform, the port is being easier than everybody expected (including me).

The main innovation coming with the Linux version is the movement to KDE: the Windows version depends on several ActiveX components for video, documentation, videoconferencing and some other features. Obviously ActiveX do not work on Linux, so the first thing you think is we would need two different branches of code or a hell of a lot of #ifdef‘s. Not! (sorry, I couldn’t resist). Thankfully, being a KDE bigot is going to benefit our IPMS: KDE4 is multiplatform (Linux/Unix, Mac and Windows), therefore we will be making extensive use of KParts and almost every new technology KDE4 features: Phonon, Decibel, Strigi, etc (by the way, GNOME is not even close to this). We will also be using CMake.

As the port has progressed at a faster pace than we expected and we’d like the KDE4 to be quite stable when we invest our time, I have some time to fiddle with other things. Something I am looking at for the third version of our IPMS, which is currently in its inception, is Flash. Is it possible to integrate Flash in a desktop application (our GUI) and make it feel natural for the user? Will we need to embed a WebKit/Konqueror/whatever component as a "proxy" between the application and Flash? I don’t know yet, but I am currently investigating every lead: dlopen, libflashsupport, XEmbed (which has pretty easy to use since Qt 4.1).

Summarizing, I am very happy I moved to Arisnova: the job is interesting, I am learning a lot, people are nice, I am performing way better than I (and everybody) expected and I see exciting challenges coming. Thank you guys!