
Ask HN: Want to contribute in Open source implementation of research papers - gamekathu
Hi, I am a JS developer and aiming to get into Research domain. Is there any platform where I could contribute to build a project based on ongoing research, like implementing a research paper? That would help me in getting exposure to research, build my research interest and also improve my coding skills. Thanks!
======
polakallen
Here is my humble recommendation:

1) Contribute to (or just read the code of) open source projects in order to
improve your coding skills

2) Read up on existing research in topics you're interested in

I understand the desire to be efficient and kill two birds with one stone.
However, finding a good, active, community built research project might be a
bit difficult. Even if you find it, you may find that opportunities for you to
contribute to it are very few.

Contributing to open source projects will give you a good opportunity to
understand the open source contributing process (which you'll need to know
when you do find that open source project you want to contribute to). It'll
also allow you improve you coding skills while you're at it.

Reading research papers gives you much more bang for your buck in terms of
developing your research interest, though is not very resume-able. But, who
knows, maybe your reading will spark your own open source research project.

------
dennybritz
Is there a specific field of research you are trying to get into? If so, pick
a research paper/topic with practical industry applications, then implement
and explain it in an easy-to-understand way. You can write a blog post (or
series) about it and publish everything on Github. It may take a while, but
personally I found that trying to explain a complex topic in a simple and
practical way is the absolute best way to really understand it. Passively
reading papers is not going to give you the same understanding. And using JS
for this type of project is perfect, because lots of people are familiar with
it. You will make research more accessible to everyone, which is something we
need. Try to choose a project that's a good fit for JS. For example, something
that heavily relies on optimized memory allocation and GPU operations probably
isn't a good fit.

Be warned though, there are quite a few research papers, especially those
coming out of Academia as opposed to industry, that are cryptic, lacking in
detail, or not easily reproducible. And that's intentional. This isn't obvious
when you read a paper, it will only become obvious when you actually try to
reproduce it. These papers are the result of misaligned goals Academia in,
where it's all about publishing as many papers as possible that look good on
the surface. When In doubt, I'd recommend focusing on research that has a lot
of interest from the industry. That's usually a safer bet.

~~~
gamekathu
specific field would be machine learning. I regularly follow Karpathy's blog
and his convnetjs library [1], and also Harthur's brain library [2]. yes, I
also found a lot of papers cryptic and hard to follow

[1]
[https://github.com/karpathy/convnetjs](https://github.com/karpathy/convnetjs)
[2] [https://github.com/harthur/brain](https://github.com/harthur/brain)

~~~
polakallen
What have you done so far in terms of learning machine learning? There's quite
a few resources for getting a good foundation, if that's something you might
need.

Ironically, looking dennybritz's comment, JS is particularly ill-suited for
this, as, as far as I'm aware, there are no libraries for working on the GPU,
which is tremendously useful for working with machine learning algorithms
which usually are crunching lots of data.

However, I don't know much about karpathy's specific implementation and
experiments, so there might be a reason he choose JS. I'm thinking its more
likely to make visualizations easier rather than any computational reason
though, so you might be stuck in a niche there.

~~~
dennybritz
You're right that JS is pretty ill-suited for implementing production-level
Deep Learning architectures that operate on a lot of data, I think it's still
well suited for explaining the concepts in a clear way. A lot of the models
have intuitive (and visual) interpretations, something that can be nicely
visualized with JS.

As for Karpathy's implementation, you're right, he chose JS for that reason.
His library is meant as a tool for experimenting and teaching, not to deploy
these models in production.

Op: Send me an email if you're interested in this (email in profile). I
actually started something similar just recently at
[http://www.wildml.com/](http://www.wildml.com/).

~~~
gamekathu
Nice blog! Yes I am interested in Deep learning, although am just a newbie.
Right now I just read around in several blogs to get the idea. As for JS
visualizations, TonicDev[1] is a nice option if someone wants a IPython style
notebook in JS

[1] [https://tonicdev.com](https://tonicdev.com)

------
ganarajpr
I would suggest you to have a look at
[http://www.gitxiv.com](http://www.gitxiv.com)

Gitxiv is an online list combining research papers from arxiv and their
implementations in github. So I would say its a great resource for what you
are looking for.

Also, they run some kind of competitive implementation runs where you can
collaborate with others to implement papers :

[https://github.com/GitXiv/DeepQA](https://github.com/GitXiv/DeepQA)

I am a JS dev as well interested in Deep Learning. I dont know your specific
interest in this domain but I am happy to collaborate with you - if you are
interested. You can reach me at raj at dhi dot io. I would suggest you to pick
up python or lua. Lua is quite close to JS and Python is extremely easy to
pick up as well.

~~~
mammo
www.gitxiv.com gives "Modulus | Application Not Found".
[http://gitxiv.com/](http://gitxiv.com/) works.

------
versteegen
I really can't give very good advice, but I'll try to say something...

There are several different types of open source projects and I'm not quite
sure which kind you're looking for.

Firstly there are a lot of (often hugely popular) tools used by researchers
that don't involve research directly. A good example is Jupyter (formerly
known as ipython notebooks). Contributing to these projects is sure be of
benefit to many people (probably more than anything else you could do), and
may be a good place to learn skills because they're more likely to have good
codebases written by skilled programmers. But if the project is already too
large (like Jupyter), it may be a lot harder to get into.

Next up, anything that's scientific and written in javascript is most likely
to be for user interface, visualisation, or just websites (PR) for research
projects. For example interactive visualisations of algorithms. May or may not
involve actual involvement to the research. For example I went to a seminar
recently by a group of researchers here who create models for simulating the
effects of policy changes for policy makers a number of government departments
here. They need user interfaces for their tools, and for one project [1]
apparently they're using something that generates forms on a webpage, but it's
all written in Java and R, and they want to open source everything and get
external contributions (the current code they have up is 2 years old). I'm not
advertise them, just giving an example; there must be a number of other
projects with similar needs. I don't know how you can find find them.

Finally, there may be projects that actually write the real meat of the
research software directly in javascript. It sounds like this is what you
want. But I don't think javascript is a popular language amongst researchers.
Languages like MATLAB/Octave, Python, R, Mathematica, Magma/GAP, C, Java,
Julia are mostly used. Checking my CS department's mailing list, the only
mention of javascript is a project to write a Google Chrome extension to use
the javascript API for an eye tracker [2]

[1]: [http://www.arts.auckland.ac.nz/en/about/our-
research/researc...](http://www.arts.auckland.ac.nz/en/about/our-
research/research-centres-and-archives/compass/compass-projects/a-modelling-
tool-to-improve-the-policy-response-on-issues-concerning-children-and-young-
people.html)

[2]: [https://theeyetribe.com/products/](https://theeyetribe.com/products/)

~~~
gamekathu
yes it is true JS is not a popular language among researchers. what I aim is
to have a research experience in the process of contributing to build
research-oriented libraries, since I am new into the research domain and want
to develop an active research interest. I read papers, but mostly they are
quite cryptic or maybe I lack the basic knowledge for understanding them.
Developing and contributing to a research oriented open source project will
help me into properly understanding the research being done

~~~
polakallen
Here might be a good place to start learning:
[https://www.coursera.org/learn/machine-
learning/](https://www.coursera.org/learn/machine-learning/)

Much of what research is, is understanding what you're working on in the first
place. Getting a solid foundation is a must, or you risk being very lost for
some time, and will be fundamentally limited in what you can contribute.

~~~
gamekathu
learning from that awesome course. on week 6 now :)

