Here you can find some of my libre projects. Some of them are no longer maintained. Some of them work, some others don't, some may be interesting to read, some others are just crap, etc. Some even are written in Perl. And most of them were written for Linux (although some of them are pretty portable). In any case, here they are in no particular order:
See the main page for the project for more information. Yes, you go to that page by clicking the project name. Easier than it seems, believe me.
- The Puto Amo Window Manager ®©
Well, this is a very small, simple and fast window manager for the X Window System. I wrote it with my old friend David, and there was much rejoicing. We learnt a lot, too. This window manager didn't have any bells or whistles, but worked in very modest machines and it was very good looking nonetheless. I'm quite proud of it, although it is not the best software design I've created. Thanks to this piece of code I met the persons who would end up being my best friends, and just for that it was worth the pain and the working hours.
This one used to have its own page. The name stands for "My Own Building System", and it's just that: a very simple build system, lightweight and easy to use, including a small application framework. It gets information from the end-user wanting to build your project and modifies the building process according to such information. It provides the developer with some development helpers, including some makefile framework and an interface for the end-user. This building system supports the (more or less) automatic building of C, C++, Bison/Yacc, Flex/Lex, and Texinfo source files, and the creation of static and shared libraries and binaries. This said, it is not a GNU autoconf/automake clone, and although the command line of the main script certainly mimics the one of GNU 'configure' it is only for the sake of end-users. Internally, and from the point of view of the developer, it is very different.
Virtual Console init (a.k.a. vcinit) is a new kind of init that only works for Linux virtual consoles. The idea is to have a very simple init for home Linux systems (although it could work on other Unixes as well, who knows...), allowing for a simpler and cleaner configuration. It is useful in embedded systems too or tiny boot disks (maybe as a complement for busybox). In other words: it works for me, I use it and I'm releasing it in the hope of it being useful for others. This init clone has the getty and login parts built in, not as separate binaries. This means that if you have a telnet server, it surely WON'T WORK if the server wants a /bin/login or the like. The log system (kernel logger and system logger) are builtin too. You don't need sysklogd or equivalent, unless you want some feature of them...
This is the first program I ever wrote, back in 1990, with a friend of mine. It is written in GW-BASIC and I feel very ashamed of the code. It is not finished, because I typed it recently from a printed copy and there were some missing parts; I don't think I can ever get them, so they're lost for good. Well, it is my first program and I'm putting it here for historical purposes and because the good memories. A GW-BASIC interpreter and manual is included so you can run the program in DOSBox if you dare!
This is a small configuration file handling piece of code I wrote for a friend. I wanted to refactor it as a standalone library and I did it. It works, it's easy to use and very useful if you want to avoid using gconf, for example. This said, I don't like the design specially, because it was tuned for the projects it was written for. Anyway, as I said, it works.
This is a dynamic container. If you use glib, you have similar containers ready to use. But it works, it's fast, small, very easy to use and useful for small projects that need a ready to use container while at the same time want to avoid using big libraries like glib et al.
A small, quick'n'dirty hack I wrote to perform... digital audio backups. It rips a CD and encodes the ripped audio in a variety of formats, adding metadata. It's not a fantabulous 3D application, but get's the job done. I haven't tested in years, so it may break with newer versions of Perl or Linux. Who knows...
This is just a C function that reads a line from a file and stores it in a dinamically sized array. And if I recall correctly, it works with UTF8. If you have not understood a darn word, you don't need it.
The name stands for IP Objects. It's a piece of code that contains object oriented C for TCP/IP networking. It started as a convenience wrapper for some networking code I had to write for a job, but evolved into... another thing. I never finished it, but still, it is usable, and better than other implementations that are in use right now.
A Python script that converts from FLAC to VBR-MP3. Uses lame, that's why it is called like that. It gets the job done and avoids remembering all that options you have to give to lame.
The name stands for "Linux MBR bootloader". Is a very simple and small (but still functional) bootloader for Linux which fits entirely in the MBR. Not very powerful, but I wanted to know if I could write it, so I did...
This time, the name stands for "Linux MBR". It's a MBR I wrote using Linux tools, and even though the name includes the L-word, it's not meant to be run under Linux, as a MBR is running when no OS is still loaded. Another toy I wanted to write, to demonstrate creating real mode code using GNU as, the GNU project assembler, in protected mode. Yes, sounds stupid but I had a lot of fun writing this and I'm proud of it.
My Own Bunch Of (perl) Modules. That is, a bunch of Perl modules I wrote to ease my Perl developments. They're pretty finished, very useful and documented. If you are a Perl programmer, you wouldn't guess one of the function it includes. YES! my own getopt implementation! It's much better than any other one in the world because it is mine and I love it. Also, among other things, this bunch of modules include support for running external programs in a very flexible, robust and reliable way. Unlike Perl, you know.
Well, what can I say. I was bored and I decided to write a syslogd implementation in Perl. Yes, what can I say, maybe drugs are not good, after all. It works, it is very well documented and much more flexible than most syslogd implementations. I'm proud of it :) I used it in the small Linux distribution I put together some years ago.
This is a timer multiplexor. It relies in SIGALRM, so it's not as reliable as I would like. If you use event-driven programming, glib timer multiplexor is better. Otherwise, you can use this, at your own risk. I never worried about adding a watchdog mechanism to avoid deadlock problems, so if you use it and gets stuck your life may get a bit more interesting. Who knows...