• 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: int main(void) { .... } The reason behind this is to simplify searching for functions. If the function name appears in column 1, it is very easy to construct a regular expression that matches the code you are looking for.

  • 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. We'll see what these files are in a minute, but first of all you have to understand how man works.

  • 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. Related to this, I also found an article that explains how to make good questions; i.e., to not annoy the person that may answer you - it focuses on hackers answering - and to provide enough information to make your question complete.

  • 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: $ mkdir vcsme $ cd vcsme $ cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/vcsme login $ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/vcsme co -P src The status of this code is close to a possible 0.1 release, although it still lacks some important features and cleanups: for example, it doesn't work very well if you don't have a previous .

  • 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. The update has resulted in 73 new entries added to the doc/CHANGES file; of these, 2 are new packages, 70 are package updates and 1 is a removal of a meta package. Quite a bit, eh? ;-) Unfortunately, not all the official components that form the GNOME Desktop are in pkgsrc yet; these include gnome-nettool, gnome-system-tools, gnome-volume-manager, gnomemeeting, vino, ximian-connector and evolution-webcal.

  • 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. Often, you will be aware that a chunk of your code is not portable; for example, when accessing Linux's ACPI subsystem, you can be sure that that part of the code won't work outside Linux.

  • 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. I've been using the first release candidate (2.7.92) for around two weeks, and all I can tell is that it's marvelous (well, almost) ;-) Lots of bugs have been fixed, some of them regarding to portability to NetBSD (which I filed).