• Got a new DVD recorder

    I've got a BenQ DW1620 (dunno if it's the Pro model or not), that is, a double-layer, dual DVD recorder as a Christmas present. This is the first first-hand recorder I get; I didn't trust the older ones very much, so I'm quite happy ;-) [Continue reading]

  • Giving blood

    This week, a medical team from Hospital Clínic has come to our faculty to collect blood from the students (or any other person around) who want to donate. I had never done it before, but due to a suggestion from a friend, I though "Hmm, why not? Let's try it.". [Continue reading]

  • Setting up a bridge

    A bridge is a machine that connects two different physical networks (like a switch). I've just set up my box to act as a bridge between my Mac (connected to the ne0 interface) and my home network (connected to the vr0 interface). [Continue reading]

  • OpenPAM hits NetBSD

    After a very long time of discussions and waiting, OpenPAM is being merged into NetBSD, as you can see in the src/dist/openpam directory. [Continue reading]

  • Windows and CHS

    OMG, what a stressful night. Yesterday evening, I went to a teaching academy to install Linux (Ubuntu was the distribution of choice) on all their 12 boxes. I started by resizing the FAT32 partitions, continuing with the Linux installation. (Stupid me because I did no test in the middle.) After two hours and a half, I had all the machines up and running, and I was surprised to not have had any problem. [Continue reading]

  • Latest releases and news

    These days, I'm very busy working with a friend in a game which we have to have "finished" by next Friday (it's university work). Basically, it is a three-dimensional Pacman with multi-player support, licensed under the GPL and written in C++. It will be released on Sourceforge.net in a while, so keep tuned ;) Anyway, the purpose of this message is to publish some recent news, as I had no time during the week to do so: [Continue reading]

  • Variable names in Makefiles

    I've found many hand-made Makefiles that are very hard to read and modify; the reason: they use strange variable names to handle the compilation and linking of programs. [Continue reading]

  • Cederrón

    Did you know that cederrón is a correct word in Spanish, i.e., accepted by the RAE? Oh God, I couldn't believe it the first time I noticed this. [Continue reading]

  • Buildtool status

    Hmm, Buildtool... one of my pet projects, probably the one on which I've spent the most time working... and it was even starting to get some (few) popularity lately [Continue reading]

  • Impressions on Monotone

    I'm amazed after having played with Monotone during the whole evening. Simply put, it is a distributed version control system, similar to CVS in the sense that it keeps track of changes across files and lets multiple people work at the same time with them. But, unlike CVS, it has many other cool features. The front page of its website contains a nice paragraph summarizing all available features, so I'm not repeating them here. But let me discuss here what has taken my attention. [Continue reading]

  • QT Parted experiences

    A few days ago I gave QT Parted a try (from a Knoppix 3.6 disk): I shrinked my NTFS partition to leave more room for other OSes (not that space is a problem here, but I wanted to try it). The program is awesome: very easy to use (looks a lot like Partition Magic) and it did the job quickly and correctly. [Continue reading]

  • Differences between a hub and a switch

    A friend of mine asked me yesterday which are the differences between a hub and a switch. After giving her a quick explanation, I realized that I'd write something better and leave it here for anyone else interested. However, a detailed explanation could need a lot of background theory, so these are just the basic ideas that differentiate these network devices. [Continue reading]

  • Linux's UFS support

    The last time I tried Linux's UFS support was around the first 2.4 releases, and IIRC, it trashed my file-systems even in read only mode (sounds strange, I know, but this is what I remember). Today I decided try again to verify if the situation is better now. [Continue reading]

  • Dynamic open of libpthread considered harmful

    Here goes another portability issue I've met multiple times while packaging software for NetBSD 2.x, where libpthread has some restrictions that other systems don't seem to have. Simply put, a non-threaded program cannot become threaded at run time, because, if it does, you get a nice "Abort trap". But, how can this happen? [Continue reading]

  • Good user interfaces

    First of all, let me apologize for not posting in several days. Unfortunately, this situation will continue as my time is quite limited because of university stuff... [Continue reading]

  • Do you run?

    Hmm, running (or jogging if you prefer). It has passed a year - more or less - since I started practicing this sport. I must really like it because I keep running as a hobby after all this time. While running, you can hardly think of anything else than you and the road, so you can easily disconnect from any problems you have. And maybe the best thing about it is that you can practice it anytime, anywhere, with very few equipment. [Continue reading]

  • GNOME 2.8.1 released

    The 2.8.1 version of the GNOME Desktop has been released today. This is the first minor release of the 2.8 branch, providing lots of bug fixes and minor improvements, such as new and updated translations. 2.8.2 will be published next month, if everything goes well. [Continue reading]

  • Portability: unsetenv('FOO') vs. putenv('FOO')

    (This happened last Friday, but I've had not enough time to write about it.) After fixing the Evolution Data Server crashes (let's call it E-D-S for simplicity), I noticed a strange problem caused by it. The GNOME Clock applet showed the right local time before it was clicked, but, after the calendar was shown (by clicking on the text), the time got changed to UTC and there was no way to reverse it (other than killing the applet). [Continue reading]

  • The libexec and libdata directories

    Some time ago, a Linux-guy asked me what the libexec and libdata directories present on a BSD system (placed under /, /usr, or other top-level hierarchies) are, because he had never seen them before in his Linux box. So here is a detailed explanation. [Continue reading]

  • Fixing Evolution Data Server crashes

    Yesterday, I packaged evolution-webcal (which was a trivial task), but, as I expected, it didn't work. In fact, I realised that neither the contacts view nor the calendar view of Evolution 2.0 were working at all. I could see the components, but I couldn't interact with them. So I started to debug the problem. [Continue reading]

  • An example of kqueue

    The documentation of kqueue is quite decent but it lacks some examples. After reading its main manual pages (kqueue(9) and kevent(9)), I wasn't sure about how it worked, so I had to write a test program to verify its behavior. [Continue reading]

  • FAM and kqueue

    The File Alteration Monitor, or FAM for short, is an utility that monitors changes made to files and directories and delivers asynchronous notifications to applications interested in them. GNOME uses it to keep Nautilus windows in sync with the on-disk contents, among other uses. For example, if you have your home folder open, and you do touch ~/foo from a terminal, you can see how the folder immediately updates its status to show the new file. [Continue reading]

  • Trying Bogofilter...

    A few days ago I did some maintenance of the software installed on my small server: among other things, the packages in it were outdated and I wanted to get the Libtool changes in (something that happened in pkgsrc...). So, I seized this oportunity to give Bogofilter a try, because SpamAssassin brought the machine to its knees. [Continue reading]

  • Pipes over SSH

    Today I had to copy a bunch of files and symlinks to a remote machine. My first attempt was to use scr directly: [Continue reading]

  • New versioning scheme for NetBSD

    Although this has not been announced publicly yet, it is not a secret anymore because the version changes are visible. NetBSD has changed its versioning scheme to a less confusing one. [Continue reading]

  • The AM_GCONF_SOURCE_2 macro

    GConf comes with an m4 file to ease its usage from third party configure scripts; it provides a macro, known as AM_GCONF_SOURCE_2, which provides many features (and most importantly, encapsulates all GConf related stuff). Among these, it is used to determine the directory where .schemas files should be installed, a setting that can be fine-tuned by the end user through the --with-gconf-schema-file-dir argument. [Continue reading]

  • NetBSD/mac68k soft-float support

    Two days ago I commited some code to NetBSD's CVS HEAD to let the mac68k port be built with soft-float support. All this work was originally done by Bruce O'Neel, so if you want to thank somebody, thank him. In order to build a release with this feature enabled, it's as easy as passing the -V MKSOFTFLOAT=yes argument to the build.sh script. [Continue reading]

  • Why function names appear in column 1?

    Have you ever wondered about why many people writes C/C++ function definitions separating the return type from the function name? And why even style guides suggest you to do so? I'm referring to something like: [Continue reading]

  • Preformatted manual pages

    Some time ago, a friend of mine installed FreeBSD on his old laptop and told me that it was very slow. Specially, a simple man ls took forever, while the same command on a Linux system went faster. Why was this specific command slower? Probably because he missed to install the preformatted manual pages, included in the catman series. [Continue reading]

  • Bugs and questions

    Some time ago I talked about how to write good bug reports. Today, I've found an essay that describes this process in great detail; you can find it here, written by Simon Tatham. [Continue reading]

  • VCS Made Easy: sources imported

    I have imported the preliminar sources of VCS Made Easy into the repository; you can view them trough ViewCVS by clicking here. To download them, just follow the regular procedure for any project hosted at Sourceforge.net, which is summarized here: [Continue reading]

  • GNOME 2.8.0 hits pkgsrc

    After more than two weeks of work, I've been able to commit to the pkgsrc tree all the required changes to bring the GNOME Desktop to its 2.8.0 version. [Continue reading]

  • Writing portable code

    Portability problems can be seen from two points of view: the operating system and the architecture. Depending on the kind of application you are developing, you may hit these problems. An example of OS-portability can be the use of a specific hardware subsystem through kernel facilities; on the other hand, an example of architecture-portability can be the direct use of assembly code. [Continue reading]

  • GNOME 2.8 published

    According to the release schedule, the GNOME Project is pleased to announce the 2.8 version of its GNOME Desktop. You can find the official annoucement here, as well as the discussion in FootNotes. [Continue reading]

  • VCS Made Easy - Project registered

    Yay! Sourceforge.net has accepted my new project, called VCS Made Easy. This program aims to simplify the management of several directory hierarchies controlled by a version control system (such as CVS or Subversion) up to date. [Continue reading]

  • One time passwords

    When you are away from home, you may need to access your machine through an SSH (or telnet, if you are still using it) client. The client machine will often be public and not administered by you, so you can't trust it. Who warrants you that it does not contain any key sniffer that can capture your password? [Continue reading]

  • The old new thing

    I would like to recommend you a blog that I find very interesting: it's called The old new thing, and is published by Raymond Chen. You know, I'm not a Windows fan... and this blog's main subject is Windows... so why am I recommending it? [Continue reading]

  • Added RSS feed

    As I already said in previous posts, LiveJournal provides a quite good service. However, free accounts do not have the RSS service, which is a pity. Having a sindication method is a very important thing to make a blog popular among people. [Continue reading]

  • Why pkgsrc uses static file lists

    In the pkgsrc package system, each package comes with a PLIST file which describes the files and directories that belong to it. Its contents are used at deinstallation time to cleanly remove the package from the system, among other tasks. [Continue reading]

  • About the Finder...

    Today I've been reading a very interesting article which talks about the advantages of spatial interfaces. It is titled About the Finder... and can be found here. The paper starts explaining what spatial interfaces are, how they mimic reality and why they are good in usability terms. [Continue reading]

  • autogen.sh scripts

    The GNU Build System works by generating scripts that have to be later distributed in your distribution file; these include Makefile.ins and configure, among others. Many projects that use it are managed by a version control system (such as CVS), although they don't keep the generated files under revision control (which is a good thing in many scenarios). [Continue reading]

  • Migrating to new versions of the GNU Build System

    The GNU Build System is basically composed of GNU Autoconf and GNU Automake. The latest versions of these tools are 2.59 and 1.9.1 respectively, at the moment of this writing. Compared to 2.13 and 1.4, these are far better, although not completely compatible with the previous ones. However, if you are maintaining a software project which uses these two tools, you should consider updating to the latest versions, as your program will be more portable and easier to manage. [Continue reading]

  • Strange USB mouse

    I've been trying to setup a new laptop today (unfortunately, not for me); one of the things I had to do was to install an external USB mouse (by Packard Bell). Easy, you'd say. But it has turned to be impossible. [Continue reading]

  • To rely or not to rely on the PATH

    It is quite common for a program to need to execute other programs at run time. This can be done in two ways: specifying the full path to the binary or relying on the current path. So which approach is correct? It depends on what you are trying to do. [Continue reading]

  • Back at home

    Hi readers! I'm back from my vacations. Well... in fact I came back a week ago but haven't had a chance to write something for the blog. [Continue reading]

  • The Windows UI

    If you have read all my previous posts, you probably deduced that I'm a free software fan. Yes, I am, and I love free software. However, as many people, I'm forced to use Windows systems from time to time, specially for university homework. [Continue reading]

  • Changing NetBSD's console colors

    Do you remember the good old days (playing with your Amstrad, MSX, ...) where the screen was something like yellow on blue? You can now do this in NetBSD! [Continue reading]

  • Framebuffer on NetBSD

    I've got very surprised today to find that NetBSD has a framebuffer device on the i386 platform (in fact any which uses the vga(4) driver). Well, certainly, I first saw it in NetBSD/mac68k (where there is no real text mode, so it must be emulated) some weeks ago, but was stranged to not seeing it in NetBSD/i386. [Continue reading]

  • Tips to create good patches

    We've seen the basics about patches: what they are, how they work, and how to create them. Now, I'm going to give you some tips to make your patches better. [Continue reading]

  • The FluxBox window manager

    GNOME 2.8 is going to be beta real soon now, which reminds me that I should start working on its port to NetBSD through pkgsrc. This means I have to zap all my desktop packages and configuration, and update them one by one. The operation is very, very time consuming, so I will be several days without GNOME installed (well... not really a problem ;-). So I installed FluxBox 0.9.9 today... Wow! What a difference from the stable versions! (0.9 is unstable, in case you don't know.) It finally supports always on top (which I need to watch TV), edge attraction (I'd prefer edge resistance, but never mind), it's very usable through the keyboard and is really fast. Ah! And it supports tabs; I haven't got used to them yet, but many people finds them very useful (so do I in the web browser or in chats). It feels like if I had just bought a new computer. [Continue reading]

  • Creating patches using CVS

    Two days ago I introduced patch files. Let's see how to generate them when the sources you are modifying are controlled by a version management system: CVS. (Note that others also have this feature; just read their documentation.) [Continue reading]

  • GNOME 2.7.4 released

    The GNOME project has just published the 2.7.4 version of its desktop environment. This version is the last one with "big" changes; the branch has now entered the API/ABI freeze and the module and feature freeze. Further versions will not include new features; just new translations, fixes and general polishment. [Continue reading]

  • Understanding patches

    A patch is a plain text file that describes the differences (and nothing else) between two different files. They are a very convenient way to provide modifications to programs - you modify the sources, generate a patch and submit it back to the mainstream author - as they describe exactly what you changed. The original can easily check your modifications and decide if they are wrong or not. [Continue reading]

  • Compiled vs. interpreted languages

    A friend of mine has asked me today what the difference between compiled and interpreted languages is; so here is the answer for her and anybody else who needs it. [Continue reading]

  • Scheduling timetables

    I've to enrol myself in the university again - 5th semester - this Friday. The first problem is to choose the subjects I want to do; there are a lot of different subjects to choose from. But when chosen, the big problem is to schedule them so that they don't overlap in the timetable. [Continue reading]

  • Teleworking considered bad

    Gah, I forgot to post a message yesterday (hmm... does anybody care?). Anyway, let's talk about what I wanted to look at yesterday. While doing my English homework on Monday, I came across a quite interesting article about teleworking, titled Second Sight, from Guardian Unlimited. [Continue reading]

  • Build your own PRAM battery

    My Mac has never worked properly since I got it, as its internal battery, which keeps PRAM data, was dead. PRAM stores a lot of information (more than you could imagine, if you come from the PC world), so losing its data is very annoying (aside of producing strange system problems). So I decided to fix it today. [Continue reading]

  • Playing with NetBSD keymaps

    Having configured my mac68k to boot with NetBSD, I wasn't very surprised to see that it doesn't have an Spanish keymap. So... first task, write one. Yeah, I could get used to the us mapping, but hey, I want to hack the sources ;-) [Continue reading]

  • Deprexification

    Have you ever used a Mac? No matter what you answered, there is an interesting concept that makes things a lot easier when it comes to installing and/or deinstalling applications. To install a new application, you just unpack it in the directory you want. To remove it, you just remove the folder. You can even move that folder to other locations and the program will keep running as well as before. [Continue reading]

  • Got the Mac's ethernet card working

    As I commented a while ago, I got a Macintosh Performa 630. Fortunately for me, it came with a regular Ethernet network card; it kinda worked with the Mac OS that came installed with the machine (7.something). However, since I zapped the disk and installed MacOS 8.1, I haven't been able to get the card working again... until today. [Continue reading]

  • My solution for the 'shared directories' problem

    The previous post explained a problem in pkgviews WRT directories used by a program where other packages can install files; the most typical example are directories holding plugins. It also outlined two possible solutions, or better said, workarounds. I'll explain my solution here, which is already implemented but waiting for approval. [Continue reading]

  • The 'shared directories' problem in pkgviews

    As I explained in a previous post, pkgviews enables the installation of each package in its own depot directory. To accomplish this, the package gets configured with a different prefix (for autoconf users, using --prefix flag) for each package. [Continue reading]

  • Why learning English is a good idea

    This is an article I have had to write for my English classes as homework. So, instead of throwing it to the trash after it gets reviewed tomorrow by my teacher, I'm posting it here. Nothing specially interesting, but it may change your mind about English ;-) [Continue reading]

  • An introduction to pkgviews

    pkgviews is a new technology in pkgsrc; in fact it's not that new, but it is getting popular nowadays. What does it provide over the regular pkgsrc? It lets you install every package in an independent directory, called the depot directory. Lets say you install the buildtool-0.16 package; all of its files will end up in /usr/pkg/packages/buildtool-0.16, and nothing will be installed outside that location. Which are the advantages of this approach? On the first hand, all the files coming from a single package are grouped in a single directory, making things a lot clearer when searching for files. On the other hand, it allows the concurrent installation of multiple versions of the same program. This last reason is specially important, as it simplifies the process of updating a shared library (which is a PITA if has changed its major version number) or updating a server with a very short offline window (consider PostgreSQL, where you have to dump the database using the old version and import it in the new one). [Continue reading]

  • Need new music? Get Nightwish!

    So, you are bored of always listening to the same music in your collection. Maybe it's time to get some new discs. If that's what you are thinking, give a try to Nightwish, a Finnish band. You won't regret about this choice ;) Their style is often described as gothic metal, although I've also seen them classified as opera metal. Never mind, just listen to them and then make your own conclusions. [Continue reading]

  • The seahorse project

    Seahorse is a GNOME frontend for the GnuPG utility. This program is quite nice but, unfortunately, it has been unmaintained for a long time. I've just seen in the main page of the program that they are looking for someone to take over the project maintainership. This post is just a call for volunteers. I would like to help that project (it seems a nice way to get more involved in GNOME), but I feel I don't have the time to do it :( And it could be good to have an up-to-date program that can compete with kgpg. [Continue reading]

  • Ease the way to plug your earphones

    I was tired of having to manually connect the earphones every night to my computer and disconnect the speakers. So I decided to put a solution: construct a small "switch". All you need are some cheap pieces and some hours to work on it (how many depends on your experience). [Continue reading]

  • Silencing the computer

    I've decided to try to silence my computer a bit; it made too much noise. So, after reading several articles from 7Volts, as well as other sites, I've done some computer "modding" today, and the noise has decreased, but the overall temperature has increased a bit, *sigh*. Guess I'll have to tune it a bit more. [Continue reading]

  • Test Driven Development

    TDD? Test Driven Development? Don't you know this concept? I didn't, until two or three weeks ago. TDD is, simply put, a development technique where test code is written before the code itself, so that the test fails before the funcionality is added and passes later. Furthermore, you'll end up with a complete suite of regression tests, useful to check if a new feature (or bugfix) breaks any other part. [Continue reading]

  • Buildtool 0.16 released

    I'm proud to annouce the sixteenth version of Buildtool (0.16), the newest and coolest version ever published (hmm... this holds true for all new versions so far). Don't know what is it? Just go to the website and start reading! [Continue reading]

  • The Kaffe packages in pkgsrc

    At last! I'm able to go through my TODO list and work on the items in it :-) Today I've chosen one that said "Improve the Kaffe packages" (in pkgsrc). I'm going to explain why they were wrong from pkgsrc's point of view and needed to be changed. [Continue reading]

  • Posting messages with Drivel

    Despite Livejournal beeing a free service, it allows you to post new messages to your blogs through external applications. This is much easier than having to log into their website and write the message from within your browser. [Continue reading]

  • Make your prompt more visible

    If you are like me, you'll probably have found yourself with multiple command lines on a terminal, together with their respective output. Searching those lines in the screen can be difficult, specially if your prompt is long (and with that, I mean more than 4 characters or so). A solution is to make your prompt more visible. How? Putting it in boldface mode. [Continue reading]

  • Got BSD Hacks

    I've just got a copy of the recently published BSD Hacks book, by Dru Lavigne. Back in February, I wrote two little hacks (specially addressed to the book), titled "Log a headless server remotely" and "Automate NetBSD package builds", that were added to it. Wow, I'm really happy to see the printed results :-) [Continue reading]

  • Improving your coding skills

    If you want to improve your coding skills, you can do so by solving some problems used in the ACM International Collegiate Programming Contest. You can find the entire collection here, which is really huge. [Continue reading]

  • Dealing with bug reports

    Some days ago I posted a message, titled "The art of bug reporting", which gave some tips to fill good bug reports. Today, I'm going to review this same process from the developer's point of view, who has to handle these reports. [Continue reading]

  • GNOME 2.6.2 released

    The GNOME Project has just released the 2.6.2 version of its desktop environment, probably the last release of the 2.6 stable branch. The official announcement provides more information, including a list of changes since the previous version. Furthermore, I've just updated all the GNOME packages in pkgsrc to their respective versions in this new release. That is, you can easily install GNOME 2.6.2 with the simple cd pkgsrc/meta-pkgs/gnome && make install command... and on multiple platforms! This may be a good reason to try this excellent package system today ;-) [Continue reading]

  • Making an Athlon system consume less power

    This has been posted today to Barrapunto, but as I find it very interesting, I'm repeating it here. [Continue reading]

  • Watching remote system activity

    gkrellm is a very good program to watch system activity. It provides a small window where monitors are stacked up; these include things like CPU and network monitors, weather reports, sensor control, etc. The window is also themeable, so that you can customize gkrellm's appearence in any way. Just because of this, you have to give it a try! One of the new features in the (somewhat recent) 2.x version is support for remote logging of computers. That is, you can watch remote system activity (provided by any supported monitor) from a single computer. Let's see how to do it. [Continue reading]

  • The art of bug reporting

    Software is not perfect. When using it you'll eventually hit bugs, some of which may be trivial, like a typo, or very annoying (crashes, broken features, etc.). Reporting them is a good way to help developers, and you can do it even if you are not a coder. [Continue reading]

  • Connecting two networks

    First of all, a bit of background. My home network is based on the old 10base2 connection. There is a server doing firewalling and NAT (among providing some services). There are also several workstations; mine has two NICs, one integrated in the motherboard, which only supports 10baseT (so I can't use it for my home network), and one plugged in a PCI slot. This network is class C, using 192.168.1.0/24 IPs. [Continue reading]

  • Helping pkgsrc (through pkgsrc-wip)

    I suggested you yesterday to contribute to a free software project. I know choosing one can be difficult, so this post is to give you a suggestion: help the pkgsrc project. [Continue reading]

  • Getting involved in a free software project

    It's now late June and, for many people (not me, yet), summer holidays are here. If you don't know what to do, or want an idea, here is it: join a free software project. [Continue reading]

  • Welcome to my new journal!

    Hi everybody! After thinking about it during some days, I've decided to start a new journal (AKA blog) after a failed attempt on November 2003 (which only lasted three posts, IIRC). I didn't know what to write in it, had almost no readers (obviously), and had few time at that moment to keep it growing. [Continue reading]