Saturday, July 04, 2009

Three Phase Update

I uploaded a new tutorial Concurrent Java Simulations Using Three Phase Update. Here is the abstract:

Computer games and simulations have a main loop which is divided into phases such as user input controller processing, updating model state, and rendering the view. Since the states of multiple simulated objects are determined by their interactions, each object must have the opportunity to access the current state of every other object during the update phase. To ensure that the next states of objects are independent of the order in which they are updated, all of these accesses must occur before the state of any one object mutates into its next state. This can be accomplished by dividing the update into two sub-phases, access and mutate, in which no object can mutate its state until every other object has completed accessing shared state. Beyond update order independence, this has an additional benefit in that this can increase the performance of multi-threaded concurrent applications because synchronization is not required to ensure the integrity of shared state. A further increase in performance for concurrent simulations can be had by the introduction of a third sub-phase, digest, in which processing is performed on data copied during the preceding access sub-phase but modifying shared state is delayed until the following mutate sub-phase. This tutorial demonstrates the use of the three sub-phases pattern, Three Phase Update (TPU), using example code in the Java programming language including classes from the Java concurrency library.




Monday, November 10, 2008

Drools Game of Life Example

I uploaded an export of my slides for my presentation to the Dallas Rules Group on the Drools Game of Life Example.


Tuesday, November 04, 2008

CroftSoft Life

I uploaded CroftSoft Life, an animation of Conway's Game of Life.


Sunday, September 28, 2008

Quaternion Rotations

I created the tutorial Quaternion Rotations in 3D Java OpenGL to document a 3D math library that I wrote a few months ago. It includes an interactive demonstration applet and links to the javadoc and source code.


Friday, August 29, 2008

CroftSoft Neuro

CroftSoft Neuro is an animated simulation of the Hodgkin-Huxley neuron model. The Java source code is available from the CroftSoft Code Library. Here is the direct link to browse the source code in the SourceForge.net Open Source code repository.


Sunday, January 27, 2008

Interface Mail

I added a couple of new classes to the CroftSoft Code Library today. I also wrote a tutorial to explain them, Interface Mail.

Java interface Mail is used as an intermediary to broadcast and retrieve messages passed between objects. Class FlipMail is an implementation of interface Mail which flips the outgoing and incoming messages lists when updated. FlipMail simplifies desktop application programming by reducing coupling between Model, View, and Controller (MVC) objects and controlling when state change request and event messages are processed.


Thursday, December 27, 2007

Dell Laptop NVIDIA Driver

I bought a Dell laptop with an NVIDIA graphics card. The vido game Bioshock would crash on it so I tried to update the display driver. When I attempted to do so, I got this error message:

The NVIDIA Setup program could not locate any drivers that are compatible with your current hardware. Setup will now exit.

It turns out that NVIDIA supports installation for the 8800, but not the 8800M. If you dig around on the NVIDIA website, you can find this hint:

Dell requires that you download the driver for your GPU from their support site.

You can find more information at: http://support.dell.com/.

The GeForce M series and GeForce Go series notebook GPUs use drivers that have been customized by the notebook manufacturers to support hot key functions, power management functions, lid close and suspend/resume behavior. NVIDIA has worked with some notebook manufacturers to provide notebook-specific driver updates, however, most notebook driver updates must come from the notebook manufacturer. Additionally, the desktop GeForce graphics drivers will not install on Geforce M series and Quadro M series notebook GPU's.

Unfortunately the customized driver that Dell provides is the outdated version I needed to replace in order to get Bioshock working. I was stuck with a new laptop with a new video card that could not run the new video games.

After many hours of searching the Web, I finally found a solution at LaptopVideo2Go.com. They provide a customized installation configuration file of a recent version of the NVIDIA display drivers for your laptop. Now I have had problems with the suspend/resume function since I installed the driver but at least I can play my new games now. Until Dell or NVIDIA start providing installation configuration files for the latest NVIDIA display drivers for the Dell laptop, LaptopVideo2Go might be your only solution.

Speaking of video games, I love the Orange Box.


Friday, November 30, 2007

Source Code Release

I finished my Open Source software project CroftSoft Infant. My collaborator was able to use the software successfully to collect research data.

She wanted a new software feature added for a new type of experiment. She recruited a programmer to add the feature but he had some problems checking out the latest version of my code from the source code repository using CVS. I then realized it had been four years since I exported my code to a zip file for easy download so I did that tonight. You can get it by downloading the latest file release of the CroftSoft Code Library.


Tuesday, October 30, 2007

Development PC Setup

Ever since I wrote my first computer program back in 1980, I have had to recreate and customize my software development environment to my liking on new computers at home, work, and school at least once a year. Tonight I uploaded my Development PC Setup checklist to speed me through this process of configuring a new Windows computer and installing my preferred free and Open Source software development tools. Please save a link to this webpage in your online bookmarks as I plan to update it each time I use it.