Synaptics Touchpad with Multi-touch

I stumbled upon this thread when looking for a way to improve Synergy+. Since my Dell XPS m1330 also uses a Synaptics touchpad, curiosity got the best of me and I decided to give it a go.

Alot of forum posts linked back to the HP's FTP site for a file named "sp47815.exe" which contained the v15.0.9.0 drivers. Everytime I tried to download from there, it would give me an empty file.

So I searched online for ages for "sp47815.exe" but found nothing.

I gave up and tried v14.0.3 from Synaptics' official site. Did it work? Nope.

Eventually I stumbled upon this thread on LaptopVideo2Go. Thinking that the latest version would just work, I downloaded the first one I saw and tried it out. Nope, didn't work.

The only one which worked for me was the previously suggested v15.0.9.0 driver.

  • Download the drivers from LaptopVideo2Go.
  • Uninstall your old Synaptic driver.
  • Reboot.
  • Extract and install the v15.0.9.0 driver.
  • Reboot.
  • Once its loaded, it'll ask you to configure to your liking but the majority of the features are already enabled.
  • If you accidently closed it and want to configure it, go to your "Mouse" preferences in the control panel.

Can't get much easier than that!


jQuery: Slide/expand to a certain size

The stock animation effects given in jQuery are pretty good for the majority of tasks.

However, if you want to show an element at a given size and then slide it to full expanded view, you'll need to do a little magic.

This was based on a small snippet by Chris Pollock, but I've made it a bit more flexible so it'll work on a wider number of cases.

  • Allows effect to apply on more than 1 element at a time.
  • Size is passed into the setup call to allow for multiple sizes.
  • Original height is saved as $.data() rather than an attribute.
  • Maintain original trigger HTML to allow for easier styling.
  • Trigger element made optional argument. Sizable element is now the trigger if none specified.
  • Able to specify the open/close labels for the trigger element.


You can download the snippet here.

Sample uses:

The single element examples apply to individual elements.

Applying sizeExpand to groups of elements will work best if the element expands itself. If you wish to expand the each element with its own trigger, you'll have to manage that within a loop.

$(document).ready(function() {
// single elements

$('#sized-element').sizeExpand('50px', { 'trigger': '#trigger-element' });

$('#sized-element').sizeExpand('50px', { 'trigger': '#trigger-element', 'open_label': 'Show me the money!', 'close_label': 'I have no money :(' });

// groups of elements

[ Source ]

Windows Update Failed: Error 8007065B

When trying to install a new language pack on Windows 7, I ran into a strange error. The update had downloaded correctly, but upon installation it gave me this error code.

Thanks for the useful error description...

Quickly checking the free space available gave me a hunch on what was wrong.

With the added overhead of having to create a restore point and install a 130mb+ language pack, it was easily running out of space on C drive.

After freeing up some space, all was well and the update was installed without any issues (luckily without having to download the huge files again).

There are a bunch of tutorials and software suites available online to perform the common tasks (empty recycle bin, remove restore points, clean temporary files, etc), but also check out my other post on uncommon methods of regaining disk space.

How to make an ISO from a CD/DVD

I was asked today how to install something from CD... on a netbook which had no DVD drive. Tricky!

It's tricky tricky tricky tricky tricky!

What you need:

On the computer with a DVD drive:

First you have to create an image of the disc you want to use.

  • Install Daemon Tools (remember to untick all that adware crap)
  • Right click the system tray icon and select "Disc Imaging..."
  • image
  • Choose a place to save it.
  • image
  • Hit start!

On the computer without a DVD drive:

  • Install Daemon Tools. You can start doing this while the other computer is busy creating the image. Remember to untick all that adware crap!
  • Right click the system tray icon and select "Mount'n'Drive Manager"
  • image
  • Copy the file over to this computer using a USB drive or over the network.
  • Right click on the virtual drive and select "Mount"
  • image
  • Select the file you copied.
  • Now you can use the virtual drive like a normal CD/DVD rom.

MSN/WLM: You have 1 invitation

Windows Live Messenger (aka MSN Messenger) kept popping up with an annoying notification saying "You have 1 invitation". Stupid spam bots sending crap to accounts that I never use...


But even though I clear the damn thing, it keeps coming back.

To fix this, close Windows Live Messenger. First open up Windows Explorer and paste in the following path.

(Windows Vista and Windows 7)

%USERPROFILE%\AppData\Local\Microsoft\Windows Live Contacts

(Windows XP)

%USERPROFILE%\Local Settings\Application Data\Microsoft\Windows Live Contacts

Now delete all the files in that folder. You can back it up first if you really wanted to.

Whalla, that is all. The problem should now be fixed.

[ Source ]

WordPress: Redirect user after login or logout

I found it annoying when WordPress took the user to the login page after logging out.

It would be more intuitive if they were taken back to the homepage.

To do that, search for wp_loginout() in your template file and change the first parameter given to the page you want to redirect to.

To redirect back to "", use:

<li><?php wp_loginout('/index.php'); ?></li>

Or "":


This one takes you back to the root path of the site, "":


If you only want to modify logout and not login, then use wp_logout_url(). Conversely you can use wp_login_url() for just the login URL.


If you want to do this using a plugin, you can use the "login_redirect" filter.

add_filter('login_redirect', 'plugin_admin_redirect');
function plugin_admin_redirect($redirect_to, $url_redirect_to = '', $user = null) {
    return '/';

This will redirect you to the homepage after you login.

*edit 21/07/2010*

  • Added plugin/filter method

Windows: Environment Variables for Special Folders

A little note for self reference:



%ALLUSERSPROFILE% Returns the location of the All Users Profile.
%APPDATA% Returns the location where applications store data by default.
%CD% Returns the current directory string.
%CMDCMDLINE% Returns the exact command line used to start the current Cmd.exe.
%CMDEXTVERSION% Returns the version number of the current Command Processor Extensions.
%COMPUTERNAME% Returns the name of the computer.
%COMSPEC% Returns the exact path to the command shell executable.
%DATE% Returns the current date. Uses the same format as the date /t command. Generated by Cmd.exe.

For more information about the date command, see Date.
%ERRORLEVEL% Returns the error code of the most recently used command. A non zero value usually indicates an error.
%HOMEDRIVE% Returns which local workstation drive letter is connected to the user's home directory.

Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups.
%HOMEPATH% Returns the full path of the user's home directory. Set based on the value of the home directory. The user's home directory is specified in Local Users and Groups.
%HOMESHARE% Returns the network path to the user's shared home directory. Set based on the value of the home directory.

The user's home directory is specified in Local Users and Groups.
%LOGONSEVER% Returns the name of the domain controller that validated the current logon session.
%NUMBER_OF_PROCESSORS% Specifies the number of processors installed on the computer.
%OS% Returns the operating system name.

Windows 2000 displays the operating system as Windows_NT.
%PATH% Specifies the search path for executable files.
%PATHEXT% Returns a list of the file extensions that the operating system considers to be executable.
%PROCESSOR_ARCHITECTURE% Returns the chip architecture of the processor. Values: x86, IA64.
%PROCESSOR_IDENTIFIER% Returns a description of the processor.
%PROCESSOR_LEVEL% Returns the model number of the processor installed on the computer.
%PROCESSOR_REVISION% Returns the revision number of the processor.
%PROMPT% Returns the command prompt settings for the current interpreter. Generated by Cmd.exe.
%RANDOM% Returns a random decimal number between 0 and 32767. Generated by Cmd.exe.
%SYSTEMDRIVE% Returns the drive containing the Windows XP root directory (that is, the system root).
%SYSTEMROOT% Returns the location of the Windows XP root directory.
%TEMP% and %TMP% Returns the default temporary directories that are used by applications available to users who are currently logged on.

Some applications require TEMP and others require TMP.
%TIME% Returns the current time. Uses the same format as the time /t command. Generated by Cmd.exe.

For more information about the time command, see Time.
%USERDOMAIN% Returns the name of the domain that contains the user's account.
%USERNAME% Returns the name of the user who is currently logged on.
%USERPROFILE% Returns the location of the profile for the current user.
%WINDIR% Returns the location of the operating system directory.

[ Source ]

Create a bootable USB drive (or CD) with portable Windows

Something I like to use is GetDataBack to retrieve data off harddrives once the partitions are mangled. For a rescue disk, it is extremely useful if it does not modify any data on the damaged harddrive, causing loss of data.

The bootable USB is a great way of testing and keeping your rescue disk up to date without having to waste CDs.



  • Windows XP (x86) installed or on a virtual machine
  • A 32bit copy of either Windows XP with SP2+ or Windows 2003 (does not work with x64) install disk
  • Windows 2003 SP1 (A hefty 329mb package, but you only need 2 files. Apparently its illegal to distribute them individually)

Notes before starting

BartPE will only work for Windows XP (x86). I don't know the nitty gritty details to why this is, but it is stated on the website "Bart's builder does not support Windows 64-bit editions".

For this purpose, I used an old 2gb Kingston Data Traveller which had more than enough space for what I was doing.

Some people use the HP Drive Key Boot Utility to make their USB drive bootable, but I've found the utility to be confusing and the fact it didn't actually test if the USB was bootable was a deal-breaker.

While searching the net for information, a lot of threads discuss what could go wrong but the majority of the time it is the USB drive you're using. Not all USB drives can be used to boot your computer.

USB Boot capability also depends on the type of motherboard you're using. For this tutorial, I'll assume that you're bright enough to know how to set up your BIOS to load off a USB.

You'll figure out if your USB drive/pen is compatible later on when its time to copy the boot image over. For now, we'll prepare the portable executable.

Creating the image

Most of the hard work is done for you by BartPE. Actually, all of the hard work is done already.

On your working copy of Windows XP, extract BartPE into a path without spaces, preferably something like "c:\pebuilder" to avoid problems later on.

Extract the Intel Matrix Storage Manager drivers to "C:\pebuilder\drivers\SCSIAdapter\Intel_IMSM".

Start up "pebuilder.exe" and select the path of your Windows install disk.

Click on "Plugins" to install, enable, configure or disable any extra programs you want on the boot image.

Under "Media Output", select "None" for as we're going to do a little extra work to the image before using it.

Note: if you wish to boot from CD, then just select "Burn to CD/DVD" and you're done. The rest of this tutorial wont be relevant to you.

Settings used. There's not much to it.

Click "Build" to create your boot image. The new files should be spat out to "C:\pebuilder\BartPE". You can now close the program.

Preparing the USB drive

The instructions are from "pe2usb.txt" but a bit more detailed.

Setting up pe2usb:

  • Extract the Windows 2003 Service Pack 1 files.
  • To do that, type in the command prompt:

WindowsServer2003-...whatever.exe -x

  • Select "C:\win2003sp1".
  • Create the folder "C:\pebuilder\srsp1".
  • Copy the file "C:\win2003sp1\i386\setupldr.bin" to "C:\pebuilder\srsp1".
  • In the command prompt, type:

expand c:\win2003sp1\i386\ramdisk.sy_ C:\pebuilder\srsp1\ramdisk.sys

  • Feel free to remove the folder "C:\win2003sp1".

Making the USB bootable:

Open up your command prompt and go to "C:\pebuilder".

If your USB drive has not been made bootable yet (or if you're not sure), now is a good time to back up its contents as you're going to format it.

Assuming that your USB drive is X:, format it by typing in:

pe2usb.cmd -f X:

The pe2usb command will format your drive to make it bootable and check that it is working.

If your USB drive is already bootable, then you can omit the "-f" flag and type:

pe2usb.cmd X:

The command pe2usb will also copy the boot image over to your USB drive. Once complete, your USB drive is now ready for bootin'! A basic image will only be about 155mb in size.


Problem encountered

First problem was that the 2 USB drives I tried were not boot capable. I tried a 4gb NEC drive and a 2gb Sanyo USB pen.

Second was that I forgot to install AHCI drivers for the PC I was working with. That was solved here.

The last problem was this:

The file ramdisk.sys is corrupted. Press any key to continue.

For me, it was because I copied the "ramdisk.sy_" file and renamed it into "ramdisk.sys" without inflating it first. The actual file has to be expanded before you can use it in your image.

That was almost as much fail as this guy.


Useful sources for USB drive booting:

Win2k/WinXP/Vista/Win7: Fix STOP 0x0000007B: INACCESSIBLE_BOOT_DEVICE

This can occur due to various reasons, but normally its because you've changed something recently which Windows doesn't know about yet.

Windows XP and SATA drives with AHCI enabled

Most common scenario I've seen is the use of AHCI in SATA drives (a BIOS setting) causing this to occur. This is because Windows XP is a decade old and does not ship with Intel's AHCI drivers.

Either way you'll need the drivers, which can be found here (x86 or x64).

a) Manual fix

  • Disable AHCI in the BIOS.
  • Install Windows.
  • Manually install the AHCI drivers.
  • After that, you can re-enable AHCI.

b) Slipstream AHCI drivers into Windows setup

If you do not have access to change the BIOS settings, then you can slipstream the AHCI drivers into the Windows XP setup.

For XP, you can use nLite. It's a great little piece of software thats free and comes with a bundle of options.

I've written a guide on how to do this as part of another tutorial. See the section "Slipstreaming Windows XP Installation Disc".

Note: Intel has now renamed AHCI ("Intel Matrix Storage Manager") technology to "Intel Rapid Storage Technology" (Intel RST). A list of other names here.


Using an external USB CD-Rom device to boot/install Windows

After installing Windows with an external drive, you may encounter this problem when rebooting.

See Microsoft KB883114 about how to fix it.


Facebook: How to create a limited profile list

In regards to the recent excerpts leaked from an IM chat with the Facebook founder Mark Zuckerberg, my friend asked me how to change some privacy settings.

k: hey twig
k: do you know how i can get rid of some people on fb?
k: and chuck some onto limited profile adn stuff?
twig*: lol
k: new fb sucks i can't figure out anything
twig*: i know what u mean
twig*: umm lemme look
k: jsut went thru privacy settings. lol
k: i can't seem to figure that one out

To delete "friends"

To delete them, go to their profile page and click "Remove from Friends" on the bottom of the left column (where their picture is, but all the way down).

Just in case you had retard friends like these...

To add them to a limited profile list

However, if you're feeling merciful and don't quite want to delete them yet, you can add them to a "limited profile" list.

Manually excluding people in every post is a pain in the ass, so its easier to just create a list and add/remove people when needed.

This one is tougher to figure out, so some pictures may help.

Part A: Creating the limited profile list

In the top bar, click on "Account" and then "Edit friends".


Now under Lists, click "Friends" and then "Create New List".


Call it "Limited Profile" or something relevant to what you're doing and select the people you want to limit. Once you've selected them all, click on "Create List".

Part 2: Adding the limited profile list to your privacy settings

Calling this a mundane task would be a massive understatement. Facebook has made the settings very fine grained (personally I don't mind), but it takes forever to customise.

The extremities of the precise control given to an average user.

Go to the "Account" button in the top bar again and click on "Privacy Settings".

Now you're going to have to go through each category and fine tune what you want to share to limited friends.

An example of what to do is shown below, but there is no way in hell I'm going to write up what to do for each option. No doubt it'll change soon anyway.

A simplified example of the privacy settings page.

For each piece of information in your profile, the current setting is on the right grey button. Click on it and select "Custom".


Now you can customise your privacy settings. The top half ensures that the chosen people are allowed to view this information.

The lower half ensures that the "limited profile" people cannot view this information.

Under "Hide this from", click on the text field for "These people" and start typing in "Limited Profile". Select the option that appears.

You have no successfully blocked the people on your limited profile list from viewing that information.

Now save it. Rinse and repeat this process for the other 170 or so privacy settings.

Upon completion, its time to celebrate with a Tiger Woods fist pump!

Keep in mind

Photo albums however have a different set of privacy settings and are not affected by these changes. They can be set on a per album basis.

Yeah I know, sorry.


Lotus Notes: Disable SameTime chat tray icon

Even though I've disabled it as much as possible and I'm not even using it, there is no frikken option to remove it from the tray. Peice of shit!

Luckily, you can disable it by editing "plugin_customization.ini" in "C:\Program Files\IBM\Lotus\Notes\framework\rcp".

Add the following line and it should no longer appear in the tray.

[ Source ]

How a 500gb hard drive is actually 465gb...

I just installed a new 500gb harddrive and surprised to find it only contained 465gb. At first I thought it was the partitioning table, but then again it hasn't even been formatted yet.

Then I found a post on Wikipedia on how to calculate the capacity of a hdd. Motherfuckers. Seagate, Western Digital, Samsung, Toshiba and Hatachi and any other fucking harddrive brands past or present, you're all fuckers!

Metric Drive Capacity O/S measurement
Byte 500,000,000,000 B 500,000,000,000 B
Kilobyte 500,000,000 KB 488,281,250 KB
Megabyte 500,000 MB 476,837.16 MB
Gigabyte 500 GB 465.66 GB

By dividing the drive capacity by 1024, we get the actual reported value on the right column.

I'm sure some fat pig with fists made of ham in the marketing department or management decided to sell less space for more profit and everyone joined the bandwagon, making it an industry standard.

The same thing happens with ISP advertisements of the offered speed. They will advertise kilobits per second (1000 bits, kb/s) instead of kilobytes (1024 bytes, KB/s).

A small capitalisation which not many people notice. Yet another way corporations are screwing us over. Fucking fuckers.

Us = guy.
Them = dolphin.

[ Wikipedia, KB/s vs kb/s, Whirlpool Thread ]

A Brief, Incomplete, and Mostly Wrong History of Programming Languages

An absolute cracker of a nerdy post by James Iry, author of One Div Zero.

See it here: A Brief, Incomplete, and Mostly Wrong History of Programming Languages

Couldn't agree more with 1996-2001 =P

Postgre SQL: Sorting text searches by relevance

Something I've been meaning to do for a while now is sort text searches by relevancy. There are alot of examples in the Postgre documentation but I found them a bit vague to understand.

The way I was using it was a little different to the way they were trying to provide examples for, because my table already had a tsvector field which stored the information ready for searching.

This example below is based on the things I've learnt from Haitham Mohammad's blog.

SELECT table.*, ts_rank_cd(tsvector_field, plainto_tsquery('microsoft software')) AS rank
FROM table
WHERE tsvector_field @@ plainto_tsquery('microsoft software')

Assuming that your table has a field called "tsvector_field" which is pre-populated with text search information, the function ts_rank_cd() will create a ranking of the results which allows you to sort by relevancy. The trick is that you have to give it both arguments in your "WHERE" comparison clause in order to make it work.

[ Source ]

Apple MacBook Pro pricing vs a 2 year old Dell XPS m1330

I've never been a fan of Apple products, mainly because of their habit of boxing old technology in a pretty shiny package and selling it at a much higher price.

Just to prove a point, I thought it would be interesting to see how absurdly overpriced Apple products are.

The contestants

In this comparison, I chose my mediocre spec'd 13" Dell XPS m1330 (from June 2008) and pitted it against the latest 13" Apple MacBook Pro (May 2010) with the appropriate options selected to allow the products to match as closely as possible.


The width of this blog doesn't really allow tabular data to be listed that well, so I had to put it all into a picture instead.

apple vs dell
The original spreadsheet can be downloaded from here.

The total price of the Dell XPS was $1,496.28, far less than the asking price of $1,988.01 for the Apple MacBook Pro.

Remembering that this was a moderately spec'd machine from two years ago, you are paying $491.73 more for something that is similar and cheaper. The MacBook Pro doesn't offer much in comparison even though its price will heavily outweigh its worth.

However with all that said, Apple make great looking products which are extraordinarily well presented by their monstrously effective marketing team.


Apple's stocks since the release of the iPod, amazingly immune to the global financial crisis compared to HP, Dell, Lenovo and Nokia.

Their 1,000% growth (yes, one thousand percent) since the release of the first iPod is pretty damn impressive.

I openly welcome any comments to correct me if there is anything wrong in this list.


  • 13" Apple MacBook Pro information from customisation page and Apple Store.
  • 13" Dell XPS m1330 information from my invoice and CNET (for weight and dimensions).
  • Prices are as of June 2008 and May 2010.
  • Google Finance for the stock chart.


03/06/2010 - Multi-touch trackpad on Dell XPS m1330

Copyright © Twig's Tech Tips
Theme by BloggerThemes & TopWPThemes Sponsored by iBlogtoBlog