TomBoy

Following on from [my previous post](http://www.fuckcuntandbollocks.com/dorkus/index.php/archives/2004/09/21/43-folders/) about the principle of dorks _Getting Things Done_ (and hoping, desperately hoping that this doesn’t turn into yet another self-help website), comes [TomBoy](http://www.beatniksoftware.com/tomboy/index.html), a simple note-taking application that combines elements of post-it notes and a Wiki.

Although this description belies the power underneath such an application. Simply highlight a portion of text, right-click, and you can create a new note about that particular piece of information.

How well it will fare in the long term remains to be seen. Of all the proposed changes, the only one I can actually see being of any actual use to me would be the plugging into Evolution (even though I’m edging more and more towards Thunderbird and Enigmail as my primary mail client — something I hope to touch on at a later date).

For anyone that cares, TomBoy compiles cleanly on Debian Unstable providing you have the following packages:
**gcc
libstdc++6-dev
g++-3.3
libgtk2.0-dev
libgtkspell-dev
make
mono-mcs**

#

43 Folders

Listening to [Tim O’Reilly’s talk on Alpha Geeks](http://www.itconversations.com/shows/detail197.html), he mentions something that I found very interesting: he says he got started on his long, strange journey by simply documenting something that was largely an oral tradition – what it meant to be ‘root’ on a Unix system. By simply _writing down_ what had been passed on verbally from one admin to the next, he started the ball rolling on what has become one of the largest, most successful and best-respected tech publishing houses in the world.

It’s hard to read Merlin Mann’s [43 folders](http://merlin.blogs.com/43folders/) and not think of the same thing. Here, Merlin is simply _writing down_ what others have taken for granted — their productivity habits — and sharing them with others. In most cases, people don’t really appreciate just how effective their habits can be. Or perhaps they just don’t see them as significant enough to share with others. Whatever the case, I can only voice my support for 43 folders (and Danny O’Brien’s slow-coming [life hacks](http://www.lifehacks.org/)), and hope that my self-discipline allows at least some of these habits they are suggesting to seep into my daily routine.

Right now, my routine in work is this:
* Each day, we have a team ‘huddle’ which, as sexual as it sounds, is remarkably useful, we remind each other of what we were supposed to do yesterday, and announce our plans for today
* Once the huddle is over, I immediately open up _~/work/TODO.otl_ in Vim
* _.otl_ files are Outline files, which work well with [the Vim Outliner](http://bike-nomad.com/vim/vimoutliner.html).
* I give each actionable item a topic by itself, and each sub-action gets another sub-topic
* I try to give each action at least one line of a description as to what is involved
* Once an action is completed, I update it with what was done (e.g. text from an email I sent, a snippet of code I wrote), and ‘collapse’ that item. Because I’ve set Vim to give ‘collapsed’ items a different background, I can quickly scan over it and see what still needs to be done.

Here’s what an entry from last week looks like:

`2004-09-14
Machines for Customer Conference
| handed off to JohnB
Asset Register for Eamon
Service Pack 2 screenshots from Ouzo
Mailman archives for Andrew
| MHonArc: http://www.mhonarc.org/archive/html/
| Smart Archiver: http://smartarchiver.sourceforge.net/
| Mailman2rss: http://taint.org/mmrss/`

Within the Vim Outliner, this is displayed in a easy-to-follow, colour-coordinated format, and makes a lot more sense.

This still needs a lot of work, but thanks to people like Merlin Mann and Danny O’Brien actually _writing down_ all these things most people take for granted, I’m coming up with all sorts of new ideas as to how I can make myself more productive.
– – –
**Update October 4th**

Okay, so it’s been a couple of weeks. And in those couple of weeks, I’ve been playing about with a few different systems for Getting Things Done. Things like [TomBoy](http://www.fuckcuntandbollocks.com/dorkus/index.php/archives/2004/09/21/tomboy/) and [Ecco](http://www.fuckcuntandbollocks.com/dorkus/index.php/archives/2004/09/21/tomboy/) have both grabbed my attention in a big way (Ecco is so nice, I’m thinking of writing a post about it). But still I keep coming back to my Vim Outliner.

## What I’ve discovered
I really only started using Vim since I started my current job. Before then, I used nano, because I mainly wrote text instead of config files and large, unweildy shell scripts. So I’m starting to discover and harness some of its power.

## Linking files
My TODO.otl still follows the same format (although I’ve written a shell script to “archive” off the top few entries, so I’m not left with a gigantic text file. However, I’ve found that I can link to external files by wrapping them in square brackets. This has proved remarkably useful for larger projects, ones that go on for a while, with a set of tasks so long that I can’t really keep importing them into my current day’s worklist.

So now, it looks something like this
` 2004-09-22
Finish Asset Register [AssetRegister.otl]
Install laptop for John Doe [JohnDoeLaptop.otl]
Remove machines from domain
| use PHPLdapAdmin – http://xxxxx
Investigate LDAP password policies`

To get to the external documents, I simply place the cursor between the square brackets and press Ctrl+], which opens it. Once inside the new external document, I put a [TODO.otl] at the top, so I’ve got an easy route back to my TODO list. This way, I never really have to leave my task list.

#

Back to Debian

A couple of weeks ago, my main workstation went insane. I put this down to the fact that I was running Debian unstable, which made it, well… unstable. I’d always had a lot of trouble with it. Occasionally, files would become corrupt (mostly apt’s _status_ file), or programs would randomly segfault. The most hilarious instance being where _fsck_ segfaulted on startup. Finally, after putting it off for too long and an hour or two of repeated crashes, I decided to force a full _fsck_.

I wish I hadn’t.

There were so many tragic errors. My _/bin_ directory got wiped and replaced with a single shell script I’d written myself. My _/home_ directory also got wiped and replaced with a 415-bit text file.

I wept and wept. And then went about the process of getting it back on-line.

The reason I chose to run Debian Unstable as opposed to, say, Debian _Stable_ is because I liked the better choice of packages. Debian Stable is stuck with Gnome 2.4, whereas Debian Unstable is up to Gnome 2.6 (2.7 if you include the stuff from Experimental). But not wanting to risk killing my machine again, I decided to look elsewhere. The first thing that came to mind was [fedora](http://fedora.redhat.com/). I grabbed the isos from bittorrent and started installing.

Initially, I loved Fedora. Its crisp interface (much nicer than Debian thanks to the improvements in the Xorg that Fedora use) was very easy on the eyes, and the fact that everything just worked really scored big points with me. Between you and me, even the graphical boot screen made me go “Ooh”. For a while, I was pretty happy.

Until, that is, I tried to get it working the way I was comfortable, with the software I like.

It was then that I realised the simple beauty of Debian. For example, I compose my entries into this blog using BloGTK. To install it on Fedora was a matter of
* Fire up a web browser
* go to google
* search for _fedora blogtk_
* check a few false-hits
* download the package
* _rpm -Uvh fedora_package.rpm_
* find out it was missing a few depencies
* go to google
* search for _fedora dependcyname_
* download the package
* …

Here’s me installing BloGTK on Debian:
`oasis:/home/johnke# apt-get install blogtk
Reading Package Lists… Done
Building Dependency Tree… Done
The following extra packages will be installed:
libzvt2.0-0 python-glade2 python-gnome2 python2.3-glade2 python2.3-gnome2
python2.3-pyorbit
Recommended packages:
aspell
The following NEW packages will be installed:
blogtk libzvt2.0-0 python-glade2 python-gnome2 python2.3-glade2
python2.3-gnome2 python2.3-pyorbit
0 upgraded, 7 newly installed, 0 to remove and 10 not upgraded.
Need to get 477kB of archives.
After unpacking 2048kB of additional disk space will be used.
Do you want to continue? [Y/n] y`

Do you see how simple that is?

I read somewhere that Fedora has its own apt-alike, called Yum, but I disliked this intensely. I asked it to install a particular piece of software, something trivial and without too many dependencies, and I watched as the machine sat there for a good ten minutes, calculating its depencies. Clearly this would not do.

So on Monday, I decided to switch back to Debian. This time, I swore I would be more careful, I would stay on _stable_ for as long as I could. I think I lasted an hour or two before I was upgrading to _unstable_. And almost immediately, I was back to where I began – my _apt_ was crashing randomly, programs were segfaulting for no reason. I went home on Monday night an unhappy bunny.

Yesterday, before I did anything else, I made sure I had all the latest packages, especially _e2fsprogs_ and forced a full fsck on reboot with

_shutdown -F now_

It took a while (full fsck on a 120GB disk is about 10 minutes). But since then, I haven’t had an ounce of trouble. Of course, I’m touching wood with every part of me that isn’t needed for working right now, but I’m pretty hopeful about the stability of my _unstable_ box.

I’m not much for morals, but I’d say that if there had to be a moral to this story, it would be: fsck regularly. Especially if you’ve just upgraded from _stable_ to _unstable.

#

Helpdesk Systems: Eventum

For the last two years, our IT helpdesk has been “powerered” by Zope’s ‘Tracker’ Product. I laughingly refer to it as ‘powered’ because it’s anything but. Right now, we’ve managed to create an ad-hoc system based around Tracker but at the same which tries to avoid it at every step, because Tracker is just plain nasty.

We’re trying to make things better, so for the past couple of weeks, we’ve been trying out a few different products, such as Footprints (good, fully-featured, very expensive) and Auscomp’s IT Commander (cheap, bizarre feature-set). We still haven’t had success finding something that’s suited to our needs, but we’re still looking.

Since I had nothing better to do all weekend, I went looking for other replacement candidates. I stumbled across [eventum](http://dev.mysql.com/downloads/other/eventum/index.html). Eventum is currently in use by the boys in [MySQL AB](http://www.mysql.com/) to handle their technical support. I liked the look of the screenshots, so I installed it on a linux machine at home and tried it out. Here’s what I learned:

* **Very simple install**
Just unpack the .tar.gz file into a web-accessibly directory on a server with Apache and MySQL
* **Very fast**
It’s doing a lot, but seems to be pulling the data out pretty quick. And the server I’m running it on isn’t beefy.
* **Intuitive workflow**
No faffing about trying to figure out how to do certain things.
* **Powerful report generator**
Provides many different views of your data, which is useful for say, weekly summaries.
* **Multiple projects**
Create a different eventum tracker for different tasks (IT Helpdesk, Mail Server Upgrade Project etc.)
* **Role-based accounts**
Unlike ITCommander, these roles are actually useful and tied into your account, so you’re never confused as to what you can do.
* **Anonymous posting**
No need to sign in to report a problem.
* **Email integration**
Didn’t get this working at home (because.. well.. I really don’t have a mail server set up at home), but this is tied heavily into the issues. You have the option to notify the person who opened the issue at every change (and also change the list of people who get notified)
* **Time tracking**
Complete time-tracking integration for proper project management.
* **Phone call tracking**
There’s an option to update an issue with details of phone calls you’ve made/received regarding this issue. I really like this idea. No more (“Hey, did you ring John Doe about buying that software?”). This is also nicely tied into the time tracking system.
* **Easy to configure/tinker with**
It provides a powerful administration interface, but it’s also written in really simple PHP. I was able to get my head around the code in an hour or so.

Here are the things I didn’t get to configure and play with, but sounded really bloody nifty from the INSTALL file:

* **Reminder System**
The reminder system was designed with the objective as serving as a safe net for issues that need attention.
* **Heartbeat Monitor**
The heartbeat monitor is a feature designed for the administrator that wants to be alerted whenever a common problem in Eventum is detected, like the database server not being available anymore.
* **Command-line interface**
The Eventum command-line interface allows you to access most of the features of the web interface straight from your command shell. From a personal perspective, this means I can easily automate many things without having to write some custom web-scraping script.

Now, it’s not all roses. Here are the problems I’ve noticed:

* **Possible bugs**
When I go to close an issue, it will sometimes not budge, and look like it’s not done anything. But it has, it just hasn’t told me. Similarly, when I put in an anonymous issue, it didn’t move. I hit submit five or six times, then finally checked the issue list, and there were five or six anonymous issues. Although this COULD just be the fact that I’ve configured email integration without a working email setup. I’ll have to check this out.
* **Very developer-centric**
Out of the box, it looks as if it’s geared towards software developers rather than IT helpdesk. However, after an hour or so of changing options in the Admin interface, I managed to make it look and feel more like what we’d need.
* **Open source project**
As an open-source project, you’re pretty much on your own with very little documentation to guide you. Although there is an active [eventum-users mailing list](http://lists.mysql.com/eventum-users), which could be a pretty good source of support for.

#

Mini-hops

We’re switching our network provider. Before we did, we decided to do some speed tests, to find out which was faster. We did this by pinging [ireland.com](http://www.ireland.com). Strangely, we found that our old provider was _faster_, in spite of the fact they’re supposed to be a slower link, with antiquated technology.

So, we dug about a bit more. Using our old provider:

`[johnke@oasis johnke]$ traceroute www.ireland.com
traceroute to www.ireland.com (195.7.33.37), 30 hops max, 38 byte packets
1 www.ireland.com (195.7.33.37) 256.913 ms 4.886 ms 9.690 ms`

No wonder we it was faster. We’re on the same subnet.

Anyway, I was just amused by this. I’ve never seen a one-hop traceroute to a major site before.

#

Wario Ware Inc.

Strip the flashy graphics, DTS surround sound and heavy production costs from most of today’s best-selling video games. Strip them right down to their bare-bones essentials and what are you left with? A truly interesting game will manage to maintain its element of “fun” without these things. Nintendo understand this and this is why, pound for pound, they’re producing the most fun of the next-generation giants.

_Wario Ware Inc._ is a perfect demonstration of this understanding. There are no flashy graphics. The few glimpses of 3D come in the form of static menu screens or non-interactive FMV. What they have produced is stripped-down, bare-bones fun in the form of 200 mini-games. Since most of the first video games were also stripped-down, bare-bones fun, Nintendo have decided to emulate this for their graphical style. Many of the mini-games achieve a visual aesthetic similar to classic Atari games. With a knowing grin, Nintendo acknowledge this, having you play all of these games through an on-screen GameBoy Advance.

In keeping with the faux-GBA interface, this is perfect opportunity gaming. Waiting for a kettle to boil? No problem. Turn on your GameCube and bash about for a couple of minutes – if you can put it down, that is. As well as being opportunity gaming, it’s also a perfect example of just-one-more-go gaming. You fly through the mini-games at such a furious rate that it’s hard to put down. And as your gaming pride kicks in at being beaten by something so simple as glorified “wack-a-mole”, it becomes even more difficult to say no at the “play again” screen.

Also entertaining is watching its effect on non-gamers. I live in a house of non-gamers, and each of my housemates’ reactions to the game has been the same:
“What’s this?”
“Haha, this looks insane”
“Wow, they’re really going for the old-school graphics”
At this point, I usually step out for a cup of coffee or something to keep me twitching like a ten-year old who ate too much sugar (the essential state of being for many of the mini-games) and come back in to find them playing my game.

#

Project Idea no. 5629

Another idea for a project I may or may never get around to completing (or in this case, starting):
* list of configuration files/binaries to ‘check’
* in the case of text-based configuration files, read the file into the database
* nightly, check the files to see if they’ve been modified (MD5sum)
* if the configuration file has been modified, _diff_ it and the file already in the database
* put the output of _diff_ into a database

This would allow an admin quick and easy access to view any changes made to the configuration structure of their machine.

### Advantages over using CVS for monitoring

* automated, no chance of ‘forgetting’ to check a change into CVS
* non-intrusive
* easy to view changes
* easier configuration, easier to roll out onto multiple servers
* “server roles” automatically selecting default packages – eg “Apache web server” would automatically add /etc/apache/httpd.conf, /usr/sbin/httpd, etc.
* all done via a central database, eg
_select samba_config from db_machinename;_

### **update**

I’ve been doing some more thinking about this. Here’s one proposed database structure and what each column should store:
> _db_machinename_
> – file_name _(name of the config file we’re backing up)_
> – config_orig _(config file as it was originally)_
> – date_orig _(date the config file was read in)_
> – config_cur _(config file as it is today)_

> _db_machinename_diffs_
> – file_id _(id of the config file we’re dealing with)_
> – diff_date _(date we took the diff)_
> – diff_text _(text of the actual diff)_

#

LookOut 1.2

It seems Microsoft has made LookOut available as a free download on their site. LookOut was a pretty fancy plugin for Outlook that made it possible to search a giant mailbox in a couple of seconds. Word on the street says that Microsoft bought LookOut to get at the search algorithm, which they intend to use on [msn.com](http://www.msn.com/) to compete with [google](http://www.google.com).

Anyway, you can download LookOut here:
[microsoft.com](http://www.microsoft.com/downloads/details.aspx?FamilyID=09b835ee-16e5-4961-91b8-2200ba31ea37&displaylang=en)

#

404 Cheat

When our CEO came to me and told me that I had two weeks to design and implement a new website, I knew I was in trouble. In the years since our site first went live, it had grown a lot of ‘cruft’, information that was now completely useless. I started by going to our head of marketing and discussing what didn’t need to be transitioned across to the new website.

Although the CEO was happy with the look of the new site and liked the way we’d trimmed it down, he still insisted that all content be available. So I cheated a little.

I moved the old website to another directory (called ‘oldsite’), and set up a new virtualhost for ‘oldsite.ourdomain.com’. I gave this its own 404 page saying “Your page could not be found”. In the new site, I also gave it a custom 404 page – actually, a PHP script, which would redirect to oldsite.ourdomain.com

So, someone requesting a document we hadn’t transitioned to the new site:

  • browser requests http://www.ourdomain.com/somepage.html
  • Server 404’s, goes to custom 404.php page
  • 404.php redirects the request to http://oldsite.ourdomain.com/somepage.html

It’s a simple procedure, but one which saved my neck. In the hopes of saving someone else’s neck, here’s that simple 404.php page

#

Outlook Quotefix

Outlook Quotefix is a standalone module that ‘fixes’ many of the problems people have with Outlook – specifically the way it handles quoting. Goodbye top-quoting! Goodbye shoddy line-breaks!

From their site:

> Outlook-QuoteFix can modify MS Outlook’s message composition windows on-the-fly to allow for correct quoting and to change the appearance of your plain-text replies and forwards in general: move your signature, use compressed indentation, customize your quote header, etc.

#