Exchange Server Journaling

I’ve recently had to setup Journaling on an Exchange Server for a client – it was quite an experience. So I’ve made these notes that will hopefully help.

Microsoft Exchange Server journalling lets you record a copy of, or journal, all email communications in your
organisation and send them to a dedicated mailbox on an Exchange Server.

Continue Reading…

Insert Coin

Bored at work? This script connects to a JetDirect equipped HP printer and uses HP’s control language to set the ready message on the LCD display. Takes an IP address and message on the command line. My favorite message is “INSERT COIN”.

Keep in mind the limitations of the display when composing your clever verbiage.


# $Id: 11 2006-03-22 01:21:03Z yaakov $


use strict;
use warnings;

unless (@ARGV) { print “usage: $0 \”\”\n” ; exit }
if ($ARGV[3]) { print “Did you forget the quotes around your clever
message?\n” ; exit }

my $peeraddr = $ARGV[0];
my $rdymsg = $ARGV[1];
chomp $peeraddr;

use IO::Socket;
my $socket = IO::Socket::INET->new(
PeerAddr => $peeraddr,
PeerPort => “9100″,
Proto => “tcp”,
) or die “Could not create socket: $!”;

my $data = <
\e%-12345X\@PJL JOB

print $socket $data;

Facebook Chat for Pidgin

My favourite instant messenger application just got better! There is now a plugin for Facebook.

pidgin-facebookchat is a Facebook chat plugin for Pidgin and other libpurple based messengers. It connects to the new Facebook Chat IM service without the need for an API key.


Currently the plugin can log into the Facebook servers, grab the buddy list, send/receive messages, add/remove friends, receive notifications, search for Facebook friends and set your Facebook status.

SQLyog Query Profiler

MySQL has always lacked the sophisticated profiling tools shipped with proprietary databases like SQL Server, etc. MySQL developers have largely depended on EXPLAIN for tuning queries. The SHOW PROFILE patch by Jeremy Cole was introduced in the MySQL Community version 5.0.37 and it provided much more insight into where the query spends its time. However, to take advantage of this feature, MySQL developers were supposed to switch on profiling, run their queries and then filter the profiling data from a table that contained the profiling results of the last few profiled queries. A lot of manual book-keeping is required to take advantage of this powerful feature. In an ideal situation, the MySQL developer should execute the queries and the profiling info should be available along with the result-set. Unfortunately, none of the MySQL client tools (desktop or web-based) provide intrinsic support for this feature.

Watch the Screencast on Query Profiler.