When using Tortoise SVN client to access my Subversion repositories from Windows, I tend to forget to set up keyword expansion (unlike in the Linux command-line, where one can always invoke svn propset svn:keywords "Id Date Author" somefile).
In Tortoise, this can be done by enabling auto-props in the configuration. In Windows Explorer, right-click to get to the Tortoise context menu:

(Yes, I’m a bit O.C. so even my resume is under version control. :P)
Edit the Subversion configuration file, specifically the following properties:
[miscellany]
...
enable-auto-props = yes
...
[auto-props]
*.txt = svn:keywords=Date Id Rev Author URL;svn:eol-style=native
*.html = svn:keywords=Date Id Rev Author URL
This tells Tortoise to expand the keywords specified for the given files. Note that this works only on new files added to the repo after the configuration has been modified.

Originally uploaded by jgotangco. Licensed under CC by-nd.
This is the first one (I think?) in the Philippines, and it would be awesome to meet fellow geeks. Plus, the venue’s just a couple of blocks away from the office.
Now, what should I share?
I have been messing around with the Asus eee PC. Here are my first impressions (sorry for the bullet points, I really am having trouble typing with the dwarfish keyboard {more on this later}).

The good:
- Low cost. This subnotebook has an amazing price point. Asus really outdid itself with this. At about USD 490, this proves to be an attractive proposition for budget-conscious consumers.
- Open source. This is really a win. Aside from being customizable, this really proves that Linux and open source software can significantly compete in the desktop space. In no time, I was able to add new repositories, enable full desktop mode, and insstall Beryl, among others. The peripherals Just Work ™ — no need for
modprobe and other CLI voodoo to detect USB storage, for example.
- User interface. I have a strict usability testing regimen: if my six-year old son cannot browse the web in under two minutes, the interface has failed miserably. This one passed with flying colors. The easy mode’s tab-and-button interface was intuitive enough, and provided ease-of-navigation. It’s very difficult to get lost with the customized KDE UI.
The not-so-good:
- Small form-factor. Okay, I admit this may not be a device for me, but the keyboard and screen size are killing me. After squinting for about an hour while playing FrozenBubble and TuxRacer, Gab gave up, saying, “maliit ang monitor, saka may mga ganun o” (pointing to the horizontal and vertical scrollbars). Rant: Why did they place the Up arrow between the “?|/” and right Shift keys? Touch typists will despair with the eee keyboard.
- Heat. My “crown jewels” (as Jim Ayson so eloquently described it) almost got cooked. The eee generates way too much heat for its size. Heck, it gets even hotter than my Dell.
Despite the negatives, however, the eee shines as a low-cost powerful ultraportable device. (There, three superlatives — shows how much I like it.) So far, I have installed a quite-useless but still very cool Beryl on the native Xandros OS that came with it. Contemplating on installing Ubuntu, if I can spare a USB flashdisk. I still can’t get Smart 3G to connect through my phone, though, but it’s most likely because of my settings rather than eee’s fault.
Just a quickie. Movable Type is now open source (under GPL), so I’m testing it out.
Like Wordpress, it’s very easy to install. Provided you have the database (MySQL, PostgreSQL, or SQLite), all you have to do is
$ wget http://www.movabletype.org/opensource/nightlies/MTOS-4.1-en-boomer-r1116-20071214.tar.gz
$ tar xzvf MTOS-4.1-en-boomer-r1116-20071214.tar.gz
$ mv MTOS-4.1-en-boomer-r1116-20071214/* .
Then browse to http://domain.name/path/to/your/MT/install, and follow the prompts. Nightly builds are available, but if you want the bleeding edge, you can grab it through SVN (there’s an extra make me step, though).
The interface is intuitive, with the dashboard having that warm AJAXy feel, but it was a little too slow for my taste. Applying new styles (or “themes”, in Wordpress parlance) is as easy as select and apply, but adding widgets is counter-intuitive: you’d have to edit the style manually to add the widget code snippet.
The mix of Perl and PHP code is a bit weird for me as well — heck, I’m a purist: give me PHP or Perl, but not both.
There’s also the lack of specifying table prefixes for the database. I use a single database instance for my side projects, and I’m used to just adding prefixes to distinguish the apps, but apparently (from what I have read from the docs so far), there’s no way to configure that in MT.
Other than that, it’s a cool new toy. There’s no immediate plan of moving over to MT, but it’s well worth checking it out.
It’s been a long time since I did a source tar-ball install. But the production servers at work require that applications that are not part of the standard install base (from Kickstart/Jumpstart and VMWare images) should be compiled from source. It was a very refreshing experience.
So after going through the usual configure; make; make install invocation, it was time to make sure that the app is persistent at boot. I would have copied an init script from my *nix desktop, but good thing SLES had a baseline script in /etc/init.d/skeleton.
In a nutshell, the steps are:
- Define the
INIT INFO section, as per the LSB specs.
- Fill in the variables.
- Use /etc/rc.status and rc_* functions for sanity checks.
- Create the basic
start, stop and status functions.
- Use YAST (System > System Services (Runlevel)) — or, if available, innserv — to enable the startup script.
Below is a script I wrote for Apache:
#!/bin/sh
#
# Author: Ian Dexter R. Marquez
#
# /etc/init.d/httpd
#
### BEGIN INIT INFO
# Provides: httpd
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start the Apache httpd daemon
### END INIT INFO
HTTPD=/path/to/apache/2.2.4/bin/httpd
APACHECTL=/path/to/apache/2.2.4/bin/apachectl
PROG=httpd
test -x $HTTPD || exit 5
test -s /etc/rc.status && . /etc/rc.status && rc_reset
start() {
echo -n "Starting $PROG: "
$HTTPD -k start
rc_status -v
}
stop() {
echo -n "Stopping $PROG: "
/sbin/killproc $HTTPD
rc_status -v
}
status() {
echo -n "Checking $PROG: pid "
/sbin/pidofproc $HTTPD
rc_status -v
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
rc_status
;;
status)
status
;;
try-restart|condrestart)
if test "$1" = "condrestart"; then
echo "${attn} Use try-restart ${done}(LSB)${attn} \\
rather than condrestart ${warn}(RH)${norm}"
fi
$0 status
if test $? = 0; then
$0 restart
else
rc_reset # Not running is not a failure.
fi
# Remember status and be quiet
rc_status
;;
graceful|help|configtest|fullstatus)
$APACHECTL $@
rc_status
;;
*)
echo "Usage: $PROG \\
{start|stop|restart|status|graceful|help|configtest|fullstatus}"
exit 1
esac
rc_exit
References: