NASA & Monkeys Choose JavaScript

Karim Alibhai
Hello, JavaScript
Published in
4 min readAug 28, 2016
I bet you forgot about this, didn’t you?

Yeah, that’s right. We have successfully brought both NASA and Monkeys over to the dark side — I mean the web side.

Throughout the years, many of our technological innovations have originated as either military projects or tools by NASA. But over the last few years, the world has reclaimed its right to the process of scientific discovery and the norm has changed. From this, we sprung a new technological revolution which seemed to disassociate our technology from the technology at play over at NASA and our military bases.

Hearing about new updates from NASA, we have always been wowed by the amazing work of some of the top engineers and scientists in the world — but NASA’s use of something as “cutting edge” (I say cutting edge because JS is a language that is going through a constant evolution process) as JavaScript has always been out of the boundaries of our imaginations.

This is changing more and more now as everyone is embracing the open source community — including NASA. One of today’s most trending Github repositories happens to be NASA’s OpenMCT: a completely open-source next-generation mission control framework that is 100% web-based.

Yeah, that’s right. It’s awesome. This isn’t NASA’s first big web-based application but it’s still definitely quite an application.

What does it do?

OpenMCT is a visualization framework that comes in very handy for data analysis. There’s clearly no limit to the scope of such an application, it is useful pretty much anywhere you can find data. This includes spacecraft missions but also in any of the many rover missions. Which is actually showcased in their live demo (yupp, they’re even hosting it on Heroku).

It features a clean timeline UI for analyzing operations and events, interactive graphs labeling changes in battery, power, and temperature. The best part is that it fully exercises dynamic programming: anyone can create their own layouts for observing data and add whatever components to it that they wish.

It would be incredible to see fully open source components being developed for large scale projects such as NASA rovers because it would help us move from a capitalist ideology to programming and more towards a democratic ideology. Politics aside, these concepts are already developing more and more with new startups. For instance, the businesses of Uber, Airbnb, and npm are entirely based on a community-driven infrastructure.

What JS things did they use?

The platform itself is built on Angular 1 and some other sugar such as moment, require, and even support for ES2015 promises (through a polyfill). It uses npm as its package manager for build-related dependencies. The build system itself is gulp with Jasmine as the test suite and Karma as the test runner. Fortunately, NASA is on the side of linting. But like most in the JS community, they have given up on JSLint and are instead supporting JSHint (I might as well deprecate my gulp-jslint plugin now).

What’s the point?

It’s interesting. I mentioned in my post about ES2015 how JS is now dominating all sorts of devices from computers to wearables. But it’s nice to know that thanks to NASA, JS might start dominating platforms outside of Earth too. Then JS will be truly universal. ;)

Now onto the Monkeys

Okay so I might have lied. It’s not about real monkeys. But the hype is just as real!

Github developer, Victor Maia, has released an awesome new project called WebMonkeys which allows JavaScript developers to push their CPU-heavy calculations onto the GPU for rendering via WebGL.

This is a truly very innovative and interesting concept, especially in the perspective of JS considering the fact that it’s always been a known fact that GPUs are much better at handling complex calculations than the CPU. But the proper exploitation and implementation through the use of WebGL is especially interesting. A true hats off to Victor for this creative genius.

Although this project is still in its early release stages, you can get your hands on it (assuming you have opposable thumbs) over at its official Github page. There is a wonderful collection of examples of monkeys being used to rapidly solve problems in the examples directory.

I’m quite excited to take this project for a proper spin and get some benchmarks. It would be nice to see the results of some CPU-intensive operations that we could move into WebGL. At the moment, I’m not entirely sure what that would be. But I’m sure there are some wacky ideas rolling around in that head of yours.

In other news…

Babel published a new tool called “babili” which is essentially yet another javascript code minifier but one that supports the new subsets of ECMAScript through the use of Babel (essentially it can minify ES2015 code to ES2015 code instead of transpiling then uglifying). This is good news for those of us who really want to push the world towards rapid ES adoption. However, in reality, apps in production still have to cater to the lowest common denominator (*cough* internet explorer *cough*). So this is really only for people who like to live on the edge. Or get fired.

Mattermost is getting a lot of attention for their advertising themselves as a fully open source Slack-alternative. I think it’s really quite nice when open source developers create a completely free (and really awesome) alternative to a paid product (although Slack is a really great product). Yay, open source developers!

That’s all, folks. Happy JavaScripting!

--

--