Hacking Atom

My experience writing an NLP-powered code suggestion engine

By Eddie Antonio Santos / @_eddieantonio

Let me tell you about my research!

Naturalness of Software

Natural Language Processing

$n$-gram language model

Can natural language processing be successfully applied to software?

Yes, probably.

A veritable buttload of applications!

Enter: Gamboge

Multitoken code suggestion in Atom

Gamboge in action!

Mean Surprise

Haunter
$$S_{i} = \frac{I_{i}}{|t_{i}|}$$

(Steal this!)

Lessons Learned

It's just JavaScript (& npm!)

Electron

The Atom Community is... uh...

Interesting priorities

Emoji style guide

CoffeeScript

Anyone down for a flamewar?

The Atom Community is... uh...

💩

Atom's Syntax Highligting Tokenizer

Insufficient for prediction!

require('esprima').tokenize('const hello = `world`');

Relying on Pre 1.0 APIs

BAD IDEA

Asynchronous testing in Jasmine 1.x

BAD IDEA

Conclusion

Resources

Natural Language Processing

Resources

Language Tools

Special Thanks