Heteroclinic.net logo


Introduction of www.heteroclinic.net

Brief in Feb 2013

Www.heteroclinic.net is the personal home page of Zhikai Wang. Zhikai holds a master degree of computer science from Concordia University, Canada.

You can consult Zhikai for general issues related to computer science and software engineering. Zhikai specilizes in:
- concurrent programming
- network programming
- computer graphics (3D)
- general enterprise IT solutions

Zhikai has been working on the following projects:
- treetor, a tree/forest rendering tool
- jdfr, Java Dead-lock Free Runtime (the goal, may be too ambitious)
- qtwagon (not revealed yet)
- sinpixa (factorize composite number)

Zhikai's recent goals:
- continue qtwagon
- ApacheGL (feasibility analysis)
- jdfr will use OpenGL rendering engine
- Depth peeling transparency finalization
ApacheGL Project Proposal
Project ApacheGL's purpose is to build open source OpenGL, e.g. Freeglut etc, as a module of open source project Apache Web server. This will promote online 3D game design and play to a new level.

What we are going to do?
- compile integrate Freeglut as a module of Apache Web server
- provide an API so the Web clients(multiple) will share the same GL machine instance at the server side, this will require advanced synchronization mechanism.
- we also intend to feed back the rendering frames as video streams
Upon the accomplishment of this project, the cloud computing, not only the online 3D game design will be promoted to a new level. The server can be very fat GPU clusters, the clients could be so skinny with just a stream player and control buttons.

Motivation and Benefits
Current multiplayer online game (3D) will utilize the GL machine at the client side. This will be difficult for collision detection, conflict resolution etc. A central GL machine server as a module of Web server will make possible: Web browser 3D game, low hardware requirement for clients, full utilize GPU/GPU clusters, better collision detection, event synchronization, conflict resolution etc.

Project Plan
Phase I feasibility analysis
- proper hardware with general GPU, at least OpenGL support
- if possible, use GL machine without X or GUI
- compile Freeglut as module of Apache Web server
Phase II Synchronization Architecture
- design how to share one GL machine among Apache sessions
- multiple GL machines for multiple sessions, many to many, many to one
Phase III Rendering to stream and Client API

Project Plan Extra
Phase IV
- quality assurance
- documentation and API design
Phase V
- a commercial deployment

Inviting Support
Basically, this will be a personal prototyping project. It is estimated to be done by two thousand man hours. The investors will be cut in upon the size of investment and phase status. The result will be applicable upon Science Technology Promotion license by default.
Advanced Concurrency Topic:
Runtime Deadlock Detection XXVII
More Tested Examples


How to:
Entry point: Fast
How to:
Entry point: Random
How to:
Entry point:
Advanced Concurrency Topic:
Runtime Deadlock Detection XXVIII
So far, months have been spent upon this topic. The resources are limited, I have to put a period. We may continue on with the same topic or similiar topic.

Today, we release jdfr1.0.jar.
- it fully supports Java ReentrantLock
- it has several proto-types, quick-starts or just say examples -- in the Blog section

It will be a very useful tool to profile concurrent programming. We also have treetor treetorplus3.jar which can render about several thousands nodes of a-cyclic graph or a forest. If I got enough support, we may switch to OpenGL rendering engine and using more advanced IPC.

We corrected some mis-understandings. They are critical but finally not fatal to this project.
I am still not sure about next step. I hope there will be more people download and study what I did. It will be a great pleasure that you can achieve something with these tools. Science and technology does not rely on luck. If you find any bug or errors, please feel free to point them out. This project is done by one person, so it is convenient to control. In real life projects, we have to resolve human conflicts, legacy pacakges etc. Some time you do not even have the source code not mention how to modify them. So we can not simply put a easy or difficult label for a project.
The methods we tried or proposed, may be helpful while extending to profile database system, interprocess concurrent programming, the operating system, or for clustered computing units. Concurrent programming in some sense destroyed the von Neuman architecture, much more effort is needed for understanding or utilizing the nature of concurrency.