#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Options

# Azimuth Code Project

Created page Azimuth code project. Some simple helper classes are already checked into the trunk. I'll prepare the code needed to reproduce the stochastic resonance pictures first and then will try to implement some simple FFT algorithms.

«13

• Options
1.

I'm impressed!

I have just downloaded the code using TortoiseSVN under Windows and it worked. I don't really understand the svn stuff, I just know how to do what I just did.

Comment Source:I'm impressed! I have just downloaded the code using TortoiseSVN under Windows and it worked. I don't really understand the svn stuff, I just know how to do what I just did.
• Options
2.
edited December 2010

"Helper classes checked into the trunk" - now I know how people feel when I talk about math and say things like "promote this ring into a field by adjoining inverses".

Whatever it is, I think it's great.

Comment Source:"Helper classes checked into the trunk" - now I know how people feel when I talk about math and say things like "promote this ring into a field by adjoining inverses". <img src = "http://math.ucr.edu/home/baez/emoticons/rolleyes.gif" alt = ""/> Whatever it is, I think it's great.
• Options
3.

Yes, that's how it feels to get techno-babbled! Of course I could try to explain a little bit what all this is about:

A "class" is a notion from object oriented programming, a class is a piece of code that bundles both a state and methods to change it. A "rational number" for example would be represented by a class in Java that has both a state (the value of the number) and methods like "multiply by an integet i".

"checked into trunk": a "versioning system" is a software program that helps you to manage changes to files, by giving each file a version number. When you change the file locally on your computer, you can check the change file into the trunk, which means you tell the versioning system "here is a new version of this file". The versioning system then increases the version number of this file and provides means to find out what has changed. Instiki provides this service, too: you can see changes by clicking on "changes" at the bottom of the page. The versioning system used by the azimuth code project is called "subversion" or "SVN" for short.

The "trunk" is the main "branch" and the "head" or "head version" referes to the newest version on a branch. If you write a paper and develop a line of thought that you are not sure if you would like to include it, you could maintain two versions of your paper: One with the worked out stuff on the "trunk", and one with this different line of thought on a "branch". Then you can work on and change the version on the trunk and on the branch independently. Maybe a month later you find out that you would like to include certain parts of the branch into your paper, you can then "merge" these changes from the branch to the head in the trunk, and abandon the branch.

If you fixed a bug on a branch of a software and transfer it to the main version, you would therefore say: I merged the bug (fix) into the head of the trunk.

(No, really, that's what people say).

Comment Source:Yes, that's how it feels to get techno-babbled! Of course I could try to explain a little bit what all this is about: A "class" is a notion from object oriented programming, a class is a piece of code that bundles both a state and methods to change it. A "rational number" for example would be represented by a class in Java that has both a state (the value of the number) and methods like "multiply by an integet i". "checked into trunk": a "versioning system" is a software program that helps you to manage changes to files, by giving each file a version number. When you change the file locally on your computer, you can check the change file into the trunk, which means you tell the versioning system "here is a new version of this file". The versioning system then increases the version number of this file and provides means to find out what has changed. Instiki provides this service, too: you can see changes by clicking on "changes" at the bottom of the page. The versioning system used by the azimuth code project is called "subversion" or "SVN" for short. The "trunk" is the main "branch" and the "head" or "head version" referes to the newest version on a branch. If you write a paper and develop a line of thought that you are not sure if you would like to include it, you could maintain two versions of your paper: One with the worked out stuff on the "trunk", and one with this different line of thought on a "branch". Then you can work on and change the version on the trunk and on the branch independently. Maybe a month later you find out that you would like to include certain parts of the branch into your paper, you can then "merge" these changes from the branch to the head in the trunk, and abandon the branch. If you fixed a bug on a branch of a software and transfer it to the main version, you would therefore say: I merged the bug (fix) into the head of the trunk. (No, really, that's what people say).
• Options
4.
edited December 2010

Thanks! You probably don't want to spend a lot of time on your page explaining the basics, but I'm very happy to learn them myself!

I understand most of the concepts in this case, but I didn't know the jargon. I've heard of "subversion" - some mathematicians use it to collaborate on math papers. My pal Chris Lee, who does bioinformatics, uses "git" - he's heading an open source project called Pygr:

Pygr is an open source software project to develop graph database interfaces for the popular Python language, with a strong emphasis on bioinformatics applications ranging from genome-wide analysis of alternative splicing patterns, to comparative genomics queries of multi-genome alignment data. We and others have used Pygr successfully for many projects, see the Pygr forum pages for examples.

Comment Source:Thanks! You probably don't want to spend a lot of time on your page explaining the basics, but I'm very happy to learn them myself! I understand most of the concepts in this case, but I didn't know the jargon. I've heard of "subversion" - [some mathematicians use it to collaborate on math papers](http://www.tug.org/pracjourn/2007-3/kalderon-svnmulti/). My pal Chris Lee, who does bioinformatics, uses "[git](http://en.wikipedia.org/wiki/Git_%28software%29)" - he's heading an open source project called [Pygr](http://bioinfo.mbi.ucla.edu/pygr): >Pygr is an open source software project to develop graph database interfaces for the popular Python language, with a strong emphasis on bioinformatics applications ranging from genome-wide analysis of alternative splicing patterns, to comparative genomics queries of multi-genome alignment data. We and others have used Pygr successfully for many projects, see the Pygr forum pages for examples.
• Options
5.
edited December 2010

I have some suggestions for the Azimuth Code Project main page on Google. (I don't seem able to edit it myself.)

1) I think it's good for us to have clear names for different pieces of the overall Azimuth Project. It's already a bit confusing with

1. Azimuth (the blog),
2. the Azimuth Project (wiki), and
3. the Azimuth Forum (this forum).

These names are not optimally clear: perhaps someday we should change them! It would make more sense to use Azimuth Project for the whole project, and

1. Azimuth Blog,
2. Azimuth Wiki, and
3. Azimuth Forum

for these three pieces.

Now Tim has introduced a fourth piece: the Azimuth Code Project. I like that name! But on what I'm calling the "Azimuth Code Project main page", we don't see the phrase "Azimuth Code Project". We instead see "azimuth project" (on the page) and "azimuthproject" (in the URL). I suggest that at least on the page itself, there's a nice clear header saying "Azimuth Code Project".

2) I suggest changing

The azimuth project tries to provide clean, well documented implementations of basic numerical algorithms, using up-to-date tools and paradigms from software engineering. It is associated to the Azimuth project of John Baez.

to

The Azimuth Code Project tries to provide clean, well documented implementations of basic numerical algorithms, using up-to-date tools and paradigms from software engineering. It is associated to the Azimuth Project, which is a plan to create a focal point for scientists and engineers interested in saving the planet, and make clearly presented, accurate information on the relevant issues easy to find.

3) Since we're trying to do things well, let's make it easier for people to see what code is available on the Azimuth Code Project. I'm no expert on Google Project Hosting, but I had to go to code, read the stuff there, then go to http://azimuthproject.googlecode.com/svn/trunk/, and then climb down a tree (a trunk?) to find various interesting pieces of code.

Shouldn't we have something more user-friendly and fun? How about a list of projects (perhaps so far just the Hopf bifurcation and stochastic resonance), with links to the relevant code? There must be some way you software guys do this.

4) Graham has written some code in R, making the source available on various Azimuth Project pages. Could this perhaps be better integrated into the Azimuth Code Project? It may conflict with Tim's strategy of using Java - but do we need a different Azimuth Code Project for each software strategy?

• Options
6.
edited December 2010

I have been thinking about too and would like to see unification and ease-of use when it comes to software we produce/glue/integrate/enhance and also allow people to use the language that is on their abstraction level. Ive done many java-based services and they work but its always a hassle - config hell. I am not for or against any language but i think we should start out higher in the stack as there are literally millions of open source projects and also azimuth has already attracted some of these.

So let us define what features and tools we want in our environmental "computational science" (used to be scientific computing). Then we can start by quickly putting together "Ecco Hub or whetever we want to call it. I suggest u look best in class in open source Comp Mathematics right now, SAGE and maybe also one spinoff from that femhub also open source. they can both be run as cloud service or installed on your pc/linux. SAGE can be run on the cmd line or as notebook editing (which has wysiwyg editing or source ed). its (here](http://www.sagenb.org). Theey also spun off Cython which can compile code snippets right in the notebook (which looks like mathematica).

SAGE nb allows u to use R,numpy, GAP,maxima,octave.95 libraries in total calling R(r-fn) or editing. I've tried it with octave but not R yet and we need to verify that it works. Femhub also has added libraries

for CM i suggest git from some cloud like provider . sage uses Hg as their CM which is wonderful as it is distributed. If u dont like editing code in your browser u can use emacs, eclipse or what u are used too, and lang wise and library wise. For bug handling there are stuff like Trac, Lighhouse, Bugzilla. I've used svn/maven for Java and we were not happy with either and nor will u when u want to spend time fidgeting with params in an chaotic attracto. So forget this paragraph for a while and move up too "interactive scientific computing" and put down what kind of features u would like to be able to do. E.g. "I'd like to zoom into a Hopf bifurcation while changing lambda at the same time" to take a recent example coming up. "Not "I want F#" (functional PL from M-soft). Think more in terms of verbs than nouns.

then we can get a dyn env "Azimuth eccohub" and add eg GISTEMP newly rewritten in python and att all the scientific libraries which covers your requests and boostrapped that way we will be further along than starting from Java and if You want to program in Java or Fortran, u should be able to do that. So try out sagenb or femhub, which are a bit slow as they are run by poor professors, PhDs who don't have money to spend on server parks :-)

Then start posting features here as soon as you can.

Merry Christmas!

Comment Source:I have been thinking about too and would like to see unification and ease-of use when it comes to software we produce/glue/integrate/enhance and also allow people to use the language that is on their abstraction level. Ive done many java-based services and they work but its always a hassle - config hell. I am not for or against any language but i think we should start out higher in the stack as there are literally millions of open source projects and also azimuth has already attracted some of these. So let us define what features and tools we want in our environmental "computational science" (used to be scientific computing). Then we can start by quickly putting together "Ecco Hub or whetever we want to call it. I suggest u look best in class in open source Comp Mathematics right now, [SAGE](http://sagemath.org) and maybe also one spinoff from that [femhub](femhub.org) also open source. they can both be run as cloud service or installed on your pc/linux. SAGE can be run on the cmd line or as notebook editing (which has wysiwyg editing or source ed). its (here](http://www.sagenb.org). Theey also spun off [Cython which can compile](http://www.cython.org/) code snippets right in the notebook (which looks like mathematica). SAGE nb allows u to [use R,numpy, GAP,maxima,octave.95 libraries in total]( http://www.sagemath.org/links-components.html) calling R(r-fn) or editing. I've tried it with octave but not R yet and we need to verify that it works. Femhub also has [added libraries](http://femhub.org/codes.php) for CM i suggest git from [some cloud like provider](http://www.github.com) . sage uses Hg as their CM which is wonderful as it is distributed. If u dont like editing code in your browser u can use emacs, eclipse or what u are used too, and lang wise and library wise. For bug handling there are stuff like Trac, Lighhouse, Bugzilla. I've used svn/maven for Java and we were not happy with either and nor will u when u want to spend time fidgeting with params in an chaotic attracto. So forget this paragraph for a while and move up too "interactive scientific computing" and put down what kind of features u would like to be able to do. E.g. "I'd like to zoom into a Hopf bifurcation while changing lambda at the same time" to take a recent example coming up. "Not "I want F#" (functional PL from M-soft). Think more in terms of verbs than nouns. then we can get a dyn env "Azimuth eccohub" and add eg GISTEMP newly rewritten in python and att all the scientific libraries which covers your requests and boostrapped that way we will be further along than starting from Java and if You want to program in Java or Fortran, u should be able to do that. So try out sagenb or femhub, which are a bit slow as they are run by poor professors, PhDs who don't have money to spend on server parks :-) Then start posting features here as soon as you can. Merry Christmas!
• Options
7.
edited December 2010

Merry Christmas!

I don't do any programming, so I'll happily let Staffan, Tim, Graham and others figure out the best technical setup for the Azimuth Code Project. I'll only get involved if it seems like the pleasure of arguing about the best way to do things is preventing you guys from getting anything done. But of course it's good to argue a bit, in friendly way.

When it comes to the Azimuth Code Project, I think I'll mainly stick to:

1. dreaming up programming projects that are not too hard,

2. helping programmers with math and physics,

3. developing the Azimuth "brand" - publicizing things, organizing things, explaining them.

Items 1. and 2. of my previous email were both about the Azimuth "brand"!

I have lots of ideas for easy programming projects. Tim knows enough of them to keep him quite busy. These easy ones lead naturally to two somewhat harder ones - I can explain these in a lot more detail when I get back from Vietnam:

1. After Tim gets the delayed action oscillator working, we can try to do some ENSO modelling as described here.

2. We can try to take a stochastic resonance model, feed in publicly accessible data about the Milankovitch cycles, and see how well it matches the observed ice ages!

Think more in terms of verbs than nouns.

That's easy, because I don't know any nouns.

If you like writing interactive programs or programs with nice graphics, I could certainly come up with things like that. For example a program that shows the trajectory of the Hopf-bifurcation-with-noise evolving "in real time". Extra credit for being able to adjust $\beta$ and $\lambda$ with a slider or something. Even better if we can zoom in!

All these "pretty" things are probably more important for attracting students and non-experts than for persuading experts in climate science that the Azimuth Code Project is important. Both of these are worthwhile goals...

Comment Source:Merry Christmas! I don't do any programming, so I'll happily let Staffan, Tim, Graham and others figure out the best technical setup for the Azimuth Code Project. I'll only get involved if it seems like the pleasure of arguing about the best way to do things is preventing you guys from getting anything done. But of course it's good to argue a bit, in friendly way. When it comes to the Azimuth Code Project, I think I'll mainly stick to: 1. dreaming up programming projects that are _not too hard_, 2. helping programmers with math and physics, 3. developing the Azimuth "brand" - publicizing things, organizing things, explaining them. Items 1. and 2. of my previous email were both about the Azimuth "brand"! I have lots of ideas for easy programming projects. Tim knows enough of them to keep him quite busy. These easy ones lead naturally to two somewhat harder ones - I can explain these in a lot more detail when I get back from Vietnam: 1. After Tim gets the delayed action oscillator working, we can try to do some ENSO modelling as [described here](http://arxiv.org/abs/physics/0603083). 1. We can try to take a stochastic resonance model, feed in publicly accessible data about the [[Milankovitch cycles]], and see how well it matches the observed ice ages! >Think more in terms of verbs than nouns. That's easy, because I don't know any nouns. If you like writing interactive programs or programs with nice graphics, I could certainly come up with things like that. For example a program that shows the trajectory of the Hopf-bifurcation-with-noise evolving "in real time". Extra credit for being able to adjust $\beta$ and $\lambda$ with a slider or something. Even better if we can zoom in! All these "pretty" things are probably more important for attracting students and non-experts than for persuading experts in climate science that the Azimuth Code Project is important. Both of these are worthwhile goals...
• Options
8.
edited December 2010

Happy Holidays!

I'll drop by occasionally the next days and will try to address the points raised here.

John said:

I have some suggestions for the Azimuth Code Project main page on Google. (I don't seem able to edit it myself.)

I'll get to your suggestions. Google projects know the role of administrator, which only I have at the moment, and only the administrator may change the main page. I'm learning the stuff myself, I never used google projects before.

Edit: I can grant anyone write access with a google account :-)

Shouldn't we have something more user-friendly and fun? How about a list of projects (perhaps so far just the Hopf bifurcation and stochastic resonance), with links to the relevant code? There must be some way you software guys do this.

Sure, I'll see what I can do. But: I haven't done a stake holder analysis yet, so the question "what is user friendly" is a bit blurry to me. Of course, if you would like to download and use code for the Hopf-bifurcation and stochastic resonance from the google project and execute it right away, that would be our first use case :-)

• Options
9.
edited December 2010

John said:

Graham has written some code in R, making the source available on various Azimuth Project pages. Could this perhaps be better integrated into the Azimuth Code Project? It may conflict with Tim's strategy of using Java - but do we need a different Azimuth Code Project for each software strategy?

On the code project we have a versioning system and a central repository, so, yes, I think it should be transferred there. The code project is simply a file server, we can create any folder structure we like, so we could, for example, create a basis folder for R-skripts etc. So, we can package everything we create on Azimuth over there.

While there are reasons why I chose Java for the toy models so far, it is not my overall strategy to only use Java, far from it. What I do want to encourage is the use of modern programming languages with established features like

• automatic memory handling,
• platform independence via a virtual machine,
• object orientation

etc.

I'd like to encourage the use of technologies that are a plus on your CV when you look for a job in software development. Knowing how to program with an object oriented programming language is a plus, if it is Java, C#, Python ... is of secondary concern.

Comment Source:John said: <blockquote> <p> Graham has written some code in R, making the source available on various Azimuth Project pages. Could this perhaps be better integrated into the Azimuth Code Project? It may conflict with Tim's strategy of using Java - but do we need a different Azimuth Code Project for each software strategy? </p> </blockquote> On the code project we have a versioning system and a central repository, so, yes, I think it should be transferred there. The code project is simply a file server, we can create any folder structure we like, so we could, for example, create a basis folder for R-skripts etc. So, we can package everything we create on Azimuth over there. While there are reasons why I chose Java for the toy models so far, it is not my overall strategy to only use Java, far from it. What I do want to encourage is the use of modern programming languages with established features like - automatic memory handling, - platform independence via a virtual machine, - object orientation etc. I'd like to encourage the use of technologies that are a plus on your CV when you look for a job in software development. Knowing how to program with an object oriented programming language is a plus, if it is Java, C#, Python ... is of secondary concern.
• Options
10.

I remove the Java tag, since I don't want to enforce the use of Java. I also added a mission statement on the home page, and two wiki pages, one dedicated to open coding challenges, and one for solved coding challenges. The basic idea is that people on the Azimuth project can post requests over there for the implementation of some model, or some data analysis or whatever, and the interested developers can take a look and pick what seems doable and interesting to them.

It worked quite well with John and me on week 308, maybe we can repeat that experience :-)

Comment Source:I remove the Java tag, since I don't want to enforce the use of Java. I also added a mission statement on the home page, and two wiki pages, one dedicated to open coding challenges, and one for solved coding challenges. The basic idea is that people on the Azimuth project can post requests over there for the implementation of some model, or some data analysis or whatever, and the interested developers can take a look and pick what seems doable and interesting to them. It worked quite well with John and me on week 308, maybe we can repeat that experience :-)
• Options
11.

The R scripts I have written for a couple of wiki pages do not come under this description:

clean, well documented implementations of basic numerical algorithms, using up-to-date tools and paradigms from software engineering.

Instead, they were aimed (only) at producing graphics for the relevant page. I think they should remain very easily accessible to anyone who wants to edit these pages in the future and update the graphics. Of course if someone wants to clean them, document them, and turn them into wonderful examples of modern software engineering, I will not object ;-)

Comment Source:The R scripts I have written for a couple of wiki pages do not come under this description: > clean, well documented implementations of basic numerical algorithms, using up-to-date tools and paradigms from software engineering. Instead, they were aimed (only) at producing graphics for the relevant page. I think they should remain very easily accessible to anyone who wants to edit these pages in the future and update the graphics. Of course if someone wants to clean them, document them, and turn them into wonderful examples of modern software engineering, I will not object ;-)
• Options
12.

I see, maybe I should cut back on my requirements :-) The "documentation" part applies to every kind of software, even to R skripts. The overall goal should be that the author himself is able to understand what he did 4 weeks after he last looked at his creation.

As with the "paradigms" of software engineering, I was thinking about e.g.

a) information hiding in the sense of component orientation (use namespaces, don't use global variables etc),

b) separation of concerns (don't mix GUI and model code),

c) use unit tests

etc. which all kind of don't apply to short R scripts.

Comment Source:I see, maybe I should cut back on my requirements :-) The "documentation" part applies to every kind of software, even to R skripts. The overall goal should be that the author himself is able to understand what he did 4 weeks after he last looked at his creation. As with the "paradigms" of software engineering, I was thinking about e.g. a) information hiding in the sense of component orientation (use namespaces, don't use global variables etc), b) separation of concerns (don't mix GUI and model code), c) use unit tests etc. which all kind of don't apply to short R scripts.
• Options
13.

The project has its own Wiki, which I would like to use mainly for the documentation of the software and its architecture. There is another idea, though, namely to have a page with coding challenges and one with solved coding challenges. I added a draft for this already and linked to those pages from the main page of the project. The idea is this: someone says he/she would like to have a model, a simulation or some data analysis done, and this requirement is posted as a coding challenge. Any interested developer can try to solve this in any way, using Matlab or whatever tool. Requester and developer can debate about the needed results (like reproduce some graphics found in a paper or a book, run some alternative parameterizations of a known model, whatever).

The results may be published on the Azimuth project, or on the Azimuth blog, or find their way into a research paper, the needed tools are checked into the Azimuth code project.

Maybe this idea could make it a little bit easier and appealing for others to use Azimuth for their own needs and research.

Comment Source:The project has its own Wiki, which I would like to use mainly for the documentation of the software and its architecture. There is another idea, though, namely to have a page with coding challenges and one with solved coding challenges. I added a draft for this already and linked to those pages from the main page of the project. The idea is this: someone says he/she would like to have a model, a simulation or some data analysis done, and this requirement is posted as a coding challenge. Any interested developer can try to solve this in any way, using Matlab or whatever tool. Requester and developer can debate about the needed results (like reproduce some graphics found in a paper or a book, run some alternative parameterizations of a known model, whatever). The results may be published on the Azimuth project, or on the Azimuth blog, or find their way into a research paper, the needed tools are checked into the Azimuth code project. Maybe this idea could make it a little bit easier and appealing for others to use Azimuth for their own needs and research.
• Options
14.
edited January 2011

What's the view about how to "bundle" several files of scripts+data (particularly since I'm using Linux machines and I'm guessing Windows unpackability as well is important)? I think "zip" is the archive format that's most commonly used for a single crossplatform bundle, but anything else preferred?

Comment Source:What's the view about how to "bundle" several files of scripts+data (particularly since I'm using Linux machines and I'm guessing Windows unpackability as well is important)? I think "zip" is the archive format that's most commonly used for a single crossplatform bundle, but anything else preferred?
• Options
15.
So far as I know zip is most used.
Comment Source:So far as I know zip is most used.
• Options
16.

I think Graham is correct. I tried sending gzipped stuff from my Linux pc where I run sage and usually got to resend as zip

Comment Source:I think Graham is correct. I tried sending gzipped stuff from my Linux pc where I run sage and usually got to resend as zip
• Options
17.
edited January 2011

Graham wrote:

The R scripts I have written for a couple of wiki pages do not come under this description...

By the way, if it doesn't violate some principles underlying the Azimuth Code Project (which I leave to you experts to decide), I would like Graham's code to become part of that project, because I'll be using his figures in "week309", and it would be nice to make that into another advertisement for the Azimuth Code Project.

If this seems like a good idea, I hope you guys do it soon. It's taking me a long time to start writing "week309", but someday it will happen — and then suddenly I'll be very impatient to see a link to Graham's code somewhere on the Azimuth Code Project. (When I finish an issue of This Week's Finds, I hate waiting to publicize it.)

On a different note: I received this email today from a Mexican computer science grad student who once worked with me on the semantics of computation:

Hi Professor,

hope you remember me. I was just reading your last "This weeks finds" entry on your site and noticed the section on the azimuth code project. If would love to jump in and help out. Let me know if there is anything in particular that you guys need help with.

--Miguel Ziranhua

I will tell him to join the Azimuth Forum and talk to you folks...

Comment Source:Graham wrote: >The R scripts I have written for a couple of wiki pages do not come under this description... By the way, if it doesn't violate some principles underlying the Azimuth Code Project (which I leave to you experts to decide), I would like Graham's code to become part of that project, because I'll be using his figures in "week309", and it would be nice to make that into another advertisement for the Azimuth Code Project. If this seems like a good idea, I hope you guys do it soon. It's taking me a long time to start writing "week309", but someday it will happen &mdash; and then suddenly I'll be very impatient to see a link to Graham's code somewhere on the Azimuth Code Project. (When I finish an issue of This Week's Finds, I hate waiting to publicize it.) On a different note: I received this email today from a Mexican computer science grad student who once worked with me on the semantics of computation: >Hi Professor, >hope you remember me. I was just reading your last "This weeks finds" entry on your site and noticed the section on the azimuth code project. If would love to jump in and help out. Let me know if there is anything in particular that you guys need help with. >--Miguel Ziranhua I will tell him to join the Azimuth Forum and talk to you folks...
• Options
18.
edited January 2011

Graham said:

So far as I know zip is most used.

I intend to use maven as a build tool for the Java stuff, in the Java world you use JAR which is a ZIP which every OS should understand, although there are different ZIP algorithms in use that not all ZIP programs can handle. But this problem is OS independent.

Comment Source:Graham said: <blockquote> <p> So far as I know zip is most used. </p> </blockquote> I intend to use maven as a build tool for the Java stuff, in the Java world you use JAR which is a ZIP which every OS should understand, although there are different ZIP algorithms in use that not all ZIP programs can handle. But this problem is OS independent.
• Options
19.

John said:

By the way, if it doesn't violate some principles underlying the Azimuth Code Project (which I leave to you experts to decide), I would like Graham's code to become part of that project, ...

So far as I know, Tim has the keys. More important, he has the vision about what the Azimuth Code Project might become.

Comment Source:John said: > By the way, if it doesn't violate some principles underlying the Azimuth Code Project (which I leave to you experts to decide), I would like Graham's code to become part of that project, ... So far as I know, Tim has the keys. More important, he has the vision about what the Azimuth Code Project might become.
• Options
20.
edited January 2011

The case I'm thinking about is when there's a couple of scripts with maybe some data files. In particular, from a reproducibility point of view I ought to put the code and data behind Experiments in fitting bivariate power laws, particularly so they can point out what's wrong with it. But it'd be a bit clunky to put a whole host of separate files one-per-link onto the Wiki.

Comment Source:The case I'm thinking about is when there's a couple of scripts with maybe some data files. In particular, from a reproducibility point of view I ought to put the code and data behind [[Experiments in fitting bivariate power laws]], particularly so they can point out what's wrong with it. But it'd be a bit clunky to put a whole host of separate files one-per-link onto the Wiki.
• Options
21.

I agree with David about code that generates pictures for a wiki page in that, as I said earlier, it should remain very easily accessible to anyone who wants to edit these pages in the future and update the graphics. I do not think that anyone should have to know what subversion is in order to fix a bug in my R code, or change some assumptions, or parameters, or colours.

My mindset when writing R scripts to make pictures is more like that when persuading Latex to do something unusual than writing a proper program'.

Comment Source:I agree with David about code that generates pictures for a wiki page in that, as I said earlier, it should remain very easily accessible to anyone who wants to edit these pages in the future and update the graphics. I do not think that anyone should have to know what _subversion_ is in order to fix a bug in my R code, or change some assumptions, or parameters, or colours. My mindset when writing R scripts to make pictures is more like that when persuading Latex to do something unusual than writing a proper program'.
• Options
22.

So far as I know, Tim has the keys.

Tim should probably give more of us access to the Azimuth Code Project. I'd like access myself, Tim! I promise not to do anything involving code - I'll just occasionally improve the wording of sentences, or give more detailed descriptions of things I understand, or make various pieces of rhetoric more inspiring.

Comment Source:> So far as I know, Tim has the keys. Tim should probably give more of us access to the Azimuth Code Project. I'd like access myself, Tim! I promise not to do anything involving code - I'll just occasionally improve the wording of sentences, or give more detailed descriptions of things I understand, or make various pieces of rhetoric more inspiring.
• Options
23.

Tim should probably give more of us access to the Azimuth Code Project.

Sure, you need a google account for that, which is now mentioned on the home page of the project. Once you have registered any email address of yours with a google account, I can add you either as a project committer or a project owner, I'm not entirely sure what the difference is (the project owner can also reconfigure the project, but I don't know what that exactly means). I'll need to know the email address that you registered with google. You can post that here or email me directly.

Comment Source:<blockquote> <p> Tim should probably give more of us access to the Azimuth Code Project. </p> </blockquote> Sure, you need a google account for that, which is now mentioned on the home page of the project. Once you have registered any email address of yours with a google account, I can add you either as a project committer or a project owner, I'm not entirely sure what the difference is (the project owner can also reconfigure the project, but I don't know what that exactly means). I'll need to know the email address that you registered with google. You can post that here or email me directly.
• Options
24.

Graham said:

I do not think that anyone should have to know what subversion is in order to fix a bug in my R code, or change some assumptions, or parameters, or colours.

Sorry, I don't think it gets any easier that it is with subversion. Some computer literacy is required. Of course anyone can email changes to the authors who then commit it to the repository. But if anyone is interested in and capable to work with R should also be able to get a subversion client running.

Comment Source:Graham said: <blockquote> <p> I do not think that anyone should have to know what subversion is in order to fix a bug in my R code, or change some assumptions, or parameters, or colours. </p> </blockquote> Sorry, I don't think it gets any easier that it is with subversion. Some computer literacy is required. Of course anyone can email changes to the authors who then commit it to the repository. But if anyone is interested in and capable to work with R should also be able to get a subversion client running.
• Options
25.

Graham said:

More important, he (Tim) has the vision about what the Azimuth Code Project might become.

Right now I think about the project as a meeting place of developers and scientists where both can share code that solves specific problems, whatever that may be. Of course I intend to work on a Java project with some ambitions goals and adhering to some basic principles of software engineering. Both can live concurrently in the same google project, I think.

Comment Source:Graham said: <blockquote> <p> More important, he (Tim) has the vision about what the Azimuth Code Project might become. </p> </blockquote> Right now I think about the project as a meeting place of developers and scientists where both can share code that solves specific problems, whatever that may be. Of course I intend to work on a Java project with some ambitions goals and adhering to some basic principles of software engineering. Both can live concurrently in the same google project, I think.
• Options
26.

Sorry, I don't think it gets any easier that it is with subversion. Some computer literacy is required. Of course anyone can email changes to the authors who then commit it to the repository. But if anyone is interested in and capable to work with R should also be able to get a subversion client running.

Maybe we're at cross purposes here. I am not suggesting there is some better technology then subversion for the code project. I am questioning whether it is a good idea to put scripts whose only purpose is to make pictures for a wiki page into the code project at all. My concern is that it will put off people from correcting or improving the wiki page. I think there are quite a lot of people who can write simple R, (or perl, python...) scripts but who would find getting a subversion client running sufficiently tiresome that they would go away leaving the wiki page unimproved. In another thread, John asked if one of the graphics in the stochastic resonance page could be improved. That is the kind of change I am thinking of.

Comment Source:> Sorry, I don't think it gets any easier that it is with subversion. Some computer literacy is required. Of course anyone can email changes to the authors who then commit it to the repository. But if anyone is interested in and capable to work with R should also be able to get a subversion client running. Maybe we're at cross purposes here. I am not suggesting there is some better technology then subversion for the code project. I am questioning whether it is a good idea to put scripts whose only purpose is to make pictures for a wiki page into the code project at all. My concern is that it will put off people from correcting or improving the wiki page. I think there are quite a lot of people who can write simple R, (or perl, python...) scripts but who would find getting a subversion client running sufficiently tiresome that they would go away leaving the wiki page unimproved. In another thread, John asked if one of the graphics in the [[stochastic resonance]] page could be improved. That is the kind of change I am thinking of.
• Options
27.

The main point of subversion is that you can tell people which version of the source you used to generate a picture that you published. I created a tag for the code that generated the pictures for TWF 308 - if there is any change in the code, you can still go back to the specific version that generated the pictures and are still able to reproduce them.

If that is not a requirement, there is of course no need to check it into the Azimuth code project - creating a download link on the wiki is enough.

The code for the stochastic resonance page is of course checked in. I also have a local copy that is handled using a local SVN server running on my laptop, because I need this kind of version control even when I am working alone on my own laptop - but that's just me.

When you work long enough on some computer program, sooner or later you will make a change that you don't remember next day until you find out that nothing works anymore. Maybe everybody needs a couple of experiences like this before they appreciate version control :-)

Comment Source:The main point of subversion is that you can tell people which version of the source you used to generate a picture that you published. I created a tag for the code that generated the pictures for TWF 308 - if there is any change in the code, you can still go back to the specific version that generated the pictures and are still able to reproduce them. If that is not a requirement, there is of course no need to check it into the Azimuth code project - creating a download link on the wiki is enough. The code for the stochastic resonance page is of course checked in. I also have a local copy that is handled using a local SVN server running on my laptop, because I need this kind of version control even when I am working alone on my own laptop - but that's just me. When you work long enough on some computer program, sooner or later you will make a change that you don't remember next day until you find out that nothing works anymore. Maybe everybody needs a couple of experiences like this before they appreciate version control :-)
• Options
28.
edited January 2011

I think Graham's point was more that for some very simple things the benefits of using version control may be outweighed by having to learn yet another version control system. (One of the pains of diversity in software is that if you pick the wrong 5 projects to contribute to you may have to learn Git, Mercurial, Subversion, CVS and Perforce.)

Comment Source:I think Graham's point was more that for some very simple things the benefits of using version control may be outweighed by having to learn yet another version control system. (One of the pains of diversity in software is that if you pick the wrong 5 projects to contribute to you may have to learn Git, Mercurial, Subversion, CVS and Perforce.)
• Options
29.
edited January 2011

Right, and in this case you can simply upload the code to the Azimuth Wiki as a ZIP-file - or would you like to have some kind of a shared file server for this, maybe on the Azimuth code project?

Comment Source:Right, and in this case you can simply upload the code to the Azimuth Wiki as a ZIP-file - or would you like to have some kind of a shared file server for this, maybe on the Azimuth code project?
• Options
30.

In the particular case of the predator-prey model, John wanted it in the code project. I've no objections. Tim, you could get the R code from near the end of quantitative ecology or give me access. My Google email is graham853 at gmail.com. You'd also better tell me where to put it if I am to do it.

Comment Source:In the particular case of the predator-prey model, John wanted it in the code project. I've no objections. Tim, you could get the R code from near the end of [[quantitative ecology]] or give me access. My Google email is graham853 at gmail.com. You'd also better tell me where to put it if I am to do it.
• Options
31.
edited January 2011

john.c.baez AAATTT gmail.com

where "AAATTT" stands for that little @ thing.

Please let me know what else I to tell you, or do.

Apparently subversion is so simple that even mathematicians use it (to collaborate on papers written in TeX). Alas, I have not personally reached the point of using version control systems for collaborative math projects. But I'm not opposed to it.

Comment Source:Tim: I already have a Google email address, john.c.baez AAATTT gmail.com where "AAATTT" stands for that little @ thing. Please let me know what else I to tell you, or do. Apparently subversion is so simple that even mathematicians use it (to collaborate on papers written in TeX). Alas, I have not personally reached the point of using version control systems for collaborative math projects. But I'm not opposed to it.
• Options
32.

I have added both Graham and John as project owners, so you should now have the same privileges as I have. To commit to the SVN repository, you need to tell SVN your google.com password. If that does not work and I can help somehow, let me know.

I added a folder "R" in the trunk, and below that a folder "SDE". Graham, you could create another subfolder for your specific model ("2dpredatorprey", for example), and check in your script there. SVN lets us change the folder structure later, without loosing any information about the history of the files, so we can always rearrange it later.

@John: Let someone who knows SVN already install a client on your machine and show you how you a) create folders b) check in new files, c) update existing files, d) compare versions and e) roll back a change.

That's all you need to know. You already know much more about handling folders using the windows exploder.

• Options
33.
edited January 2011

"Windows exploder"? Is that some sort of joke about Windows Explorer?

Comment Source:"Windows exploder"? Is that some sort of joke about Windows Explorer?
• Options
34.

It's a superconcious Freudian mistake.

Comment Source:It's a superconcious Freudian mistake.
• Options
35.

Tim, thanks for adding me as owner. I'm using TortoiseSVN on Windows. I've only used it to download things before. I have followed the instructions to create a SVN repository on my hard disc, checked out your code, which all works as I expected. I added a directory and the R script and tried to commit it. I get

Command: Commit
Error: Commit failed (details follow):
Error: Server sent unexpected return value (405 Method Not Allowed) in response to
Error: MKACTIVITY request for '/svn/!svn/act/f1309f95-722e-5a48-90bc-a2daf246835c'
Finished!:

Comment Source:Tim, thanks for adding me as owner. I'm using TortoiseSVN on Windows. I've only used it to download things before. I have followed the instructions to create a SVN repository on my hard disc, checked out your code, which all works as I expected. I added a directory and the R script and tried to commit it. I get ~~~~ Command: Commit Error: Commit failed (details follow): Error: Server sent unexpected return value (405 Method Not Allowed) in response to Error: MKACTIVITY request for '/svn/!svn/act/f1309f95-722e-5a48-90bc-a2daf246835c' Finished!: ~~~~ I have not yet been asked for a password.
• Options
36.

I found a hint in a Mercurial FAQ to use https not http in the URL for the project. I think I have now succeeded.

Comment Source:I found a hint in a Mercurial FAQ to use https not http in the URL for the project. I _think_ I have now succeeded.
• Options
37.
edited January 2011

Hi Graham, the server does not let you check in because you did not tell it your password, and Tortoise did not prompt you to tell it your password because you already communicated with the repository without specifying a password. I don't know how to tell tortoise that it should use a password; frankly, I think this is kind of a bug of Tortoise. But you could try to use SVN from the command line and check your code in via

Right now I don't have access to a computer that is both online and has Tortoise installed, so I can't try to figure out how to do this more directly.

• Options
38.

Tim, I think we crossed. Once I had relocated to https... Tortoise did prompt me for a password, and my R code is in the project. You'd better check what I've done though.

Comment Source:Tim, I think we crossed. Once I had relocated to https... Tortoise did prompt me for a password, and my R code is in the project. You'd better check what I've done though.
• Options
39.

Looks good, I'l try to check it out and let it run when I have time and opportunity :-)

Comment Source:Looks good, I'l try to check it out and let it run when I have time and opportunity :-)
• Options
40.
edited January 2011

tim: i've used maven in some java-projects and it works like a charm. but some developers were unhappy. the only thing is u end up in configuration hell sometimes!

Comment Source:tim: i've used maven in some java-projects and it works like a charm. but some developers were unhappy. the only thing is u end up in configuration hell sometimes!
• Options
41.

Maven is very good in handling complex dependencies, if you have dozens of components and hundreds of libraries there is nothing better than maven in the Java world right now. Of course it is not easy to get it running, it is very user-unfriendly. And I haven't figured out yet what the best way is to handle the repository of libraries (I think I'll simply turn it to offline mode and check it into the repository).

Well, the build process is never the fun part of a software project :-(

Comment Source:Maven is very good in handling complex dependencies, if you have dozens of components and hundreds of libraries there is nothing better than maven in the Java world right now. Of course it is not easy to get it running, it is very user-unfriendly. And I haven't figured out yet what the best way is to handle the repository of libraries (I think I'll simply turn it to offline mode and check it into the repository). Well, the build process is never the fun part of a software project :-(
• Options
42.

I removed the "no C++, Java only" kind of statement from the home page, it should be clear now that the code project is open to any kind of software.

I added two pages to the Wiki (not the Azimuth wiki but the Wiki of the google project that is the Azimuth code project) about coding standards and best practices, the link is in the introduction paragraph on the home page.

People with some experience in programming, and who don't know it yet, may have some fun reading the article how to write unmaintainable code.

Comment Source:I removed the "no C++, Java only" kind of statement from the home page, it should be clear now that the code project is open to any kind of software. I added two pages to the Wiki (not the Azimuth wiki but the Wiki of the google project that is the Azimuth code project) about coding standards and best practices, the link is in the introduction paragraph on the home page. People with some experience in programming, and who don't know it yet, may have some fun reading the article <a href="http://azimuthproject.googlecode.com/svn/trunk/Wiki/CodingStandards/HowToWriteUnmaintainableCode.pdf">how to write unmaintainable code</a>.
• Options
43.

Along similar lines to Roedy Green's how to write unmaintainable code' is this gem from an earlier era: Real Programmers Don't Use Pascal

Comment Source:Along similar lines to Roedy Green's how to write unmaintainable code' is this gem from an earlier era: [Real Programmers Don't Use Pascal](http://www.pbm.com/~lindahl/real.programmers.html)
• Options
44.

Ah, those were the days. I remember the time when we had to program everything with one-state bits that could only represent 0. That was before the 1 was invented.

But seriously, are the best coding practices too much of a kindergarten introduction? From looking at some published code from climate modellers and scientific computing, I'd say no, but of course my samples may be biased.

Comment Source:Ah, those were the days. I remember the time when we had to program everything with one-state bits that could only represent 0. That was before the 1 was invented. But seriously, are the <a href="http://code.google.com/p/azimuthproject/wiki/BestCodingPractices">best coding practices</a> too much of a kindergarten introduction? From looking at some published code from climate modellers and scientific computing, I'd say no, but of course my samples may be biased.
• Options
45.

Nothing is ever too kindergartenish.

Comment Source:Nothing is ever too kindergartenish.
• Options
46.
edited January 2011

Azimuth Code Project

all words capitalized, because this is the name of an organization.

Comment Source:I have renamed this page [[Azimuth Code Project]] all words capitalized, because this is the name of an organization.
• Options
47.

Will somebody (+Andrew Stacy?) please create an account on azimuthproject.googlecode for me so I can commit some C++ to David Tweed's DSE code. Thanks

Comment Source:Will somebody (+Andrew Stacy?) please create an account on azimuthproject.googlecode for me so I can commit some C++ to David Tweed's DSE code. Thanks
• Options
48.

Hi Jim, sorry for the delay, I was quite busy with managing a big software release :-)

I need an email address that corresponds to a google account, only then can I add you to the projekt. You can send it to my via email, see Tim van Beek for mine.

Comment Source:Hi Jim, sorry for the delay, I was quite busy with managing a big software release :-) I need an email address that corresponds to a google account, only then can I add you to the projekt. You can send it to my via email, see [[Tim van Beek]] for mine.
• Options
49.

Hello all,

I'm planning on spending some time this winter associating myself with the code base of the Azimuth Code Project. I see there are some open coding challenges at the google code site. How large these are, I am not yet sure; I have some reading to do with regards to the Delayed Action Oscillator.

I understand it has been quite a while since changes were committed to the project, however, does anyone have any other open TODOs?

Having spent a previous life as a programmer, and currently finishing my undergrad degree in mathematics, I find that spending time coding is a pleasant entry point to new fields.

Comment Source:Hello all, I'm planning on spending some time this winter associating myself with the code base of the Azimuth Code Project. I see there are some open coding challenges at the [google code](http://code.google.com/p/azimuthproject/wiki/Challenges) site. How large these are, I am not yet sure; I have some reading to do with regards to the Delayed Action Oscillator. I understand it has been quite a while since changes were committed to the project, however, does anyone have any other open TODOs? Having spent a previous life as a programmer, and currently finishing my undergrad degree in mathematics, I find that spending time coding is a pleasant entry point to new fields.
• Options
50.
edited December 2012

Hi Patrick,

Good timing! I knew there were some Azimuth coding challenges or open code project ideas somewhere in the Azimuth ecosystem but I never thought to look in the googlecode repo, so thanks.

Some coding things going on at the moment include:

Allan Erskine set up a repo on github. Git is what he and I use but we haven't yet due to other pressures.

Tim van Beek,Allan Erskine and Glyn Adge designed and wrote an interactive stochastic bistable model in javascript which I think's really cool.

Nathan Urban came up with what I think is a list of possible climate-related model projects in this thread; I think it's worth reposting here:

Nathan wrote:

"Some possibilities:

• An 1D upwelling-diffusion energy balance model (generalization of the simple 0-dimensional linearized dynamics we’ve looked at earlier). This illustrates some transient dynamics of ocean heat uptake and can be tuned to the historical climate to make simple predictions.
• A 1D radiative-convective model of the atmosphere. (I’ve always wanted to code up some variant of some of Jim Kasting’s models to look at runaway and moist greenhouses.)
• More sophisticated glacial-interglacial dynamical models (Saltzmann style) or Snowball Earth energy balance models for paleoclimate.
• Some simple fluid dynamics on a rotating planet, e.g. a beta-plane (tangent plane) approximation, or something illustrating a baroclinic instability in the atmosphere or a ocean double-gyre configuration, eventually working up to a simple aquaplanet. This relates to the “ocean modeling” thread. I don’t know if you could make the resolution coarse enough to be interactive, yet fine enough to be realistic.
• A box model of the terrestrial or ocean carbon cycle (with ocean biogeochemistry like Revelle factors), or an ecological model (photosynthesis / respiration of vegetation, or NPZD model of plankton).
• A simple 1D flowline model of a glacier or ice sheet."

Have a happy holiday

Comment Source:Hi Patrick, Good timing! I knew there were some Azimuth coding challenges or open code project ideas somewhere in the Azimuth ecosystem but I never thought to look in the googlecode repo, so thanks. Some coding things going on at the moment include: [[Allan Erskine]] set up a [repo on github](https://github.com/azimuthproject). Git is what he and I use but we haven't yet due to other pressures. [[Tim van Beek]],[[Allan Erskine]] and [[Glyn Adge]] designed and wrote an interactive [stochastic bistable model](http://www.adgie.force9.co.uk) in javascript which I think's really cool. [[Nathan Urban]] came up with what I think is a list of possible climate-related model projects in [this thread](http://forum.azimuthproject.org/discussion/1116/american-geophysical-union-talk-december-6th/#Item_30); I think it's worth reposting here: Nathan wrote: "Some possibilities: * An 1D upwelling-diffusion energy balance model (generalization of the simple 0-dimensional linearized dynamics we’ve looked at earlier). This illustrates some transient dynamics of ocean heat uptake and can be tuned to the historical climate to make simple predictions. * A 1D radiative-convective model of the atmosphere. (I’ve always wanted to code up some variant of some of Jim Kasting’s models to look at runaway and moist greenhouses.) * More sophisticated glacial-interglacial dynamical models (Saltzmann style) or Snowball Earth energy balance models for paleoclimate. * Some simple fluid dynamics on a rotating planet, e.g. a beta-plane (tangent plane) approximation, or something illustrating a baroclinic instability in the atmosphere or a ocean double-gyre configuration, eventually working up to a simple aquaplanet. This relates to the “ocean modeling” thread. I don’t know if you could make the resolution coarse enough to be interactive, yet fine enough to be realistic. * A box model of the terrestrial or ocean carbon cycle (with ocean biogeochemistry like Revelle factors), or an ecological model (photosynthesis / respiration of vegetation, or NPZD model of plankton). * A simple 1D flowline model of a glacier or ice sheet." Have a happy holiday