59 lines
3.2 KiB
Markdown
59 lines
3.2 KiB
Markdown
---
|
|
# front-matter
|
|
---
|
|
|
|
# Initial Technology Selection
|
|
|
|
The technology selected in this project were largely based on my own personal usage and experience. Feel free to drop
|
|
or replace technologies where you see fit. I tried to keep things it a minimum so there wasn't a lot to consider.
|
|
|
|
## Docker
|
|
|
|
[Docker][] is a powerful containerization technology that allows you to encapsulate all your dependencies into a single
|
|
isolated unit. I've been leveraging Docker in development environments since 2014 and have had huge success with making
|
|
developer environments, richer and easier to work with through containers. Docker makes it easy to encapsulate tools
|
|
into a single location, removing the need to manage complicated local provisioning scripts that spans various operating
|
|
systems.
|
|
|
|
[Docker]: https://www.docker.com/products/docker-desktop/
|
|
|
|
## NodeJS
|
|
|
|
According to [IEEE][], JavaScript was the 5th most popular programming language used in projects beating out languages
|
|
like C#, Go, and many others. When it comes to jobs, it's the 4th most popular language that organizations hire for,
|
|
and is the 3rd when it comes to trending libraries.
|
|
|
|
A large number of projects are built using JavaScript or one of its variants (e.g [TypeScript][]). Many projects
|
|
feature "progressive web apps" or "single page applications" to provide a richer client side experience.
|
|
|
|
In the early days of mobile application programming, writing iOS and Android applications came with a lot of challenge
|
|
and cost. Companies typically had two teams, building out native experiences for both platforms. As a result, features
|
|
would often drift between the different types of devices. Through systems like [Apache Cordova][], JavaScript made its
|
|
way to mobile devices. While it initially came at a fairly high performance cost, Cordova enabled JavaScript developers
|
|
to write mobile applications without needing to learn a new programming language. Over time, the community has improved
|
|
the performance of these types of applications by leveraging new technologies and capabilities.
|
|
|
|
Eventually, tools like [Electron][] and [Tauri][] brought JavaScript to the desktop. Now, Windows, OSX, and Linux
|
|
desktop applications could be written using the
|
|
|
|
Outside it's use in projects, NodeJS and NPM include a large number of useful utility packages, such as `prettier` and
|
|
`concurrently` which makes it great for formatting and linting common file formats (such as javascript, css/less/sass,
|
|
html, json, graphql, markdown, and yaml). As a result, I often like having NPM at the root to be able to manage the
|
|
versions of these tools in the repository itself.
|
|
|
|
[IEEE]: https://spectrum.ieee.org/the-top-programming-languages-2023
|
|
[TypeScript]: https://www.typescriptlang.org/
|
|
[Apache Cordova]: https://cordova.apache.org/
|
|
[Electron]: https://www.electronjs.org/
|
|
[Tauri]: https://tauri.app/
|
|
|
|
### PNPM
|
|
|
|
When working with multiple, large NodeJS code bases, multi-package management becomes a necessity. [LernaJS][] was an
|
|
early multiple package management solution. While a great initial solution, it lacked a lot features that came with
|
|
future solutions such as [PNPM][]. PNPM not only makes it easy to manage monorepos while also improving the storage of
|
|
dependencies in the local file system.
|
|
|
|
[LernaJS]: https://lerna.js.org/
|
|
[PNPM]: https://pnpm.io/
|