Many of these are common mistakes we have seen in Jupyter notebook development. Feel free to add more to this file.
In JS functions if you have a DOM element (divs, svg, etc.) .innerHTML, if you get information from a form, it executes when it reads the form data. Susceptible to XSS attacks. Use textContent instead, for more info you can read: https://stackoverflow.com/questions/21311299/nodevalue-vs-innerhtml-and-textcontent-how-to-choose
Do not make programs that are dependent on system time.
No pie charts or spaghetti plots. Avoid clutter, and volume comparisons. See the infovis section of the manual for more in depth information.
JS uses the browser aka local resources. Python uses the remote Callysto Hub resources. Ideally you will do any heavy processing in Python and then pass the results to JS. Try to avoid doing large processing tasks with the user's local resources.
Do not parse HTML with regex or other level 2 languages.