I’m a big fan of Wikis. I like the idea of being able to dump my brain somewhere that I can keep organised, and access anywhere. If I don’t have to juggle something in my mind, it’s one less thing for me to worry about. There are lots of applications out there that let you manage a list of tasks, todo lists etc., but I like the flexibility a Wiki affords me to readily organise larger amounts of information.
I’ve tried various web based solutions for the obvious benefit that I can access them everywhere, however since I spend a lot of my time in Vim, I wanted something that doesn’t involve a browser, yet offers the same flexibility and access-everywhere (well, where there’s Vim) that a web based wiki offers.
That’s where Vimwiki comes in. Vimwik is a Vimball that, once installed, allows you to create linked documents using a similar syntax to Markdown, Restructed Text etc. By default, it creates a ‘vimwiki’ directory in your home directory. I simply moved that directory to my Dropbox and created a symlink to my home directory.
It also features commands to export one or all pages to linked, local HTML files and allows you to create multiple separate wikis if you want. If, like me, you’re a fan of Vim and wikis, give it a shot!
I had cause to use the glossaries package in LaTeX today to take care of all my glossary management needs. The idea of being able to create an external file to define all of my acronyms and definitions, and then include them as required in a separate section that is automatically included in a table of contents is very appealing. Unfortunately, the glossaries package isn’t installed as part of the Ubuntu texlive-latex-* packages, nor is it separately installable via Aptitude.
While there are plenty of MTAs out there, I find it quite handy to have SSMTP installed locally; it’s quick to install and configure and lacks some of the overhead of a more enterprise MTA such as Sendmail, Postfix, Exim etc. The following assumes you have a “Google Apps for Domains” user account — ssmtp_user@domain.com — through which you will relay all email. Additionally, the steps below work on Ubuntu 10.10, similar steps should work on other distributions.
Install SSMTP
sudo apt-get install ssmtp
Edit configuration in /etc/ssmtp/ssmtp.conf
# Backup the original first
sudo cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.out
# Truncate the file and add the following
mailhub=smtp.gmail.com:587
hostname=ssmtp_user@domain.com
root=ssmtp_user@domain.com
AuthUser=ssmtp_user@domain.com
AuthPass=
UseSTARTTLS=yes
UseTLS=yes
FromLineOverride=yes
Edit revaliases map in /etc/ssmtp/revaliases.conf
# Add a line for each local user who should be able to send email
root:smtp_user@domain.com:smtp.gmail.com:587
max:smtp_user@domain.com:smtp.gmail.com:587
Send Email!
You should now be able to send email, e.g. from the shell using
echo "Testing" | mail -s "Test Email" someone@example.com
In order to facilitate testing of websites in different browsers, Microsoft have released what they call their ‘Application Compatibility Virtual PC Images‘. These time-limited V12n solutions are great for quickly bringing up a VM for a particular version of Internet Explorer but they are built for Microsoft’s Virtual PC (VPC) software.
I work predominantly with Linux and use Virtual Box as my V12n application of choice. Later versions of Virtual Box support VPC’s VHD disk image format. This means it’s possible to run these VPC images under VirtualBox, but it involves downloading and extracting files from the win32 executables; downloading drivers for the ethernet adapter and other time consuming steps that I’d rather not repeat every time my IE VM expires. I’m a programmer, therefore I’m lazy and don’t like doing things more than once; I’d rather script something to do it for me. In keeping with this virtue, I’ve written msie2vbox to automate this stuff for me. It’s on Github with a GPLv3 license. There’s some outstanding todo items but it does the job for me, and I thought it might be of use to others.
Revision control systems serve their purpose well for managing codebases, but they can also be used to good effect for configuration management. I’ll discuss how I’ve used Subversion to manage the configuration of my home directory. The same goal could probably be achieved just as easily with Git. While I use Git and Github for personal projects, I have employed this solution at work where we use Subversion.