Get MEAN - Jeremy Hull's Top 5 Technologies

Screen Shot 2020-03-31 at 10.58.07 PM.png

Here at OMA, we have fully embraced the MEAN stack. For those not familiar with this acronym, it is the unofficial full-stack JavaScript framework standing for:

M = MongoDB

E = Express

A = AngularJS

N = Node.js

We love MEAN because it’s a very modern open source stack. By having each piece JavaScript-based, each member of our dev team can move freely up and down the stack, which avoids specialization and — more importantly — development bottlenecks. What’s more is we avoid all of the exorbitant license fees that other stacks require (cough .NET cough).

That being said, we pressured — I mean… politely asked — our own web developer Jeremy Hull to tell us what are his current top 5 favorite technologies:

Rust

System level programming is a pretty old and set in its ways in the software development space that was pretty much exclusive to two languages, C and C++. The main goal of Rust was to be a memory safe language without sacrificing performance. The feature that allowed this goal to accomplish this is lifetimes. Usually, a C or C++ developer has to keep track of when pointers, of allocated data, are freed from the heap and manual memory management which can be a pain. What lifetimes do is expose the compiler to know explicitly the lifetime of all allocated memory. And having a compiler that knows about these lifetimes, frees up those cycles a developer needs to use initially for tracking memory in their brain.

I've used the language for building my FLAC, free lossless audio codec, library and enjoyed the process. Although lifetimes can get in your way at times, once you fix those errors and your compiler stops pestering you about them, you can feel a bit more confident that your software will not crash because of a memory error.

React

My go-to JavaScript library for building web applications. Although our company tends to go with a MEAN stack, I do prefer React over Angular simply because modularization is easier to think about. The best practice for React is for data to travel down the component tree, while events go up it. The result of this type of thinking is having one place where data manipulation happens and all the other components do is simply be an object for displaying the data being passed into it and handing events off to its parent component.

The other thing I really like about React is its virtual DOM. Generally speaking, a majority of JavaScript frameworks/library would re-render a template of the DOM when something inside it gets updated. What React does is have a virtual DOM that is handled by JavaScript and when an update comes around, React performs a diff of that DOM and inserts the updated data into the real DOM. This makes building efficient and responsive web applications less of a pain to think about.

Vim

This is my preferred text editor that I use on a day-to-day basis for both work and my hobby projects. The selling point, at least for me, is the fact that it is a modal editor with distinct modes for editing text. What this means is I rarely, almost never, use a mouse allowing me to be as efficient as possible compared to any other editor.

Of course, there are many other features implemented through plug-ins that make for quite a powerful piece of software. And to top it off, it is open source, and it has been that way since it's conception back in 1991 with the goal of improving on its predecessor VI.

cURL

Quite a useful tool to use for different sets of automation for anything that touches the internet. If you visit their site you can see the multitude of protocols it supports -- well over 30. What I usually use cURL for is getting previews of data from APIs of third party websites. I also use it for internal development of APIs, just so I know what type of data is and isn't being exposed to the world.

LLVMAlthough their website is pretty terrible, this is probably one of the most influential pieces of software on my list. Just as an example, Rust uses LLVM and the majority of software on Mac OSX are built with LLVM, so you can see the type of impact it has.

But what even is "LLVM"? It is a collection of modular compiler and toolchain technology. If you know anything about the only other popular open source compiler, GCC, it was originally designed as a monolith program that was pretty much impossible to use a specific part of the compiler for building developer tools. With a bit of market pressure from the growing community of LLVM, they started to make their project more modular and its codebase have improved quite a bit. Within that time, there have been a plethora of tools build around LLVM, including clang the default compiler on Mac OSX.