May 28th 2008

So long Debian servers, welcome Ubuntu

I’ve been assessing the possibility of switching GNU/Linux Matters‘ servers (which are all powered by Debian) to Ubuntu, and I have finally decided to go for it.

They were running Debian for three reasons:

  1. Stability, something Debian is well-known for.
  2. A large user base, which brings two big advantages: A huge amount of packaged applications and a good community support.
  3. I’m only familiar with Debian-based distros :)

And they weren’t running Ubuntu because, to be honest, I didn’t find Ubuntu reliable enough to power a server, mainly because of the cutting-edge applications it includes by default; it was just great for my personal computer. I guess this is mostly due to I’ve been using Kubuntu since Breeze, and it was a highly unreliable system in the early versions - IMHO things begun to take shape in Feisty and now Hardy just rocks.

I’ve started to switch our servers to Ubuntu because I think it’s the best choice, at least for us, because we still have the three advantages of using Debian (it’s based on it after all), plus:

  1. Packaged applications are up-to-date, so I don’t have to compile and maintain software which have a old version in Debian repositories (we often need the latest stable version). Yes, I can use Debian Testing, but this is not the only drawback.
  2. Uncomplicated Firewall. An extremely easy-to-setup, basic firewall. It’s just a front-end to iptables-restore, so you can still add/adjust any rule according to your needs.
  3. Many other tiny (and not so tiny) benefits that together make a big difference.

The migration should take some months because it’s not a top-priority at present. There are many more things that should be done first.

Put simply, it’s not that Ubuntu is much better than Debian on the server, it just happens to make your job easier if you’re the administrator.

6 Comments »

May 21st 2008

Installing Pootle on Debian Etch, The Easiest Way

Pootle is a user-friendly web application for online translation of contents. It’s used by organizations like Creative Commons, OpenOffice.org and GNU/Linux Matters.

I’m going to show you how to install it the easiest way, from my experience with the GLM Translation Service under Debian 4.0 (this guide might also work under Ubuntu, though). I’ll use the sudo utility, so I assume that you’ve already installed and configured sudo accordingly for your user.

Installing dependencies

Some of the Pootle’s dependencies are available in Debian repositories, so we may install them by running:
sudo aptitude install python-dev python-pysqlite2 python-celementtree subversion bzip2 g++ curl

We’re now going to install the other software packages required by Pootle. First, select the directory where you want to download and compile your software, for example:
cd /usr/src

To get the source code of the packages and extract them, run the following commands:
curl http://www.kid-templating.org/dist/0.9.6/kid-0.9.6.tar.gz | tar xzv
curl http://dfn.dl.sourceforge.net/sourceforge/translate/translate-toolkit-1.1.1.tar.bz2 | tar xjv
curl http://garr.dl.sourceforge.net/sourceforge/translate/Pootle-1.1.0.tar.bz2 | tar xjv
curl http://jtoolkit.sourceforge.net/snapshots/jToolkit-0.7.8/jToolkit-0.7.8.tar.gz | tar xzv

Installing the applications:
sudo python translate-toolkit-1.1.1/setup.py install
sudo python kid-0.9.6/setup.py install
sudo Pootle-1.1.0/pootlesetup.py install
sudo jToolkit-0.7.8/jToolkitSetup.py install

Do not install PyLucene

Pootle is supposed to work better with PyLucene, but if you (like me) hate headaches, you won’t install PyLucene on Debian Etch. If you try to install it, you’d get this error:
install: cannot stat `/usr/lib/security/libgcj.security': No such file or directory
make: *** [install] Error 1

There’s nothing you could install that would create that file; don’t you even try to create it as an empty file: You’d be able to install PyLucene, but Pootle won’t work and you’d get this error when you’ll try to run it:
GC Warning: Repeated allocation of very large block (appr. size 65536):
May lead to memory leak and poor performance.

If it’s too late, and you’ve already installed PyLucene with libgcj.security as an empty file (as suggested in some mailing-lists), you may fix it by running the following commands:
sudo mv /usr/lib/python2.4/site-packages/_PyLucene.so /usr/lib/python2.4/site-packages/_PyLucene.so.old
sudo mv /usr/lib/python2.4/site-packages/PyLucene.py /usr/lib/python2.4/site-packages/PyLucene.py.old
sudo mv /usr/lib/python2.4/site-packages/PyLucene.pyc /usr/lib/python2.4/site-packages/PyLucene.pyc.old

Don’t you have a mail server?

If your mail server is not in the same host as Pootle, you’ll need to install one. Just run the command below to install Postfix and then select “Internet website” when asked about what you’ll use postfix for:
sudo apt-get install postfix

Configuring Pootle

To make it easy for you to configure and play with Pootle, I suggest you create softlinks to Pootle’s configuration files in a folder like /etc/pootle:
sudo mkdir /etc/pootle
sudo ln /usr/lib/python2.4/site-packages/Pootle/pootle.prefs -s /etc/pootle/pootle.conf
sudo ln /usr/lib/python2.4/site-packages/Pootle/users.prefs -s /etc/pootle/users.conf
sudo ln /usr/lib/python2.4/site-packages/Pootle/html -s /etc/pootle/html
sudo ln /usr/lib/python2.4/site-packages/Pootle/templates -s /etc/pootle/templates

This way, any file you might ever need to edit will be in /etc/pootle.

Now let’s edit the main configuration file in Pootle: sudo nano /etc/pootle/pootle.conf

It’s well-documented, so I won’t talk a lot about it. I just suggest you only set the following parameters accordingly:

  • description: Describe your website powered by Pootle, with a text aimed at (potential) translators.
  • fromaddress.
  • supportaddress: The email address for translators to make questions. This might be a mailing list.
  • defaultrights: I suggest you set it to defaultrights = "view, suggest, archive, pocompile, translate, commit"
  • podirectory: It’s the path to your translation files. For this HOWTO I’ll use /var/translations.

Your pootle user

I suggest you create a user for running pootle:
sudo adduser --disabled-password --disabled-login pootle

Setting up service scripts for Pootle

Create the file /etc/init.d/pootle as root with the following contents:
#!/bin/bash
# /etc/init.d/pootle: start and stop the Pootle Server
# Pootle runs as user -pootle- via sudo
# This script is based on the one published here http://translate.sourceforge.net/wiki/pootle/service_scripts
PREFIX=/usr/local/pootle
test -x /usr/bin/PootleServer || exit 0
. /lib/lsb/init-functions
case "$1" in
start)
log_begin_msg "Starting Pootle Server..."
/usr/bin/sudo -u pootle $PREFIX/start_pootle &
log_end_msg 0
;;
stop)
log_begin_msg "Stopping Pootle Server..."
$PREFIX/stop_pootle >/dev/null 2>&1
log_end_msg 0
;;
restart)
log_begin_msg "Stopping Pootle Server..."
$PREFIX/stop_pootle >/dev/null 2>&1
log_end_msg 0
log_begin_msg "Starting Pootle Server..."
sudo -u pootle $PREFIX/start_pootle &
log_end_msg 0
;;
status)
$PREFIX/status_pootle
;;
*)
log_success_msg "Usage: /etc/init.d/pootle {start|stop|restart|status}"
exit 1
esac
exit 0

Now let’s create, as root, the auxiliary scripts required by the script above:

/usr/local/pootle/start_pootle

#!/bin/bash
# $PREFIX/start_pootle
# Start script in port 8080, separates errors from normal logs
# based on a script published here: http://translate.sourceforge.net/wiki/pootle/service_scripts
export HOME="/home/pootle"
/usr/bin/PootleServer -p 8080 $@ >> /var/log/pootle/`date "+%F"` 2>> /var/log/pootle/`date "+%F"`.err

/usr/local/pootle/stop_pootle


#!/bin/bash
# Stop script $PREFIX/stop_pootle
# based on a script published here: http://translate.sourceforge.net/wiki/pootle/service_scripts
echo "Killing Pootle"
pidpootle=`ps -ef |grep PootleServer |grep python | awk '{print $2}'`
pidpootle2=`ps -ef |grep start_pootle |grep bin | awk '{print $2}'`
kill $pidpootle2 >/dev/null 2>&1
kill $pidpootle >/dev/null 2>&1

/usr/local/pootle/status_pootle

#!/bin/bash
# Pootle Status $PREFIX/status_pootle
# based on a script published here: http://translate.sourceforge.net/wiki/pootle/service_scripts
pidpootle=`ps -ef |grep PootleServer |grep python | awk '{print $2}'`
if [ "$pidpootle" != "" ]
then
echo “Pootle Server running in pid ($pidpootle)”
else
echo “Pootle Server is not running”
fi

Make them work!

Now we have to make these scripts useful:
sudo chmod +x /etc/init.d/pootle
sudo chmod +x /usr/local/pootle/s*
sudo update-rc.d pootle

Configuring Pootle to use your repository

Pootle supports several VCSs, but I’ll only teach you how to setup a Subversion working copy that Pootle may update and commit. If you don’t use a version control system, I recommend you do so. If you’re sure you don’t need it, you may skip this section. If you’re using another VCS, you’ll need to go to the Pootle’s website to learn how to configure it with Pootle.

Setup your working copy

Let’s create the working copy at, say, /var/translations. To do that in GNU/Linux Matters, we would run:
sudo svn co https://svn.gnulinuxmatters.org:81/i18n /var/translations
You should replace the URL by yours.
And don’t forget to set the pootle user as the owner:
sudo chown pootle -R /var/translations

Create basic cronjobs

We should run from time to time two scripts:

  • One to commit the changes made by translators; ideally, these changes would be committed by translators themselves, but from my experience you should not count on that (most of them forget about it or just don’t know they can do that).
  • Another to update your PO templates from the repository.

So we’re going to ask our pootle user to do this by creating cronjobs. First, become pootle:
sudo su - pootle
Then run crontab -e and add the following two lines:
*/15 * * * * /usr/bin/svn update /var/translations >> /dev/null 2>> /home/pootle/update.err
0 0,8,16 * * * /usr/bin/svn commit -m "Uncommitted translations in the last 8 hours" /var/translations >> /dev/null 2>> /home/pootle/commit.err

Pootle is running on port 8080

For security reasons, if you followed this HOWTO you’ll be running as the pootle user, not as root. And due to a UNIX misfeature, only root may open ports below 1024. So, unless you love appending the port number to your URLs, and if port 80 is available on your system, you’d proxy Pootle through a webserver.

The proxy trick is recommended, but if you cannot do that or just don’t want, you can use iptables to redirect traffic from port 8080 to 80. My suggestion would be to use the next iptables ruleset:
# Generated by iptables-save v1.3.6 on Thu Jan 24 16:40:59 2008
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 8080
COMMIT
# Completed on Thu Jan 24 16:40:59 2008
# Generated by iptables-save v1.3.6 on Thu Jan 24 16:40:59 2008
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [495:60715]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state –state INVALID -j DROP
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 8080 -j ACCEPT
-A INPUT -p icmp -m icmp –icmp-type 8 -j ACCEPT
-A INPUT -m limit –limit 5/min -j LOG –log-prefix “iptables denied: ” –log-level 7
-A INPUT -p tcp -j REJECT –reject-with tcp-reset
-A INPUT -p udp -j REJECT –reject-with icmp-port-unreachable
-A INPUT -j REJECT –reject-with icmp-proto-unreachable
-A FORWARD -j REJECT –reject-with icmp-port-unreachable
COMMIT
# Completed on Thu Jan 24 16:40:59 2008

For more information about this basic iptables-based firewall, you may read my Setting up your first server HOWTO.

Criticism? Suggestions? Complaints?

Leave a comment!

4 Comments »

May 19th 2008

The only screencasting software that doesn’t crash in Ubuntu Hardy

I’ve spent a lot of time trying to record some screencasts for GLM, but every screencasting software I tried crashed under Ubuntu Hardy (and Gutsy too):

  • XVidCap: The workaround is supposed to be disabling sound, but didn’t work.
  • RecordMyDesktop (plus its two front-ends): Crashes with no error message. From time to time I was able to record videos.
  • Istanbul: Crashes if you select a window to be recorded.

So, the only solution is to install a newer version of Istanbul for Debian:
http://ftp.fr.debian.org/debian/pool/main/i/istanbul/istanbul_0.2.2-4_i386.deb
or, if you have a 64-bit box, http://ftp.fr.debian.org/debian/pool/main/i/istanbul/istanbul_0.2.2-4_amd64.deb

After making the appropriate bug reports, I can finally start recording the screencasts with Istanbul!

PS: Forget about the above. That Debian package doesn’t work either. I’m installing KDE4 to check whether I can record the screencast with it; I think I saw such an option when I tried it out.

PPS: The KDE4 built-in screencasting component uses a weird format (cps?) which cannot be opened with VLC, Mplayer nor Kaffeine (but there’s a dirty workaround). Anyways, it records the whole screen and I just want to record a single window.

PPPS: I’m not alone.

No Comments yet »

May 14th 2008

How to install setlock on Debian?

That’s the only question Google and IRC don’t answer - but after this post Google will.

About two hours wasted to find out the fucking stupid solution:

aptitude install daemontools-installer
build-daemontools

And hit ENTER for every question.

No Comments yet »

April 7th 2008

Setting up your first server

If you’re new to server management and use the terminal on GNU/Linux from time to time, this guide will hopefully come in handy for you to get started with your own server.

Unless you have good reasons to use another GNU/Linux distribution, I recommend you to install Debian. It has a lot of ready-to-install applications, is very stable and it’s perhaps the distribution with more tutorials around.

Please notice that this is a very basic tutorial and has only been tested on Debian.

Connect to your server

First of all, log in as root:
ssh root@123.123.123.123 # where 123.123.123.123 is your server's IP address

Some hosting providers disable ssh root access, so you will need to replace root by your user name. If this is the case, after you log in you should become root:

su -

Update your system

aptitude update
aptitude upgrade
aptitude dist-upgrade

Add your user

If your hosting provider disables root access, then you should skip this step.

adduser emacs

Replace emacs by VI VI VI if you don’t believe in Saint IGNUcius.

Sudo setup

sudo is a very useful utility, and I recommend you to use it.

First, let’s install it:

aptitude install sudo

Then, we add your user to the list of sudoers, by running visudo and then adding the following line at the end of the file emacs ALL=(ALL) ALL.

Now you become yourself:

su emacs -

Shared key ssh authentication

At this point you should use shared key ssh authentication, but for that there’s a great tutorial at ammonlauritzen.com.

Configuring the SSH daemon

Open /etc/ssh/sshd_config with your favorite text editor, say:

sudo nano /etc/ssh/sshd_config

And make sure the following lines are set this way, if not, add or modify them accordingly:
PermitRootLogin no
PasswordAuthentication no
X11Forwarding no
UsePAM no
AllowUsers emacs # separate two or more usernames by spaces

Finally, apply your modifications:
sudo /etc/init.d/ssh reload

Don’t log out yet, we need to check that you will be able to access your server via ssh (this is, that you didn’t break anything on the /etc/ssh/sshd_config file). To check if everything is OK, try to log in:
ssh emacs@123.123.123.123

If you’re able to access, then it’s well configured and you may close the second session. If not, then you should check your modifications and try again.

Setting up a basic firewall

We are going to setup a very basic firewall with the powerful netfilter/iptables. For this step you need to be root:
sudo -s

First, store the current iptables rules, in case something goes wrong with ours:
iptables-save > /etc/iptables.conf.old

Now, create the file /etc/iptables.conf and add the following contents:
# boring stuff for someone new to server administration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [495:60715]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state –state INVALID -j DROP
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
# this is the port used by the SSH daemon
-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
-A INPUT -p icmp -m icmp –icmp-type 8 -j ACCEPT
-A INPUT -m limit –limit 5/min -j LOG –log-prefix “iptables denied: ” –log-level 7
-A INPUT -p tcp -j REJECT –reject-with tcp-reset
-A INPUT -p udp -j REJECT –reject-with icmp-port-unreachable
-A INPUT -j REJECT –reject-with icmp-proto-unreachable
-A FORWARD -j REJECT –reject-with icmp-port-unreachable
COMMIT

Please pay attention to this line:
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

You should use a line similar for every open port that you want to be accessible from the Internet. This is, if you have a webserver, you should copy that line but replace “22″ by “80″ (or any other port):
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

This is how you “enable” ports.

Then we load the configuration (and don’t log out until we test it!):
iptables-restore < /etc/iptables.conf

Testing the rules

To test the rules, open another terminal and try to access your server:

ssh emacs@123.123.123.123

If you could access, then the rules should be OK. If not, reload the original rules until you find help:
iptables-restore < /etc/iptables.conf.old

Loading the rules when the server stars

If the rules we defined work, then our the firewall should be loaded when the server starts:

Create the file /etc/network/if-pre-up.d/iptables with the following contents:
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.conf

Then make it executable:
chmod +x /etc/network/if-pre-up.d/iptables

We can now go back to our normal user:
exit

Your server is ready!

At this point, you are ready to start installing applications on your brand-new server!

What’s next?

4 Comments »

March 5th 2008

Dreamhost sucks bad

If you love frequent downtimes, you will love this crap.

I’m looking forward to having my plan expired to move to another host.

3 Comments »

March 5th 2008

I’ve seen the light: GNU/Linux Does Not Matter That Much

We freedomware advocates think that switching to a Freedom-respectful operating system (usually GNU/Linux) is the most important step when switching to freedomware, and therefore we focus on promoting these systems (myself included). However, I’ve found out that it does not matter that much.

The first and most important step when switching to Freedomware is using formats and protocols defined as Open Standards, even under a Freedom-trampling system like Windows: Vendor lock-in is only possible by means of closed standards. They are the stone corner of the non-free software industry.

Why those who know about Freedomware, and support the idea, don’t make the switch? Aside their inability to follow their thoughts (the games excuse is included here), because switching from Windows+Office+MSNMessenger/Etc to GNU/Linux+OpenOffice.org+Pidgin+Etc seems like a huge step, only made by adventurous souls.

The most important things for them, their information and communications, are already locked-in, tied to a single vendor. Encouraging them to switch to a freedom-respectful operating system is an unwise recommendation, if you know they still rely on closed standards:

  1. If you say that they won’t be able to use the programs they were used to, but their free alternatives, you will fright them. Not to mention what they’ll think when they know that their MP3s, WMVs and .doc documents won’t play nice, and that their MSN Messenger sucks under GNU/Linux.
  2. If you help them to keep their files under closed formats and communicate through closed protocols, then, why on the earth do you want them to use a free operating system? Using a free operating system simply means that most of your software is free. It seldom means that the user is reluctant to use Freedom-trampling software, closed formats and/or closed protocols, again. Quick demonstration: Take a look at any community of the easy-to-use distros and you will find that these standards are widely used among the majority of these users (although this doesn’t mean that Gentoo users, for example, are all disciples of the Church of Emacs).

The only way to make safely the switch to a Freedom-respectful computing environment, with no turning back, is by getting rid of closed formats and protocols, before switching to a free operating system. Windows-GNU/Linux dual boots wouldn’t be necessary anymore.

These closed standards have always been a top-priority for non-free software vendors, unlike for us. Closed standards represent the Achilles’ heel of the non-free software industry. We must hit them there! Pay attention to this excerpt from a memo sent by Aaron Contorer, Microsoft general manager for C++ development, to Bill Gates:

“The Windows API is so broad, so deep, and so functional that most ISVs would be crazy not to use it. And it is so deeply embedded in the source code of many Windows apps that there is a huge switching cost to using a different operating system instead…
“It is this switching cost that has given the customers the patience to stick with Windows through all our mistakes, our buggy drivers, our high TCO, our lack of a sexy vision at times, and many other difficulties [...] Customers constantly evaluate other desktop platforms, [but] it would be so much work to move over that they hope we just improve Windows rather than force them to move.
“In short, without this exclusive franchise called the Windows API, we would have been dead a long time ago.”

OK, that’s the root problem, but what’s the solution!?

We must put more effort into making people switch to open formats and open protocols, than the effort we put into encouraging them to switch to a freedom-respectful operating system like GNU/Linux. This is, our goal should be that people will get rid of closed formats and protocols before switching to a free operating system. Don’t expect them to make the switch after installing the free system! Or at least don’t get your hopes up if you ignore this (take the longer yet save path!).

The above might seem obvious to you at this point, and you might wonder, how are we supposed to do so effectively?

My proposal

We have to carry out three tasks to reach our goal:

  1. First and foremost, make people worry about the formats and protocols they rely on;
  2. Make it really easy for people to switch to unconstrained formats and protocols, under the current operating system, but also warn them that everything won’t be completely solved until they throw the non-free system away;
  3. And finally, make people switch to a freedom-respectful operating system, like GNU/Linux.

(Notice that nowadays most of us start with task #3, then some of us go further and make #1, but nearly we all forget about task #2)

These tasks should be performed separately and harmoniously, with one project for each of them. The good news is that we won’t have to start from scratch, as there are some existing efforts: GNU/Linux Matters is going to develop Unconstrained.info, a project that would meet the requirements of task #1, and it also maintains GetGNULinux.org, the project that already meets the requirements of task #3.

The second task is by far the hardest one. The solution, in my opinion, is a software suite made up of the following well-integrated modules:

  1. A package manager, like those for GNU/Linux: It will make it easy for people to get started with Freedomware applications that support unconstrained formats and protocols. These programs must be stored on special repositories, so that we could disable support for constrained standards by default. This manager would only install Freedomware required to make the switch, excluding useful free add-ons for the operating system: Our goal is not to make people feel comfortable with their freedom-trampling operating system. Only the best Freedomware packages will be available, with no alternatives: It would make no sense to include both OpenOffice.org and Koffice (for example), we don’t want people to experiment with the free alternatives, just that they make the switch.
  2. A file format converter: An extremely easy to use Freedomware application to convert any file stored with a closed format into one stored with the best-suitable open format, preferably/optionally deleting the former file after the conversion. When the suite is being installed, it must configure the system to open those constrained-formats-based files with this converter.
  3. A Instant Messaging Migrator: The hardest to make module. It will help people migrate to open protocols such as Jabber or SIP. It would create a gratis Jabber account with any provider. Then, if allowed, it would let people’s contacts know that they are making the switch to an unconstrained and better messaging network (encouraging them to make the switch too). Finally, it would configure the pre-selected free IM client accordingly, making it ready to use.
  4. A tutor: A program, similar to a Help Center, that would advice people on unconstrained formats and protocols. It would provide guidance throughout the migration process. It would make sure that people keep in mind that they should switch to a free operating system once they get used to the new standards.

This suite must meet these requirements:

  • Be multi-platform: It must run on all the mainstream operating systems, including GNU/Linux (yes, haven’t you noticed the amount of GNU/Linux users tied to constrained formats and protocols?).
  • Be multilingual.
  • Be extremely easy to use.

Once Unconstrained.info and the liberation suite are ready, together with GetGNULinux.org, the final touch for us to be effective will be Animador.

In an ideal world…

… Organizations such as Mozilla, the FSF and the FFII will support GNU/Linux Matters with tasks #1 and #3, and the GNU project will take over task #2, with the support of all of us.

If everything fails, I’ll try my best to take over task #2 on behalf of GNU/Linux Matters.

On my part…

… I’ll try to make GNU/Linux Matters change its vision, according to this blog post.

On your part…

… This all sounds so beautiful, right? Well, we need you! And please don’t forget to comment on this blog post and spread the word about it if you find it useful.

PS: Got something to say? Talk about it on NXFD!

6 Comments »

February 15th 2008

My First Paid Computing Job

I got a temporary job last summer, my first paid job; I was an operator at a call center. Many people got surprised about it, at least those who know that I’ve been dealing with computers since I was 15 and contributing to Freedomware projects since I was 17 or so.

They expected me to get a computing job, but I didn’t. I actually never sought for such a job. Just take a look around: Nearly all computing jobs require people to deal with Freedom-trampling software. Sure, I had to use Windows at the call center anyways, but my duties were beyond working on the computer, unlike a computing job — where I would’ve been required to administrate the kind of software I fight against everyday. I’ve always been proud of that desicion, and I’d do it again if required.

Some weeks ago I received an offer for a computing job, but not “yet another computing job”, this is an honest one: A computing company fully committed to Freedom in computing, with a boss who is a well-known Free Software supporter, Alberto Barrionuevo (president of the FFII, among other things).

I’ve been working for Alberto’s Freedomware consulting firm, Opentia, in a very interesting project. The job is rather cool: I work from home, it’s well-paid and I’m promoting free computing environments at the same time!

The only drawback(?) is that it’s a project-basis job, I mean, it’s not a permanent one. It all depends on the requested projects.

No Comments yet »

February 3rd 2008

Why I Love KDE

A picture is worth a thousand words:

Kontact remembering me what I have to do

Have your software the way you want it and well-integrated with other programs.

No Comments yet »

January 19th 2008

Unbelievable: Qt under the GPLv3!

While the Gnome Foundation is eager to support the OOXML crap, Qt, the library KDE is built upon, is going to be licensed under the GPL v3!

I just hope Trolltech to drop the senseless restrictions over the other editions of Qt.

No Comments yet »

« Prev - Next »