{"push_id":536906027,"size":4,"distinct_size":4,"ref":"refs/heads/feature/parallel_autotrain","head":"667d7b765c9cf447bf318a272f73f16961de67e8","before":"298676b0723ad899c2d31be1e6e8aa824f8be39c","commits":[{"sha":"1a60b770785a2ee1c299460cf42b7b3cfb4a88eb","author":{"email":"ae27efe5c2204df7de2789d62457d1294ddb43f3@gmail.com","name":"Giuseppe Cuccu"},"message":"Added synchronization on add() and trim()\n\nSince it's gonna be called from multiple threads, make sure changes are\nsequential - in particular, trim() depends on size(), and add() depends\non the correct sequential linking of the list.\n\nAlso, looks like I forgot to add SortableVec to the last commit, apologies.","distinct":true,"url":"https://api.github.com/repos/giuseppecuccu/jsvq/commits/1a60b770785a2ee1c299460cf42b7b3cfb4a88eb"},{"sha":"5fddb6beb3a630871053ae9ca16eea69c882ffe8","author":{"email":"ae27efe5c2204df7de2789d62457d1294ddb43f3@gmail.com","name":"Giuseppe Cuccu"},"message":"Extracted SortableVec to its own class file","distinct":true,"url":"https://api.github.com/repos/giuseppecuccu/jsvq/commits/5fddb6beb3a630871053ae9ca16eea69c882ffe8"},{"sha":"a545174dc7062c7c4e70e0a1cbf52476cd3e9d8d","author":{"email":"ae27efe5c2204df7de2789d62457d1294ddb43f3@gmail.com","name":"Giuseppe Cuccu"},"message":"Big commit: switched to per-individual lists\n\nI found out that I needed a set of lists, one per each individuals, and I\nput my head down until it worked. Unfortunately now the changes are too\nintertwined to well define commits. So here's a grocery list:\n- New class `MostNovelImagesList`, holding the logic for the per-individual\n  image list, with max size, max similarity, etc. It's quite short, light\n  and optimized, I think I should have done it earlier, but now I finally\n  needed it.\n- This brings a HUGE cleanup of class `TrainingSet`, quite a bit of\n  rethinking, and a lighter interface. Now down to two functions: one to\n  code a vector (automatically try to add to training set, create a list\n  for the individual if none is present), and one to retrieve the training\n  set (and flush/reset everything on the way). This is ways easier to use.\n- Class `SVQ` is changed to reflect this new interface.\n- A new `Test` checks out everything works. I wish I had time to get an\n  introduction to JUnit, it would make much more sense. But again, I'm\n  still changing the interface, and I have no time to maintain the old\n  test code: once the algorithm is tested, if only the interface is\n  changed I just delete the test that doesn't allow compilation and I write\n  a new one for the new features.","distinct":true,"url":"https://api.github.com/repos/giuseppecuccu/jsvq/commits/a545174dc7062c7c4e70e0a1cbf52476cd3e9d8d"},{"sha":"667d7b765c9cf447bf318a272f73f16961de67e8","author":{"email":"ae27efe5c2204df7de2789d62457d1294ddb43f3@gmail.com","name":"Giuseppe Cuccu"},"message":"Switched back to test the whole SVQ together in autotrain","distinct":true,"url":"https://api.github.com/repos/giuseppecuccu/jsvq/commits/667d7b765c9cf447bf318a272f73f16961de67e8"}]}