OvaTime Technology Stack Guide
This guide was written for the purposes of UTDesign Senior Capstone Project No. 932. It has been made available here for public benefit.
Our Senior Design project will require the use of several technologies, products, and services. Please make sure to thrououghly read through the following information.
Text Editors
A good text editor can make all the difference when it comes to productivity. I recommend using Visual Studio Code, which I have found to be absolutely fantastic in terms of features.
In the event that you do not like using Visual Studio Code, here are some other alternatives:
Programming Languages
The primary programming language we will be using for this project is Python 3, not Python 2. It is best to use Anaconda, a Python distribution that comes with a graphical package manager that you can use to install additional libraries.
- How To Code in Python 3
- Object-Oriented Programming in Python 3
- How To Install and Set Up a Local Programming Environment for Python 3
Markup and Typesetting Languages
Python Data Science Libraries
- jupyter-lab
-
Once you have Anaconda installed, you can start Jupyter Lab from the command line by typing:
jupyter lab
-
Note that Jupyter Lab is different from Jupyter Notebooks (it’s basically a more advanced version).
-
- pandas
- matplotlib
Machine Learning Libraries and Frameworks
A DigitalOcean Tutorial:
Version Control Software
We will be using the Git version control system for this project.
- The Git repository hosting service we will be using for this project will be GitLab.
- A good Git GUI to install on your computer is Sourcetree. You will need to make a free Bitbucket account to use this product, but it is worth the inconvenience.
- The Atlassian Git tutorial can be found here.
- The Github Git tutorial can be found here.
And here are a few additional DigitalOcean tutorials as well:
- Introduction to Git: Installation, Usage, and Branches
- An Introduction to Open Source
- How To Use Git: A Reference Guide
Terminal Emulator
A good terminal emulator program will reduce your inevitable frustration when working with command-line interfaces (CLIs).
The ones that ship with Windows are not too great. I recommend installing one of the following programs:
- ConEmu - My personal favorite
- Windows Terminal - This is a pre-release version
- Hyper
MacOS users can make of the following emulators:
Linux Environment
We will be extensively using the Bash shell when interfacing with Linux cloud servers. MacOS users already have Bash installed on their computers, so there is no additional action needed on their part. Windows users must install Windows Subsystem for Linux (WSL).
A brief Bash command tutorial can be found here.
Linux Environment Tutorials:
- Initial Server Setup with Ubuntu 18.04
- Getting Started with Linux
- An Introduction to Shell Scripting
- How To Use Rsync to Sync Local and Remote Directories on a VPS
- Using Sed
Once we start working in the commandline with cloud servers, it will be worth your time to learn how to use Vim. Vim is usually preinstalled on Linux and MacOS systems. Windows users must install it separately.
Vim Tutorials:
- Installing and Using the Vim Text Editor on a Cloud Server
- How To Use Vim for Advanced Editing of Plain Text or Code on a VPS
- Cheatsheet.
SSH Keys
The SSH protocol is the most secure method of connecting to cloud servers and other computers (such as a headless Raspberry Pi). Windows users can follow this tutorial once they have WSL installed onto their computers. MacOS users need not take any additional steps and can follow the same tutorial.
- Understanding the SSH Encryption and Connection Process
- SSH Essentials: Working with SSH Servers, Clients, and Keys
- How to Set Up SSH Keys on Ubuntu 18.04
- How To Configure SSH Key-Based Authentication on a Linux Server
Password Manager
We will also be making several user accounts for different services on cloud servers. In order to prevent any security vulnerabilities, we will be using long, unique passwords for every account. I recommend the use of a password manager such as Bitwarden to keep track of passwords. This is non-negotiable.
If you are interested in other cybersecurity measures, feel free to check out the following resources:
- Cybersecurity Primer by Daanish Khazi-Syed
- How To Use KeePass as a Self-Hosted Password Management Solution
Containerization
Containerization essentially allows you to ship software in a “container” that not only contains source code, but also dependencies. Docker is what is used to accomplish this.
Supplemental DigitalOcean Tutorials
DigitalOcean has hundreds of tutorials covering a range of topics as it relates to software development. I have listed a few of my favorites below:
DigitalOcean:
- The Navigator’s Guide to DigitalOcean
- DigitalOcean 1-Click Application Images
- Getting Started with DigitalOcean Block Storage
Programming Languages:
Django Web Development Framework:
Server and Networking Setups: