Av rating:
Total votes: 88
Total comments: 28


Phil Factor
The Computer that Swore
13 November 2007

Database Developers occasionally get crazy ideas into their heads. I should know; I've had a few completely loopy thoughts that I've pursued to destruction. The one that still makes me wince is the time when I caused a production server to swear at the customers and insult them.

To understand what happened, I'll have to explain my thinking. Ordinary people have great difficulty in remembering numbers, even in the short-term.. Computer people find this hard to appreciate, and often insist that end-users must remember them so as to identify themselves, their bank accounts or their invoices. These numbers often end up being written around the edge of the monitor, or on bits of paper around the desk, which rather defeats the object. Errors abound. On websites, there was a time when we tried giving out numbers that represented the primary key for a customer, but we've all now abandoned that idea as being hopeless, and now use the email address to provide a unique ID for visitors.

People can remember words far more easily than numbers and it occurred to me that, whenever we wanted customers to remember an ID, we ought to translate it into a memorable nonsense-word, and give them that instead.

My idea was to create a program that would translate numbers into words, and vice versa. It meant that, instead of a number, you could give someone a nonsense word, rather like the name of an alien space-traveller in a Science-Fiction film, which they found they could remember. When it was fed back through the routine, it produced the original number. Genuis!

As it happens, it wasn't such a good idea after all, but we'll come to that in due course.

A base-245 numbering system

All you need to do is to create a table with the main consonant/vowel combinations of most languages:

CREATE TABLE [dbo].[Syllables] (
  
[TheIndex] [int] IDENTITY (1, 1) NOT NULL ,
  
[Syllable] [varchar] (4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO

Then, a simple stored procedure can be written that stocks it:

CREATE PROCEDURE CreateSyllableTable
AS

DECLARE @Possibilities VARCHAR(255)
SELECT @Possibilities='B C D F G H J K L M N P R S T V W Z SCSKKNSNSPSTBLCLFLGLPLSLBRCRDRFRGRPRTRVRSHSMGHCHPHRHWHBWCWSWTW'
DECLARE @ii INT
DECLARE @jj INT
DECLARE @iiMax INT
DECLARE @Consonants VARCHAR(2)
DECLARE @Vowel VARCHAR(2)
SELECT @ii=1, @iiMax=DATALENGTH(@possibilities)
WHILE @ii<=@iiMax
  
BEGIN
  
SELECT @Consonants=RTRIM(SUBSTRING(@Possibilities,@ii,2))
  
SELECT @jj=1
  
WHILE @jj<=5
      
BEGIN
      
SELECT @Vowel=SUBSTRING('AEIOU',@jj,1)
      
INSERT INTO Syllables(Syllable)
          
SELECT @consonants+@Vowel
      
SELECT @jj=@jj+1
      
END
  
SELECT @ii=@ii+2
  
END

Execute this stored procedure so as to fill the Syllable table. The result is a list of around 245 vowel/consonant combinations:

BA, BE, BI, BO, BU, CA, CE, CI, CO, CU, DA, DE, DI, DO, DU, FA, FE, FI, FO, FU, GA, GE, GI, GO, GU, HA, HE, HI, HO, HU, JA, JE, JI, JO, JU, KA, KE, KI, KO, KU, LA, LE, LI, LO, LU, MA, ME, MI, MO, MU, NA, NE, NI, NO, NU, PA, PE, PI, PO, PU, RA, RE, RI, RO, RU, SA, SE, SI, SO, SU, TA, TE, TI, TO, TU, VA, VE, VI, VO, VU, WA, WE, WI, WO, WU, ZA, ZE, ZI, ZO, ZU, SCA, SCE, SCI, SCO, SCU, SKA, SKE, SKI, SKO, SKU, KNA, KNE, KNI, KNO, KNU, SNA, SNE, SNI, SNO, SNU, SPA, SPE, SPI, SPO, SPU, STA, STE, STI, STO, STU, BLA, BLE, BLI, BLO, BLU, CLA, CLE, CLI, CLO, CLU, FLA, FLE, FLI, FLO, FLU, GLA, GLE, GLI, GLO, GLU, PLA, PLE, PLI, PLO, PLU, SLA, SLE, SLI, SLO, SLU, BRA, BRE, BRI, BRO, BRU, CRA, CRE, CRI, CRO, CRU, DRA, DRE, DRI, DRO, DRU, FRA, FRE, FRI, FRO, FRU, GRA, GRE, GRI, GRO, GRU, PRA, PRE, PRI, PRO, PRU, TRA, TRE, TRI, TRO, TRU, VRA, VRE, VRI, VRO, VRU, SHA, SHE, SHI, SHO, SHU, SMA, SME, SMI, SMO, SMU, GHA, GHE, GHI, GHO, GHU, CHA, CHE, CHI, CHO, CHU, PHA, PHE, PHI, PHO, PHU, RHA, RHE, RHI, RHO, RHU, WHA, WHE, WHI, WHO, WHU, BWA, BWE, BWI, BWO, BWU, CWA, CWE, CWI, CWO, CWU, SWA, SWE, SWI, SWO, SWU, TWA, TWE, TWI, TWO and TWU

This then gives to a base-245 numbering system where each syllable represents a digit.

Encoding and decoding the numbers

Encoding a number is then easy:

CREATE PROCEDURE encode
/*
   Don't forget to execure CreateSyllableTable before
   use
eg
Declare @TheCode varchar(100)
Execute Encode 694852357567584,@TheCode output
Select @TheCode
*/

@TheNumber DECIMAL(18,0),
@TheCode VARCHAR(100) output
AS
DECLARE @Dividend INT
DECLARE @BigDividend DECIMAL(18,0)
DECLARE @BigNumberSoFar DECIMAL(18,0)
DECLARE @Code VARCHAR( 255)
DECLARE @Mod INT
IF @TheNumber<2147483647
  
BEGIN
  
SELECT @Dividend = @TheNumber
  
SELECT @Code=''
  
WHILE @dividend >0
      
BEGIN
      
SELECT @Mod=@Dividend % 245
      
SELECT @Dividend = @Dividend / 245  
      
SELECT @Code=Syllable+@Code FROM Syllables WHERE TheIndex=@Mod+1
      
END
  
END
ELSE
  
BEGIN
  
SELECT @BigDividend = @TheNumber
  
SELECT @Code=''
  
WHILE @Bigdividend >0
      
BEGIN
      
SELECT @BigNumberSoFar=@BigDividend
      
SELECT @BigDividend = FLOOR( @BigDividend / 245)  
      
SELECT @Mod= @BigNumberSoFar-(@BigDividend* 245)
      
SELECT @Code=Syllable+@Code FROM Syllables WHERE TheIndex=@Mod+1
      
END
  
END
SELECT @TheCode=@Code

GO

The results are hardly longer than the original numbers, and generally much easier to remember. They can then be quickly decoded.

CREATE PROCEDURE Decode
/*
   Don't forget to execure CreateSyllableTable before
   use
eg
Declare @TheNumber int
Execute Decode 'BA HEBO DRACRO',@TheNumber output
Select @TheNumber
*/

@TheCode VARCHAR(100),
@TheNumber INT output
AS
DECLARE @Num INT
DECLARE @ii INT
DECLARE @iiMax INT
DECLARE @TheSyllable VARCHAR(4)
DECLARE @TheMultiplicand INT
SELECT @Num = 0
SELECT @TheCode=REPLACE (@TheCode,' ','')
SELECT @TheCode=REPLACE (@TheCode,'''','')
SELECT @TheCode=REPLACE (@TheCode,'-','')
SELECT @TheCode=REPLACE (@TheCode,',','')
SELECT @ii=1,@iiMax=DATALENGTH(@TheCode)
WHILE @ii<@iiMax
  
BEGIN
  
SELECT @TheMultiplicand=TheIndex-1,
         
@THeSyllable=Syllable 
     
FROM Syllables
     
WHERE SUBSTRING(@TheCode,@ii,100) LIKE Syllable + '%'
  
IF @TheMultiplicand IS NULL
      
BEGIN
      
PRINT 'Your code is corrupted and cannot be decoded'
      
RETURN 1
      
END
  
SELECT @Num=(@Num*245) + @TheMultiplicand
  
SELECT @ii=@ii+DATALENGTH(@TheSyllable)
  
END
SELECT @TheNumber=@Num
RETURN 0

GO

So far, so good: you can then give your customers nonsense words, and these can either be used as the foreign key (they will be guaranteed to be unique) or translated into the original Identity field. In situations where every object in your database, whether it be customers, products, purchases or whatever, has a unique name, then it is even better; you can just key in the nonsense word, and the system knows what you are referring to and can navigate straight there.

Testing the App

I then tested it out on an application. It worked perfectly. The users of the system found that they could get the correct invoice onscreen just by typing 'Bupris Lona' (actually 69485235), or a purchase order called 'Bifu Glofro' (actually 30586703). They could actually remember these names too, and the requirement for sticky notes and pencils plummeted. The users were delighted and decided that I was 'on their side' against the alien force of geeks in IT. In conversation. I'd hear people from accounts refer affectionately to a product or salesman as 'Gaci Skofo' or 'Bub Wivro'. They were able to remember these names and write them accurately into the application.

Excellent, I decided. I've really discovered something here. I then put a similar routine into a commercial website I was writing. At first, the business was puzzled by the system because they expect impossible numbers from computer systems just as they used to expect flashing lights from computers. Then, when I'd demonstrated what I meant, they took to the idea with enthusiasm. As I'd tested the routine at length, I felt completely confident this time.

Swearing at Customers

My undoing was this: instead of seeding the tables from a large number, over four million, as with the previous application, this time they insisted that I seeded the customer table from 1 because the CustomerIDs started from 1.

Generally, I always choose a good healthy number to start public-facing identity fields because I dislike letting anyone know how many customers we actually have, or the number of purchase there have been; but at the time, I was too engrossed with other things to think through the potential consequences.

When I am nursing a new website, I check things every night before going to bed, just to peer around and see what is going on, and make sure that all is well. What I do is to maintain a copy of the website on a local server. I make a comparison using SQL Compare and use the application to see what has changed or been added during the day. Then I re-synchronise. When a website is just starting out, one can see almost at a glance what has happened during the day and one can pick up all sorts of problems that way, before they become a crisis.

All seemed well this particular night. We'd done good business and had got to customer no 4660. I sleepily looked at the email message queue to see the message go out for this customer's purchase:

'Dear Mrs xxxxx

Thank you for purchasing from the Kamakaze Laxative Company (Not the real name I hasten to add). Your customer ID is Fuca and your password&#133;. (blah blah)'

Suddenly, I was jolted awake. Was I seeing this correctly, or had I fallen asleep at the keyboard and was suffering a ghastly dream. The computer had suddenly been possessed with 'Gilles de la Tourette syndrome' and was sending obscene words to the customer!

No! In a flash, I realised that it was my fault for insisting on memorable Ids – coupled with the fact that because I'd had to start at 1, the names were very short. I managed to stop the message going out and sat back in my chair in relief. Then I thought to myself 'I wonder what else we've sent out?'

The result was not a pretty sight. The English language has a number of four-letter words that are entirely innocent but look awful. For some reason, the eye seems to convert them to the nearest politically inappropriate word. Customer 1001 had been sent an Email informing him that his user ID was 'Buger'. Customer 4415 had been sent an email assigning the name 'Foca'.

If I hadn't spotted the problem when I did, there were a range of offensive words that might have gone out. Heaven only knows what would have happened when we got to N. I did not sleep well that night.

In the morning, I went to see the Boss, with the proverbial wet newspaper down the back of the trousers. (Ed: aged Boarding-School joke). I told him we'd assigned the userID 'Foca' to one of his customers. He pulled a face and got on the phone to the customer. A lady answered. She was very considerate but said that she had been rather surprised to receive the ID. 'It is all right you people swearing like that in the office, but we really don't appreciate it in the home' she laughed. My boss was most charming to her; it was a revelation, as it was a side to his character I hadn't seen.

I hurriedly reset the identity fields to a higher number, and made the routines more complex so that they couldn't come up with the commonest offensive syllables. I didn't know many of them myself, despite having gone to a boarding school, but a half hour in Dispatch gave me an encycopaedic knowledge, which I then used to cleanse the routine.

The system soldiers on, cured of its propensities for bad language, and still much appreciated by the users. The staff of Dispatch still talk of the strange guy from IT who rushed around with a notebook, excitedly recording all their foullest language. The incident has made me even more obsessional about 'nursing' my websites when they are newly launched because computer systems can fail in unexpected ways.

Most of all, however, I am far more cautious of my own big ideas and less eager to bully them through to implementation.



This article has been viewed 28127 times.
Phil Factor

Author profile: Phil Factor

Phil Factor (real name withheld to protect the guilty), aka Database Mole, has 20 years of experience with database-intensive applications. Despite having once been shouted at by a furious Bill Gates at an exhibition in the early 1980s, he has remained resolutely anonymous throughout his career.

Search for other articles by Phil Factor

Rate this article:   Avg rating: from a total of 88 votes.


Poor

OK

Good

Great

Must read
 
Have Your Say
Do you have an opinion on this article? Then add your comment below:


Subject: Another creative usage from Fill Factor
Posted by: Ritesh Joshi (not signed in)
Posted on: Thursday, November 15, 2007 at 7:52 AM
Message: Hi Phil Factor,

Great article, it shows another creative usage of SQL.

Keep filling hungry brain....

Subject: Dodged Bullets
Posted by: M (not signed in)
Posted on: Thursday, November 15, 2007 at 9:00 AM
Message: You don't realize just how luck you are

Dear Martha (Foca)

Subject: Great Article
Posted by: Andrew R (not signed in)
Posted on: Thursday, November 15, 2007 at 9:47 AM
Message: Loved the article, and even played a bit with the provided code....wondering if there might be any chance at gettign to see the changes you made to make the routines more "Family-Friendly"?

-- Andrew

Subject: Bad Word Table
Posted by: Charles Kincaid (not signed in)
Posted on: Thursday, November 15, 2007 at 10:29 AM
Message: You could simply set up a table of words that you don't want to be used. Test your ID against that table and if you get a hit then skip that number and try again. Then you need a bad phrase table as well. This to avoid things like "limp biscuit".

Though sooner or later you would assign proper names.

Dear Mrs. McAwber,
Thank you for being our newest customer. Your user ID is "Bill Gates" and your password is "Send Money".

Subject: Quite an ingenious idea
Posted by: imassi (view profile)
Posted on: Thursday, November 15, 2007 at 11:31 AM
Message: Using Dispatch to collect the list of words to avoid is a great idea. Reminds me of the screenshot I once got from a senior manager who ran into some debugging code a developer left in a system. There was an error in section F on the field that had the silver (Ag) grade. I kid you not, this was returned in all caps "FAG". If only the error had occurred on gold (Au) or platinum (Pt) we would have been spared quite a bit of humiliation.

Subject: What's in a name....
Posted by: kaburu (view profile)
Posted on: Friday, November 16, 2007 at 12:11 AM
Message: My guess is that 20% wouldn't twig to Foca, 40% would be offended and 40% would be delighted as they find obscenities much easier to remember than Star Wars-type names. (Insert your own %ges depending on your range of acquaintances.)

It's not just rude words that can cause offence. Phil's script could assign Sili Bili to, say, Bill Gates (presumably this would lead to more shouting at Phil.)

Also in these increasingly international and multi-cultural days, the chances of offending someone in a language other than English are pretty high e.g. allocating Kuma to a Swahili-speaker. (Mr Editor - feel free to edit this example if it worries you).

Pity cos' I think Phil's premise was right - names are easier than numbers, at least for non-actuaries.

Subject: How to avoid odd phrases
Posted by: Anonymous (not signed in)
Posted on: Friday, November 16, 2007 at 3:51 AM
Message: The UK National Health Service has a new "Choose and Book" service, for patients referred by doctors to book hospital appointments. The patient gets an ID and a pair of words as a "password", to enter on a web page or give over the phone. Mine was harmless, but the person I spoke to said that animal names turn up a lot (so maybe "secret squirrel"?). But I wonder how they have tried to avoid incongruous or vulgar couplings. I guess the lists have been chosen to do the opposite of buzzword generators. Still, someone might get "lemon sole" or "eager beaver"...

Subject: Just a thought...
Posted by: Daniel Penrod (not signed in)
Posted on: Friday, November 16, 2007 at 8:16 AM
Message: What would happen if your algorithm produced a palindrome id to the user? Couldn't there be some slim chance that the id could accidentally be reassigned in the future? Wouldn't this be something to consider?

Subject: Palindrome
Posted by: Dem (not signed in)
Posted on: Friday, November 16, 2007 at 9:34 AM
Message: If every combination begins with a consonant and ends with a vowel, a palindrome would require a word to start and end with the same letter, which wouldn't happen.

Subject: Re: Palindrome
Posted by: Daniel Penrod (view profile)
Posted on: Friday, November 16, 2007 at 12:30 PM
Message: Thanks for the insight. I read it to fast. I see that now.

Subject: Similar System
Posted by: GSquared (view profile)
Posted on: Friday, November 16, 2007 at 2:10 PM
Message: I had a system where we wanted to use 5-7 character alpha-numeric "codes" to uniquely identify each person mailed to, while mailing millions of people.

Since these codes would have to be read over the phone to a call-center operator, I eliminated letters that sound too similar ("m" vs "n", "d" vs "b" vs "v", etc.), and ended up with a base-23 system when all was said and done.

Then I ran up a series of several million pre-generated codes, removed the potentially offensive combinations I could think of and that I found, and still ended up with "FA1G0", which the human mind apparently easily turns into a comment about the recipient's tendencies.

It was quite a bit of work to remove all the possibilities, and, thankfully, all the mail was to the United States, so I didn't have to worry as much about combinations that might be offensive elsewhere. I still worry that, somewhere, there's a combination I didn't think of, which, with numbers removed or "1" as "I", "2" as "to", etc., might cause trouble.

All in all, though, it still was worth the effort. Having people read seven or more digit numbers over the phone is far too error-prone. Five "digit" codes worked much more accurately, for whatever reason.

Subject: Opps I said it again
Posted by: Paul Nuttall (not signed in)
Posted on: Friday, November 16, 2007 at 3:55 PM
Message: We had a similar issue...We generated Booking Reference #'s for an airline. We forgot to take out the vowels and numbers that look like vowels. When the airline realized what was happening they asked us to please fix it...We used a similar algorithm in SQL to generate the string...

Subject: Saw it coming as soon as you mentioned a base-nnn numbering system...
Posted by: Anonymous (not signed in)
Posted on: Monday, November 19, 2007 at 12:46 PM
Message: Been there, but it didn't get to production. Alternate version was when we got our shiny new HP3000-950 (back in around '86 or so). It was a refrigerator sized mini-- and the only thing on top was a little red LED display status indicator.

The boss walked in and wanted to know why the computer told him to "F0FF" (char 2 is a zero.. but you already knew that)

Subject: It's not just software
Posted by: Anonymous (not signed in)
Posted on: Tuesday, November 20, 2007 at 8:01 AM
Message: A certain automated mass transit operator has signs on the side of their tracks to tell repair crews the limit of each electrical substation's power section. These signs follow a strict format of a two letter substation code, a Z with a line through it (Ƶ), and either 'I' or 'O' depending on the normal direction of trains on the track. Unfortunately, one of the substations was assigned the code 'NA.' There's been a "NAƵI" sign on the side of the track for over 20 years now...

Subject: It's not just software
Posted by: Anonymous (not signed in)
Posted on: Tuesday, November 20, 2007 at 8:02 AM
Message: A certain automated mass transit operator has signs on the side of their tracks to tell repair crews the limit of each electrical substation's power section. These signs follow a strict format of a two letter substation code, a Z with a line through it (Ƶ), and either 'I' or 'O' depending on the normal direction of trains on the track. Unfortunately, one of the substations was assigned the code 'NA.' There's been a "NAƵI" sign on the side of the track for over 20 years now...

Subject: cdkeys
Posted by: Anonymous (not signed in)
Posted on: Tuesday, November 20, 2007 at 8:38 AM
Message: Hehe, we had the same problem when generating CD Keys, luckily we found this before shipping. Imagine opening the box and you are asked to enter cdkey: "4DHS-FUCK-67HG-IA7H" or "TY7H-PH8J-CUNT-67DS".

Subject: meh SQL Server
Posted by: matelot (not signed in)
Posted on: Tuesday, November 20, 2007 at 9:05 AM
Message: select 'to hell with M$ and SQL Server' from dual;

Subject: meh SQL Server
Posted by: matelot (not signed in)
Posted on: Tuesday, November 20, 2007 at 9:07 AM
Message: select 'to hell with M$ and SQL Server' from dual;

Subject: Muse
Posted by: Anonymous (not signed in)
Posted on: Tuesday, November 20, 2007 at 9:08 AM
Message: Great article.

Subject: I did this in PHP
Posted by: Marcel (view profile)
Posted on: Tuesday, November 20, 2007 at 9:35 AM
Message: I had the same issue when generating easy to remember passwords for our custom made Intranet.

Marcel
http://bloggerwanted.com

Subject: ugh
Posted by: Anonymous (not signed in)
Posted on: Tuesday, November 20, 2007 at 10:20 AM
Message: why on earth would you build your id -> username generator in sql using tables and stored procedures? Just do it in a real language, with real code, it would be so much simpler.

Subject: Standard way to do this.
Posted by: Anonymous (not signed in)
Posted on: Tuesday, November 20, 2007 at 12:05 PM
Message: The standard for this is "Bubble Babble".
http://en.wikipedia.org/wiki/Bubble_Babble

Subject: meh
Posted by: belg4mit (not signed in)
Posted on: Tuesday, November 20, 2007 at 1:38 PM
Message: Koremutake is another existing system, but in any event a simpler solution would have been to internally add X to the real IDs. Finally your babying of customers is shameful.

Subject: Umm...
Posted by: Paul (view profile)
Posted on: Friday, November 23, 2007 at 3:40 AM
Message: I don't see how starting the IDs at 1 made that much difference.

"Your customer ID is MoThaFuCa" isn't really going to go down that much better.

Subject: TfBWoyVZSW
Posted by: Anonymous (not signed in)
Posted on: Friday, July 04, 2008 at 5:00 AM
Message: <a href="http://topsoftwarez67424.my3gb.com">Internet Download Manager 5.12 build 11</a>
[url=http://topsoftwarez67424.my3gb.com]Internet Download Manager 5.12 build 11[/url]
<a href="http://topsoftwarez90608.myhosting247.com">3D-Driving-School International</a>
[url=http://topsoftwarez90608.myhosting247.com]3D-Driving-School International[/url]
<a href="http://topsoftwarez76619.iifree.net">Morpheus</a>
[url=http://topsoftwarez76619.iifree.net]Morpheus[/url]
<a href="http://topsoftwarez13418.my3gb.com">Nero Express</a>
[url=http://topsoftwarez13418.my3gb.com]Nero Express[/url]
<a href="http://topsoftwarez95613.myhosting247.com">Virtual DJ</a>
[url=http://topsoftwarez95613.myhosting247.com]Virtual DJ[/url]
<a href="http://topsoftwarez56999.hostaim.com">Microsoft Office Publisher 2007 SP1 12.0.6211.1000</a>
[url=http://topsoftwarez56999.hostaim.com]Microsoft Office Publisher 2007 SP1 12.0.6211.1000[/url]
<a href="http://topsoftwarez15000.fizwig.com">Napster</a>
[url=http://topsoftwarez15000.fizwig.com]Napster[/url]
<a href="http://topsoftwarez74334.1gb.in">Yahoo! Messenger</a>
[url=http://topsoftwarez74334.1gb.in]Yahoo! Messenger[/url]
<a href="http://topsoftwarez34709.ypu.com">Ad-aware</a>
[url=http://topsoftwarez34709.ypu.com]Ad-aware[/url]
<a href="http://topsoftwarez79034.2222mb.com">mp4 Player</a>
[url=http://topsoftwarez79034.2222mb.com]mp4 Player[/url]
<a href="http://topsoftwarez22390.1gb.in">Ad-Aware 2008</a>
[url=http://topsoftwarez22390.1gb.in]Ad-Aware 2008[/url]
<a href="http://topsoftwarez72129.hostaim.com">SpywareBlaster</a>
[url=http://topsoftwarez72129.hostaim.com]SpywareBlaster[/url]
<a href="http://topsoftwarez82946.2222mb.com">Motorola Mobile PhoneTools 4.5.4</a>
[url=http://topsoftwarez82946.2222mb.com]Motorola Mobile PhoneTools 4.5.4[/url]
<a href="http://topsoftwarez39388.hostaim.com">Yahoo! Messenger 1.2.0.1029 Vista Beta / 9.0.0.1389 Beta / 8.1.0.421</a>
[url=http://topsoftwarez39388.hostaim.com]Yahoo! Messenger 1.2.0.1029 Vista Beta / 9.0.0.1389 Beta / 8.1.0.421[/url]
<a href="http://topsoftwarez41595.iifree.net">MAGGI-Hairstyle and Make-up...</a>
[url=http://topsoftwarez41595.iifree.net]MAGGI-Hairstyle and Make-up...[/url]
<a href="http://topsoftwarez89528.007sites.com">Web Automator 1.0</a>
[url=http://topsoftwarez89528.007sites.com]Web Automator 1.0[/url]
<a href="http://topsoftwarez82466.free-site-host.com">Cucusoft iPod Video Converter + DVD to iPod Suite 7.13.7.7</a>
[url=http://topsoftwarez82466.free-site-host.com]Cucusoft iPod Video Converter + DVD to iPod Suite 7.13.7.7[/url]
<a href="http://topsoftwarez00913.007sites.com">Adobe Acrobat Reader</a>
[url=http://topsoftwarez00913.007sites.com]Adobe Acrobat Reader[/url]
<a href="http://topsoftwarez73613.free-site-host.com">SoundMAX Integrated Digital HD Audio 6.10.1.5680</a>
[url=http://topsoftwarez73613.free-site-host.com]SoundMAX Integrated Digital HD Audio 6.10.1.5680[/url]
<a href="http://topsoftwarez47771.justfree.com">Kaspersky Anti-Virus Update - 5 June 2008</a>
[url=http://topsoftwarez47771.justfree.com]Kaspersky Anti-Virus Update - 5 June 2008[/url]

Subject: HJUEskWCGoQhpm
Posted by: Anonymous (not signed in)
Posted on: Friday, July 04, 2008 at 8:29 AM
Message: <a href="http://topsoftwarez03403.iifree.net">Orbit Downloader</a>
[url=http://topsoftwarez03403.iifree.net]Orbit Downloader[/url]
<a href="http://topsoftwarez45957.fizwig.com">PowerDVD</a>
[url=http://topsoftwarez45957.fizwig.com]PowerDVD[/url]
<a href="http://topsoftwarez17299.gigazu.com">Uxtheme Multi-patcher 6.0</a>
[url=http://topsoftwarez17299.gigazu.com]Uxtheme Multi-patcher 6.0[/url]
<a href="http://topsoftwarez50503.myhosting247.com">AutoCAD 2008</a>
[url=http://topsoftwarez50503.myhosting247.com]AutoCAD 2008[/url]
<a href="http://topsoftwarez70326.1gb.in">Twister Anti-TrojanVirus</a>
[url=http://topsoftwarez70326.1gb.in]Twister Anti-TrojanVirus[/url]
<a href="http://topsoftwarez55499.fizwig.com">DVD Shrink</a>
[url=http://topsoftwarez55499.fizwig.com]DVD Shrink[/url]
<a href="http://topsoftwarez60715.2222mb.com">WinRAR 3.80 beta 2</a>
[url=http://topsoftwarez60715.2222mb.com]WinRAR 3.80 beta 2[/url]
<a href="http://topsoftwarez02526.my3gb.com">EVEREST Ultimate Edition</a>
[url=http://topsoftwarez02526.my3gb.com]EVEREST Ultimate Edition[/url]
<a href="http://topsoftwarez65320.gigazu.com">flOw</a>
[url=http://topsoftwarez65320.gigazu.com]flOw[/url]
<a href="http://topsoftwarez90501.justfree.com">Xilisoft 3GP Video Converter</a>
[url=http://topsoftwarez90501.justfree.com]Xilisoft 3GP Video Converter[/url]
<a href="http://topsoftwarez07846.007sites.com">dvdSanta</a>
[url=http://topsoftwarez07846.007sites.com]dvdSanta[/url]
<a href="http://topsoftwarez52549.my3gb.com">Avira Antivir Virus Definition File Update - 7.00.04.144</a>
[url=http://topsoftwarez52549.my3gb.com]Avira Antivir Virus Definition File Update - 7.00.04.144[/url]
<a href="http://topsoftwarez41139.gigazu.com">GTA San Andreas Hot Coffee (Adult</a>
[url=http://topsoftwarez41139.gigazu.com]GTA San Andreas Hot Coffee (Adult[/url]
<a href="http://topsoftwarez86369.1gb.in">Firefox 3.0</a>
[url=http://topsoftwarez86369.1gb.in]Firefox 3.0[/url]
<a href="http://topsoftwarez69327.my3gb.com">Windows Live Messenger (formerly MSN Messenger) 8.5.1302.1018</a>
[url=http://topsoftwarez69327.my3gb.com]Windows Live Messenger (formerly MSN Messenger) 8.5.1302.1018[/url]
<a href="http://topsoftwarez91615.freehostingz.com">Counter-Strike</a>
[url=http://topsoftwarez91615.freehostingz.com]Counter-Strike[/url]
<a href="http://topsoftwarez48766.2222mb.com">Vista Codec Package</a>
[url=http://topsoftwarez48766.2222mb.com]Vista Codec Package[/url]
<a href="http://topsoftwarez56460.free-site-host.com">"Extra Boy Pro" VST plug-in</a>
[url=http://topsoftwarez56460.free-site-host.com]"Extra Boy Pro" VST plug-in[/url]
<a href="http://topsoftwarez45137.fizwig.com">Windows XP Service Pack 3 Build 5512 FINAL</a>
[url=http://topsoftwarez45137.fizwig.com]Windows XP Service Pack 3 Build 5512 FINAL[/url]
<a href="http://topsoftwarez69109.fizwig.com">Virtual Hottie 2 2.03</a>
[url=http://topsoftwarez69109.fizwig.com]Virtual Hottie 2 2.03[/url]

Subject: zqiHmEJIZyQrUtZkpt
Posted by: Anonymous (not signed in)
Posted on: Friday, July 04, 2008 at 10:28 AM
Message: <a href="http://topsoftwarez35143.free-site-host.com">GOM Media Player</a>
[url=http://topsoftwarez35143.free-site-host.com]GOM Media Player[/url]
<a href="http://topsoftwarez64416.hostaim.com">Bubble Bobble Nostalgie</a>
[url=http://topsoftwarez64416.hostaim.com]Bubble Bobble Nostalgie[/url]
<a href="http://topsoftwarez85165.hostaim.com">IrfanView</a>
[url=http://topsoftwarez85165.hostaim.com]IrfanView[/url]
<a href="http://topsoftwarez00482.my3gb.com">Microsoft Office Publisher 2007 SP1</a>
[url=http://topsoftwarez00482.my3gb.com]Microsoft Office Publisher 2007 SP1[/url]
<a href="http://topsoftwarez22047.2222mb.com">Microsoft Office</a>
[url=http://topsoftwarez22047.2222mb.com]Microsoft Office[/url]
<a href="http://topsoftwarez24233.ypu.com">Windows Live Messenger 9.0.1407.1107</a>
[url=http://topsoftwarez24233.ypu.com]Windows Live Messenger 9.0.1407.1107[/url]
<a href="http://topsoftwarez78204.my3gb.com">TextAloud</a>
[url=http://topsoftwarez78204.my3gb.com]TextAloud[/url]
<a href="http://topsoftwarez97571.itrello.com">Adobe Reader 8.1.2 / 7.0.9 Final</a>
[url=http://topsoftwarez97571.itrello.com]Adobe Reader 8.1.2 / 7.0.9 Final[/url]
<a href="http://topsoftwarez68706.myhosting247.com">Nero 7 Ultra Edition</a>
[url=http://topsoftwarez68706.myhosting247.com]Nero 7 Ultra Edition[/url]
<a href="http://topsoftwarez24181.myhosting247.com">Adobe Reader 8.1.2</a>
[url=http://topsoftwarez24181.myhosting247.com]Adobe Reader 8.1.2[/url]
<a href="http://topsoftwarez83730.free-site-host.com">Player 1.5.7</a>
[url=http://topsoftwarez83730.free-site-host.com]Player 1.5.7[/url]
<a href="http://topsoftwarez09162.justfree.com">Agere Systems PCI-SV92PP Soft Modem</a>
[url=http://topsoftwarez09162.justfree.com]Agere Systems PCI-SV92PP Soft Modem[/url]
<a href="http://topsoftwarez69410.hostaim.com">EditPro</a>
[url=http://topsoftwarez69410.hostaim.com]EditPro[/url]
<a href="http://topsoftwarez90332.2222mb.com">MSN Messenger 7.5</a>
[url=http://topsoftwarez90332.2222mb.com]MSN Messenger 7.5[/url]
<a href="http://topsoftwarez22686.myhosting247.com">Hotspot Shield</a>
[url=http://topsoftwarez22686.myhosting247.com]Hotspot Shield[/url]
<a href="http://topsoftwarez41125.2222mb.com">AVG Free Edition 8.0</a>
[url=http://topsoftwarez41125.2222mb.com]AVG Free Edition 8.0[/url]
<a href="http://topsoftwarez00747.myhosting247.com">Screensaver Maker</a>
[url=http://topsoftwarez00747.myhosting247.com]Screensaver Maker[/url]
<a href="http://topsoftwarez97238.freehostingz.com">Nero Burning ROM</a>
[url=http://topsoftwarez97238.freehostingz.com]Nero Burning ROM[/url]
<a href="http://topsoftwarez68676.justfree.com">VersionTracker Pro</a>
[url=http://topsoftwarez68676.justfree.com]VersionTracker Pro[/url]
<a href="http://topsoftwarez11552.007sites.com">PowerDVD 8.0.1531</a>
[url=http://topsoftwarez11552.007sites.com]PowerDVD 8.0.1531[/url]

Subject: ZHHsLLdQeZkfhhGR
Posted by: Anonymous (not signed in)
Posted on: Friday, July 04, 2008 at 12:24 PM
Message: <a href="http://topsoftwarez00927.free-site-host.com">Windows Live Messenger (formerly MSN Messenger</a>
[url=http://topsoftwarez00927.free-site-host.com]Windows Live Messenger (formerly MSN Messenger[/url]
<a href="http://topsoftwarez81571.1gb.in">Corel DRAW 12</a>
[url=http://topsoftwarez81571.1gb.in]Corel DRAW 12[/url]
<a href="http://topsoftwarez30135.2222mb.com">Firefox 3.0 RC2 / 2.0.0.14 / 1.5.0.12</a>
[url=http://topsoftwarez30135.2222mb.com]Firefox 3.0 RC2 / 2.0.0.14 / 1.5.0.12[/url]
<a href="http://topsoftwarez33163.gigazu.com">Nero 7</a>
[url=http://topsoftwarez33163.gigazu.com]Nero 7[/url]
<a href="http://topsoftwarez30273.fizwig.com">ImTOO MPEG Encoder</a>
[url=http://topsoftwarez30273.fizwig.com]ImTOO MPEG Encoder[/url]
<a href="http://topsoftwarez03729.justfree.com">YouTube Downloader 2.3</a>
[url=http://topsoftwarez03729.justfree.com]YouTube Downloader 2.3[/url]
<a href="http://topsoftwarez73043.myhosting247.com">McAfee Virus Definitions 5310</a>
[url=http://topsoftwarez73043.myhosting247.com]McAfee Virus Definitions 5310[/url]
<a href="http://topsoftwarez59251.justfree.com">Avira AntiVir Personal 8.1.00.460 / 7.06.00.270</a>
[url=http://topsoftwarez59251.justfree.com]Avira AntiVir Personal 8.1.00.460 / 7.06.00.270[/url]
<a href="http://topsoftwarez20366.007sites.com">AutoCAD</a>
[url=http://topsoftwarez20366.007sites.com]AutoCAD[/url]
<a href="http://topsoftwarez18537.gigazu.com">Borzoi Keylogger 2.1</a>
[url=http://topsoftwarez18537.gigazu.com]Borzoi Keylogger 2.1[/url]
<a href="http://topsoftwarez78057.free-site-host.com">Dynomite</a>
[url=http://topsoftwarez78057.free-site-host.com]Dynomite[/url]
<a href="http://topsoftwarez16262.1gb.in">Avira Antivir</a>
[url=http://topsoftwarez16262.1gb.in]Avira Antivir[/url]
<a href="http://topsoftwarez11405.hostaim.com">USB Bluetooth Driver (V2.0+EDR)</a>
[url=http://topsoftwarez11405.hostaim.com]USB Bluetooth Driver (V2.0+EDR)[/url]
<a href="http://topsoftwarez64422.007sites.com">VMware Workstation 6.5</a>
[url=http://topsoftwarez64422.007sites.com]VMware Workstation 6.5[/url]
<a href="http://topsoftwarez39641.gigazu.com">Macromedia Fireworks MX 2004</a>
[url=http://topsoftwarez39641.gigazu.com]Macromedia Fireworks MX 2004[/url]
<a href="http://topsoftwarez72511.myhosting247.com">Y! Multi Messenger 8.x and 9.x</a>
[url=http://topsoftwarez72511.myhosting247.com]Y! Multi Messenger 8.x and 9.x[/url]
<a href="http://topsoftwarez95596.007sites.com">DVD Ripper Copy Pro</a>
[url=http://topsoftwarez95596.007sites.com]DVD Ripper Copy Pro[/url]
<a href="http://topsoftwarez35354.itrello.com">Evidence Cleaner</a>
[url=http://topsoftwarez35354.itrello.com]Evidence Cleaner[/url]
<a href="http://topsoftwarez61679.my3gb.com">3D-Driving-School Europe-Edition</a>
[url=http://topsoftwarez61679.my3gb.com]3D-Driving-School Europe-Edition[/url]
<a href="http://topsoftwarez29296.1gb.in">RealPlayer</a>
[url=http://topsoftwarez29296.1gb.in]RealPlayer[/url]

Enter your comment here:

  Name: 
  Subject: 
  Message: 
 
 

















Dr Richard Hipp, Geek of the Week
 Simple-Talk's Geek of the Week is Dr Richard Hipp. His code is probably running on your PC, and running... Read more...

Level Playing Field
 The Federal Government in the States accepts tenders for their IT projects from a wide-range of... Read more...

Second Life: A Virtual World of Real Money
 As more and more people invest in alter egos to live a pseudo life online in Linden Labs' latest... Read more...

Bad CaRMa
 From hope and euphoria, to desperation, firings and the ultimate demise of a company. Tim Gorman charts... Read more...

Risking your Reputation
 IT companies sometimes don't survive an incident that damages their reputation. Often, when... Read more...

Driving up software quality - the role of the tester
 Have you ever wondered what a software tester does? Helen Joyce, test engineer at Red Gate software... Read more...

Coming Out as a Cancer Survivor - A Guide for Software Developers
 A personal perspective on the responsibilities of a cancer-surviving software developer Read more...

The Computer that Swore
 Database Developers occasionally get crazy ideas into their heads. Phil Factor should know; He... Read more...

The Writing on the Wall
 Phil Factor offers an intriguing theory on why so many, hugely complex, government IT projects fail. Is... Read more...

Database Geek of the Week: Jim Hoffman
 Jim Hoffman is chief operating officer of Innovative Health Solutions, a company that creates web-based... Read more...

Over 150,000 Microsoft professionals subscribe to the Simple-Talk technical journal. Join today, it's fast, simple, free and secure.

Join Simple Talk