Sunday, January 04, 2009

Website Analytics Investment in 2009

Web Analytics Demystified conducted a poll during a webcast in December of 2008. The poll asked about planned website analytics investment in 2009. Based on 251 responses, the results were as follows:

  • 36% said spending on website analytics would increase in 2009
  • 50% said spending on website analytics would not change in 2009
  • 14% said spending on website analytics would decrease in 2009

Saturday, January 03, 2009

MySQL Detailed Table Information

Use the following query to view detailed information about each table in the specified database:

SHOW TABLE STATUS FROM `database`;

Explanation

The SHOW TABLE STATUS command will show the following information about each table in the specified database:

  • Name
  • Engine
  • Version
  • Row Format
  • Rows
  • Average Row Length
  • Data Length
  • Max Data Length
  • Index Length
  • Data Free
  • Auto Increment
  • Create Time
  • Update Time
  • Check Time
  • Collation
  • Checksum
  • Create Options
  • Comment

Replace database with the name of your database.

MySQL ISNULL() Function

If you are familiar with Microsoft SQL you may have used the ISNULL() function; the equivalent function in MySQL is IFNULL().

In Microsoft SQL, the syntax is as follows:

SELECT ISNULL(NULL, 'Some Value')

In MySQL, the syntax is as follows:

SELECT IFNULL(NULL, 'Some Value')

Xbox 360 - Left 4 Dead - Game Design

Lately I have been playing Left 4 Dead on the Xbox 360 console and one thing that really impresses me is how smoothly multi-player gaming works. From a game design perspective, I think the following features are really nice:

  • Players can join or leave games at anytime (even during a campaign)
  • Players who are inactive (idle) for too long are seamlessly controlled by the computer until they return and press a button (which means people can take breaks without significantly impacting the other players)
  • Left 4 Dead is heavily focused on cooperative play, to the extent that your team must "rescue" players in many situations; this greatly enhances the overall experience and raises the intensity level as players strive to reach teammates before they are killed
  • Voice chat works really well and is almost mandatory to survive on the more challenging difficulty settings
  • Players can see silhouettes of their teammate through walls and other obstacles, which greatly reduces people asking "Where are you?" and makes it much easier to rejoin the group if players get separated
  • Players can see their teammates health bars at all times, as well as a partial inventory of what they are carrying
  • Players can heal their teammates

Many of these techniques have been implemented in other games, but Left 4 Dead does a great job of blending them all together in a cohesive and fun experience.

Saturday, December 13, 2008

Xbox 360 - Prey

I really like Prey for the Xbox 360. In Prey, you play the role of Tommy, a Cherokee warrior with special mystic abilities including the ability to spirit walk. The game has a great story compared to typical first person shooters and the brief dialog interspersed throughout the levels really adds to the overall experience. The game designers did a great job of visually melding organic and mechanical elements to create other-worldly levels and a deep sense of immersion. Two interesting game play elements include shifting gravity and portals. Both game play elements are often used as puzzles and often grant access to previously inaccessible areas in the game.

See GameSpot for a complete review of Prey.Prey

Sunday, November 30, 2008

Fix Extremely Slow Firefox Localhost Connections

Dan Wahlin discovered why Firefox runs so slowly when connecting to localhost. The Firefox IPv6 localhost bug significantly impacts page load times for the integrated Web servers in Visual Studio 2005 and Visual Studio 2008, as well as local AJAX development. Dan explains the issue and outlines the resolution:

It turns out that the slowness is caused by an IPv6 issue with DNS and can easily be resolved by turning IPv6 support off in Firefox while doing localhost testing. To make the change, type about:config in the address bar, locate the network.dns.disableIPv6 setting and double-click on it to set it to true. This does the trick for the Firefox localhost issue on Vista and everything is running fast again.

 

Friday, November 21, 2008

Xbox 360 - New Xbox Experience (NXE)

On November 19, 2008, Microsoft launched the New Xbox Experience (NXE) for the Xbox 360 console in North America. Most people with Xbox Live have probably already heard about the new avatars; however, a really slick feature is the ability to embed your avatar in a webpage by linking to a special image directly on Microsoft's servers.

Here's an example of my Xbox Live avatar:

To display your avatar on a Web page, insert an image with one of the following URLs:

http://avatar.xboxlive.com/avatar/Verious/avatar-body.png
http://avatar.xboxlive.com/avatar/Verious/avatarpic-l.png
http://avatar.xboxlive.com/avatar/Verious/avatarpic-s.png

Replace "Verious" with your Xbox Live screen name.

Emption - Comparison Shopping

The new Emption comparison shopping website launched today.

Emption is a comparison shopping website that has developed unique technology to improve and simplify the shopping experience. Shopper's can search, browse by category, and filter products to quickly compare prices and find the best deals.

Even though Emption is in beta, it already has a number of exciting features.

Sunday, October 12, 2008

MySQL Row Number

Use the following MySQL query to return a row number for each record in a recordset:

SELECT @row := @row + 1 AS `RowNumber`, SomeTable.*
FROM SomeTable, (SELECT @row := 0) `DerivedTable`;

Explanation

MySQL allows variables to be assigned and selected in the same statement; therefore, @row := @row + 1 increments the value of the @row variable by one and selects the result. Because the default configuration of MySQL does not allow multiple queries, the value of @row is initialized through a sub-select in the FROM portion of the query. It is important to note that MySQL requires a name for each derived table, in this case the derived table was named DerivedTable. SomeTable and SomeTable.* should be replaced with your table and field list respectively.

Alternate Syntax

If MySQL is configured to allow multiple statements per command (this is turned off by default to prevent several types of SQL injection attacks), you can use the following alternate syntax, which does not require a derived table:

SET @i = 0;
SELECT @i := @i + 1 AS RowNumber, SomeTable.*
FROM SomeTable;

MySQL Numeric Data Types

Signed

Type Minimum Maximum
TINYINT
(1 Byte)
-128 127
SMALLINT
(2 Bytes)
-32768 32767
MEDIUMINT
(3 Bytes)
-8388608 8388607
INT
(4 Bytes)
-2147483648 2147483647
BIGINT
(8 Bytes)
-9223372036854775808 9223372036854775807

Unsigned

Type Minimum Maximum
TINYINT
(1 Byte)
0 255
SMALLINT
(2 Bytes)
0 65535
MEDIUMINT
(3 Bytes)
0 16777215
INT
(4 Bytes)
0 4294967295
BIGINT
(8 Bytes)
0 18446744073709551615

Source MySQL Numeric Data Types

Saturday, October 04, 2008

Microsoft to Ship jQuery with Visual Studio

Microsoft has announced they will be shipping the JavaScript jQuery library with Visual Studio. From the jQuery Blog:

We have two pieces of fantastic, albeit serendipitous, news today: Both Microsoft and Nokia are taking the major step of adopting jQuery as part of their official application development platform. Not only will they be using it for their corporate development but they will be providing it as a core piece of their platform for developers to build with.

This is important news for developers because they will now be able to standardize on the jQuery library for all JavaScript development.

Tuesday, September 30, 2008

Not So Delicious First Impressions

I do not a very good first impression of Delicious:

Sorry, there is a temporary problem. Adding a new bookmark failed.

Please use your browser's Back button and try again. If this problem persists please contact support.

Hmm... isn't adding a bookmark the main feature of the service? Delicious has now broken over a dozen times in the first 10 minutes of use.

I would think adding bookmarks would be rock solid.

Ironically, many of the support pages fail to load properly because Delicious has mixed secure content with non-secure content causing warning messages to pop-up on a regular basis.

Delicious

Like Twitter, I have been hearing about Delicious for awhile now so I finally signed-up. I'm really glad they changed the main URL from http://del.icio.us/ to http://delicious.com/, the former was a challenge to remember (and type).

Follow me on Delicious:

http://delicious.com/Verious/