In a previous article, I wrote about why I tend to favour open source software. In this article, I will be covering specific programs that I, as a software developer, use every day to improve our flagship product.
Linux
Linux, or GNU/Linux, is an operating system. Operating systems are vastly complex programs and it’s hard to explain what they are; I’m not even sure I know. For a basic idea, think of Microsoft Windows or macOS; Linux is an alternative to those.
My go-to Linux distribution, Linux Mint, is similar to Windows in certain, somewhat superficial ways. It has a similar graphical user interface, including a menu for finding and launching programs, and a row of icons across the bottom of the screen for programs I use frequently. However, fundamentally, it is very similar to the operating systems used on most web servers.
I use Linux at work so I can run other programs which help me get work done. Most of these programs can be used on Windows or macOS, but some of them are written to run on servers and they tend to work better on Linux.
Git
Not to be confused with an insult popular among Brits, `git` is an essential tool for software developers working on large projects.
At Invotra, we make many changes to our flagship product every day and we need a way of keeping track of them. `git` allows us to keep each individual change isolated from the other changes in a given release until they have passed our extensive testing process, and to merge them into the release when they are ready.
Docker
Our intranet has a complex architecture, making use of multiple virtual servers to provide a performant service to our users. We regularly need to replicate this environment on our work computers.
Although our work computers are pretty powerful, they aren’t as powerful as the web servers we use to host our live service. As such, attempting to replicate our multi-server environment on our work computers using traditional virtual machines would slow them down to a crawl.
Instead, we use Docker to replicate these virtual servers far more efficiently. Where traditional virtual machines would rely on a kernel for each virtual system, Docker relies on the host system’s Linux kernel, allowing it to replicate our cluster of servers far more efficiently.
Node.js
Node.js is a way of running JavaScript code without the use of a web browser. It uses the highly efficient V8 JavaScript engine from Google Chrome to execute JavaScript code. Additionally, it features core libraries, allowing developers to make HTTP requests, set up an HTTP server and accept user input via the command line, all using JavaScript.
Node.js is usually used in conjunction with `npm`, an online repository of JavaScript libraries developed by the Node.js developer community. These libraries make it a lot easier to develop applications for Node.js, allowing me to focus on making meaningful improvements to the projects I work on.
Invotra’s REST API is a Node.js application. It makes use of Node.js libraries and `npm` packages to exchange data between an intranet’s users and its data stores. Additionally, all automated tests for the API are written in JavaScript and executed using Node.js.
I have covered just a small handful of open source programs that I use for software development every day. While many industries tend to favour proprietary, closed source software, in software development, many open source programs seem to have become industry standards.
Feel free to get in touch with any questions around our Invotra’s use of open source software.