Sunday, August 10, 2008

This blog has moved.

You've found my old blog. :(

Never mind, the new one is a click away.

http://www.dallasjclark.com/blog

Sunday, April 13, 2008

Another patent... another lawsuit

Yet another lawsuit for breaking a patent, Ultra is suing the majority of it's competitors. They are suing 22 other modular power supply manufacturers for not violating the patent, but being an accomplice to end users who are violating the patent. Yes I hear what you are saying "how would we have known about this patent?"



Ultra says they sent several letters to the manufacturers and they are requesting 3 times the damages being made. Oh, and unless we're missing something here, Hewlett Packard filed a modular power supply patent in 2000 -- we certainly recall Screen Savers covering the devices way back in '99.

If I became a politician, I would definitely get rid of patents. Even a person who has nothing to do with the patent can be making riches from having it, really it's just documentation of an idea. No different to notes in my top draw of my desk.

Another patent... another lawsuit

Yet another lawsuit for breaking a patent, Ultra is suing the majority of it's competitors. They are suing 22 other modular power supply manufacturers for not violating the patent, but being an accomplice to end users who are violating the patent. Yes I hear what you are saying "how would we have known about this patent?"



Ultra says they sent several letters to the manufacturers and they are requesting 3 times the damages being made. Oh, and unless we're missing something here, Hewlett Packard filed a modular power supply patent in 2000 -- we certainly recall Screen Savers covering the devices way back in '99.

If I became a politician, I would definitely get rid of patents. Even a person who has nothing to do with the patent can be making riches from having it, really it's just documentation of an idea. No different to notes in my top draw of my desk.

Another patent... another lawsuit

Yet another lawsuit for breaking a patent, Ultra is suing the majority of it's competitors. They are suing 22 other modular power supply manufacturers for not violating the patent, but being an accomplice to end users who are violating the patent. Yes I hear what you are saying "how would we have known about this patent?"



Ultra says they sent several letters to the manufacturers and they are requesting 3 times the damages being made. Oh, and unless we're missing something here, Hewlett Packard filed a modular power supply patent in 2000 -- we certainly recall Screen Savers covering the devices way back in '99.

If I became a politician, I would definitely get rid of patents. Even a person who has nothing to do with the patent can be making riches from having it, really it's just documentation of an idea. No different to notes in my top draw of my desk.

Saturday, April 12, 2008

PHP runs up to 130% faster on Windows Server 2008

From recent tests conducted with StreetDirectory.com shows that PHP executes a lot faster on Windows Server 2008 now with their built-in CGI support. In fact it runs 130% faster then any other server operating system out there.

The built-in support of FastCGI enables PHP applications to run efficiently on Windows Server 2008, with significant performance boosts. As can be seen in the graph from the case study:


The Windows Server 2008 installation was a core installation with no performance tweaks, making it a out-of-the-box solution for all server administrators.

As you can note with the graph above that the 4000 users point, Windows Server 2008 becomes slower then Linux. Dennis from Microsoft says many server administrators would evaluate the performance by looking at where 75% of the maximum hits is located.

If we take the same approach from Dennis here, then most server administrators would be scaling out to another machine at about 45,000 sustained hits, whereas on the Linux box it would be around 30,000 sustained hits.

So what does this mean? Less servers for the administrators to maintain, less hardware to have problems with and less network/software issues to deal with. It will also be cheaper and more effective to scale out when needed or for 'just in case' scenarios.

I haven't been brain washed by Microsoft as a Microsoft Partner but I do seriously believe that Microsoft has made dramatic changes to both Windows Server 2008 and Windows Vista. Look out Linux!



Related Articles
* PHP runs up to 130% faster on Windows Server 2008
* Minty White - PHP runs up to 130% faster on Windows Server 2008
* Windows Server 2008: PHP runs up to 130% faster
* As Windows Server 2008 RTMs, Customers and Partners Adopting with Help of New Tools, Training

User-Generated Guinness Book of Records

Whats Your Record Logo

The Internet is emerging with user-generated sites like YouTube, Flickr and more. Another user-generated site has come to the surface for users to submit their own world record attempts.

Once you’ve posted your record, others can add their records for the same task as well. Users can also add attempts, results, and comments, which are nice ways of gaining a community feel for the site. Continue exploring the site by checking out the related records, see where on the globe the records are coming from, and add votes and ratings for records and comments. Mashable


What\'s Your Record Screenshot

The site has a lot of random record attempts, like holding your breath for the longest and most received emails in one day. So if you have a record attempt you want to get out to the public, check out What's Your Record and post up your belching alphabet attempt.

PHP Error Control

I use this script quite frequently now on PHP projects for simple error reports straight to my email account. Your clients are well pleased when you have the bug/error fixed before they report it to you.

All you need to do is copy the following script and paste it into a file and include it into your project.

ie:

< ?php
include('error_control.php');
?>


The page error_control.php contains the script below


< ?php

$debug = true;
define("EmailNewLine", "\r\n");
set_error_handler('error_handler');

function error_handler($errno, $errstr, $errfile, $errline) {
global $debug;
// echo a message to the end user
echo 'There has been a major error, now that we know about this error we will fix it!';

$message = 'Date: '. date("d") .'/'. date("m") .'/'. date("Y") .' '. date("h") .':'. date("i") .':'. date("s") .' '. date("A") .'
';
$message .= 'File: '. __FILE__ .'
';
$message .= 'Line: '. __LINE__ .'
';
$message .= '
';

switch ($errno) {
case E_USER_ERROR:
if ($errstr == "(SQL)") {
// handling an sql error
$message .= "SQL Error [$errno] " . SQLMESSAGE . "
";
$message .= "Query : " . SQLQUERY . "
";
$message .= "On line " . SQLERRORLINE . " in file " . SQLERRORFILE . " ";
$message .= ", PHP " . PHP_VERSION . " (" . PHP_OS . ")
";
$message .= "Aborting...
";
} else {
$message .= "My ERROR [$errno] $errstr
";
$message .= " Fatal error on line $errline in file $errfile";
$message .= ", PHP " . PHP_VERSION . " (" . PHP_OS . ")
";
$message .= "Aborting...
";
}
exit(1);
break;

case E_USER_WARNING:
$message .= "My WARNING [$errno] $errstr
";
break;

case E_USER_NOTICE:
$message .= "My NOTICE [$errno] $errstr
";
break;

default:
$message .= "Unknown error type: [$errno] $errstr
";
break;
}

$to = 'name@domain-name.com';
$subject = 'WEBSITE ERROR: Name of project/web-site';
$headers = "Date: " . date("r", time()) . EmailNewLine .
"From: website_error@smg.com.au" . EmailNewLine .
"Content-type: text/html; charset=iso-8859-1 ";
mail($to, $subject, $message, $headers);

// if $debug is equal to true then show the full error on the website, when you
// make the website live make sure you set $debug equal to false
if($debug == true) {
echo '
'. $message .'';
}

return true;
}

?>

Microsoft Heroes Happen {2008} Partner Event

Microsoft Heroes Happen 2008 Advertisement
I was photographed on the night and placed into the the above Microsoft Heroes Happen poster, I was then placed up on a large screen during the event.

I attended a Microsoft event last week on Wednesday 26th of March called Heroes Happen. It was an event for Microsoft Partners to demonstrate new features in the next line of Microsoft products to come out.

The night started off with demonstrations of the new virtualisation that will available in Microsoft Server 2008, which I must admit, looks pretty sweet. What used to be hours of work has now turned into simple 5-minute tasks. Clustering in Server 2008 is all controlled by a simple interface.

The general manager of Microsoft SQL Server David Campbell also made an appearance showing some facts and features of Microsoft Server and SQL Server together.

HP made an appearance in 2 ways, one with a speaker who simply advertised HP from start to finish and then secondly with their loud blade servers in every room we were in.

I was taken into a separate presentation for Microsoft Visual Studio Team System 2008 which demonstrated some of the new debugging and compilation features. This presentation was pretty limited, didn't receive much information at all.

Overall, I think the Microsoft Event needs some revamping, I noticed a lot less attendees compared to the 2006 presentation which I suspected as it was fairly ... lame. I think the event would have been a total let down if I didn't receive any free software (Microsoft Vista Ultimate, and Microsoft Server 2008).

Microsoft please revamp your presentations!

Donkey Gamer: they love games and so do we

Donkey Gamer Logo

Every person must admit they love to play a game here or there, especially these days with the amount of interaction game play has (internet, tilt sensing controllers). Donkey Gamer are independent people from Australia and UK who simply like to talk, write and play games.

About Donkey Gamer from their website
We are a bunch of people from Australia and the UK that love gaming, but are sick of the typical news stories; they are good don't get us wrong, but fail in pointing out the lighter side and the memories associated with gaming. While we often take the piss out of anything we can in games, we realise that a big chunk of our childhood memories are older games, and now that we are "old" we can also see another side.

It started as an idea to highlight areas of gaming that made us go "wtf!?". For example, why are there watermelons in a missile silo? Originally the project was called "Gamedero" but so not to limit us to just an Aussie audience, it was decided that Donkeygamer would be a more appropriate name.

The team is diverse, both in tastes and writing styles, which works well to bring a new level of satire to gaming websites. We hope to prove that 'non-gaming' aspects of gaming can also be worth talking about.


I've found out a fair bit of gaming info from this site, on one occasion I found out a bit too late (had already brought the game), so I hope you all enjoy what these guys have to offer. In the mean time I'm going to play a bit of Guitar Hero III with my fiance and mate Thuan.

JavaScript -> IE Issue

I'm having no luck with this code below and I'm asking the community for help as I've been working on this bit for about 2 hours now and have no luck. This is a snippet of code from a large script. Now this snippet does work in Firefox, however it doesn't work in IE.

When I look at the output (source code) everything looks correct. Hope you have more luck trying to get this to work and don't hesitate to ask me questions about it.


var customerMealsDiv = document.createElement('div');
var customerMealsRow = document.createElement('tr');

// TD Field
try {
var customerMealsField = document.createElement('');
} catch(e) {
var customerMealsField = document.createElement('td');
customerMealsField.setAttribute('colspan', "6");
}
customerMealsFieldDiv = document.createElement('div');
customerMealsFieldDiv.innerHTML = 'Catered Meals (numbers required for catering purposes only Payment to be made when purchasing the meal)';
customerMealsField.appendChild(customerMealsFieldDiv);

// TABLE
var customerMealsTable = document.createElement('table');
var customerMealsTableHeadingRow = document.createElement('tr');
var customerMealsTableHeadingCol0 = document.createElement('th');
customerMealsTableHeadingCol0.setAttribute('width', "92");
customerMealsTableHeadingCol0.appendChild(document.createTextNode(' '));
var customerMealsTableHeadingCol1 = document.createElement('th');
customerMealsTableHeadingCol1.setAttribute('width', "92");
customerMealsTableHeadingCol1.setAttribute('bgcolor', "#999999");
customerMealsTableHeadingCol1.appendChild(document.createTextNode('Fri'));
var customerMealsTableHeadingCol2 = document.createElement('th');
customerMealsTableHeadingCol2.setAttribute('width', "92");
customerMealsTableHeadingCol2.appendChild(document.createTextNode('Sat'));
var customerMealsTableHeadingCol3 = document.createElement('th');
customerMealsTableHeadingCol3.setAttribute('width', "92");
customerMealsTableHeadingCol3.setAttribute('bgcolor', "#999999");
customerMealsTableHeadingCol3.appendChild(document.createTextNode('Sun'));
var customerMealsTableHeadingCol4 = document.createElement('th');
customerMealsTableHeadingCol4.setAttribute('width', "92");
customerMealsTableHeadingCol4.appendChild(document.createTextNode('Mon'));
var customerMealsTableHeadingCol5 = document.createElement('th');
customerMealsTableHeadingCol5.setAttribute('width', "92");
customerMealsTableHeadingCol5.setAttribute('bgcolor', "#999999");
customerMealsTableHeadingCol5.appendChild(document.createTextNode('Tue'));
var customerMealsTableHeadingCol6 = document.createElement('th');
customerMealsTableHeadingCol6.setAttribute('width', "92");
customerMealsTableHeadingCol6.appendChild(document.createTextNode('Wed'));
var customerMealsTableHeadingCol7 = document.createElement('th');
customerMealsTableHeadingCol7.setAttribute('width', "92");
customerMealsTableHeadingCol7.setAttribute('bgcolor', "#999999");
customerMealsTableHeadingCol7.appendChild(document.createTextNode('Thu'));
var customerMealsTableHeadingCol8 = document.createElement('th');
customerMealsTableHeadingCol8.setAttribute('width', "92");
customerMealsTableHeadingCol8.appendChild(document.createTextNode('Fri'));
var customerMealsTableHeadingCol9 = document.createElement('th');
customerMealsTableHeadingCol9.setAttribute('width', "92");
customerMealsTableHeadingCol9.setAttribute('bgcolor', "#999999");
customerMealsTableHeadingCol9.appendChild(document.createTextNode('Sat'));

customerMealsTableHeadingRow.appendChild(customerMealsTableHeadingCol0);
customerMealsTableHeadingRow.appendChild(customerMealsTableHeadingCol1);
customerMealsTableHeadingRow.appendChild(customerMealsTableHeadingCol2);
customerMealsTableHeadingRow.appendChild(customerMealsTableHeadingCol3);
customerMealsTableHeadingRow.appendChild(customerMealsTableHeadingCol4);
customerMealsTableHeadingRow.appendChild(customerMealsTableHeadingCol5);
customerMealsTableHeadingRow.appendChild(customerMealsTableHeadingCol6);
customerMealsTableHeadingRow.appendChild(customerMealsTableHeadingCol7);
customerMealsTableHeadingRow.appendChild(customerMealsTableHeadingCol8);
customerMealsTableHeadingRow.appendChild(customerMealsTableHeadingCol9);

var customerMealsTableLunchRow = document.createElement('tr');
var customerMealsTableLunchCol0 = document.createElement('th');
customerMealsTableLunchCol0.setAttribute('width', "92");
customerMealsTableLunchCol0.appendChild(document.createTextNode('Lunch $6'));
var customerMealsTableLunchCol1 = document.createElement('td');
customerMealsTableLunchCol1.setAttribute('width', "92");
customerMealsTableLunchCol1.setAttribute('align', "center");
customerMealsTableLunchCol1.setAttribute('bgcolor', "#999999");
customerMealsTableLunchCol1.appendChild(document.createTextNode('N/A'));
var customerMealsTableLunchCol2 = document.createElement('td');
customerMealsTableLunchCol2.setAttribute('width', "92");
customerMealsTableLunchCol2.setAttribute('align', "center");
customerMealsTableLunchCol2.appendChild(addNewInput("checkbox", numberCustomers, "meals_lunch_sat_", "Sat", ""));
var customerMealsTableLunchCol3 = document.createElement('td');
customerMealsTableLunchCol3.setAttribute('width', "92");
customerMealsTableLunchCol3.setAttribute('align', "center");
customerMealsTableLunchCol3.setAttribute('bgcolor', "#999999");
customerMealsTableLunchCol3.appendChild(addNewInput("checkbox", numberCustomers, "meals_lunch_sun_", "Sun", ""));
var customerMealsTableLunchCol4 = document.createElement('td');
customerMealsTableLunchCol4.setAttribute('width', "92");
customerMealsTableLunchCol4.setAttribute('align', "center");
customerMealsTableLunchCol4.appendChild(addNewInput("checkbox", numberCustomers, "meals_lunch_mon_", "Mon", ""));
var customerMealsTableLunchCol5 = document.createElement('td');
customerMealsTableLunchCol5.setAttribute('width', "92");
customerMealsTableLunchCol5.setAttribute('align', "center");
customerMealsTableLunchCol5.setAttribute('bgcolor', "#999999");
customerMealsTableLunchCol5.appendChild(addNewInput("checkbox", numberCustomers, "meals_lunch_tue_", "Tue", ""));
var customerMealsTableLunchCol6 = document.createElement('td');
customerMealsTableLunchCol6.setAttribute('width', "92");
customerMealsTableLunchCol6.setAttribute('align', "center");
customerMealsTableLunchCol6.appendChild(addNewInput("checkbox", numberCustomers, "meals_lunch_wed_", "Wed", ""));
var customerMealsTableLunchCol7 = document.createElement('td');
customerMealsTableLunchCol7.setAttribute('width', "92");
customerMealsTableLunchCol7.setAttribute('align', "center");
customerMealsTableLunchCol7.setAttribute('bgcolor', "#999999");
customerMealsTableLunchCol7.appendChild(addNewInput("checkbox", numberCustomers, "meals_lunch_thu_", "Thu", ""));
var customerMealsTableLunchCol8 = document.createElement('td');
customerMealsTableLunchCol8.setAttribute('width', "92");
customerMealsTableLunchCol8.setAttribute('align', "center");
customerMealsTableLunchCol8.appendChild(addNewInput("checkbox", numberCustomers, "meals_lunch_fri2_", "Fri2", ""));
var customerMealsTableLunchCol9 = document.createElement('td');
customerMealsTableLunchCol9.setAttribute('width', "92");
customerMealsTableLunchCol9.setAttribute('align', "center");
customerMealsTableLunchCol9.setAttribute('bgcolor', "#999999");
customerMealsTableLunchCol9.appendChild(addNewInput("checkbox", numberCustomers, "meals_lunch_sat2_", "Sat2", ""));

customerMealsTableLunchRow.appendChild(customerMealsTableLunchCol0);
customerMealsTableLunchRow.appendChild(customerMealsTableLunchCol1);
customerMealsTableLunchRow.appendChild(customerMealsTableLunchCol2);
customerMealsTableLunchRow.appendChild(customerMealsTableLunchCol3);
customerMealsTableLunchRow.appendChild(customerMealsTableLunchCol4);
customerMealsTableLunchRow.appendChild(customerMealsTableLunchCol5);
customerMealsTableLunchRow.appendChild(customerMealsTableLunchCol6);
customerMealsTableLunchRow.appendChild(customerMealsTableLunchCol7);
customerMealsTableLunchRow.appendChild(customerMealsTableLunchCol8);
customerMealsTableLunchRow.appendChild(customerMealsTableLunchCol9);

var customerMealsTableDinnerRow = document.createElement('tr');
var customerMealsTableDinnerCol0 = document.createElement('th');
customerMealsTableDinnerCol0.setAttribute('width', "92");
customerMealsTableDinnerCol0.appendChild(document.createTextNode('Dinner $7'));
var customerMealsTableDinnerCol1 = document.createElement('td');
customerMealsTableDinnerCol1.setAttribute('width', "92");
customerMealsTableDinnerCol1.setAttribute('align', "center");
customerMealsTableDinnerCol1.setAttribute('bgcolor', "#999999");
customerMealsTableDinnerCol1.appendChild(addNewInput("checkbox", numberCustomers, "meals_dinner_fri_", "Fri", ""));
var customerMealsTableDinnerCol2 = document.createElement('td');
customerMealsTableDinnerCol2.setAttribute('width', "92");
customerMealsTableDinnerCol2.setAttribute('align', "center");
customerMealsTableDinnerCol2.appendChild(addNewInput("checkbox", numberCustomers, "meals_dinner_sat_", "Sat", ""));
var customerMealsTableDinnerCol3 = document.createElement('td');
customerMealsTableDinnerCol3.setAttribute('width', "92");
customerMealsTableDinnerCol3.setAttribute('align', "center");
customerMealsTableDinnerCol3.setAttribute('bgcolor', "#999999");
customerMealsTableDinnerCol3.appendChild(addNewInput("checkbox", numberCustomers, "meals_dinner_sun_", "Sun", ""));
var customerMealsTableDinnerCol4 = document.createElement('td');
customerMealsTableDinnerCol4.setAttribute('width', "92");
customerMealsTableDinnerCol4.setAttribute('align', "center");
customerMealsTableDinnerCol4.appendChild(addNewInput("checkbox", numberCustomers, "meals_dinner_mon_", "Mon", ""));
var customerMealsTableDinnerCol5 = document.createElement('td');
customerMealsTableDinnerCol5.setAttribute('width', "92");
customerMealsTableDinnerCol5.setAttribute('align', "center");
customerMealsTableDinnerCol5.setAttribute('bgcolor', "#999999");
customerMealsTableDinnerCol5.appendChild(addNewInput("checkbox", numberCustomers, "meals_dinner_tue_", "Tue", ""));
var customerMealsTableDinnerCol6 = document.createElement('td');
customerMealsTableDinnerCol6.setAttribute('width', "92");
customerMealsTableDinnerCol6.setAttribute('align', "center");
customerMealsTableDinnerCol6.appendChild(addNewInput("checkbox", numberCustomers, "meals_dinner_wed_", "Wed", ""));
var customerMealsTableDinnerCol7 = document.createElement('td');
customerMealsTableDinnerCol7.setAttribute('width', "92");
customerMealsTableDinnerCol7.setAttribute('align', "center");
customerMealsTableDinnerCol7.setAttribute('bgcolor', "#999999");
customerMealsTableDinnerCol7.appendChild(addNewInput("checkbox", numberCustomers, "meals_dinner_thu_", "Thu", ""));
var customerMealsTableDinnerCol8 = document.createElement('td');
customerMealsTableDinnerCol8.setAttribute('width', "92");
customerMealsTableDinnerCol8.setAttribute('align', "center");
customerMealsTableDinnerCol8.appendChild(addNewInput("checkbox", numberCustomers, "meals_dinner_fri2_", "Fri2", ""));
var customerMealsTableDinnerCol9 = document.createElement('td');
customerMealsTableDinnerCol9.setAttribute('width', "92");
customerMealsTableDinnerCol9.setAttribute('align', "center");
customerMealsTableDinnerCol9.setAttribute('bgcolor', "#999999");
customerMealsTableDinnerCol9.appendChild(document.createTextNode('N/A'));

customerMealsTableDinnerRow.appendChild(customerMealsTableDinnerCol0);
customerMealsTableDinnerRow.appendChild(customerMealsTableDinnerCol1);
customerMealsTableDinnerRow.appendChild(customerMealsTableDinnerCol2);
customerMealsTableDinnerRow.appendChild(customerMealsTableDinnerCol3);
customerMealsTableDinnerRow.appendChild(customerMealsTableDinnerCol4);
customerMealsTableDinnerRow.appendChild(customerMealsTableDinnerCol5);
customerMealsTableDinnerRow.appendChild(customerMealsTableDinnerCol6);
customerMealsTableDinnerRow.appendChild(customerMealsTableDinnerCol7);
customerMealsTableDinnerRow.appendChild(customerMealsTableDinnerCol8);
customerMealsTableDinnerRow.appendChild(customerMealsTableDinnerCol9);

customerMealsTable.appendChild(customerMealsTableHeadingRow);
customerMealsTable.appendChild(customerMealsTableLunchRow);
customerMealsTable.appendChild(customerMealsTableDinnerRow);

customerMealsField.appendChild(customerMealsTable);

customerMealsRow.appendChild(customerMealsField);
customerMealsDiv.appendChild(customerMealsRow);

customerDiv.appendChild(customerMealsDiv);
document.getElementById('customers').getElementsByTagName('tbody')[0].appendChild(customerDiv);


I also have this custom script below to add new inputs, it shouldn't be the reason why the code doesn't work in IE as IE using this script below in other areas without an issue.


function addNewInput(inputType, customerNumber, inputBoxName, inputBoxID, inputBoxValue, labelValue, onClickEvent, checked) {
var inputDiv = document.createElement('div');
var inputBox = document.createElement('input');
inputBox.setAttribute('name', inputBoxName + customerNumber);
inputBox.setAttribute('id', inputBoxID + customerNumber);
inputBox.setAttribute('type', inputType);
inputBox.setAttribute('value', inputBoxValue);
if(checked) {
inputBox.setAttribute('checked', checked);
}
if(onClickEvent == "calculateCustomerTotal") {
inputBox.onclick = eventHandler(calculateCustomerTotal, [customerNumber]);
}

var inputLabel = document.createElement('label');
inputLabel.setAttribute('for', inputBoxID + customerNumber);
inputLabel.appendChild(document.createTextNode(labelValue));

inputDiv.appendChild(inputBox);
inputDiv.appendChild(inputLabel);
return inputDiv;
}