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?


Reply via email to