It's been almost exactly two and a half years since I wrote my first post,"Cool, Fun, and Mostly Useless Things to do with Linux". Since then, so much has changed in the open source world, that I think it might be time to write a new post detailing a few more ideas I have had for weekend projects.
<obligatory-marketing-lead-in>
Do you often find yourself on the weekend bored out of your mind, hoping the Linux/open source community provided something of real value to you? Do you wish to be closer to Richard Stallman or Linus Torvalds (but not at the same time - they don't like each other) in the hope that some of their knowledge will rub off on you?
Well look no further. This post will have you using several of their products, putzing around with their source code and causing general confusion in both your personal and your professional life!
</obligatory-marketing-lead-in>
Okay, now that the opening is out of the way, let's get to the ideas.
Not all of these projects require a "Linux server" or a "Linux desktop". Most of these are quite doable with either category.
Learn all about systemd, its scheduler, networking manager, init "scripts",
logger, socket manager, etc. so you know why you shouldn't be using
it.
Learn to version control your scripts with git.
Build a git server with web ui for the previously mentioned git knowledge using cgit with cgi and the webserver of your choice (I use lighttpd).
Learn how to write git hooks, specifically post-receive server-side hooks, for push style automation triggers.
Build a bi-directional sync and backup server using Syncthing. Bonus points for using it to back up your smartphone!
Learn Qemu (with libvirt) to virtualize systems for testing, development, and serving.
I use this one on a daily basis for virtualize my Windows system at work. I also use it often to test out new code being developed, or to replicate an environment for troubleshooting. A very good tool to have.
This is useful on desktop and on servers. I use it mostly for desktop purposes, but on a server, you could virtualize an application server for secure isolation, virtualize multiple servers on powerful hardware to make the best use of it, etc.
This category we can safely say requires a server with a static ip address (or at least dynamic dns), and will be running most of the time, hence the server category.
Build an XMPP/jabber server for chatting with your GMail friends
anyone else using xmpp. My recommendations include
ejabberd (this is the one I use) and
Jabberd2.
Store, encrypt with GPG, and version your password database with git using pass, "the standard unix password manager".
Script your password management using pass and xdotool.
Download all of your email locally using isync/mbsync and set up command line mail using mutt.
Encrypt a partition, a full system, or just a USB stick using dmcrypt with cryptsetup
Learn to install and run a source-based Linux distribution, like Crux Linux
Script a basic IRC bot
Write a standard logging framework for bash scripts with standardized, timestamped output and log levels.
Learn how to write a preprocessed website using your scripting language of choice combined with cgi (you could be using bash instead of Java to program that website!) :)
Learn how to write a waitpid function in bash, or perl, or python, or ruby, or c, or c++, or even binary! The possibilities are endless!
Written on: 2025-02-28 17:18:51 -0700
Last edited: 2025-03-01 01:49:41 UTC