- assuming highly specialized Math skills (e.g. manifolds), which wasn't me at the time, so it made testing and bug hunting harder
- code missing, or code is a long C file vomited out by Matlab, with some pieces switched to (Desktop) SSE instructions for speed gains
- papers were missing vital parameters to reproduce the experiment (e.g. exact setting for a variable that influences an optimization loop precision vs speed)
- the experiment was very constrained and the whole algorithm would have never worked in real life, which is what I had supposed for the first few months (meh)
- most papers, as the article says, are just a little bump over the previous ones, so now you have to read and implement a tree of papers
- sometimes there would be the need of a dataset to train a model, but the dataset is closed source and incredibly expensive, so not a good avenue
At the time I was also working with the first version of (Apple) Metal which, after going crazy on why my algo wasn't working, I discovered had a precision bug with the division operator. FML
Still it was a very instructing experience, the biggest takeaway if you do something similar: don't be certain that once you implemented an algorithm, it will work as advertised. It's totally different from say, writing an API, it's not a well constrained problem.