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?