[julia-users] Julia package style / learning

2014-03-24 Thread Ryan Gehring
Hey all,
I decided to start learning Julia over the weekend and am having fun so 
far. I implemented the wikipedia single layer perceptron algorithm as well 
as kendall's tau to see what it would be like to develop a medium sized 
package in the language. Link to the repo is below (the title just popped 
into my head there's no amazing product or grand plan meant by the name.)

https://github.com/rgehring/SimpleNets

As a student of the language I'd love to hear anyone's thoughts on any 
style issues or mistakes they see, I'm sure there are plenty. Here are some 
things I think I did wrong right off the top of my head...

   - Submodule importing. In src/util/association_measures.jl I wanted to 
   just expose KendallsTau.kendallstau as AssociationMeasures.kendallstau and 
   I think I should have used import rather than include / using ?
   - Test inclusion strategy: I thought it would make sense to have a unit 
   test file for every src file and to import the src file at the top of each 
   test, but this makes the tests brittle to directory changes, is it a better 
   idea to include all the files in test_runner.jl?
   - Excessively specific typing and casting to ints and floats.
   - Arrays of Arrays - should I have used matrices or the native 
   multidimensional array structure?

Here are some things that I think might be good:

   - Tried to keep a reasonable degree of abstraction on all the files, 
   although I may have been too heavy on the use of submodules.
   - Test coverage + a (very basic) actual statistical validation script 
   for the algorithms.
   - Tried to be explicit about public API's to the submodules. I may have 
   carried this too far with src/util/association_measures.jl which is 
   basically an interface module designed to only expose the public API's of 
   each included submodule (presently only KendallsTau).

I'm potentially interested in contributing to the codebase as a way to keep 
learning, does anyone have any small, bite-sized github issues they'd be 
interested in help with or seeing a pull request for?




[julia-users] Re: Julia package style / learning

2014-03-24 Thread Ryan Gehring
Thanks for the discussion and thanks to JMW for the pull request! 


On Sunday, March 23, 2014 9:42:19 PM UTC-7, Ryan Gehring wrote:

 Hey all,
 I decided to start learning Julia over the weekend and am having fun so 
 far. I implemented the wikipedia single layer perceptron algorithm as well 
 as kendall's tau to see what it would be like to develop a medium sized 
 package in the language. Link to the repo is below (the title just popped 
 into my head there's no amazing product or grand plan meant by the name.)

 https://github.com/rgehring/SimpleNets

 As a student of the language I'd love to hear anyone's thoughts on any 
 style issues or mistakes they see, I'm sure there are plenty. Here are some 
 things I think I did wrong right off the top of my head...

- Submodule importing. In src/util/association_measures.jl I wanted to 
just expose KendallsTau.kendallstau as AssociationMeasures.kendallstau and 
I think I should have used import rather than include / using ?
- Test inclusion strategy: I thought it would make sense to have a 
unit test file for every src file and to import the src file at the top of 
each test, but this makes the tests brittle to directory changes, is it a 
better idea to include all the files in test_runner.jl?
- Excessively specific typing and casting to ints and floats.
- Arrays of Arrays - should I have used matrices or the native 
multidimensional array structure?

 Here are some things that I think might be good:

- Tried to keep a reasonable degree of abstraction on all the files, 
although I may have been too heavy on the use of submodules.
- Test coverage + a (very basic) actual statistical validation script 
for the algorithms.
- Tried to be explicit about public API's to the submodules. I may 
have carried this too far with src/util/association_measures.jl which is 
basically an interface module designed to only expose the public API's of 
each included submodule (presently only KendallsTau).

 I'm potentially interested in contributing to the codebase as a way to 
 keep learning, does anyone have any small, bite-sized github issues they'd 
 be interested in help with or seeing a pull request for?