Tuesday, May 30, 2006  

A customer recently asked White Peak Software to design and implement custom software for generating large batches of temporary user accounts. The purpose of these temporary user accounts is to market a subscription based web site in much the same way AOL used to market its services. Here's how it works.

A large number of temporary user accounts, say 100,000 to 1,000,000 accounts per batch, would be generated and handed out to potential subscribers. When the credentials to a temporary account are first used the user is guided through a set of web pages that setup a real user account and trial subscription. Different business models are supported for the trial subscription such as 30-day trial or usage count.

As I was designing the system my first concern was storing millions of records in the database to represent temporary user accounts. I was worried that it would take too much time to generate batches of 1 million user accounts and store them in the database, and I didn't like the idea of storing this much data when initially the majority of the temporary user accounts will - most likely - never be used. So I set off to find a way, or an algorithm if you will, that would allow the system to generate a unique set of credentials for a temporary user account that did not require storage. In other words, I needed an algorithm that is used to generate the credentials and can be re-applied during authentication to determine of validity of the credentials. This felt similar to public private key encryption, which ultimately led me to the final design.

In the final design a private key is used that is known only to the system. A unique private key is used for every batch of accounts generated where each batch represents a marketing campaign. A random number generator (RNG) is used to generate a username unique to the batch. The combination of the private key and the username is used to generate a MD5 token and a random password is generated based on the bytes that makeup the MD5 token.

The beauty of this design is that the same algorithm can be used to authenticate the credentials for the temporary account. An individual comes to the web site and uses the temporary account credentials to sign in. The username is combined with the private key of every active marketing campaign to create the MD5 token, which is used to generate the password. The generated password is compared to the password entered by the user. If the passwords match, the credentials are authenticated otherwise the credentials are invalid.

Delphi was used for the implementation of this design. A Win32 COM component was implemented to provide authentication of the temporary credentials from the Classic ASP application. A .NET version was also implemented [using Delphi.NET] but is not used at this time.

To generate the large number of users, a Delphi Win32 desktop application was written. This proved to be a fast way to generate batches. The program can generate a batch of 1 million accounts in under 2 and half minutes on a 2 year old laptop (Pentium M 1.6GHz with 512MB of RAM). And the batch can be saved to an XML or CSV file.

The customer is extremely happy with the implementation, and I'm proud of the end result. The only issue I have with the design is that during authentication the username is checked against each active marketing campaign. This will cause a performance problem in a scenario with a large number of active campaigns (i.e., 100,000 or more), but this scenario is unrealistic for the customer. It is unlikely that the number of active campaigns will ever exceeded 100 so the issue is not really an issue.

posted by Kirby | May 30 10:00 AM | comments (0)


Friday, May 26, 2006  

DevCo wants your input. Michael Swindell, DevCo Director of Product Management, has posted a blog entry asking you to send your suggestions, comments, and questions regarding DevCo to the appropriate email addresses listed below.

Send a message to devco.names@borland.com for your company name ideas.
Send a message to devco.suggestions@borland.com for your ideas and suggestions.
Send a message to devco.questions@borland.com with any questions and concerns.

posted by Kirby | May 26 04:30 PM | comments (0)


Tuesday, May 23, 2006  

A common question I get is "How is White Peak Software doing?" The answer is quiet simply "We're doing great." Revenues continue to grow and we are inching closer to the release of our next product. We've also done some exciting custom software work over the last year.

I have decided to start posting news briefs on some of our more exciting, and successful, custom software work. You can read the postings in the White Peak Software Announcements forum or by subscribing to the announcement feed using your favorite RSS feed reader.

posted by Kirby | May 23 08:38 AM | comments (2)


Tuesday, May 16, 2006  

Mike Eberhart of the Cleveland based database developer shop Intersoft Development, and long time friend, is finally blogging on investment news and opinions, software and technology thoughts, and more. Should make for some interesting reading.

Welcome to the blogosphere, Mike.

posted by Kirby | May 16 05:59 PM | comments (1)
 

This blog posting by Daniel Wischnewski really caught my attention. He has successfully ported an ASP.NET application written in Delphi.NET to a Linux environment running Mono and Apache. This really doesn't surprise me because I have in the past run .NET assemblies under Mono without a problem. But at the same time I find it very cool that it is an ASP.NET application written in Delphi, which is something I haven't yet tried. Awesome stuff.

posted by Kirby | May 16 05:43 PM | comments (0)


Sunday, May 14, 2006  

Someone on the Joel on Software forum asked "how many ISVs are using Delphi?" If you're using Delphi, share the love and post a reply. White Peak Software is using Delphi and Borland Developer Studio 2006 for its products and custom software.

posted by Kirby | May 14 07:22 AM | comments (1)


Friday, May 12, 2006  

Registration for the Borland 2006 Road Show is now open for the U.S. dates. I have reserved my spot for the June 8 NYC event.

[Not to worry Darren and Jeff, I will be back in time to pick you guys up at the Boston Logan airport that night. Actually I will probably schedule my flight so I arrive to Boston around the same time as you guys.]

posted by Kirby | May 12 01:32 PM | comments (0)


Thursday, May 11, 2006  

"The software business is picking up regionally across the country", as noted per CEO of White Peak's Cleveland database developers partner firm, which has seen software development and consulting requests easily double during the past 3 months in the Cleveland, Ohio region. Requests have been pouring in from small, mid, and large firms alike. The most sought after technology skills have been Access, Microsoft SQL Server 2000 and 2005, and .NET recently.

posted by Kirby | May 11 08:53 AM | comments (2)


Sunday, May 07, 2006  

Here is a useful link for those who want to run a Linux LiveCD under VMware Workstation or VMware Player. What's neat about this hack is it allows you to run the LiveCD without needing to reboot your host OS. [Hats off to Mike for sharing the tip with me.]

posted by Kirby | May 7 09:28 AM | comments (0)


Friday, May 05, 2006  

For years I believed the Professional Edition of Delphi did not provide any database access to SQL Server. I assumed if you wanted db access you would need to import the type library for ADO included in MDAC. But raw COM access to ADO is sometimes a pain (think BSTR and SafeArray). So 15 minutes of googling and reading the BDS help file I discovered a gem called dbGo. From the help file, "The dbGo components provide data access through the ADO framework." Go figure, or should I say "dbGo figure"? [Geek humor, haha]

So my question is what advantage, if any, does the Enterprise and Architect editions of BDS provide for a SQL Server database developer? I'm sure there are some advantages, most likely designed for the corporate developer and or enterprise environment. But for my needs it looks like dbGo and Delphi Professional will work nicely.

I need to verify that I can use dbGo to access SQL Server 2005 but from what I read it looks like dbGo is nothing more than a wrapper to ADO. And ADO can definitely talk to SQL Server.

[Update] I have no problems interacting with SQL Server 2005 using dbGo and the Professional edition of Delphi. This opens up a whole new world for me.

posted by Kirby | May 5 10:46 AM | comments (2)
 

John Kaster has posted tips on using ASP.NET 1.1 and 2.0 on the same machine. It's a quick read and has references to utilities that will easy the work.

posted by Kirby | May 5 09:38 AM | comments (1)


Thursday, May 04, 2006  

Here's another rant I have about SQL Server 2005.

Visual Studio supports a database project type. I have used this project type for numerous projects. It's a great way to manage the script code for tables, stored procedures, views, and so on.

I first discovered the limited scripting abilities of SQL Server 2005 earlier today but I noticed the SQL Server 2005 installation process installed a copy of Visual Studio 2005 on my machine. "Nice," I thought. "I'll use it to open my database project and update my scripts from Visual Studio." But luck was not on my side today.

Even though the installation process for SQL Server 2005 installs Visual Studio, it does not install support for the database project type. Guess I need to run the full Visual Studio installer, which seems silly to me. After all Visual Studio supports a database project type AND a copy of Visual Studio was installed by SQL Server 2005, which is after all a database. Seems to me it would be appropriate for the SQL Server 2005 installation to install the database project type if it is going to also install Visual Studio. It's definitely more appropriate than some of the things past versions of IE would install. [Ever wonder why a web browser needs to install MDAC (Microsoft Data Access Components)?]

posted by Kirby | May 4 02:21 PM | comments (0)
 

SQL Server 2005 has been out for some time now but I have only recently made the move to it. I've been in the SQL Server 2000 world because of customers but my customers are finally making the move 2005.

Overall I really like SQL Server 2005 and the new Management Studio is nice. However, I'm really annoyed that the SQL Server 2005 team decided to do away with the database scripting feature found in SQL Server 2000.

In SQL Server 2000, you can script out each database object into individual files. I do this so I can commit the DDL source for each into CVS, or to do revision comparisons, or to do a number of other tasks. But you cannot easily script out each object in a database with SQL Server 2005. Apparently this is a known limitation as seen here.

One option I found is to write a programming using .NET 2.0 and the SQL Management Object (SMO). Unfortunately time is not a luxury I have and I have an immediate need to script out the each object in a database into individual files. So I started down the path of script out each object individual.

Guess what? It has its own set of problems. First starters, there is not an option to generate a script that contains both the DROP and CREATE statements. Instead what I do is generate the CREATE statement to a query window. Next I generate the DROP statement to the clipboard followed by pasting the clipboard content to the query window. Needless to say, this is a painful process, and I have hundreds of database objects to script out.

I can't believe the model used for generating scripts in previous versions of SQL Server did not make it into SQL Server 2005. I would have expected the same functionality at a minimum, and possibly an improvement on past versions. But I would never have guess it was removed completely.

posted by Kirby | May 4 02:06 PM | comments (0)


Wednesday, May 03, 2006  

Work on White Peak Software's next product, WS-Workbench (also called Swirl internally) is coming along nicely as you can see from this screen shot. The first beta should be ready soon. Post a comment or send me an email if you are interested in beta testing WS-Workbench once it is ready.

A couple of big challenges still remain before the beta is ready. For instance, reading the data types defined in XML Schema that represent the parameters for a web service call isn't as straight forward as I originally hoped. This is due in part to the lack of a Delphi native SOM parser. Well, that's not exactly true.

Delphi does have an undocumented SOM parser, but it depends on a registered XML DOM parser such as MSXML. While it does work White Peak does strive to reduce dependences on certain types of 3rd party library such as MSXML. This means writing my own SOM. Luckily it will be a specialized SOM parser and not one intended for general purpose.

posted by Kirby | May 3 01:33 PM | comments (0)


Tuesday, May 02, 2006  

Some days I find it hard to stay focused. There are many new technologies to play with and I want to spend time with them all. I'm itching to install the latest version of DotNetNuke and see what has changed in the last year. I also want to port a web part I wrote for SharePoint from C# to Delphi and make it a DNN module. There's also a few Ajax frameworks I want to experiment with, and GData (Google Data API) is something I'm really, really anxious to play with.

The fun doesn't stop there. Microsoft's Windows Workflow Foundation and SQL Server Integration Services (SSIS) are peaking my interest too. /n software isn't helping my focus problem either by releasing a new workflow and SSIS. Just more fun stuff to play with.

Maybe I need a new White Peak Software company policy allowing 8 hours per week to "technology play time".

posted by Kirby | May 2 03:18 PM | comments (0)
Copyright © 1999-2009 Kirby Turner.
Site software written by White Peak Software Inc, a provider of custom software and software development coaching.