Useful notes taken from different places from Mathematica documentation. And some added by me.
(added 7/5/14) There is a race condition between when updating a variable in the second argument of dynamics, which is also updated in the Manipulate expression. The problem is easy to explain
Manipulate[.... n=n+1;...., Manipulator[Dynamic[f,{f=#;n=0}&....]
Now, what happens, sometimes, is that when moving the slider, and setting \(n=0\), that this update to \(n\) can be lost, since it depends on the timing of when this happens. The Manipulate expression could be in the middle on updating \(n\) itself. This is classical lost update problem in multi-threading. The way to avoid this, is to follow this rule of thumb: When using second argument of dynamics in a Manipulate control, do not update a shared variable which can also be updated inside the Manipulate expression, as the update can be lost. The write to the shared variable/updating should only happen either inside the Manipulate expression or in the second argument of dynamics. But not in both places
DynamicModule variables are saved in the file when the notebook is saved.
SystemOption "DynamicUpdateInterval").
synchorization->False to all dynamics, else will time out. When using Refresh also.
refresh[] tracks on 2 of my own symbols (not control variables). Use tick, only. Causes major synchronization problems with I update 2 variables inside a refresh, and have the refresh tracks both. Only make one track local variable, such as ticks
finishDynamic[] can causes annoying refresh on the UI whenever I move sliders. So removed it.
:> and not -> for TrackedSymbols