Log in

Possibly the most boring of all journals

> recent entries
> calendar
> friends
> profile
> previous 20 entries

Wednesday, May 25th, 2016
2:33 pm - Repairing a faulty Homecast HT8000 PVR
My much-loved Homecast HT8000 PVR started misbehaving recently. After a bit of web searching, I found this forum post that exactly described the problem, and led me to the solution, which is to replace a defective capacitor on the power control board.

To help the next electronics hobbyist who encounters this problem, here's a step-by-step guide to how I replaced the capacitor.

Because it can't go without saying, you follow these instructions at your own risk, and I accept no responsibility or liability for any loss or damages to yourself, your Homecast HT8000 or anyone or anything else.

Also, read these instructions in their entirety before you even think about following them. You'll need to get hold of a replacement 10V 3300uF 105° C electrolytic capacitor. I bought a 10-pack from China on eBay for just over AUS$4 (in this mad world, buying 10 was cheaper than buying 1). I also recommend you get a new CR2032 battery to replace the one on the motherboard.

The ProcedureCollapse )

current mood: accomplished

(comment on this)

Friday, November 7th, 2014
2:19 pm - Bulk harvesting of newpaper articles from Trove on MacOS 10.9 or 10.10 using Retailer
Conal Tuohy (@conal_tuohy) presented a session at THATCamp Canberra 2014 on Retailer, an interface tool he's developing to provide the National Library of Australia's Trove service with an Open Archives Initiative Protocol for Metadata Harvesting-compliant interface.

The aim of the session was to get attendees to install Retailer on their laptops and then perform some searches.
It turned out that installing Retailer on the Mac laptops present wasn"t quite as straight-forward as might have been hopedCollapse )

current mood: accomplished

(comment on this)

Friday, November 15th, 2013
12:06 pm - Fun with Firefox and Java Deployment Toolkit plugin
To start with, we're running a 64-bit Windows 7 environment.

I had a complaint from a user that a Java applet they used to run quite happily in Firefox was no longer working.

Looking at their Firefox (v 24) setup, it was complaining about a plugin named "Java Deployment Toolkit" being vulnerable, and it had disabled it. Fine, but there was no sign of the JRE plugin. This was odd in two respects; not only was the JRE installed, it was Java 7 Update 45, a much newer version.

So, about:plugins told me that the Toolkit was located at

I quit Firefox, deleted the DLL and then restarted Firefox.

So, now Firefox complains that "Java Deployment Toolkit 7.0.450.18" is known to be vulnerable, and it has been disabled, but at least the "Java(TM) Platform SE 7 U 45" plugin is listed, and the Java applet will run.

For those who are interested, the new version of the Toolkit plugin is located at
c:\Program Files (x86)\Java\jre7\bin\dtplugin\npDeployJava1.dll

From this, I can only conclude that if Firefox detects the old Toolkit plugin, it doesn't find the newer Java installation. I'm wondering how many of the computers in our managed environment have the old version of the Toolkit plugin left behind to cause problems...

current mood: busy

(comment on this)

Wednesday, August 7th, 2013
10:14 am - Solving a strange problem with Armangil's podcatcher
I use v 3.1.6 of Armangil's podcatcher with a cron job to batch download the podcasts I listen to.

This morning, the output from the cron job reported

/usr/bin/podcatcher:1028:in `<': comparison of Time with nil failed (ArgumentError)

for each of the podcasts it attempted to download, and didn't download anything.

Something was obviously wrong. Here is an example of my call to podcatcher:

podcatcher -d /usr/local/podcasts --size 0 -H 2013.07.01 <URL of podcast RSS feed>

podcatcher is written in Ruby, a language I know nothing about, but a quick look at the relevant section of the code directed me to the votes file. podcatcher creates the votes file in the directory where you tell it to save the download (/usr/local/podcasts in my case).

The votes file looked like this:

ping-probability: 1.0
last-session: 2013-08-07 00:00:07.279195360 +10:00

Lines 1027-1028 of podcatcher look like this:

when 'last-ping'
     @data[key] = value unless @now<value

@now is the time at which podcatcher was invoked, so it was trying to compare a date value it thought should be against last-ping: with the current time. Since last-ping: was blank, it was throwing an error.

I copied the date/time from last-session: into last-ping:, and after that podcatcher was happy. Presumably the previous time I'd run the cron job, last-ping: had somehow ended up being updated with a null value.

I'm happy it was a easy fix, and wasn't the result of a ruby update rendering the code obsolete.

current mood: working

(comment on this)

Monday, August 5th, 2013
3:03 pm - Restoring hidden folders in Time Machine on MacOS X
We had a user who tried to set up iCloud address book syncing between their MacOS X laptop and their iPad. As you can imagine, they ended up syncing an empty address book (from iCloud), down onto their Mac. Fun fun...

Fortunately we had good Time Machine backups. Unfortunately the address book is in

~/Library/Application Support/AddressBook

and ~/Library is a hidden folder, and so doesn't show up in Time Machine.

The solution was:

  1. Log on as the administrator

  2. Open a Terminal

  3. Enter defaults write com.apple.Finder AppleShowAllFiles true and hit return.

  4. Enter killall Finder and hit return.

The invisible folders are now visible in the Finder and in Time Machine. After restoring the appropriate folder, I entered the following two lines into the Terminal to turn off display of hidden files/folders:
defaults write com.apple.Finder AppleShowAllFiles false
killall Finder
I did this as the administrator because it turns out that if you make ~/Library visible as the user, Time Machine can't open it to allow the user to perform their own restore. This is almost certainly a good thing :-)

current mood: wibble

(comment on this)

Monday, July 15th, 2013
2:44 pm - Setting an environment variable from a value in an AD field using PowerShell
To cut a long story short; we store a value in the employeeid field in the AD, and needed to copy it into an environment variable so that various less-than-magic things could access it easily.

We're running a Windows Server 2008 R2 domain, with Windows 7 64-bit clients. There are various command-line tools that can extract this information from the AD, for example:
dsquery * -filter "(samaccountname=%username%)" -attr employeeid -l

does the job quite nicely. However there is no easy way to take the output from that command and attach it to a permanent environment variable. If you put it into a logon script, the variable only lasts as long as the script runs.

After a great deal of web searching, and putting together information from a number of sites, it turned out to be quite easy to get PowerShell to do the job. But since I didn't find this exact sequence of steps when I went looking, here it is to prevent the next person struggling with the vagaries of PowerShell.

Use group policy preferences to run the following PowerShell when the user logs on, and it will set the environment variable permanently (it will survive a logout or a reboot, for example).

The Powershell script

$employeeid=(get-aduser -f {samaccountname -eq $samaccountname} -properties "employeeid").EmployeeID.ToString()
[Environment]::SetEnvironmentVariable("EMPLOYEE_ID", $employeeid, "User")

current mood: accomplished

(comment on this)

Friday, May 10th, 2013
2:28 pm - "Fun" with the HTML5 <input> pattern attribute
We've been using the following code in a web form to ensure that a user's fax extension number is entered correctly (the initial value is populated by information from an LDAP lookup):

<input type="text" name="facsimiletelephonenumber"
value="<?php print $userData[facsimiletelephonenumber]; ?>"
size="5" maxlength="5" pattern="[5|7]{1}[0-9]{4}"
title="fax no. must be a 5-digit extension starting with 5 or 7" />

The pattern attribute is a wonderful addition to HTML5. It lets you use regular expressions (not a full implementation, but workable) to perform client-side verification of values in (some) form values.

In modern Firefox and Chrome, this is works a treat; if the user enters something that doesn't match a valid extension number, the browser outlines the text box in red, and won't let the user submit the form until they have corrected the entry. If you hit the "submit" button with an incorrect value in the text field, both browsers pop up a little balloon saying "Please match the requested format" along with the text of the "title" attribute.

This is fantastic. But then we get to Internet Explorer...

No version of IE prior to v.10 supports the pattern attribute (understandable), but with the advent of IE10 for Windows 7 I've been doing some testing before we push it out to all our users. The result...

IE10 supports the pattern attribute in a completely different way. It doesn't prevent the user from submitting a form with incorrect information. It would appear, instead, that it looks at the incorrect value when the "submit" button is clicked, says "that doesn't match the pattern", and discards the value in the field. So instead of preventing progress until the value is corrected (the behaviour I want), it passes an empty string through to the web server.


current mood: annoyed

(comment on this)

Thursday, August 30th, 2012
9:21 am - Enforcing new settings in Firefox 15
In a previous post I detailed how to enforce some settings in Firefox (it was version 10 at the time). We're about to push out Firefox 15 to our users, and have determined there are a few more settings we need to enforce.

lockPref("privacy.donottrackheader.enabled", true); - turns on the "do-no-track" header.

lockPref("toolkit.telemetry.enabled", false);
lockPref("toolkit.telemetry.prompted", 2); 
lockPref("toolkit.telemetry.rejected", true);

The above three lines stop Firefox asking about sending usage stats back to Mozilla, and turns off sending of such stats.

lockPref("browser.newtabpage.enabled", false); - forces new tabs to open up as blank tabs, rather than showing the user's most commonly accessed pages.

(comment on this)

Wednesday, February 22nd, 2012
3:52 pm - Enforcing settings in Mozilla Thunderbird
We needed to enforce some default, non-changeable settings for our Mozilla Thunderbird users. The procedure turned (surprise!) to be somewhat similar to the procedure we used for Firefox.

The procedureCollapse )

current mood: sleepy

(comment on this)

Friday, September 30th, 2011
4:53 pm - Enforcing other settings in Mozilla Firefox for Windows
In my previous post I outlined how to enforce a default home page on Mozilla Firefox.
We actually take advantage of that method to enforce a number of other settings, as detailed below.
Other settings you might like to enforceCollapse )

(comment on this)

2:58 pm - Enforcing a non-changeable home-page in Mozilla Firefox for Windows
We needed to enforce a default, non-changeable home page for all of our Internet Explorer and Mozilla Firefox users. For IE it was quite easy to enforce via group policy. Firefox proved a bit more complicated.
The procedureCollapse )

(comment on this)

Wednesday, September 28th, 2011
2:27 pm - Stopping Firefox 7 from hiding "http://" at start of URLs
Firefox 7.0 has been released, and as the release notes put it, "The 'http://' URL prefix is now hidden by default".

If, like all sensible people, you want to see the full URL, you need to go to


and change the value of


from the default value true to false.

Oh, and if you want to stop firefox from doing that silly "turn all of the URL gray except for the primary domain name" thing it does (introduced in FF 6, another bad idea copied from Chrome), change the value of


from the default value true to false.

current mood: annoyed

(comment on this)

Monday, January 24th, 2011
12:27 pm - Stopping Firefox and Thunderbird from remembering printer settings
One of the most annoying things about Firefox and Thunderbird is they way they always remember the last printer you used, and default to using that printer, no matter what your system default printer is. Thankfully, there is a way to turn off this behaviour, at least in the latest versions of both packages.

To turn of the behaviour in Firefox:

  1. Type about:config in the address bar. If you haven't done this before, you'll have to navigate your way past a message warning you about the dangers of playing with the config settings.

  2. When the list of configuration options comes up, type print.save" in the filter box.

  3. The list of configuration options should be reduced to one: print.save_print_settings. It will be set to true

  4. Double-click on print.save_print_settings to set it to false.

  5. Restart Firefox.

To turn of the behaviour in Thunderbird:

  1. Choose Options... from the Tools menu.

  2. When the Options dialog box appears, click on the Advanced icon (a toothed wheel) in the upper-right, and then on the General tab that appears below the row of icons.

  3. Click on the Config Editor... button. If you haven't done this before, you'll have to navigate your way past a message warning you about the dangers of playing with the config settings.

  4. When the list of configuration options comes up, type print.save" in the filter box.

  5. The list of configuration options should be reduced to one: print.save_print_settings. It will be set to true

  6. Double-click on print.save_print_settings to set it to false.

  7. Close the config editor window.

  8. Click on the "OK" button on the Options dialog box to close it.

  9. Restart Thunderbird.

current mood: amazed

(comment on this)

Thursday, July 2nd, 2009
3:15 pm - Defining global printer presets for all users on a MacOS X computer
Note: All references to "MacOS X" in the following apply to Leopard (MacOS 10.5) and Tiger (MacOS 10.4). I haven't needed to investigate how the earlier versions did things.

As part of the implementation of our new unified printing and copying system, I needed to find a way to enforce some printing defaults on the various printer queues. On the Windows side this was relatively easy; settings assigned to the queues on the print server are inherited by all users on the domain.

MacOS X does things a bit differently. One of the things I like about Mac printing is that users can create printer "presets" that are printer-independent. You start with the default "Standard" preset, make the changes you want (eg duplex printing, forced B&W output etc), and then save the new profile under a name of your choice. You can use these profiles with any of your printers, and the Mac quietly ignores any of the settings that don't apply to that particular printer (eg duplex printing on a printer that can't duplex).

Each user on the Mac can have their own set of unique presets. Leopard and Tiger store the printer presets in the file


But what if you want to provide a common set of presets to all users on the Mac?
It turns out to be relatively simple.Collapse )

current mood: working

(2 comments | comment on this)

2:37 pm - Setting up a unified printing and photocopying system
Over the last 6 weeks or so, I've been setting up a new unified printing and photocopying system for my workplace. It's been an interesting experience, pretty much equal parts joy and pain.

I've learned some interesting new things, in particular a lot about setting up and configuring Canon's UniFlow Output Manager, which I'll put up here in bits and pieces over the next few weeks as time allows. It may help other people in future.

current mood: accomplished

(comment on this)

Thursday, October 30th, 2008
3:55 pm - Enabling MacOS 10.5 computers to connect to samba shares
A while back, I discovered that MacOS 10.5 didn't want to talk to a samba server. I found a solution to the problem on the web, implemented it and promptly forgot it.

Today I needed to connect to a different samba server, and couldn't. Two minutes comparing the smb.conf files reminded me of the solution, which I'm putting here so I don't forget it again:-)

The SMB implementation used by the MacOS 10.5 Finder won't talk to a samba server unless it has a browseable share.

In the past we had browseable shares on our samba servers, but users started demanding access to every share they could see was present, even though these shares had nothing to do with their areas of interest/job. So we haven't had browseable shares for quite a while.

The following share definition provides the browseable share that MacOS 10.5 needs, without exposing anything of relevance.

        path =/dev/null
        comment = browseable share to make leopard happy
        write list = nobody
        writeable = no
        browseable = yes
        guest ok = no
        create mask = 644
        directory mask = 755
        force group = nobody
        force user = nobody

(2 comments | comment on this)

Friday, January 25th, 2008
1:37 pm - Mounting partitions at particular locations in MacOS 10.5 (Leopard) - take 2
OK, the method I mentioned here works, but has a few problems on some 10.5 Macs - the startup time increases by a factor of 10 or so. Quite rude.

I did some web searching ,and it turns out that the autofs system isn't able to resolve the "LABEL=turbidite" part of the /etc/fstab file the first time it tries to access it, and keeps trying until the process that associates the label with the partition finally fires up.

If you use the partition's /dev/disk* path in your /etc/fstab instead, it boots up at the same speed it would if it was all one drive, ie quite quickly.

So if your partition is at /dev/disk0s3, your /etc/fstab file should look like this:

/dev/disk0s3 /Users hfs rw 1 2

current mood: accomplished

(comment on this)

Monday, December 3rd, 2007
4:25 pm - Mounting partitions at particular locations in MacOS 10.5 (Leopard)
Let's assume you have two partitions on your Mac's hard drive:

1) a partition that contains the operating system and installed programs (call it MacHD)
2) a partition that contains all of the users' files, that will be mounted at /Users (call it something unique to the individual computer, eg turbidite)

Under 10.4, you'd map turbidite to /Users by creating /etc/fstab with the following contents:

LABEL=turbidite /Users hfs rw 1 2

then load it into the NetInfo system using the following command:

sudo niload -m fstab / </etc/fstab

and then reboot the computer to make the change take effect.

But niload is gone under 10.5 (Leopard), as is the whole NetInfo directory system. So how do you mount the partition?

It turns out it's incredibly easy. You only have to create the /etc/fstab file and then reboot the machine. The autofs system under 10.5 will actually read /etc/fstab and perform the mounts specified therein.

This is incredibly spooky - you'd almost think you were working with BSD :-)

Amended to add:

There are some problems with this method - a better one is outlined here.

current mood: pleased

(comment on this)

Wednesday, January 17th, 2007
1:43 pm - Removing the hard drive from a G3 iBook
An old G3 iBook at work has decided it no longer wants to boot from the internal hard drive. Booting it in target disc mode or from a CD-ROM was fruitless - the hard drive isn't showing up.

Not good. Well at least it should be relatively easy to replace the drive...

Er, no. Where's the HD in this thing? Apple's web site wasn't particularly helpful, but I eventually found the iFixit Guide to replacing the HD in a G3 iBook. I'm wondering if it's worth removing the 40+ screws...

current mood: annoyed

(comment on this)

Wednesday, December 13th, 2006
3:29 pm - Fun with Classic on a MacOS X computer
The joys of getting Classic to work properly on a Mac running OS X.4...

In far too much detail...Collapse )

current mood: accomplished

(1 comment | comment on this)

> previous 20 entries
> top of page