Table of Contents


Javascript / XML


Vertical Centering


Random Handy Ubuntu Upgrade Stuff

When doing dist-updates be careful. Back up sources.list too. The key is updating apt, dpkg and libc6 before you dist-upgrade. This helps:

sudo sed -i 's/gutsy/hardy/' /etc/apt/sources.list
sudo apt-get update
apt-get install apt dpkg libc6
sudo apt-get dist-upgrade

Linux Firewall


netlogon scripts for samba:


Just recently I moved a Centos 5.2 server from SCSI to SATA with software raid. I needed to update the and initrd files (I know this now...) After a lot of frustration I found these commands:

depmod -ae -F /boot/
mkinitrd -v -f /boot/initrd-2.X.X-whatever.img 2.X.X-whatever

This meant that both ata_piix and raid1 kernel modules were loaded and the SATA drive and software RAID were recognised.



Postgres YUM repos

Backup Postgres

pg_dumpall -U <db_superuser_name> > backup.sql

Postgres On Centos

Change how many mounts fsck waits before it runs on a partition

Show the current maximum.

tune2fs -l | grep Maximal

Set the number of mounts before a scan is done.

tune2fs -c 50 /dev/hda1

Disable IPV6 on CentOS/RHEL

alias ipv6 off
alias net-pf-10 off

Software RAID

Management with mdadm, random bits and pieces...

Had to do this once because the device wasn't created:

mknod /dev/md0 b 9 0

Other stuff:

mdadm --assemble /dev/md0 /dev/sdc1
mdadm --manage --add /dev/md0 /dev/sdd1
mdadm --detail /dev/md0

Creating a mdadm.conf - Sometimes required for booting off a md array.

echo 'DEVICE partitions' > /etc/mdadm.conf
mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf

My Software RAID Adventure

This is my mdadm adventure. It's got to be one of my favorite utilities lately. The situation is this:

I had a server with old scsi drives. I rebuilt the machine with an 80 gig SATA drive with a bigger partition for the root, but the rest the same. I used tar to get everything across with permissions intact. At the same time I created soft mirrors with failed devices. This was while I waited for bigger drives. Heres what I did next.

  1. Partition the two 500s identically to the existing drive, plus a big partition on the end.

  1. Add the new partitions to the mirrors
mdadm --manage --add /dev/md0 /dev/sdb1
mdadm --manage --add /dev/md0 /dev/sdc1

mdadm --manage --add /dev/md1 /dev/sdb2
mdadm --manage --add /dev/md1 /dev/sdc2

mdadm --manage --add /dev/md2 /dev/sdb3
mdadm --manage --add /dev/md2 /dev/sdc3

  1. Grow them out to 3 disk mirrors so they synch all 3 disks.
mdadm -G -n 3 -l 1 /dev/md0
mdadm -G -n 3 -l 1 /dev/md1
mdadm -G -n 3 -l 1 /dev/md2

  1. Wait for the drives to synch up.
watch --interval=1 "cat /proc/mdstat"

  1. Start Failing the original partitions (80 gig sda)
mdadm --manage --fail /dev/md0 /dev/sda1
mdadm --manage --fail /dev/md1 /dev/sda2
mdadm --manage --fail /dev/md2 /dev/sda3

will output something like: 'mdadm: set /dev/sda3 faulty in /dev/md2'

  1. Remove the old partitions from the mirrors.
[[email protected] cacti]# mdadm --manage --remove /dev/md0 /dev/sda1
mdadm --manage --remove /dev/md1 /dev/sda2
mdadm --manage --remove /dev/md2 /dev/sda3

will output something like: 'mdadm: hot removed /dev/sda1'

  1. Grow (Shrink) the mirrors back down to 2 drives.
mdadm -G -n 2 -l 1 /dev/md0
mdadm -G -n 2 -l 1 /dev/md1
mdadm -G -n 2 -l 1 /dev/md2

  1. Create a new big mirror to mount somewhere else with the remaining space.

mdadm --create -l 1 -n 2 /dev/md3 /dev/sdb4 /dev/sdb4

voila 2 fresh drives mirrored live.

LVM over mdraid

LVM over mdraid:

Create your mdraid. md7 in this example.

Create physical volumes from your disks.

pvcreate /dev/md7

Create a Volume Group to slice up into Logical Volumes.

vgcreate VolGroup00 /dev/md7

Create a Logical Volume on the Volume Group. In this case I am using the -l option with a percentage. This command will use all of the free space available on the Volume Group.

lvcreate -l 100%FREE -n LogVol00 VolGroup00

Make a filesystem on the Logical Volume.

mkfs.ext3 /dev/VolGroup00/LogVol00

For extra points: You can extend the available space for Logical Volumes by adding Physical Volumes and then adding those to the Volume Group. From there you can extend Logical Volumes or add more.

Create the Physical Volume.

pvcreate /dev/md8

Extend the Volume Group by adding /dev/md8 to it.

vgextend VolGroup00 /dev/md8

Extend the Logical Volume by the amount of free space available.

lvextend -l +100%FREE /dev/VolGroup00/LogVol00

Scan the filesystem.

e2fsck -f /dev/VolGroup00/LogVol00

Resize the filesystem to fill.

resize2fs /dev/VolGroup00/LogVol00

Excellent docs on the subject:

Remi Repo

Remi Collet, an “official” Fedora developer, has made available a repo of packages

rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

Remember the repo is disabled by default. I wanted PHP 5.2.x and the newer MySQL so I issued the following to only allow certain packages, rather than the whole repo.

yum --enablerepo=remi update php
yum --enablerepo=remi update mysql-server

rsync -azuv -e ssh  [email protected]:remotesource/* localdest/


Command-Line file Verify - compatible with SFV (Simple File Verify)...

Postfix with MySQL Support

cd make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm'

Postfix with Postgres

Works better when you put the include and auxlib arguements in quotes... that was my trouble. It was passing the -DHAS_PHSQL to gcc but not the rest because it just got junked as an extra arguement.

make -f Makefile.init makefiles CCARGS='-DHAS_PGSQL -I/usr/include/pgsql' AUXLIBS='-L/usr/lib -lpq -lz -lm'

Compaq 6710b + FC8

Add kernel arguements:

floppy.allowed_drive_mask=0 clocksource=acpi_pm

Copying the contents of a linux partition preserving permissions

I found this while moving a server from SCSI to SATA. To do this, I mounted the new drive under /mnt. You then do a tar dump of the root and pull it all out again at /mnt. Job done =)

(cd /;tar cf - . ) | (cd /mnt; tar xf - )

Disable Firefox Offline mode

It's really annoying when I have wifi disabled and a LAN cable not plugged in my laptop to have Firefox go into offline mode.

Navigate to about:config in Firefox Set toolkit.networkmanager.disable to true.

Firefox will nolonger use network manager to determine the network status and will stay in 'online' mode all the time.

Copy and Verify

rsync -cav sourcefiles destfiles




Some notes on transparent proxy config (unorganised)

modprobe ip_conntrack
modprobe ip_conntrack_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128



MyTop is your friend.

# yum -y install perl-TermReadKey perl-DBI mytop


Maatkit is also your friend.

Convert all your MyISAM tables to INNODB. I had to do this once on a SugarCRM instance where it was just deadlocking it's self all the time on MyISAM.

mk-find <db_name> --engine MyISAM --exec "ALTER TABLE %D.%N ENGINE=INNODB" --print

Linux Scripts and Handy Bits

Centos 5.2 really slow on fresh install

A bit of an unusual one, hard to spot. Having just built the machine and installed CentOS 5.2 on it, I logged in as root but found it took about 3 seconds for 'root' to come up after I typed it. I immediately thought it was the software RAID I implemented. So I did some reading. It turns out this guy had the same problem. The BIOS by default had the SATA II ports in IDE mode. You can confirm this by looking at your hard drives in /dev. They will be hdx instead of sdx. more here at nixcraft. So, you must set your SATA controller to native mode with AHCI to solve this.

Converting FLV (Flash Video) to MPEG

ffmpeg -i video.flv -ab 56 -ar 22050 -b 500  -s 320x240 test.mpg

Web Permissions

This is my little permissions fix script. Its great for folders that apache serves from.

Just remember to change permissions on config files and sensitive stuff later on.

if "$1" == ""
echo "Fix Web Permissions Script - Tim 10/09/2007"
echo "Recursively changes permissions on folders 775 and files 664"
echo "Usage: fixperms <user:group> <folder>"
chown -R $1 $2
find $2 \( -type d -execdir chmod 775 '{}' + \) , \( -type f -execdir chmod 664 '{}' + \)

Continuous Tail Script

This is my continuous tail script. It's good to have running on another screen while you are working on PHP code. You can ct the apache error_log and watch the log as the page is accessed. Streamlines the whole debugging thing.

if "$1" == ""
echo "Continuous Tail Script (50 Lines, 5s Interval). Tim 10/09/2007"
echo "Usage: ct <file>"
tail -n 50 -s 5 -f $1

Searching and Grepping

Find empty folders / find and delete empty folders

find . -type d -empty

find . -type d -empty | while read dir; do rm -rf "$dir"; done

Find files based on creation date

Find based on date

touch -d "21 feb 2008 12:14:00" datefile
find . -newer datefile

Find based on creation between two dates

touch -amt 200906260000 /tmp/ref1
touch -amt 200906262359 /tmp/ref2
find / -type f -newer /tmp/ref1 -a ! -newer /tmp/ref2

Not finding files ?!? - Exclude criteria from final result

It makes perfect sense! Find everything except stuff that matches the condition.

find . -type f -not -iname "*.jpg"

Recursive Diff that skips SVN crap folders

This is great to compare two different instances of something checked out of subversion.

diff -rq <folder1> <folder2> | grep -v .svn

One line Seach and Destroy

This is great for stripping out all those crappy thumbs.db files windows and ACDSee leave behind in a folder.

find -type f -name "*.db" | while read file; do rm "$file"; done

One Line Search and Replace

find . -type f -exec sed -i 's/<find>/<replace with>/g' {} \;

Rename Directories for Saved Web Pages

find . -type d -name \*_files | while read dir; do mv "$dir" "`echo $dir | sed -e 's/_files//g'`"; done

One Line Search and Replace (Entire Line)

find . -type f -exec sed -i "/<pattern>/c\\<new line to use>"  {} \; 

Recursive Grep

This script is bloody excellent. It's the most handy script I've got at the moment as I've been doing some maintenance on an old OSCommerce installation.

Awesome recursive text search. Originally from It's called regrep 2.0

$string = join " ", @ARGV; # ugly hack; there must be a better way
unless ($string) {
$error = "Usage: regrep [string]\nRecursively searches all files ";
$error .= "in current directory for [string]\n";
print $error;
exit 1;

# Ideally, we'd parse the arguments better.
#$directory = shift @ARGV;
unless ($directory) { $directory = '.'; }

@grepOutput = `egrep -rn --color=always "$string" $directory`;

for $line (@grepOutput) {
if ($line =~ /^BINARY.*/) {
 ; # do nothing
} elsif ($line =~ /^([^:]*)(:)([^:]*)(:)(.*)/) {
print "\033[1;34m";
print $1;
print "\033[0m";
print $2;
print "\033[1;36m";
print $3;
print "\033[0m";
print $4;
print $5;
print $6;
print "\n";

Database Stuff

Neat round to 0.25

SELECT ROUND( target/25.0, 2) * 25

IPTables Stuff

Block an IP

iptables -A INPUT -s -j DROP

Block an IP Range

I was getting a lot of dictionary attacks from PCs in So I just blocked their whole subnet.

iptables -A INPUT -m iprange --src-range -j DROP

Lots of Pakistan, dictionary attacks again. Same method. They're -

iptables -A INPUT -m iprange --src-range -j DROP

Quickly Locate Invalid Users

cat /var/log/secure | grep "Invalid user" | gawk '{print $10}' | sort -u

Whois From list of IPs from secure log (Work in Progress)

cat /var/log/secure | grep "Invalid user" | gawk '{print $10}' | sort -u | sort | while read line; do echo; echo "$line:"; whois $line | grep -e inetnum -e desc; done > ips.txt

Output like this:
inetnum: -
descr: CNC Group ShangHai province network
descr: China Network Communications Group Corporation
descr: No.156,Fu-Xing-Men-Nei Street,
descr: Beijing 100031
descr: CNC Group CHINA169 Shanghai Province Network


Once I import my old blog + articles the mods will be back in here.



Connect Printer Shares on Command Line

@echo off
rundll32 printui.dll,PrintUIEntry /ga /in /q /n "\\%server%\1stShare"
rundll32 printui.dll,PrintUIEntry /ga /in /q /n "\\%server%\2ndShare"
rundll32 printui.dll,PrintUIEntry /ga /in /q /n "\\%server%\3rdShare"

Recover 2003 AD Administrator Password

After lots of reading I have worked out this is a two stage process. First you need to obtain or break the local administrator password, you then have to change the AD Administrator password from there.

Phase II


Allow viewing of CHM over LAN

Save this in a .reg file to import it into the registry.


Disable Automatic Reboot (XP)


Printer Stuff

Fiber, LAN and Broadband

SNMP Bits and Pieces

List of Interfaces (names):

snmpwalk -c public -v 1 <host or IP> -On | grep . | grep STRING

Billion 7300G Interfaces:

. = STRING: lo
. = STRING: teql0
. = STRING: imq0
. = STRING: imq1
. = STRING: eth0
. = STRING: ra0
. = STRING: br0
. = STRING: ppp0

Cisco 29XX Switches:

CISCO 2924 Interface Speed ISO bps. Interface In Octets Interface Out Octets Interface Description

Billion 7402 MIBs:

Remember the SNR and Attenuation are stored as integers, so you must divide them by 10 to get the actual numbers in dB. ie. 54.3dB is stored as 543.

. Sync Up
. Sync Down

. SNR Down (INT /10 for dB)
. SNR Up (INT /10 for dB)

. Attenuation Down (INT /10 for dB)
. Attenuation Up (INT /10 for dB)

. Wireless TX Packets
. Wireless RX Packets

. Wireless RX Octets
. Wireless TX Octets

Billion 7300G Reboot URL

Restart the 7300G with Current Settings. Replace a.b.c.d with it's IP address or hostname. This example also uses the default user/password of admin/admin.

wget --post-data "factory=0" --http-user="admin" --http-password="admin" http://a.b.c.d/goform/updatecomplete

Rough ADSL Line Attenuation/SNR Grading

I found this on the Whirlpool Forums ages ago and its been hanging around in a text file. So I'm putting it here now. I'm not sure which user contributed it though, it's been quoted so many times on there.

Noise Margin (AKA Signal to Noise Margin or Signal to Noise Ratio Margin)

Relative strength of the DSL signal to Noise ratio. 6dB is the lowest dB manufactures specify for modem to be able to synch. In some instances interleaving can help raise the noise margin to an acceptable level. The higher the number the better for this measurement.

Line Attenuation

Measure of how much the signal has degraded between the DSLAM and the modem. Maximum signal loss recommendation is usually about 60dB. The lower the dB the better for this measurement.

GIMP Script-Fu

Public Domain Clipart etc.


CPAN Stuff

perl -MCPAN -e shell

install Blah::Whatever

Talking to the LPT Port in Perl


#!/usr/bin/perl -w

# Not necessary, this just makes you write cleaner
# code than you probably normally would.
use strict;

# Load the Parallel Port Module.
use Device::ParallelPort;

# Set up your parallel port object and tell it what
# driver to use. Note, I used 'linux' as the driver.
# the documentation will explain how to use the
# other drivers.
my $parport = Device::ParallelPort->new('linux');

# Now that you have $parport, you can turn your # data bits on and off which will send +5VDC down # each wires.

# This line tells it to set data bit 0 on.
$parport->set_bit(0, 1);
# Now there is +5VDC going down the wire.

# This line tells it to set data bit 0 off.
$parport->set_bit(0, 0);
# Now there is 0VDC going down the wire.

# Note that the first argument is the data bit, and
# the second number is either 1 for on, or 0 for
# off. the data bits range from 0 to 7 (8 total).
# With that in mind, the following eight lines will
# turn on all 8 data bits.
$parport->set_bit(0, 1);
$parport->set_bit(1, 1);
$parport->set_bit(2, 1);
$parport->set_bit(3, 1);
$parport->set_bit(4, 1);
$parport->set_bit(5, 1);
$parport->set_bit(6, 1);
$parport->set_bit(7, 1);

# One more important line of code that isn't
# directly related to the parallel port, but can be
# very handy none the less, is how to make a
# pause for less than a second. Traditionally, you
# would use the 'sleep(1)' function to sleep for any
# amount of seconds. However, in controlling
# devices or whatnot you may only want to pause
# for a split second. That's where the select
# statement comes in.
select(undef,undef,undef, .25);

# That line would pause for .25 seconds. So, for
# example, if you want to pause for three and a
# half seconds (3.5) you would type.
select(undef,undef,undef, 3.5);


QT4/PyQt/QScintilla/Eric4 Stuff

I have decided to learn Python again. I did try a while back but it kind of faded to nothing. The only little app I've got to show for that is an electronics calculator that does basic P I R E type calculations. It was a cool little fun app though. Not terribly complex. A few dropdowns, some text boxes, some basic signal/slot stuff. etc. etc.

Back to my new Python Adventure...

I just used yum to install Qt4, PyQt4 and their -devel packages. I then headed over to to get the QScintilla2 source.

I initially had trouble building QScintilla2 for Qt4. I was getting all sorts of odd missing files type errors and undeclared data types. Looking closer at the g++ command line that qmake created in the Makefile, I noticed that it was still using qt 3.3 includes. Oops! I then worked out that the qmake I was running was actually the one that belongs to Qt3. Oops Again! I managed to create a valid Makefile once I used qmake-qt4 or referenced the qmake in /usr/lib/qt4/bin directly.

There was a small hiccup trying to get the sample "application" to compile. I forgot to do a `make install` once QScintilla was compiled.

The other thing was the QScintilla install has a number of steps. I think I saw one website that actually listed all the stuff you had to do together in one place. So now it's here too. If it was in the doco, it was hidden well or too disjointed for me to find quickly.

cd Qt4
make install

cd ..

cd designer-Qt4

cd ..

cd Python
make install

pyParallel Module for LPT port IO

>>> import parallel
>>> p = parallel.Parallel()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "parallel/", line 188, in __init__
File "parallel/", line 215, in PPCLAIM
fcntl.ioctl(self._fd, PPCLAIM) Style
IOError: [Errno 6] No such device or address

I have read some posts and articles that have recommended you blacklist the lp kernel module so you don't have to do it all the time - which is fine if you're not using the port to print!

Some good info here:

Some sample code (should turn the first 3 bits on):

import parallel
p = parallel.Parallel()

Django on CentOS 5 - Python2.6 etc.

Microsoft Dynamics RMS Install Notes

Error = [Microsoft][SQL Native Client]String data, right truncation

ACCPAC Plus DOS -> Microsoft Dynamics

I'm still learning about MS SQL Server at the moment, so I'm kind of plodding along and learning as I go. Here are some notes for what I'm currently working on.

  1. Item Data from ACCPAC
  2. ACCPAC Item Data Fields
  3. Clean out excess spaces.
  4. Importing using BCP


Random EOTL MUD stuff

A few months ago my character got trashed because of inactivity. I forgot to do my regular login =(

I used to spend hours and hours online on this MUD! Back when I was on dialup...

Just recently I found a folder full of text files - all my EOTL notes! So I've put some down here, not the spoiler ones though, Quest solutions and stuff like that...

Eternal City


P-t-t-t-t-e SL PCA
| | | |
t-BS BB-e-s-s-s--s--s---o-?
| | | | |
t GC e AI-l EI--o
| | | |
SN-t AAC e-G l-a-a-a o-?
| | | | | |
 ?-l-l-l-l-*-l-l-l EB-a o-V
| | | | | | |
TA g L e A-i a C-o
| | | | |
g-e-e-e i-o--o--o---o-?
| | |
g-TE i a
| | |
g i-a--a--a
| |
| |

Roads Points of Interest
===== ==================
a: Dark Alley *: Heart of E.C.
d: Dimension Drive A: Arena
e: Eternal Way AAC: A&A Clothiers
g: Glass Way AI: Anarchy Interdim.
i: Infinity Way BB: Bed & Breakfast
l: Limbo Lane BS: Dr.F's Body Shop
o: Old Road C: The Grind
s: Silver Street DTR: Dave's Throne Room
t: Tanelorn Road EB: Eight Ball
?: city exit EI: Everything Inc.
G: Public Garage
GC: EC Gold Cross
L: E.C. Library
O: Oracle
P: Posh Perko Pit
PCA: Paranoid C&A
SL: Eternal S&L
SN: Snak-O-Rama
TA: Temple of Ages
TE: Temple of Eternity
V: Videopolis

Handy Places

5w 2d 5n pay guard 3n w of heart - spirit
5w 2d 4s 3e s e 4s e s e 3s w 2s 2e - fem ogres
9 e 6s w s s u should find about 9 sailors

Crimson City:
w, s, read book, 5s, 2w

Brin's hotel
2e, 5s, 9e, n, e

Rangers - check for wtfs to get the correct numbers
5w, 2d, 2e, 5s, 3e, climb tree

Ice Castle
E, swim, 5w, 2n, 2w, 3n, w, 3n

Gnomeland Locker
5w, 2d, 6s, 6w, 2s

To The altar:
2e, 2s, 6e, 2u, put hands on altar, say kill

- Mining Town:
s, w, 4n, 3w
nw = Javier
s, u = Sam’s Hotel
w = bank
n = Bob’s Shop
e = into forrest
5w, 2d, 5n, pay guard, 3n, all e, 2s, 2e, 4s, climb wall, hole, d, n

Purple shop:
e, swim, 4w, 4s, 4e, ne, se, 2e, buy purple chalice

Middle Earth:
2e, 5s, 12e, n, open door, d, look into orb, 5d, out

- Forresters Guild from here:
5e, 7s

Snotling village:
2s, e, s

TV Land:
3n, 6e, 3s, e, s
Smurfland: change channel to 1, watch tv, s , 2w

Oak - n, w, w

Startrek Land: change channel to 2, watch tv

Football Quest: change channel to 3, watch tv

e, swim, 2n, w
From here
Orc Village:
n, 14w
Village of the Goblins:
n, 9w, nw, n
Bard Castle
d, 3w, 5s, 4w, 6n
Draconian Homelands:
8n, nw, ne, nw, w, nw, 2s, d, 2w, gate
Goblin Encampment:
8n, u, cave, use orb, 2e, 2s, enter encampment

Franks Bodyshop:
4w, 3n, e, regenerate

4w, 2s, raise %1

w, s, read book

]p list - to read posts

The store in solace, which is from heart
e, swim, 2n, w, all north, u, cave, use orb, 2n, 2w, enter solace (your now in solace), all north, west.
There should be a dwarven beer seller there (unless someone killed him) who sells both barrels and boxs(of dwarven ale ie hp healing.)

The way out of acidland

Fighters Guild:
2e, 2s, e, n, 2d

Berzerkas Guild:
1w, s, read book, 6s, 2w, 2s, w

Getting the BSB (Black Steel Blade) :)

3w s enter grating, 3e crawl crack, climb wall, kill krvok


Ride horse, find door, open door, 2s, 2e, s, grab m, w, window, e, n, climb in vent, pull yellow rope

Getting out of acid land

go 8s,e,s,e,2s,w,s,e,s,enter


VMWare Workstation/Player - Speeding it up in Linux

I saw this recently and its an excellent idea.


Step 1: Edit VM config file

The file is usually located at /etc/vmware/config
Edit the file and make sure you have this line in it

tmpDirectory = “/dev/shm”

Step 2: Mounting /dev/shm

Edit /etc/fstab and add the following line.

tmpfs /dev/shm tmpfs defaults,size=1G,noatime 0 0

I’m getting really good results by setting the size of the partition as the same size of the ram I have.

Step 3: Mount and Run

Now mount the partition and give it shot.

VMWare Workstation 6.5

Resizign a disk: vmware-vdiskmanager -x 20GB "/path/to/diskfile.vmdk"


Taken from Wikipedia

Chips and modules

Standard name Memory clock Cycle time I/O bus clock Data transfers per second Module name Peak transfer rate
DDR-200 100 MHz 10 ns 100 MHz 200 Million PC-1600 1600 MB/s
DDR-266 133 MHz 7.5 ns 133 MHz 266 Million PC-2100 2100 MB/s
DDR-333 166 MHz 6 ns 166 MHz 333 Million PC-2700 2700 MB/s
DDR-400 200 MHz 5 ns 200 MHz 400 Million PC-3200 3200 MB/s
DDR2-400 100 MHz 10 ns 200 MHz 400 Million PC2-3200 3200 MB/s
DDR2-533 133 MHz 7.5 ns 266 MHz 533 Million PC2-4200
4266 MB/s
DDR2-667 166 MHz 6 ns 333 MHz 667 Million PC2-5300
5333 MB/s
DDR2-800 200 MHz 5 ns 400 MHz 800 Million PC2-6400 6400 MB/s
DDR2-1066 266 MHz 3.75 ns 533 MHz 1066 Million PC2-8500
8533 MB/s
DDR3-800 100 MHz 10 ns 400 MHz 800 MT/s PC3-6400 6400 MB/s
DDR3-1066 133 MHz 7.5 ns 533 MHz 1066 MT/s PC3-8500 8533 MB/s
DDR3-1333 166 MHz 6 ns 667 MHz 1333 MT/s PC3-10600 10667 MB/s
DDR3-1600 200 MHz 5 ns 800 MHz 1600 MT/s PC3-12800 12800 MB/s


Novell 4.11 Notes

I've recently set up a DOS 6.22 virtual machine. I wanted it primarily for use with our archaic accounting package ACCPAC 6.5 for DOS.

dos=high, umb


map r j:=SERVER/data:accpac
map r h:=SERVER/data/users:user


Open containing folder

Firefox or other browsers choose to open the folder using Nautilis on kubuntu. This is annoying. Edit /usr/share/applications/defaults.list. Find:


Relace with:


Other Misc

Hiren's Boot CD

Hiren's Boot Disk on USB Flash 8 port SATA controller

Benchmark Stuff h2benchw

Financial Stuff


Old Articles