views:

1341

answers:

10

I've implemented a newer GC algorithm and thought my findings could help.

What should I do? Publish a blog? Do my best to write a paper and/or just start submitting abstracts to journals? I don't have any academic credentials myself.

Should I start emailing local Professors to see if they could help me write it? Email professors who do similar research who aren't local?

Or perhaps forget it, and just release the source and let someone else share any of their more 'qualified' findings?


Some Background:

So in my desire to teach myself C, I decided to implement a newer, relatively un-tested Garbage Collection algorithm for a popular Open Source virtual machine.

Basically, I was running into performance limits of a GC for a particular type of program at work, and started researching it.

After some hard thinking, I 'discovered' a new potential algorithm, and after doing some research I read a few theoretical papers that suggested what I had came up with. No one ever tried an implementation though.

Had a lot of fun, learned a bit about Garbage Collection, and learned some C. A friend who's doing an MS in CompLinguistics suggested my findings might benefit others in this particular research field, but wasn't quite sure of what my next step was.

I am a bit out of my element since I'm a self-taught programmer though. Thanks in advance for any thoughts on this relatively unorthodox question.

+13  A: 

First, dig up any related papers on the subject you can find; see how they are written, what they discuss, what the seminal works are. Figure out how your work fits into the global framework of this area of research (garbage collection, automated memory management, etc).

You can get papers published in theory (how to build a better garbage collector), and in practice ("an implementation of xyz algorithm is shown to provide x% increase in my favorite metric, and compares favorably with algorithms abc and def. Here are some performance graphs, lessons, conclusions, future directions).

Once you do all the legwork, figure out whether any of the researchers whose names appear on those papers are local to you, and contact them. Be sure to understand their work, and how your work relates to theirs; discuss your findings, ask if they think you might have something here, and offer to collaborate and/or ask for guidance.

Some possibly useful links:

SquareCog
Good answer. And also, the prof who works with you might convince you to go to graduate school, and get that higher degree. As someone there myself, I can tell you that this level of self-motivation will go far in academia.
mmr
Once he done the leg work, and assuming his work is something new and better, he can simple write the paper and submit it to the journals. Most peer reviewed publication do not require any credentials to submit. Take care to get the style right, of course.
dmckee
Thanks! Since i'm really coding an implementation of an already published algorithm (with a few minor modifications), an 'in practice' paper seems more the route I should take. I have identified the papers that are directly related to my GC, but the question is just how far back I should go...
runT1ME
+22  A: 

Follow this simple algorithm ('simple' is not the same as 'easy'):

  1. Go read the proceedings of the last few meetings of the International Symposium on Memory Management. Take a quick skim through proceedings of OOPSLA and of Programming Language Design and Implementation (PLDI); you can usually find a few garbage-collection papers every year. Learn the style, and as SquareCoq says, inform yourself about related work.
  2. Write up your work using the SIGPLAN conference proceedings format.
  3. If you have a blog or web site, post a copy of your paper. Or consider placing a copy at arxiv.org.
  4. As SquareCog says, identify a few people to send copies to. Local people are great, but people in this field are friendly. If you are careful with your work, they will respond politely. You could even send me a copy :-)

Warning: Writing research papers is hard. It might take you six months to learn to describe your work in the language that is current among members of the memory-management community. If you are finding it tough going on your own, you might want to look for a collaborator or coauthor.

Note: in garbage collection, the best and most prestigious places to publish are generally not journals but rather conferences such as the ones mentioned above.

Norman Ramsey
Great specific details my answer lacked! Question -- is it really safe to post your paper on the blog/website? Many conferences enforce the "work has not been published elsewhere before" rule.
SquareCog
@SquareCog, I thought the same thing. Journals in particular don't like if a paper has been published elsewhere (leading to the question of whether a blog post is considered "published"). Conference proceedings are usually more lenient about this, in my experience (admittedly not CS, biomed. eng.).
gnovice
I've spend endless hours helping to shape policy on this question. 'Prior publication' emphatically means 'in a peer-reviewed place'. A blog is zero risk---many of our papers appear first on their authors' websites. For details see http://www.sigplan.org/republicationpolicy.htm
Norman Ramsey
+1  A: 

This is a very tough situation indeed. As a graduate student (in chemistry, not CS, but nevertheless), I personally don't think I've ever seen a scientific paper published by somebody without an academic/government/industry association, though I'm sure it happens occasionally. To submit a paper you usually need to write a cover letter suggesting reviewers (i.e. usually professors with knowledge in your research area), which you might not be aware of, but might be able to get close with simple Google s earching. I'm concerned you would just get blown off, but you could try to write a really high-quality paper and give it a try. If that doesn't work (note that it can take several months to get an answer from a scientific journal), I think your idea of looking for a local professor who might be interested is a good one, although that might take some persistance too. If all else fails, like others have said, by all means, post it on the web and let the community take a look at it. If it is truly novel and meaningful work, I hope you will get the recognition you deserve!

Good luck!

Craig
I think this is overly pessimistic; my own experience with submitting papers to academic journals as a non-academic (at least not recently) was mostly very good. *Software: Practice and Experience* had two very smart reviewers who clearly put in a lot of time and effort. On a different paper, I got a useful and sensible rejection from the *Journal of Philosophical Logic,* though another journal, which shall remain nameless, was decidedly less so.
Flash Sheridan
+5  A: 

Hi there, I'm a PhD student and have published a few things before. My first advice to you is to tell you that publishing is not that hard, as long as you do things scientifically. That means, explore existing research, and then prove you have beaten it. If you can do that, you can get a paper published.

What I would do in your situation is first find related papers (in scientific journals) about your topic - Google Scholar is one place you can begin searching. Basically the reason for doing this is so you can clearly prove your method is better. The worst thing is when you present something and there's something better that already exists. Be prepared to spend a lot of time reading, publishing is not a job that can be done quickly unfortunately.

What I've found works well is to do a search for the most-cited papers in your field. Instantly it gives you the most important papers at the top of the list, and from them you can learn the language and ways in which people present ideas in the field. Unfortunately I don't know if there's any free service that does this, I use either the Web of Science or Scopus to achieve this, and I get subscriptions to these through my University.

From there, you've got to prove your method is better. If possible, measure your method in the exact same way everyone else does their measurements. This makes it easier for both you and everyone else, because it'll be clear your method is better.

Once you've got that, just write everything up and submit it to a journal (or conference). If you've done all the reading you would know by now where papers like yours usually get submitted to.

Edit: with the professor thing - you don't need to get someone else's help to submit a paper at all, but if you feel that someone who could give you personal directly help is what you need, then by all means go ahead. Just be aware that it means you have to put down the professor's name as a co-author. On the flipside, the professor would be very happy to help you as they're getting their name on something too.

Ray Hidayat
+5  A: 

the academic journals in general use a fair and detailed peer-review process see this, for example for submissions, so your paper will get a fair reading by people who most likely don't care who you are. Just as a PhD after your name cannot make up for a bad paper, the lack of one will not disqualify a good paper.

but listen to everyone else also:

  • do your homework - find all the relevant published papers in the field, and study them
  • include how your work differs from the field
  • include references at the end of your paper, and discuss each one in turn within the paper
  • pick the correct publication for your findings, i.e. don't submit a paper on a garbage-collection algorithm for object-oriented languages to a mathematics journal
  • i think it is customary to submit the paper to only one journal at a time, but i may be mistaken/archaic in this belief
  • if you get constructive feedback, edit gladly

caveat: i have not had any papers published in academic journals, but i have had a bad paper rejected most fairly by one!

P.S. Do not be surprised if your new algorithm is (a) flawed or worse, (b) the same as someone else's from 40 years ago. In case (a) try to fix it, in case (b) try to improve it.

P.S.S. If you don't have the time or energy to do the homework/research, post the algorithm on SO and let the teeming masses do the work for you ;-)

Steven A. Lowe
This may vary by discipline, but the "anonymous" peer review is usually one-way. The Reviewee doesn't know who the Reviewer is, but with the reviews I've been asked to do I've always seen the authors names and institutions. That said, I don't think the reviewers would be biased by a non-PhD author.
gnovice
@gnovice: you're right, i think i misunderstood the phrase "anonymous peer review" all this time! thanks! answer edited
Steven A. Lowe
Actually, the International Symposium on Memory Management that Norman was kind enough to share seems to do a double-blind review system, where the author is anonymous.
runT1ME
+1  A: 

From the earlier responses, it seems as if academia is a rather closed club. It's a huge amount of work (rewording your solution to match an eclectic vocabulary) and you're unlikely to get much recognition from that corner of the world if you remain an outsider.

I guess you really have to ask yourself what you want from your work: money, fame or just knowing it's out there.

If it's money, go for a patent or a product. If it's fame, fight with academia, publishing or blogging.

If it's just the desire to feel good about it, release the code, and then explain how it works in a blog or some other on-line forum. Maybe, if you're really lucky you'll get some good karma for your efforts.

Paul.

Paul W Homer
It's not about rewording your solution. It's about presenting it in a thorough and complete manner, and demonstrating that it's actually a novel contribution. If you start reading papers, you quickly discover that everything has been done (in the 70s, and probably by Leslie Lamport).
SquareCog
+3  A: 

The problem with academic publishing in a field that has a lot of work in it (such as garbage collection) is that there are very strict standards about 1) How to rigorously evaluate the research and compare it to existing works, 2) How to cite existing works, 3) How to write it.

Rigorous evaluation is generally difficult, though it changes from field to field. I suggest that you examine some papers in OOPSLA/PLDI/Other sources about it. There are often standard benchmarks against which you can run your tool.

Being able to do the literature search is imperative, since those evaluating your work will know it fairly well. The amount of research on any topic on which you think you have an original idea on is daunting. That's why graduate students don't sleep, they keep worrying that somebody already did it and they're not searching right.

Learning to write it takes ages and it's a very strange style. If you're a native English speaker, slightly easier. But there are formats that you have to adhere to.

Now, if I can make a practical recommendation: it is very difficult to go from nothing to a full paper in a well recognized conference, even for people who do it for a "living" (if you call grad school stipend a living). Instead, there is a more typical path:

Present a poster in an academic conference. This usually requires a two-page abstract and the "Quality and evaluation" requirements are not as rigorous. This doesn't mean crap is accepted, just that it's means for early work. During the session, people who know the topic will talk to you (it can be daunting), but you'll learn a lot and have better ideas how ot proceed.

Next, find a workshop about the topic. Workshops are easier to get into because again, they are more for early work. IF the workshop has published proceedings, you have made at least some mark.

Then, if your idea is truly worthy of a quality publication, you can do the necessary evaluations and hopefully publish a good paper about it in the real conference.

This cycle can take a couple of years. Academia is slow...

Uri
Thank you very much. Being one who isn't familiar at all with academia, the information about Posers->workshops-> journals/conferences was very helpful. I'll look into this.
runT1ME
Contact me directly if you need some extra info in evaluating places. But make sure you did the background reading on existing GC techniques first.
Uri
+1  A: 

It depends on what result you want.

If you want a PhD thesis on this topic later then you should choose the harder way and get it published in some real journal. If you want money then you first need a patent (usually counts as a publication). If you just want to share and get famous then publish it on a blog and contact some development teams that might find it useful.

sharptooth
A: 

One other thing people haven't mentioned here is that it can get expensive to be published. If you're publishing in a conference, they usually require at least one of the paper authors to be there to present which means paying the conference registration fee. This can be anywhere from hundreds to thousands of dollars. Usually, the university foots the bill for this through some kind of grant but if you're an independent author, you're going to have to go out of pocket.

Shalmanese
A: 

I agree with most of the other answers here. I would just add that in your case, the proceedings from ISMM (International Symposium of Memory Management) would be a very good place to look for GC papers, and indeed perhaps a good venue to submit a paper to eventually.

Johan Nystrom