14 January, 2007

New Line Cinema puts Peter Jackson on the Blacklist

SCIFI.com is reporting that Robert Shaye, head of New Line Cinema, will not let Peter Jackson direct another film for New Line Cinema.

As I understand it, Shaye is upset with Jackson because Jackson is suing New Line Cinema. The lawsuit is over an accounting issue on the movie "Fellowship of the Ring." It appears that there was some anomalies that surfaced from a partial audit that Jackson would like answered.

After reading reading the posting on SCIFI.com entitled "Shaye: New Line Blacklists Jackson", I am inclined to believe that New Line Cinema is shooting itself in the foot. Peter Jackson has proved he can make money and produce a multiple good movies. Are these not the qualities a movie studio would want in a director?

On a personal note, I am interested in seeing what Peter Jackson can and would do with the "Hobbit". I think New Line is making a big mistake not wanting to work with Jackson. I am hoping Jackson will get the chance to direct more movies and he gets the opportunity to bring the "Hobbit" to us on the big screen.

03 January, 2007

Starship size comparison chart

For all the sci-fi geeks, check out this "starship size comparison chart."

What Does 200 Calories Look Like?

For the last few months, I have been working on improving my eating habits. My basic plan is to reduce the amount of food I eat and to eat less processed food. So far I have lost 15 pounds just working on changing my eating habits. Over at "wiseGEEK" there is a neat post on "What Does 200 Calories Look Like?"

09 November, 2006

Learning about Smart Client Applications

My day job is requiring me to do some Smart Client development. Since my knowledge on the topic is rather limited, I am thinking a little research is in order. My research started with the MSDN website and had lead me to putting together this quick little post. I hope others find it useful.

A Smart Client application is the combination of rich and responsive user interface with the ability to work offline. A smart client can be designed to run on a desktop PC, laptop, Tablet PC, Pocket PC and Smartphones.

A well-designed Smart Client can take advantage of a rich user experience while providing the manageability benefits of a thin client. From a developers point of view this allows me to write programs that can take advantage for the client PC, provide a rich user experience, access to wide variety of local and remote services, and application manageability of a website.

Smart Clients applications are broken down into three broad groups: Windows Smart Client applications, Office Smart Client Applications, and Mobile Smart Client applications.

Windows Smart Client Applications are typically Windows Forms. This type of application provides the familiar Windows user interface. A Windows Smart Client would run on a desktop, laptop or Tablet PC.

Office Smart Client Applications are tightly coupled with one or more Microsoft Office application.

Mobile Smart Client Applications are designed to run on smart devices like the Pocket PC and Smartphones. These types of devices has limited screen size, limited memory and limited processing power. The ability is work in a non-connected mode is paramount. Applications are developed for the .NET Compact Framework.

Smart Clients can take advantage of the local machines resources. This means the application will run in a disconnected mode. I will not have control over the data on the user’s machine and the logic in the users’ version of the application could be out of date or using old logic.

Handling data in a Smart Client Application will take considerable thought. Data is broken in two major types: read-only reference data and transient data.

Read-only reference data is data that the client application will not change. This includes static or lookup data, data to support the data validation process, and presentation data. This type of data will be updated infrequently.

Transient data will be created, updated, and deleted by the client application. One of the major challenges is handling data changes from multiple clients.

Caching data is an important component to a Smart Client. An application can get a performance boost from caching data. The caching mechanisms should be able to handle both read-only reference data and transient data. The goal is to update the client’s data at any time regardless of the data of the data. You do not want to lose any changes the transient data the user has made. See the Caching Application Block for more information.

To keep data in synch, there are two main approaches: pessimistic concurrency or optimistic concurrency. Both of the approaches are similar in concept to pessimistic and optimistic locking in the database.

DataSets are one way of helping with the managing and syncing of the data. See the Microsoft documentation on ADO.NET for more information. DataSets offer a few benefits: DataSets can be treated like a database, DataSets can be bound to user controls, and DataSets keeps track of changed data.

There are multiple ways for a Smart Client to communicate with other resources: .NET Enterprise Services, .NET remoting, Message Queuing (MSMQ), and web services.

.NET Enterprise services provide access to COM+ service infrastructure. .NET remoting provides remote procedure call (RPC) mechanism to .NET components. MSMQ provides message-base access. Web services provide an industry standard was of communicating.

There are two major architectural approaches: data-centric and service-oriented. A data-centric approach utilizes a local installed database. The database handles the synchronization process, conflict resolution, and propagating the changes. The service-oriented approach stores data in messages and arranging the messages. Once the connection has been reestablished the messages to the server for processing.

There are seven main considerations for security: Authentication, Authorization, Data Validation, Protecting Sensitive Data, Auditing and Logging, Exception Management, and Change and Configuration Management.

Authentication uniquely identified the user of the client application. Authorization determines what resources the user can access. Data validation ensures on valid data is accepted by the application. Protecting sensitive data provides methods for storing and transmitting data. Auditing and logging keeps track of events and user action. Exception management ensures errors are well handled. Change and configuration management assists in tracking configuration changes.

There are multiple options of deploying a Smart Client: no-touch deployment, no-touch deployment with and application update stub, running code from a file share, xcopy and Windows installer packages.

No-touch deployment requires putting the application on a web server and sharing the link. No-touch deployment with an application update stub method follows the no-touch deployment process with the addition downloading the rest of the application to the local disk. Running code from a share requires a file share that all the users can access. Xcopy is to copy the files directly to the client. Windows installer package method is that traditional way most people think of deploying an application.

Deploying Smart Client updates also have multiple options: No-touch deployment, automatic updates, updates form a file share, xcopy updates and Windows installer package deployment.

No-touch deployment updates are simply copying the new files to a web server, when your application starts is checks the web server for updates. Automatic updates involve building the updating infrastructure in the Smart Client application. Updates from a file share involve replacing the old code on the file share with the new code. Xcopy updates are also really simple. Just copy the new files. Windows installer updates are to create an installer package with the new code.

Smart Client applications are part of the wave of the future. Smart Clients give the user a rich experience while give administrators and vendors a way of updating application with fewer headaches. I look forward to learning more.

07 November, 2006

Book Review: Code Complete 2nd Edition

Yesterday, I finished Steve McConnell's book "Code Complete, Second Edition." As a self taught developer, I am always looking for books, magazine articles and web posts that can help me improve my craft. This book has become an important part of my library.

One of my favorite parts of the book is the checklists at the end of sections. I have used the "Using Conditionals" Checklist multiple times in my work. The checklist has prompted me to refactor my code and to think about the code I write differently. The code looks cleaner, is more readily understood by myself and other developers.

Another benefit I have gotten out of the book was better ways to communicate with non-programmers about technical topics. I have used several of the items in the book with end users. The results have been positive. I was able to more clearly present technical issues to the end users. I have been able to develop a better working relationship with the end user. These same points have also caused me to think about my end users in a different light.

This book has already become a favorite of mine and I have a feeling I will referencing this book frequently in the future.

If you are a programmer, a developer, a coder, an architect or a manager of technical people this book should be in your library.

Book specs:
Paperback: 960 pages
Publisher: Microsoft Press; 2nd edition (June 2004)
Language: English
ISBN: 0735619670

One Reason Why I Don't Read the St. Louis Post-Dispatch

It is just a little past 8:00 PM Central time on Election Day. I have been trying for the last 10 minutes to find election results from the St. Louis area. I made a major mistake, I assumed the website for the St. Louis Post-Dispatch (www.stltoday.com) would have the numbers. Just to have a sanity checked, I checked out a couple of news websites. With in a 2 minutes, I was able to find information on the elections are shaping up.

I am so glad that I no longer waste my money on a subscription to a newspaper that can't do its job.

22 June, 2006

Sudoku

2005.12.07 - Original
I few weeks back my wife got hooked on solving Sudoku puzzles. Just for fun I am considering writing a program to solve the puzzles. Since I am trying to learn C#, this seems like a reasonable idea.

My first stop is to figure out what a Sudoku puzzle is. My first stop was the Sudoku entry on Wikipedia. Sudoku or Nanpure is a number placing puzzle.

The puzzle is most frequently a 9X9 grid, made up of 3X3 subgrids called "regions" (other terms include "boxes", "blocks", and the like when referring to the standard variation). Some cells already contain numbers, known as "givens" (or sometimes as "clues"). The goal is to fill in the empty cells, one number in each, so that each column, row, and region contains the numbers 1-9 exactly once. Each number in the solution therefore occurs only once in each of three "directions", hence the "single numbers" implied by the puzzle's name.


This seems simple enough. The wikipedia entry also includes some other interesting information including a method of solving the puzzle, some hints for programmers on how to solve the puzzles, the mathematics of Sudoku and finally some history.

My next stop is to figure out where can I find some puzzles and solutions to check my program against. I have come up with two possible sites. The first is www.sudoku.com and the other is www.websudoku.com.

What other resources can I come up with? I have stumbled across Sudoku Programmers which is a forum. There are mutliple posting that I will have to read soon. I have also come across Robert Burke's Weblog posting Sudoku Solver Web Service. Rob's web service will be good resource to check my solutions against.

This looks like it will be a fun project. My next step is to do a little more reading and to manually work a few puzzles.

2005.12.11 - Update
Today I tried my first Sudoku puzzle. I was able to completed it successfully in just under 22 minutes. The puzzle came from wedsudoku.com and it was rated as easy. I can now see why my wife really likes these puzzles. It takes a couple of different logical processes to solve a puzzle.

2005.12.12 - Update
Over at The Code Project I have found several articles on Sudoku:


2005.12.17 - Updated
Over at Rambles Weblog at starchamber.com there is a neat Sudoku Solving Assistant tool.

Over at The Code Project there is a new posting 'Sudoku Game in C#.' The posting looks interesting enough to warrant a closer look at the code.

Update - 2005.12.29
Found two more blog postings about Sudoku. The first is from the blog 'The Truth is Out There!' entitled 'Simple Sudoku.' The posting is about 'Simple Sudoku' a freeware puzzle maker and solver for Windows.

The second posting is from 'Business Week Online' entitled 'Sudoku: The Next Tetris?' This posting talks about the popularity of the game, link to Sudokupuzzlesonline.com and a link to Sudoku for smartphone.

2006.01.08 - Update
There is another Sudoku Solver over at Code Project.

2006.01.17 - Update
CodeProject has XSudokuWnd posting, a solver for the popular Sudoku puzzle, based on D.E. Knuth's Dancing Links algorithm.

2006.03.31 - Update
Seedmagazine.com has an article entitled 'MICROSCOPY AND THE ART OF SUDOKU.' It appears that Sudoku is having a larger impact on the world other then a fun time consuming mental puzzle.

2006.04.04 - Update
Not even Microsoft can resist the power of Sudoku. I found the article 'Microsoft Sudoku: Optimizing UMPC Applications for Touch and Ink' out on the MSDN site.

2006.04.21 - Update
Today I came across another site where you can play Sudoku for free call Sudoku Craving. If you like you can register with the site. By becoming a memeber the site will keep track of your stats for you.

2006.06.16 - Update
Over at the site Scanraid Ltd, I found several Sudoku related webpages.


Sahil Malik has posted his Sudoku Solver and the source code.

2006.06.22 - Update
Sudoku Combat allows two people to play Sudoku at the same time to see who can solve the puzzle first. You can challenge your friends or strangers.

Challenging myself to learn something new

I have recently set a big challenge for myself. I want to know about Machine Learning . To add to the challenge, I am trying out usin...