The Azimuth Code Project is an online open source project that will provide source code for analysis and simulation software used on the Azimuth project. It is hosted by google and available under the LGPL (lesser gnu public license).
We will try to provide well documented, simple and up-to-date implementation, mainly for instructional purposes. As a side effect we will try to show that clean, simple, open-source, well-managed and up-to-date code handling is possible at a low cost, and how it can be done. The creation, documentation and publication of custom extensions to packaged software is supported, too.
If you want to join the Azimuth Code Project, leave a comment here:
The code is hosted here (SVN repository):
A second google project is based on a Git repository:
This model was explained in the blog post Increasing the signal-to-noise ratio with more noise.
Allan Erskine has also created some models of bistability. The first was for a static climate system:
The second was for a dynamical system:
Michael Knap combined the latter model with the work on stochastic resonance to get a stochastic resonance model more explicitly connected to climate physics, which is here:
Many papers in climate science present results that cannot be reproduced. The authors present a pretty diagram, but don’t explain which software they used to make it, and don’t make this software available, don’t really explain how they did what they did. This needs to change! Scientific results need to be reproducible. Therefore, any software used should be versioned and published alongside any scientific results.
All of this is true for large climate models such as General Circulation Models, as well—but the problem becomes much more serious, because these models have long outgrown the extend where a single developer was able to understand all the code. This is a kind of phase transition in software development: it necessitates a different toolset and a different approach to software development.
Many sciences rely on computer code for simulations and analysis of data. Since results in science should be reproducible, the code used for published scientific results needs to be published as well. Therefore, one objective of this project is to
show how computer code can easily be versioned and published along with any scientific results that are based on the code, by example.
Scientific results belong to humanity, therefore
all code used in science should be open source, everyone should be allowed to use it.
A basic paradigm of science is that in principle, it should be possible for every fellow scientist to understand what another scientist has done. Therefore, any used code needs to be as easy to understand as possible. This project will therefore
show how code can be documented and
show how code can be structured using established paradigms from software engineering, by example,
in order to make it as easy as possible for others to understand it.
Technical choices are based on the objectives. The use of established paradigms from software engineering suggest that one should use a programming language and frameworks that support the construction of big software systems.
A discussion about modelling tools can be found at Modelling tool.
A discussion about visualization tools can be found at Visualization tool.
The following article is a funny collection of coding practices that you should use, if you don’t want anyone else to understand and maintain your code:
This book explains good coding practices from the point of view of an experienced programmer:
Steve McConnell, Code Complete: A Practical Handbook of Software Construction.
Andrew Hunt, David Thomas and Ward Cunningham, The Pragmatic Programmer. From Journeyman to Master.