Disclaimer: Due to time constraints, I am not an active Zeitgeist developer right now. Seif Lotfy is the man.
GNOME Zeitgeist is a file manager application for the GNOME desktop environment. Instead of providing direct access to the hierarchical file system like most file managers, GNOME Zeitgeist mainly classifies files according to metadata. This includes time and date of previous accesses, location of use (using GPS positioning), file type, tagging and more. In addition to local files, GNOME Zeitgeist also organizes web browsing history, email and other data sources.
What’s wrong? Zeitgeist is not a file manager. The GNOME Activity Journal can be used to replace a file manager and do file manager-like things, but Zeitgeist is more than that. Check the official Zeitgeist website for details.
If you are a Linux user, how do you use Zeitgeist?
Crucial infrastructure for small projects
My latest project is a web application, which is currently in closed beta. I will blog about that more in the coming weeks, but today I’d like to discuss my project’s infrastructure. Infrastructure is one of those topics that you usually just learn about from the companies that you work with. I hope that the information here will be useful to individual developers and small startups. It is difficult to know what has to be done when you’ve never been part of a real-world development team before.
My project’s team is made up of three people. For a project of that size, there are three resources that I consider to be absolutely crucial:
- A project wiki – For storing project information like budgets, marketing plans, etc. The wiki should replace most emails between team members. The point of a wiki is to establish one place to look for the latest information, so that you don’t need to search through old email threads to find something.
- A project management site – For creating roadmaps, planning new features, reporting bugs, and assigning work to each team member. If you’re going to ignore everything else I write in this post then just setup a project management site. You wont be able to go back and live without it.
- A code repository (aka version control system) – For keeping track of changes to your codebase. Also useful for storing all of your source code in one central and backed-up location. (Yes, that explanation is slightly simplified, but using a version control system should be a given.)
Depending on the nature of your project, you may also need a build-bot or continuous integration server. I don’t have any experience in that area. However, I hear good things about Jenkins (formerly Hudson),
Chef, and Integrity. (Edit: As Tollef Fog Heen pointed out, Chef is a configuration management tool and not a CI server.)
Update: Git repositories created with WebFaction’s git installer are insecure, even when they’re password protected. Some Apache installations are configured out-of-the-box to protect .htpasswd files. That is not the case with WebFaction.
- Remove the file’s default world-readable permissions, by running chmod o-r .htpasswd
- OR: Prevent the file from being downloaded, by adding the following to .htaccess:
<files ~ "^\.ht"> Order allow,deny Deny from all </files>
Of course, the same applies to any .htpasswd file.
Earlier today I was trying to run a Python script that I downloaded from the internet. Bash (or the kernel, to be exact) refused to run the script, insisting that python didn’t exist:
$ mem.py -bash: /home/natan/bin/mem.py: /usr/local/bin/python2.5^M: bad interpreter: No such file or directory
The script agreed to run indirectly with python ~/bin/mem.py
I googled and discovered that the file was encoded in DOS format with improper line endings.
To fix the problem, I copied the contents of the file and pasted them into a new file. Voilà. The shebang became magical again.
Then again, you can also fix the problem permanently. (Don’t.)
ln -s sh "sh$(printf "\r")"
photo credit: Sven & Lirion