My Friends, the Floor Plan Drawers

2D Real Estate Floor Plan 3D Real Estate Floor Plan


Well, I’ve been working with Making Plans Ltd for about 4 years now. They’re nice people, honest, and make good employers.
If you’re ever in the market for a Floor Plan for your home, you know, like the ones they have on posters in Real Estate windows, these are your guys, you sketch it, and fax it to them, and they send back pretty looking floor plans,



We made this hard … just to mock you




I had an external hard drive crash last year, and recently, we had an external hard drive case fail in the office. So, I decided to marry the two remaining components in a fit of screws and twisted metal.

Why twisted metal? Because, as I found out, just swapping out hard drives in external enclosures isn’t as easy as swapping drives out of PCs. No.

Each enclosure had it’s collection of pull-here’s, push-there’s, unscrew this, remove this sticker to reveal the screw, and yank at this bit for a while.
They both finally gave up their drives, but, after putting all the bits and pieces together again, I was left with bits and pieces that had fallen or snapped off.

Why can’t these things be easier?

MS Access – the best advice for users is …


I’ve done years of MS Acccess development, for private and government departments. And from a user perspective, there’s always one key bit of advise I give everyone when they get in to trouble.

"Make a mistake, hit Escape’.
"Then hit it again, and again".

You’d be amazed how many problems this solves. So, for any one out there using SAAP NDCA’s Smart, remember, make a mistake, hit escape 🙂

PS, I worked on SMART from Version 3.0 through to 4.1
Good luck to any and all who try to develop for her

Migrating mailboxes


Well, the simplest way, is just to pop3 all of the mail to a mailbox on a hard drive, then just upload it all to an IMAP set up on the new mailbox, very simple.
In fact, even simpler, is if they are both IMAP, and just drag all the mail from one to the other.

.htaccess problem on 1and1 (1&1) managed server and joomla/mambo

Ok, this one took me a while to figure out, after stuffing around with all sorts of .htaccess files, and being certain that mod_rewrite was in fact on, I was ready to give up. I was seeing:

Error 500, server config error and all sorts.
I knew I’d gotten some wordpress blogs running with SEF, so I just grabbed it’s .htaccess file:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress


And, amazingly, it worked.

Let’s hear it for wordpress! ( written on a wordpress blog no less )

Migrating from MySQL 4.1 to MySQL 4.0, fixing the missing AUTO_INCREMENT field error


After buying a 1and1 managed server, and signing up for two years, I discovered that even in the days of MySQL 5.0, these managed servers are set to use MySQL 4.0,
This sucks for alot of reasons, the main one being the pain in the arse it is to migrate other MySQL databases back to 4.0

After stuffing around at the command line using options like
mysqldump -uadmin -p`cat /etc/psa/.psa.shadow` -p –skip-opt –create-options –compatible=mysql40 –add-drop-table –default-character-set=latin1 mydb > db.sql

It turns out that a bug in mysql4.1 screws up the creation of auto_increment when exporting with compatible=mysql40

Basically this means that if I export from mysql4.1 to mysql4.0, I have to manually add the AUTO_INCREMENT field type to each of the primary keys in the table. And since I’ve had alot of databases to move, each with up to 100 tables, I didn’t really fancy the idea.

So, after stuffing around I found a work around.

Export as normal from phpmyAdmin,

Do a find and replace on the SQL
And Replace With:

That is just delete all occurances of: DEFAULT CHARSET=latin1

And replace with: timestamp NOT NULL

This seems to do the trick

Worked for a Joomla on 4.1 to 4.0 database conversion
Worked for Zen Cart 1.2.6 to mysql 4.1 to 4.0
Worked for b2Evolution mysql 4.1 to 4.0 database conversion
Worked for Mambo 5 mysql 4.1 to 4.0 database conversion

MySQL in and around PLESK really useful commands

I’m always having to look up and figure out all this mysql stuff online. So I’m going to save my favourite commands here. I’ll try to include versions where I can…. Stay tuned.


OK, exporting ( dumping from a MySQL database ) in Plesk

mysqldump -uadmin -p`cat /etc/psa/.psa.shadow` –add-drop-table –add-drop-database  –default-character-set=latin1 mydb > db.sql

This bit `cat /etc/psa/.psa.shadow` grabs your PLESK MySQL password.

Add –add-drop-table if you’ll be exporting over an existing database or tables

Add –add-drop-database if you’ll be exporting over an existing database

mydb is the database you want to export from.

db.sql is the file you want to export to.


To import the file in to a database, connect to MySQL on your server

Go to the directory that has your db.sql file that you’re going to be importing

mysql -uadmin -p`cat /etc/psa/.psa.shadow` -p

Then enter the password

If you’re importing in to a new database:
The type in USE mydatabasename
Where mydatabasename is the name of the database you’re writing over

now type source db.sql;

remember to put the semi colon in there,
You should see a whole lot of
Query OK, 1 row affected (0.01 sec)
Lines, which is fine. Just wait it out and your import should complete all by itself.

SQL Server 200(x) useful commands

Now that I use SQL Server all the time, I thought I’d better start recording my "Oh that’s how it’s done, I wish I had that written down somewhere" Commands Moving a database from one machine to another. 1. Create the database on the new machine with the same name 2. Detatch it 3. Run this: use MyDBName

go sp_attach_db ‘MyDBName’,’C:\work\utilico\DB\MyDBName.mdf’,’C:\work\utilico\DB\MyDBName_log.ldf’ go 4. Done

Plesk, really useful commands

Ok, I’ve made a text file of all those tricky commands I use on plesk FC2. Many of them have saved my bacon, or just been really useful

cat /var/log/messages | tail -200
What has the server been up to? This message shows the last 200 lines of the servers log, it’s good to track down all sorts like dns errors and ftp errors.

tail /var/log/messages -f -n 14000 | grep ‘Jun 1′
Show server messages from a certain date ( June 1st )

du -sk*
Disk usage, there’s all sorts of variants, but this one’s me fav
chown -R user:group *
Changes the owner of files recursively

chmod -R 755 *
changes the permissions of files recursively

mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa -e’delete from PMM’
Fixes updater never stopping error

mysqlcheck -o -u admin -p`cat /etc/psa/.psa.shadow` –all-databases
Optimizes all tables

Here’s one for all those people having problems with character sets:
When using MySQL’s UTF-8 character set, besides setting the database character set to UTF-8, you must remember to send SET NAMES ‘utf8′ to MySQL prior to querying or inserting. Forgetting to do will surely cost you a substantial amount of hair, sleep, and sanity.
ps -aux
View all active processes

View processes live

/sbin/service httpd restart
restart apache

/sbin/service mysqld restart
restart mysql

tar -zxvf file.tar.gz
extract from a tar.gz file
Great place to see how to upgrade php and mysql

4psa total backup

Great backuping up tool for plesk. Much better than their scractchy one
Running plesk update from the command line

Debug Spam Assassin
spamassassin -D -lint

Good Resource for SpamAssassin

Update SpamAssassin on Fedora Core 4
yum install spamassassin

To use a proper anti spam setup
remove psa-spamassassin ( rpm -e psa-spamassassin )
yum install spamassassin
install dcc, pyzor and razor (,

Restart Spam Assassin
/etc/init.d/spamassassin restart

Get rid of ‘config: not parsing, administrator setting: pyzor_options –homedir /etc/mail/spamassassin//.pyzor’ messages
mv /var/qmail/mailnames///user_prefs /var/qmail/mailnames///user_prefs_old
then restart plesk

If you get ‘/var/dcc/map is not private’ in the logs.
As root run
chmod 0600 /var/dcc/map

If ftp upload session times out or drops out.
Turn off windows firewall on your computer, or turn off the application gateway service.

View mail logs after upgrading to 8.1
tail /usr/local/psa/var/log/maillog -f -n 2000

/usr/local/psa/admin/bin/modules/watchdog/rkhunter –configfile /usr/local/psa/etc/modules/watchdog/rkhunter.conf –update
force update of rkhunter ( rootkit hunter )

Quickly Install Zend 3.0 and then fix php
cd /usr/local/src
tar -zxf ZendOptimizer-3.0.1-linux-glibc21-i386.tar.gz
cd ZendOptimizer-3.0.1-linux-glibc21-i386

Now just hit enter a few times until it is done…
This guy is on the right track, what you need to do is cut out the [Zend] block of text from your php.ini file:


(usr/local/Zend/etc/php.ini as default) and paste it into a file in the /etc/php.d/ directory, you can name the file anything, i called mine zend.ini.

The problem arises because (like this guy said) ionCube will not allow php to run if theres a similar module loaded before it:

PHP Fatal error: [ionCube Loader] The Loader must appear as the first entry in the php.ini file in Unknown on line 0

and since ionCube is an include (in the php.d directory), and the zend code is pasted directly in the php.ini file, the zend code gets executed first. So as long as you move the zend code after the ionCube code, everything should work just fine… just remember, file includes with regards to php and apache are alphabetical, so if you name your file aaazend.ini it will still error out because it comes before ionCube-loader.ini (or whatever your ionCube file is called).

See what’s in the qmail queue:


Zip all files excluding some, use the -x option
zip -r httpdocs/ -x \*.zip