June 18, 2006

Dancing Links in Sudoku continued

Source: http://www.setbb.com/sudoku/viewtopic.php?p=6068&mforum=sudoku#6068

You should realize that DLX is not designed for sudoku. It is a generic algorithm to solve Exact Cover problems. In fact, many terms are used for different things in DLX and sudoku.

Column

A simple constraint in sudoku. There are 81 columns for each cell, 81 for 9 digits in 9 sudoku-rows, 81 for 9 digits in 9 sudoku-columns and 81 for 9 digits in 9 sudoku boxes. This creates a total of 324 columns.

Row

A candidate in sudoku. There are 9 candidates in 81 cells, creating 729 rows.

Node

An connection between a row to a column. Each row has 4 nodes, one for each of the 4 constraints that it links to.

Example

Take candidate R2C7D6.

It is represented by Row[(2-1)*81+(7-1)*9+(6-1)]
It has a Node for the column representing the cell: [(2-1)*9+(7-1)]
It has a Node for the column representing digit 6 in sudoku-row 2: [81+(2-1)*9+(6-1)]
It has a Node for the column representing digit 6 in sudoku-column 7: [162+(7-1)*9+(6-1)]
It has a Node for the column representing digit 6 in sudoku-box 3: [243+(3-1)*9+(6-1)]

When setting up a DLX grid, make sure you can address the nodes from the rows. I usually define a FirstNode property in the Row object.

729 Rows with 4 Nodes each creates 2916 Nodes in total.
324 Columns each have 9 Nodes attached.

Classes

If you are not familiar with object oriented programming, the following part may be difficult to understand.

Code:
class Node
{
Node Up;
Node Down;
Node Left;
Node Right;
Header Head;
}
class Header : Node
{
int Size;
}


Initially, a Header has no detail nodes connected to it. You should initialize a Header like this:

Code:
this.Up = this.Down = this.Head = this;
this.Size = 0;


When detail nodes are initialized, link them to their header like this:

Code:
this.Down = this.Head.Down;
this.Up = this.Head;
this.Head.Down.Up = this;
this.Head.Down = this;
this.Head.Size++;


Link-Unlink

Each column has a header node. In an object-oriented language, the Header class is inherited from the Node class. You can also implement properties like IsHeader in the Node class.

Nodes are connected to the column header using a double linked list. Each node has Up and Down properties to the adjacent nodes. The column header node is part of both lists.

All nodes belonging to the same Row are connected with Left and Right properties. Most implementations do not use Row headers. The last Node of the row links back to the first. These left-right lists are static. They will not change after the initial setup.

To unlink a node, simply connect the 2 adjacent nodes to each other with the following operation:

Code:
this.Up.Down = this.Down;
this.Down.Up = this.Up;
this.Head.Size--;


This removes a node from the list. Notice that the Header.Size property is also decremented.

The powerful thing about DLX is that this operation can easily be reversed. The node still 'knows' where it was located in the list. The following operation restores the original links:

Code:
this.Up.Down = this;
this.Down.Up = this;
this.Head.Size++;


This is only true when we can be assured that the list is in the same state it was after the node was unlinked. The recursive DLX algorithm takes care of this.

Column Headers

Header nodes use the Left and Right properties in a slightly different way. All headers are linked to each other in a doubly linked list using the Left and Right properties.

A Root will be used as the starting point for these Header lists. Initialize the Root like this:

Code:
this.Left = this.Right = this;


Additional Headers are connected to the Root like this:

Code:
this.Left = Root;
this.Right = Root.Right;
Root.Right.Left = this;
Root.Right = this;


In DLX, you will need to remove selected headers from this list. To do this, use the following operation:

Code:
this.Right.Left = this.Left;
this.Left.Right = this.Right;


Now doesn't that look familiar? We can undo this operation like this:

Code:
this.Right.Left = this;
this.Left.Right = this;


Now we have everything that we need to implement DLX.

Description of the DLX Algorithm as required for Sudoku

Initialize the grid. Use the definitions as specified. Create the Root header. Create all column headers. Save them in an array for easy access. Create all Rows, and save them in an array too. I prefer a multi dimensional array for the rows. Create the Nodes for each Row. Place the first node in the rows array, and make sure they are properly connected, sideways and to the 4 column headers.

Process the clues. You can do this with existing methods. When a cell has a clue value of 1, it cannot be candidates 2 through 9. Use the unlink operation to unlink all candidates, except the clue value. You do not need to unlink all 4 nodes. Only unlink the first node (the one that you can access from the rows array). Do not forget to decrement the associated Header.Size.

Start the recursive process.

Take great care in coding this part. Everything you do must be undone in the reversed order. Sometimes switching 2 lines of code can cause error that are very difficult to detect.

Check recursion stop condition

Recursion ends when the Root has no headers attached. At this point, the algorithm has found a solution. You can save this solution at this point in the code.

Code:
if (Root.Right == Root)
{
// save solution
// increment solution counter
return;
}


Find the best Column Header.

There are various ways to implement this search method. Here is the shortest version:

Code:
Header best = Root.Right;
for (Header hd = Root.Right;hd != Root;hd = hd.Right)
if (hd.Size < best =" hd;


It this point in the process, you have found the best column header to start with. Now there are 3 options, which are all covered by the same algorithm:

1. Size = 0. You have found a dead end. The algorithm will recurse no further and start backtracking.
2. Size = 1. This will happen at least once for each clue that you have processed. When Size= 1, the process has found a single. If you want to see that the sudoku can be solved with singles only, make sure you do not allow the size of selected columns to be greater than 1.
3. Size > 1. The algorithm tries all the alternatives one by one.

How can these 3 situation be handled by a single method?

Unlink the selected Header from the header list.
Unlink the peer nodes of the nodes linked the selected Header.

Together, we call this a Cover operation. I usually implement this as a method for the Header class, and it goes like this:

Code:
this.Right.Left = this.Left;
this.Left.Right = this.Right;
for (Node child = this.Down;child != this; child = child.Down)
for (Node peer = child.Right; peer != child; peer = peer.Right)
{
peer.Up.Down = peer.Down;
peer.Down.Up = peer.Up;
peer.Head.Size--;
}


There is also an Uncover operation to reverse it:

Code:
for (Node child = this.Up;child != this; child = child.Up)
for (Node peer = child.Left; peer != child; peer = peer.Left)
{
peer.Up.Down = peer;
peer.Down.Up = peer;
peer.Head.Size++;
}
this.Right.Left = this;
this.Left.Right = this;

Please notice that even the directions Right/Left and Up/Down are reversed.

After covering a header, the code will try each of the rows linked to the selected column. In case of a size zero column, nothing happens. For other sizes, each of the rows will be selected/deselected in turn.

This is the code to navigate the rows below the column:

Code:
for (Node nd = best.Down;nd != best;nd = nd.Down)
{
nd.Select();
// save info
// recurse
nd.Unselect();
}


This is the Select method for the Node class:

Code:
for (Node peer = this.Left;peer != this; peer = peer.Left) peer.Head.Cover();


This is the Unselect method for the Node class, that reverses the Select method.

Code:
for (Node peer = this.Right;peer != this; peer = peer.Right) peer.Head.Uncover();


The final steps in the algorithm are related to the administration.

You need to save the selected rows. The generic DLX algorithm advises to use a stack, but a simple size 81 array will do fine for sudoku. Make sure you give each Node a CellIndex and a Digit property, and prepare a int[] Selected array.

You need a way to stop the algorithm when multiple solutions are found.

The modified main routine is changed to:

Code:
for (Node nd = best.Down;nd != best;nd = nd.Down)
{
nd.Select();
this.Selected[nd.CellIndex] = nd.Digit;
// recurse
nd.Unselect();
if (this.SolutionCount > 1) break;
}

Dancing Links in Sudoku - source: Wikipedia

In computer science, Dancing Links, commonly known as DLX, is the technique suggested by Donald Knuth to efficiently implement his Algorithm X. Algorithm X is a recursive, nondeterministic, depth-first, brute-force algorithm that finds all solutions to the exact cover problem. Some of the better known exact cover problems include tiling, N-queens and Sudoku.

The name Dancing Links comes from the way the algorithm works, as iterations of the algorithm cause the links to "dance" with partner links so as to resemble an "exquisitely choreographed dance." Knuth credits Hitotumatu and Noshita with having invented the idea in 1979, but it is his paper which has popularized it.

As the remainder of this article discusses the details of an implementation technique for Algorithm X, the reader is strongly encouraged to read the Algorithm X article first.

The idea of DLX is based on the observation that in a circular doubly-linked list of nodes, then

x.left.right ← x.right;
x.right.left ← x.left;

will remove node x from the list, while

x.left.right ← x;
x.right.left ← x;

will restore x's position in the list. This works regardless of the number of elements in the list, even 1.

Knuth observed that a naive implementation of his Algorithm X would spend an inordinate amount of time searching for 1s. When selecting a column, the entire matrix had to be searched for 1s. When selecting a row, an entire column had to be searched for 1s. After selecting a row, that row and a number of columns had to be searched for 1s. To improve this search time from complexity O(n) to O(1), Knuth implemented a sparse matrix where only 1s are stored.

At all times, each node in the matrix will point to the adjacent nodes to the left and right (1s in the same row), above and below (1s in the same column), and the header for its column (described below). Each row and column in the matrix will consist of a circular doubly-linked list of nodes.

Each column will have a special node known as the "column header," which will be included in the column list, and will form a special row ("control row") consisting of all the columns which still exist in the matrix.

Finally, each column header may optionally track the number of nodes in its column, so that locating a column with the lowest number of nodes is of complexity O(n) rather than O(n * m) where n is the number of columns and m is the number of rows.

In Algorithm X, rows and columns are regularly eliminated from and restored to the matrix. Eliminations are determined by selecting a column and a row in that column. If a selected column doesn't have any rows, the current matrix is unsolvable and must be backtracked. When an elimination occurs, the selected row's column, other rows 'belonging' to that column, and other columns to which the selected row 'belongs' are all removed. These columns are removed because they have been filled, and these rows are removed because they conflict with the selected row. To perform the elimination, first remove the selected column's header. Next, for each row where the selected column contains a 1, traverse the row and remove it from other columns (this makes those rows inaccessible and is how conflicts are prevented). Finally, remove each column (other than the selected column, it has already been removed) in which the selected row has a 1 (they have been filled by the selected row). This order ensures that any removed node is removed exactly once and in a predictable order, so it can be backtracked appropriately. If the resulting matrix has no columns, then they have all been filled and the selected rows form the solution.

To backtrack, the above process must be reversed using the second algorithm stated above. A requirement of using that algorithm is that backtracking must be done as an exact reversal of eliminations. Knuth's paper gives a clear picture of these relationships and how the node removal and reinsertion works.

It is also possible to solve one-cover problems in which a particular constraint is optional, but can be satisfied no more than once. DLX accommodates these with primary columns which must be filled and secondary columns which are optional. This alters the algorithm's solution test from a matrix having no columns to a matrix having no primary columns, but doesn't require any further changes. Knuth discusses optional constraints as applied to the N-Queens problem. The chessboard diagonals represent optional constraints, as some diagonals may not be occupied. If a diagonal is occupied, it can only be occupied once.
[edit]

Application to Sudoku

Currently (January 2006), Sudoku is enjoying a surge of popularity amongst programmers and game enthusiasts alike. The following considers the popular 3x3-3x3 (3x3 grid of 3x3 boxes) Sudoku variant. To convert any other variant into an exact cover problem, all that is required is an adjustment of the constraint-column mapping.

The DLX matrix for Sudoku represents every possible move and the constraints those moves must satisfy in any valid solution.

Each row in a DLX matrix represents a possible move, i.e., placing a particular digit in a particular cell. Thus the DLX rows can be labeled , where d, r and c each range from 1 to 9. For example, there is a DLX row <2,5,7> for placing the digit 2 in the cell in row 5 and column 7. As there are 9 possible digits and 9x9=81 possible cells, there are 9x81=729 DLX rows.

Note: Although it is thus possible to place more than one digit in the same cell, constraints will assure that any valid solution has exactly one digit per cell.

Each column in a DLX matrix represents a constraint any valid solution must satisfy. Sudoku has four kinds of constraints:

1. Each cell in a row and column must contain exactly one digit: .
2. Each digit must occur in each row exactly once: .
3. Each digit must occur in each column exactly once: .
4. Each digit must occur in each box exactly once: .

For example, the Type 1 (row-column) constraint <5,7> is that the cell in row 5 and column 7 contains exactly one digit. The column in the DLX matrix for this constraint has a 1 in the DLX rows <1,5,7>, <2,5,7>, ..., <9,5,7>, which correspond to placing the digits 1 through 9 in the cell in row 5 and column 7. (The DLX column has a 0 in every other DLX row.) Since a valid solution will select only one of these 9 DLX rows, the cell in row 5 and column 7 will contain exactly one digit. As there are 9 possible rows and 9 possible columns, there are 9x9=81 Type 1 columns in the DLX matrix.

For example, the Type 2 (digit-row) constraint <2,5> is that the digit 2 must occur in row 5 exactly once. The column in the DLX matrix for this constraint has a 1 in the DLX rows <2,5,1>, <2,5,2>, ..., <2,5,9>, which correspond to placing the digit 2 in the cell in row 5 and columns 1 through 9. (The DLX column has a 0 in every other DLX row.) Since a valid solution will select only one of these 9 DLX rows, the digit 2 will occur in row 5 exactly once. As there are 9 possible digits and 9 possible rows, there are 9x9=81 Type 2 columns in the DLX matrix.

Similarly, there are 9x9=81 Type 3 (digit-column) constraints, one for each of 9 digits and 9 columns.

Similarly, there are 9x9=81 Type 4 (digit-box) constraints, one for each of 9 digits and 9 boxes.

Thus there are 81+81+81+81=324 DLX columns.

In summary, the DLX matrix has 729 rows and 324 columns.

Note that each DLX row contains exactly 4 1s (and 324-4=320 0s). For example, the DLX row <2,5,7>, which corresponds to placing the digit 2 in the cell in row 5 and column 7, has a 1 in the DLX columns for row-column constraint <5,7>, digit-row constraint <2,5>, digit-column constraint <2,7> and digit-box constraint <2,6> (and has a 0 in every other DLX column). (The cell in row 5 and column 7 occurs in box 6, when boxes are numbered from 1 to 9 left-to-right and top-to-bottom.)

Note that each DLX column contains exactly 9 1s (and 729-9=720 0s).

Thus the DLX matrix is sparse, and much efficiency is gained by maintaining nodes for only the 1s.

Note that the ordering of the rows and columns is irrelevant, so long as you can convert between the constraints satisfied by a move and the columns representing each constraint.

To solve a specific Sudoku problem, select the DLX rows representing the givens and then solve the DLX matrix. For example, if it is a given that the digit 2 occurs in the cell in row 5 and column 7, then the DLX row <2,5,7> is part of the solution.

For developers - here is a c code for sudoku

Source: http://www.setbb.com/phpbb/

// speed-optimized for hard 16*16s , new trick: remember how good
// column-choices were ! (see lines with a ~)

#include stdio.h
#include time.h
#include stdio.h
#include sys/time.h

#define N 4 // 16*16-sudoku
#define N2 N*N
#define N4 N2*N2
#define MWC ( (zr=36969*(zr&65535)+(zr>>16)) ^ (wr=18000*(wr&65535)+(wr>>16)) )
int A[N4 + 9], Ur[N2 * N4 + 1], Uc[4 * N4 + 1], V[N2 * N4 + 1];
int Rows[4 * N4 + 1], Cols[N2 * N4 + 1], Row[4 * N4 + 1][N2 + 1],
Col[N2 * N4 + 1][5];
int C[N4 + 1], I[N4 + 1], Node[N4 + 1], Two[N4 * 4 + 9], C0[N4 * 4 + 9], P[N4 + 9];
int M1[N4 + 9][4 * N4 + 9], N1[N4 + 9][4 * N4 + 9], Z1[N4 + 9][4 * N4 + 9]; //~
int s1, i1, t1, i4, c0, m0, m1, try, i, j, k, l, r, r1, c, c1, c2, n = N4 * N2, m =
4 * N4, x, y, s;
int sam, samples, smax, min, clues, nodes, guesses, solutions;
unsigned zr = 362436069, wr = 521288629;
char L[18] = ".123456789ABCDEFG";
FILE *file;

int solve (int);
int reduce (int);
int unreduce (int);

int main (int argc, char *argv[])
{
clock ();
//These are for out rancom number x
unsigned int seed;
struct timeval tv;

if (argc <>
m5:printf ("\nusage:suexg16f samples \n\n");
printf ("generates samples sudokus\n");
exit (1);
}
gettimeofday (&tv, 0);
x = tv.tv_sec + tv.tv_usec;
zr += x;
wr ^= x;
sscanf (argv[1], "%i", &samples);

for (i = 1; i <= m; i++) {
j = 1;
while (j <>
j += j;
Two[i] = j - 1;
}

r = 0;
k = N;
l = N2;
for (x = 1; x <= N2; x++)
for (y = 1; y <= N2; y++)
for (s = 1; s <= N2; s++) {
r++;
Cols[r] = 4;
Col[r][1] = x * N2 - N2 + y;
Col[r][2] = (k * ((x - 1) / k) + (y - 1) / k) * l + s + N4;
Col[r][3] = x * N2 - N2 + s + N4 * 2;
Col[r][4] = y * N2 - N2 + s + N4 * 3;
}
for (i = 1; i <= m; i++)
Rows[i] = 0;
for (r = 1; r <= n; r++)
for (i = 1; i <= Cols[r]; i++) {
c = Col[r][i];
Rows[c]++;
Row[c][Rows[c]] = r;
}

for (sam = 1; sam <= samples; sam++) {
m0:for (i = 1; i <= N4; i++)
A[i] = 0;
solve (1);

for (i = 1; i <= N4; i++) {
mr4:x = MWC & 255;
if (x >= i)
goto mr4;
x++;
P[i] = P[x];
P[x] = i;
}
for (i1 = 1; i1 <= N4; i1++)
if (A[P[i1]]) {
s1 = A[P[i1]];
A[P[i1]] = 0;
if (solve (2) > 1)
A[P[i1]] = s1;
}

if ((file = fopen ("sudoku.16", "at")) == NULL) {
fclose (file);
printf ("\nfile-error\n\n");
exit (1);
}
for (i = 1; i <= N4; i++)
fprintf (file, "%c", L[A[i]]);
fprintf (file, "\n");
fclose (file);

for (i = 1; i <= N4; i++)
printf ("%c", L[A[i]]);
printf ("\n");
}
printf ("%i sudokus generated in %i/%isec.\n", samples, clock (), CLOCKS_PER_SEC);

return 0;
}

int solve (int smax)
{
for (i = 0; i <= N4 >> 4; i++)
for (j = 1; j <= m; j++) {
N1[i][j] = 0;
Z1[i][j] = 0;
} //~
for (i = 0; i <= n; i++)
Ur[i] = 0;
for (i = 0; i <= m; i++)
Uc[i] = 0;
clues = 0;
for (x = 1; x <= N2; x++)
for (y = 1; y <= N2; y++)
if (A[x * N2 - N2 + y]) {
clues++;
r = x * N4 - N4 + y * N2 - N2 + A[x * N2 - N2 + y];
for (j = 1; j <= Cols[r]; j++) {
c1 = Col[r][j];
if (Uc[c1])
return -1;
Uc[c1]++;
for (k = 1; k <= Rows[c1]; k++) {
r1 = Row[c1][k];
Ur[r1]++;
}
}
}
for (c = 1; c <= m; c++) {
V[c] = 0;
for (r = 1; r <= Rows[c]; r++)
if (Ur[Row[c][r]] == 0)
V[c]++;
}

m0 = 0;
m1 = 0;
guesses = 0;
i = clues;
solutions = 0;
m2:i++;
I[i] = 0;
min = n + 1;
if (i > N4 || m0)
goto m4;
if (m1) {
C[i] = m1;
goto m3;
}

c0 = 0;
for (c = 1; c <= m; c++)
if (!Uc[c]) {
if (V[c] <= min) {
c0++;
C0[c0] = c;
}
if (V[c] <>
min = V[c];
c0 = 1;
C[i] = c;
C0[c0] = c;
if (min <>
goto m3;
}
}
if (min > 1)
guesses++;

m2a:c1 = MWC & Two[c0];
if (c1 >= c0)
goto m2a;
c1++;
C[i] = C0[c1];

min = 999999;
i4 = i >> 4;
for (j = c1; j <= c0; j++) {
c = C0[j];
if (N1[i4][c] <>
min = N1[i4][c] / Z1[i4][c];
C[i] = c;
}
} //~
for (j = 1; j <>
c = C0[j];
if (N1[i4][c] <>
min = N1[i4][c] / Z1[i4][c];
C[i] = c;
}
} //~

m3:c = C[i];
I[i]++;
if (I[i] > Rows[c])
goto m4;
r = Row[c][I[i]];
if (Ur[r])
goto m3;
m0 = 0;
m1 = 0;
if (smax == 1) {
j = N2;
k = N4;
x = (r - 1) / k + 1;
y = ((r - 1) % k) / j + 1;
s = (r - 1) % j + 1;
A[x * N2 - N2 + y] = s;
}
for (j = 1; j <= Cols[r]; j++) {
c1 = Col[r][j];
Uc[c1]++;
}
for (j = 1; j <= Cols[r]; j++)
reduce (Col[r][j]);
Node[i]++;
nodes++;
M1[i][c] = nodes; //~ remember nodes
if (i == N4) {
solutions++;
if (smax == 1)
return 1;
}
if (solutions > 1)
return 2;
goto m2;
m4:c = C[i];
N1[i >> 4][c] += nodes - M1[i][c];
Z1[i >> 4][c]++; //~ column-statistics
i--;
c = C[i];
r = Row[c][I[i]];
for (j = 1; j <= Cols[r]; j++)
unreduce (Col[r][j]);
if (i > clues)
goto m3;
return solutions;
}

int reduce (int c)
{ // deletes c and N[c], updates V[],m0,m1
int r, c2, k, l;

for (k = 1; k <= Rows[c]; k++) {
r = Row[c][k];
Ur[r]++;
if (Ur[r] == 1)
for (l = 1; l <= Cols[r]; l++) {
c2 = Col[r][l];
V[c2]--;
if (Uc[c2] + V[c2] <>
m0 = c2;
if (Uc[c2] == 0 && V[c2] <>
m1 = c2;
}
}
}

int unreduce (int c)
{
int r, c2, k, l;

Uc[c]--;
for (k = 1; k <= Rows[c]; k++) {
r = Row[c][k];
Ur[r]--;
if (Ur[r] == 0)
for (l = 1; l <= Cols[r]; l++) {
c2 = Col[r][l];
V[c2]++;
}
}
}

Sudoku example 1


Sudoku by Sudokuhints.com

June 16, 2006

Masterpieces of Soviet Cinema

Alexander Nevsky - Sergei M . Eisenstein and Dmitri Vasilyev

Plot Synopsis: It is the 13th century, and Russia is overrun by foreign invaders. A Russian knyaz', or prince, Alexander Nevsky, rallies the people to form a ragtag army to drive back an invasion by the Teutonic knights. This is a true story based on the actual battle at a lake near Novgorod.

Amazon.com essential video
Sergei Eisenstein's landmark tale of Russia thwarting the German invasion of the 13th century was wildly popular and quite intentional, given the prevailing Nazi geopolitical advancement and destruction at the time. It can still be viewed as a masterful use of imagery and music, with the Battle on the Ice sequence as the obvious highlight. Unfortunately, the rest of the film pales in comparison. A great score by Prokofiev was effectively integrated by the Russian filmmaker, but stands on its own merit as well. --Bill Desowitz

DVD Description
Director Sergei Eisenstein's epic "Alexander Nevsky" features some of the most beautiful imagery ever put on film, a majestic music score by Prokifiev and a dazzling, climactic battle on a frozen lake.
______________________________________________________

Andrei Rublev - Andrei Tarkovsky

Plot Synopsis: Andreiv Rublev charts the life of the great icon painter through a turbulent period of 15th Century Russian history, a period marked by endless fighting between rival Princes and by Tatar invasions.

Amazon.com
At last, the complete version of Andrei Tarkovski's 1966 masterpiece about the great 15th century Russian icon painter (a film suppressed by the Soviet Union and unseen until 1971) is available. It's a complex and demanding narrative about the responsibility of the artist to participate in history rather than documenting it from a safe distance. A landmark in Russian cinema, Andrei Rublev is a beautifully lyrical black-and-white film about harmony and soulful expression. As the late filmmaker says in a supplementary interview, each generation must experience life for itself; it cannot simply absorb what has preceded it. In fact, a whole host of supplements accompanies the film in this Criterion Collection release. Stick with it; it's worth the effort. --Bill Desowitz

DVD Description
Immediately suppressed by the Soviets in 1966, Andrei Tarkovsky's epic masterpiece is a sweeping medieval tale of Russia's greatest icon painter. Too experimental, too frightening, too violent, and too politically complicated to be released officially, Andrei Rublev has existed only in shortened, censored versions until the Criterion Collection created this complete 205-minute director's cut special edition, now available for the first time on DVD.
______________________________________________________

Battleship Potemkin - Sergei M. Eisenstein and Grigori Aleksandrov

Plot Synopsis: Based on the historical events the movie tells the story of a riot at the battleship Potemkin. What started as a protest strike when the crew was given rotten meat for dinner ended in a riot. The sailors raised the red flag and tried to ignite the revolution in their home port Odessa.

Amazon.com essential video
Sergei Eisenstein's revolutionary sophomore feature has so long stood as a textbook example of montage editing that many have forgotten what an invigoratingly cinematic experience he created. A 20th-anniversary tribute to the 1905 revolution, Eisenstein portrays the revolt in microcosm with a dramatization of the real-life mutiny aboard the battleship Potemkin. The story tells a familiar party-line message of the oppressed working class (in this case the enlisted sailors) banding together to overthrow their oppressors (the ship's officers), led by proto-revolutionary Vakulinchuk. When he dies in the shipboard struggle the crew lays his body to rest on the pier, a moody, moving scene where the citizens of Odessa slowly emerge from the fog to pay their respects. As the crowd grows Eisenstein turns the tenor from mourning a fallen comrade to celebrating the collective achievement. The government responds by sending soldiers and ships to deal with the mutinous crew and the supportive townspeople, which climaxes in the justly famous (and often imitated and parodied) Odessa Steps massacre. Eisenstein edits carefully orchestrated motions within the frame to create broad swaths of movement, shots of varying length to build the rhythm, close-ups for perspective and shock effect, and symbolic imagery for commentary, all to create one of the most cinematically exciting sequences in film history. Eisenstein's film is Marxist propaganda to be sure, but the power of this masterpiece lies not in its preaching but its poetry. --Sean Axmaker

DVD Description
Stylistically, The Battleship Potemkin serves as a revolutionary film, not only in its subject matter, but also in its unique use of montage. As a pioneer who championed a new purpose for cinema, Eisenstein proposed a "kino fist" approach to filmmaking, one in which the film attacks the viewer’s senses with symbolic metaphors, rhythmic editing, and highly-charged melodrama. Includes a rare documentary on Eisentein.
______________________________________________________

Dersu Uzala - Akira Kurosawa

Plot Synopsis: A Russian army explorer who is rescued in Siberia by a rugged Asiatic hunter renews his friendship with the woodsman years later when he returns at the head of a larger expedition. The hunter finds that all his nature lore is of no help when he accompanies the explorer back to civilisation.

Amazon.com essential video
During an unusual chapter in the career of director Akira Kurosawa (Rashomon), the filmmaker went to Russia because he found working in his native Japan to be too difficult. The result was this striking 1975 near-epic based on the turn-of-the-century autobiographical novels of a military explorer (Yuri Solomin) who met and befriended a Goldi man in Russia's unmapped forests. Kurosawa traces the evolution of a deep and abiding bond between the two men, one civilized in the usual sense, the other at home in the sub-zero Siberian woods. There's no question that Dersu Uzala (the film is named for the Goldi character, played by Maxim Munzuk) has the muscular, imaginative look of a large-canvas Soviet Mosfilm from the 1970s. But in its energy and insight it is absolutely Kurosawa, from its implicit fascination with the meeting of opposite worlds to certain moments of tranquility and visual splendor. But nothing looks like Kurosawa more than a magnificent action sequence in which the co-heroes fight against time and exhaustion to stay alive in a wicked snowstorm. For fans of the late legend, this is a Kurosawa not to be missed. --Tom Keogh

DVD Description
Against a backdrop of the treacherous mountains, rivers and icy plains of the Siberian wilderness, acclaimed Japanese director Akira Kurosawa (The Seven Samurai, Rashomon) stages an extraordinary adventure of comradeship and survival. Winner of the Academy Award for Best Foreign Language Film.
______________________________________________________

Destiny of a Man - Sergei Bondarchuk

Plot Synopsis: The story of a man (Andrey Sokolov) whose life was ruthlessly crippled by World War II. His wife and daughter were killed during the bombing of his village, he spent some time as a prisoner, and his only son was killed in action only a few days before the victory...

DVD Description
A hymn to the human spirit, this screen adaptation from the novel by Nobel Prize winner Mikhail Sholokhov. After losing his wife and children during the war with fascist Germany and surviving the horrors of a concentration camp, Andrei Sokolov (played by the film's honored director, War and Peace's Sergei Bondarchuk) marches with the Soviet Army towards Berlin and finds a new destiny with a young orphaned boy. Winner of the Grand Prize at the 1959 Moscow IFF and Special Diploma at the 1970 Karlovy Vary IFF.
______________________________________________________

Father of a Soldier - Rezo Chkheidze

DVD Description
This moving study of war's inhumanity follows the wrenching journey of Georgy, an old peasant winegrower who travels to see his wounded soldier son in the hospital. However, the son has already been sent back out to the front, sending Georgy on a trek with the Soviety Army all the way to Berlin to witness the toppling of fascism. This beautifully filmed and acted Soviet classic in the tradition of "The Cranes Are Flying" remains a pioneering work of cinematic art.


_____________________________________________________

Ivan's Childhood - Andrei Tarkovsky


DVD Description
The first full-length feature film by the Great Russian director Andrei Tarkovsky. It caused a popular sensation in cinema world. The film was highly praised by the great 20th-century French writer Jean-Paul Sartre. It got various comments from prominent international cultural figures who admitted that the world had not yet seen such a powerful motion picture about war. The 12-year-old Ivan's childhood ended the day the Fascists shot his mother and sister right before his eyes. Ivan's father was killed in the war. The orphaned boy joins an army detachment, becoming an elusive scout. Risking his life, he brings to his commanders invaluable information about the enemy. But one day he does not come back from his mission...

Awards: St. Mark's Golden Lion at the Venice IFF, 1962; Golden Gate Prize for Best Director at the San Francisco IFF, 1963; Special Diploma at the Karlovy Vary IFF, 1970.
______________________________________________________

Ivan the Terrible Pt.1 - Sergei M. Eisenstein

Plot Synopsis: In 1547, Ivan IV (1530-1584), archduke of Moscow, crowns himself Tsar of Russia and sets about reclaiming lost Russian territory. In scenes of his coronation, his wedding to Anastasia, his campaign against the Tartars in Kazan, his illness when all think he will die, recovery, campaigns in the Baltic and Crimea, self-imposed exile in Alexandrov, and the petition of Muscovites that he return, his enemies among the boyars threaten his success. Chief among them are his aunt, who wants to advance the fortunes of her son, a simpleton, and Kurbsky, a warrior prince who wants both power and the hand of Anastasia. Ivan deftly plays to the people to consolidate his power.

Amazon.com
A biography of the first czar of Russia was the final movie project of the great Sergei Eisenstein's life. It would be his undoing, as Stalin was not pleased with part II of this epic. But Ivan the Terrible, Part I still stands as a magnificent, rich, and strange achievement. This is a "composed" film to make Hitchcock look slapdash; every frame is arranged with the eye of a painter or choreographer, the mise-en-scène so deliberately artificial that even the actors' bodies become elements of style. (They complained about contorting themselves to fit Eisenstein's designs.) If you don't believe movies can be art, this could be (and has been) dismissed as ludicrous. But Eisenstein's command of light and shadow becomes its own justification, as the fascinating court intrigue plays out in a series of dynamic, eye-filling scenes. This is not a political theorist, but a director drunk on pure cinema. --Robert Horton

DVD Description
Part One of Sergei Eisenstein's two-part epic chronicling the life of the 16th Century Tsar, Ivan Grozny, is one of film's most artistic and absorbing creations. Over three years in the making, "Ivan the Terrible" features an operatic score by the esteemed Soviet composer Sergei Prokofiev.
______________________________________________________

Ivan the Terrible Pt.2 - Sergei M. Eisenstein and M. Filimmonova

Plot Synopsis: His wife dead from poisoning and his chief warrior, Kurbsky, defected to the Poles, Ivan is lonely as he pursues a unified Russia with no foreign occupiers. Needing friendship, he brings to court Kolychev, now Philip the monk, and makes him metropolitan bishop of Moscow. Philip, however, takes his cues from the boyars and tries to bend Ivan to the will of the church. Ivan faces down Philip and lets loose his private force, the Oprichniks, on the boyars. Led by the Tsar's aunt, Euphrosyne, the boyers plot to assassinate Ivan and enthrone her son, Vladimir. At a banquet, Ivan mockingly crowns Vladimir and sends him in royal robes into the cathedral where the assassin awaits.

Amazon.com
Sergei Eisenstein's saga of Czar Ivan IV continues with the struggle for power and the use of secret police, a controversial segment that caused the film to be banned by Stalin in 1946 (the film was not released until 1958). The predominantly black-and-white film features a banquet dance sequence in color. Obviously the two parts must be viewed as a whole to be fully appreciated. Many film historians consider this period in Eisenstein's career less interesting than his silent period because of a sentimental return to archaic forms (characteristic of Soviet society in the '30s and '40s). Perhaps it was just part of his maturity. --Bill Desowitz

DVD Description
Part Two of Sergei Eisenstein's two-part epic chronicling the life of the 16th Century Tsar, Ivan Grozny, is one of film's most artistic and absorbing creations. Over three years in the making, "Ivan the Terrible" features an operatic score by the esteemed Soviet composer Sergei Prokofiev.
______________________________________________________

Solaris - Andrei Tarkovsky

Amazon.com
The Russian answer to 2001, and very nearly as memorable a movie. The legendary Russian director Andrei Tarkovsky made this extremely deliberate science-fiction epic, an adaptation of a novel by Stanislaw Lem. The story follows a cosmonaut (Donatas Banionis) on an eerie trip to a planet where haunting memories can take physical form. Its bare outline makes it sound like a routine space-flight picture, an elongated Twilight Zone episode; but the further into its mysteries we travel, the less familiar anything seems. Even though Tarkovsky's meanings and methods are sometimes mystifying, Solaris has a way of crawling inside your head, especially given the slow pace and general lack of forward momentum. By the time the final images cross the screen, Tarkovsky has gone way beyond SF conventions into a moving, unsettling vision of memory and home. Well worthy of cult status, Solaris is both challenging art-house fare and a whacked-out head trip. --Robert Horton
______________________________________________________

Stalker - Andrei Tarkovsky

Plot Synopsis: Near a gray and unnamed city is the Zone, an alien place guarded by barbed wire and soldiers. Over his wife's numerous objections, a man rises in the dead of night: he's a stalker, one of a handful who have the mental gifts (and who risk imprisonment) to lead people into the Zone to the Room, a place where one's secret hopes come true. That night, he takes two people into the Zone: a popular writer who is burned out, cynical, and questioning his genius; and a quiet scientist more concerned about his knapsack than the journey. In the deserted Zone, the approach to the Room must be indirect. As they draw near, the rules seem to change and the stalker faces a crisis.

DVD Description
This science fiction milestone from director Andrei Tarkovsky (Solaris) takes you into the Zone, a mysterious, guarded realm containing a mystical Room in which occupants' secret dreams come true. Stalker, a man able to lead others to this holy grail, escorts a writer and a scientist through this foreboding territory and confronts several unexpected challenges along the way. Based on the novel "Roadside Picnic" by Russian sci-fi writers Arkady and Boris Strugatsky.
______________________________________________________

Strike - Sergei M. Eisenstein

Plot Synopsis: In Russia's factory region during Czarist rule, there's restlessness and strike planning among workers; management brings in spies and external agents. When a worker hangs himself after being falsely accused of thievery, the workers strike. At first, there's excitement in workers' households and in public places as they develop their demands communally. Then, as the strike drags on and management rejects demands, hunger mounts, as does domestic and civic distress. Provocateurs recruited from the lumpen and in league with the police and the fire department bring problems to the workers; the spies do their dirty work; and, the military arrives to liquidate strikers.

Amazon.com essential video
Sergei Eisenstein's debut film is more than a landmark of Soviet cinema; it's easily one of the most thrilling and inventive films to emerge from the silent era of Russian filmmaking. Eisenstein was a theater director and stage designer with some very specific ideas about the cinema, and he put them into practice telling the story of a worker's strike in pre-Revolution Russia, portraying the struggle not of leader against leader, but of the proletariat against the factory owners, enlivened by a conspiratorial subplot involving a quartet of insidious spies sent to infiltrate the ranks of labor. The subject matter is at times didactic and the acting often hammy and overwrought, but the technique is vibrant and the images striking. Eisenstein's compositions reflect the graphic boldness of contemporary poster art, mixing poetic realism with grotesque expressionism in a gripping style, and his famous montage editing style (to be perfected in his next film, Potemkin) is raw, experimental, and energetic. Eisenstein's later films are more consistent and elegant, but none of them have the sheer cinematic invention and energy of this first film. The new score composed and performed by the idiosyncratic Alloy Orchestra combines a mix of martial and mood music on synthesizer with the driving percussion of drums, wood blocks, bells, and wrecking yard of clanging metal objects--a dynamic soundtrack to one of the most auspicious directoral debuts ever. --Sean Axmaker

DVD Description
Sergei Eisenstein's "Strike," with Orson Welles' "Citizen Kane," mark the most outstanding cinematic debuts in the history of film. Triggered by the suicide of a worker unjustly accused of theft, a strike is called by the laborers of a Moscow factory. The managers, owner and the Czarist government dispatch infiltrators in an attempt to break the workers unity. Unsuccessful, they hire the police and, in the film's most harrowing and powerful sequences, the unarmed strikers are slaughtered in a brutal confrontation. This edition of "Strike" is digitally remastered from a mint-condition 35mm print made from the original camera negative and features new digital stereo music composed and performed by the Alloy Orchestra.
______________________________________________________

The Mirror - Andrei Tarkovsky

Plot Synopsis: The director mixes flashbacks, historical footage and original poetry to illustrate the reminiscences of a dying man about his childhood during World War II, adolescence, and a painful divorce in his family. The story interweaves reflections about Russian history and society.
______________________________________________________

The Sacrifice - Andrei Tarkovsky

Plot Synopsis: Alexander, a journalist and former actor and philosopher, tells his little son how worried he is about the lack of spirituality of modern mankind. In the night of his birthday, the third world war breaks out. In his despair Alexander turns himself in a prayer to God, offering him everything to have the war not happened at all.

Pusillanimous Dannish Government

The new slogan for the Dannish Government:

"If you are interested in terrorism, if you want to support the murders of your organization, you are more than welcome to open a TV channel in Denmark.


Denmark welcomes all the terrorists and their supporters in the world."

Sad bad true.

The TV channel that has been proven to support terrorism and the resulting murders in Turkey still continues its broadcasts from Denmark, with the Dannish Government fully supporting it - in the name of free speech.

Another sad thing is this TV collects its money through two means: threatening the people in Europe using the terrorist organization and drug money again using the terrorist organization. When will those "Educated morons" learn that unless you take a step further in stopping this kind of organizations, the world will continue to bath in the blood of innocents!!!

We need to ask ourselves:
Q: Since when the Europeans have cared what happens to others as long as it does not hurt them?
A: Almost never and the Dannish Government sits there as a perfect example.

Laugh of the Dai!

The Greeks living in the southern part of Cyprus are trying to force their way into the Organization of Islamic Conference.

I guess as a country, who wouldn't hesitate to wish their best for all the Muslims in the world to suffer a tragic ending, there wouldn't be a better fit for them.

June 13, 2006

Rapidshare trick - It might come in handy for many

Here is a nice trick if you want to download at least two large files within the time-limit.

You need to have a large bandwidth to be able to use that. The trick exploits the character verification system (CAPTCHA) Rapidshare implements. As many should have noticed, the final waiting time for free users to reach the word verification part depends on the size of the to-be-downloaded file.

So, how do you get two files (or more depending on the delay and size of the files)?

Once the counter starts for the file you want to download, you reserve the right to download the file within some time-limit (I don't know the exact amount, since I haven't tried much, but I know that it is greater than 1 minute).

Therefore, if you start the counter to the second file (preferably the larger of the two) just before the counter of the first file reaches zero, you reserve the right to download that file.

If the size of the file is close to 100mb, the counter starts around 70, so, if you can download the first file within the timeout period of the second download, which is greater than (130 seconds including the initial waiting time), you can successfully download the second file (you cannot download at the same time, so click the download link just after the first file finishes).

This way, you can be able to download at the daily limit of members. Hopefully, someone can come up with a program to take advantage of this flaw.

You might feel a serious need for this if you accidentally come across a blog like http://chrisgoesrock.blogspot.com.

Update: I don't know why it differs, but when you use opera using the above method, you cannot download immediately, instead you are asked to wait 13 minutes.

June 10, 2006

The Weird Sisters - Magic Works

Who would have considered that 'Magic Works' would have entered to the list of my favorite movie songs that are able to create considerable emotional attachment to the movie. Not me, especially after listening the other songs from the band. But, anyways, it broke away the wall to reach the heights of Mad World from Donnie Darko.

I guess what captured me the most is the singer's style - a softer version of David Bowie - which is a combination of David Bowie's voice and Lou Reed's style in Perfect Day. Also, I cannot deny the impact of the Radiohead members in the song.

Since I couldn't find the lyrics to the song, here is my version:

MAGIC WORKS

And dance, your final dance
This is your final chance
To hold the one you love
You know you've waited long enough
Still believe
That magic works
Don't be afraid
I've been hurt
Don't let this magic die
The answer's there
Just look in her eyes
And make your final move
Don't be scared
She want you too
Yeah it's hard
You must be brave
Don't let this moment slip away
Don't believe that magic works
Don't be afraid
Afraid of being hurt
Don't let this magic die
The answer's there
Just look in her eyes
And don't believe that magic can die
No no no this magic can't die
So dance your final dance
Cause this is your final chance

I might later try to create a video for the song. It is sad that we don't have the scenes for the next two movies.

2006 AFI Lifetime Achievement Award - Sean Connery

Sources: Comingsoon.net and AFI

Sir Sean Connery was selected by the American Film Institute's Board of Trustees to receive the 34th AFI Life Achievement Award, the highest honor for a career in film.

"Sir Sean Connery is an international film icon. Though best remembered for creating one of the great film heroes of all time, his talents transcend typecasting, and his body of work not only stands the test of time, but illuminates a career more extraordinary than James Bond himself. Sir Sean is an artist of the highest order, and AFI is honored to present him with its 34th Life Achievement Award."

- Sir Howard Stringer, chair, AFI Board of Trustees

A quick look at Sean Connery's earlier achievements and awards:

In addition to receiving both the Best Supporting Actor Oscar and the Golden Globe Award in 1987 for his performance in The Untouchables, Connery has received numerous other accolades. They include, among others, the Legion d'Honneur and Commandeur des Arts et des Lettres (the highest honors given in France), and the British Academy of Film and Television Arts (BAFTA) Best Actor award for The Name of the Rose in 1987, as well as the Lifetime Achievement Award -- special BAFTA silver mask presented by H.R.H. Princess Anne to a British actor or actress who has made an outstanding contribution to world cinema -- presented in 1990. In 1995 he was presented with the Cecil B. DeMille Award for "outstanding contribution to the entertainment field" given by the Hollywood Foreign Press Association at its annual Golden Globe Awards. In 1997, Connery was honored with a Gala Tribute by the Film Society of Lincoln Center for his lifetime career and, in April 1998, BAFTA honored him with their highest award, The British Academy Fellowship. In 1999, Connery was a Kennedy Center Honors recipient and in 2000 he was appointed a Knight Bachelor in the Queen's New Year's Honours List. Connery's proudest moment, and in his mind, his greatest honor to date, came when he received the Freedom of the City of Edinburgh in 1991.

June 5, 2006

Continuing With the Harry Potter Theories

The recent acquisitions:

  • Snape's Memory: Snape should have carry quite a lot of memories regarding Harry's father and his friends (Marauder). Then, why did he specifically select that one to not show Harry? What do we have in that memory that may not be in his other memories? The curses used in that memory seemed to be popular at that time according to Lupin. To me, the part related to Harry's mother seem to be the link that connects Snape to Harry. The only thing that we learned in that memory regarding Lily, is that Snape didn't want her help and said the worst possible word he can say to her. There is one other possibility. The remaining portion of that memory might show something of significant importance.
  • Snape's Last Meeting With Dumbeldore: There is one thing that came to my mind recently, which has seemed to increase the possibility of its occurence since the last time I thought about it. The short interval of pause between Snape's arrival to the Astronomy tower and Dumbeldore's short request. Note that, Snape had his wand ready at that time. It is highly possible that seeing the situation there Snape might have used Legilimency against Dumbeldore to hear his request regarding the situation. If Snape is really on Dumbeldore's side, this is something he should have done before proceeding further. And, it is after that, Snape's one moment of hesitance regarding the situation might have triggered Dumbeldore's request to proceed, "Severus...Please...".
to be continued...

An Interesting Perspective on the Growth of Dallas Mavericks

A nice read to follow the success of Dallas Mavericks.

Source: The Dallas Morning News
By: DAVID MOORE

Don Nelson settles his big, bear of a frame into the couch. He sips a latte and wears a relaxed smile, the kind never seen on a coach's face at this time of year.

Sunday marked the one-year anniversary of Nelson's decision to walk away from the Mavericks bench. He retains a passionate interest in the team, having attended or watched every game, but is no longer burdened by the decisions and responsibilities that go with coaching.

The transition has been seamless. Owner Mark Cuban has a vibrant franchise and a coach he enjoys being around, a relationship he hasn't experienced since first purchasing the club. Avery Johnson is blessed with a talented group that has given him more victories in 82 games than any other coach in NBA history. There is less tension in the front office and no sniping behind the scenes now that the top figures in the organization get along.

Nelson has been to Maui, New Zealand and the Oscars, scoring tickets over beers and shuffleboard with actor Owen Wilson. He has a role in a series likely to be picked up by HBO and will open a bar on the edge of downtown Dallas in the next few days.

Is there any need to ask how he's doing?

"I don't know how it can be any better," Nelson said.

Life is certainly better than it was in his final two years as coach when Cuban openly questioned Nelson's commitment and practices. The two men locked horns on a series of issues that left their relationship in shambles and opened the door for Johnson.

It's easy to forget that Cuban and Nelson started off on good terms.

Donnie Nelson, the club's president of basketball operations, was an assistant coach when Cuban purchased the franchise in January 2000. Donnie Nelson said Cuban helped energize his father and the whole organization after spending what he called two years in the desert.

Cuban respects Don Nelson's offensive creativity. But both men, in the view of Donnie Nelson, possess "a drive that is abnormal," and that led to conflict.

Cuban believes that commitment, focus and passion are essential to success. The irony is the more success the Mavericks achieved, the more his reservations grew about those qualities in Nelson.


The Mavericks hit a bit of a lull shortly after opening the 2002-03 season with 14 consecutive wins. Cuban expressed his concerns to Nelson, who took it as an attack of his philosophy and practice habits. The coach assembled his staff and a few key players in a room and told them their boss had something to say.

"Guys, we need a sense of urgency," Cuban remembers saying. "We have got something to prove. If he [Nelson] doesn't want to say it, I will.

"That was it. I didn't like being put on the spot like that, but that was the extent of it, and it was never brought up again."

Nelson doesn't know if he handled the issue correctly. But he does know he offended Cuban and said their relationship was never the same afterward. The rift widened later that season during the Western Conference Finals.

Forward Dirk Nowitzki sprained his left knee in Game 3 of the team's series against San Antonio. He missed the next two games as the Mavericks went down, 3-2.

Doctors cleared Nowitzki for the crucial Game 6. Nowitzki said he wanted to play. But Nelson suffered a similar injury during his playing career and believed his young star was unrealistic. His refusal to play Nowitzki led to a heated exchange with Cuban in which Nelson told his owner the only way the forward would take the court was if he was fired on the spot.

"He actually thought about it," Nelson said. "I could tell."

Cuban said he didn't consider firing Nelson. But he asked why the club employed doctors if they weren't going to trust their opinion. He couldn't understand why Nelson refused to dress Nowitzki and let him try.

"It was there I realized what I had suspected before, that Nellie really preferred to be the underdog," Cuban said. "Even with the possibility of a championship at stake."

The accusation that he used Nowitzki's injury as an excuse to fail infuriated Nelson, who maintains what was said in that meeting "helped destroy our relationship."

The Mavericks lost the game, and the Spurs advanced to win the championship. What is Nowitzki's take on that whole episode today?

"It was the right decision," he said. "I remember going down to shoot before the game. I was going on adrenaline because I wanted to play.

"But I remember when I was standing in a timeout, my leg was real tired. So I don't think I could have played."

There were other incidents. Those close to Cuban and Nelson say the harsh feelings and mistrust escalated during Nelson's contract negotiations in the summer of 2003. Cuban grew skeptical of Nelson's personnel judgment, wondering why he assumed big contracts for players his coach failed to play.

At the half of a road game in Memphis during the 2003-04 season, Cuban offered advice during the coaches meeting. Nelson tried to throw the owner out, but Cuban said, "If we work together, we work together. So I'm staying."

Nelson turned and left.

There was something else at work here, something Donnie Nelson labels a generational divide. Nelson is 65, making him 18 years older than Cuban. One of the few things the two agreed on at the end was that Johnson should be the team's next coach.

"The difference was, I was so much his senior," Nelson said. "I was almost like his father. As he grew in stature, there was a conflict there.

"I'm set in my ways. I want to do it a certain way. When I say something, I always expected it to be done. It was the final word. When it wasn't the final word anymore, he was the final word, there was a conflict.

"With Avery, they're closer to the same age. It's more like brothers now. That's working real well, at least it seems."


Cuban and Nelson rarely talked at the end. That's why assistant coach Del Harris served as the intermediary who brokered the deal that led to Nelson leaving with 18 games left in the regular season.

Cuban and Johnson talk all the time. If the owner misses a game, Johnson will e-mail or phone. Cuban calls the relationship a beautiful thing.

"For me, one of the healthiest things about the organization is our relationship," Johnson said. "That's one of the great things about where we are now. We communicate.

"Nellie would always complain about Mark being around the huddles. Mark being around the huddles gave him a chance to see what I do strategically, see how I communicate, hear how I handle adversity, hear how I discipline, see what plays I draw up in the last seconds of a game.

"Had he not been around, I don't know if his comfort level would have been as high to hire me as coach."

That's another difference. Johnson is at the stage of his coaching career where he needs to earn Cuban's trust and confidence. He doesn't view it as an intrusion.

Nelson viewed it as usurping his authority.

Not that Johnson is a yes man. He listens to Cuban's ideas but isn't afraid to tell the owner when he thinks he's off base. Both men treat each other with the respect that was missing at the end of the relationship between Cuban and Nelson.

"Even though we may be on the same street, we have different addresses," Johnson said. "That's OK. The way he [Cuban] shows his passion may not be the way I show my passion.

"Instead of always being dissatisfied with each others differences, celebrate them."

Johnson is clearly uncomfortable talking about what went wrong with Cuban and Nelson. He's adamant that he shouldn't be portrayed as a superhero while Nelson comes across as a bad guy. Johnson wonders why people don't talk about all the good Nelson did for the franchise and allow him to ride off into the sunset.

One never knows where the sun will set on Nelson these days. It could be Los Angeles, where the former coach is scheduled to be two days a week for 14 weeks if HBO picks up that series.

Nelson said he has never had a better year in his life but refuses to rule out a return. His close ties with Sacramento owners Joe and Gavin Maloof – who set up his role on the proposed series and invited Nelson and his wife, Joy, to a party after the Academy Awards – has led to speculation he will wind up with the Kings.

For now, Nelson simply enjoys life and feels a tremendous sense of pride for what Johnson has accomplished. He and Cuban have communicated only once in the past year, by e-mail. Nelson said it's too soon for the two to renew their friendship but believes one day they will. Cuban said no business relationship is perfect but still "thinks the world of Nellie."

All three know the decisions made one year ago were best for them and the franchise.

"Absolutely," Nelson said. "It couldn't be better. All sides are happy. It's the only time I've ever seen it in this business.

"There are no negatives at all."

June 2, 2006

5 Minutes Worth Comfort with Rocking Canon

Canon - Pachelbel (Funtwo's version)