Local Development

I am a slow learner. I’ve learned all this by using Linux for 18 years and exploring and experimenting with it. I still feel like an amateur. Hopefully, this story will help you understand what you should focus on learning, so you don’t waste so much time trying everything, to find a configuration that you like. If you follow my suggestions, you will learn one particular configuration. Every one of the programs I mention is just one option you can choose. There are many alternatives.

If you are new to Linux, then, I recommend following my suggestions while you work your way through all the stories on this website, to learn how to set up a very high performance local development environment. You will see many alternative configurations during your research. Definitely investigate them, just be aware of getting distracted. Linux and the Internet are both moving targets. They are always under construction. Every one of these programs has a learning curve, so don’t waste too much time learning multiple versions of the same thing. Have fun and be careful building your niche of our global cloud of artificial intelligence.

Tools

Your local development environment is a programmable dashboard for your global cloud of artificial intelligence. It is a set of tools, like Zsh, Neovim, git and ssh, GCC, C/C++, Qt, Python 3.x and NodeJS, etc., where you can use your text editor and/or your Integrated Development Environment to build applications in your holistic home office. Your holistic home office is your private property, which you are responsible and accountable for. Value your private property and respect everyone else’s private property.

Local Development Environment
Local Development Environment

Your primary weapons are Kitty, Zsh and Ranger, Neovim and NerdTree, Kile and Kexi. Alacritty and Kitty are high performance alternatives to your default terminal, Konsole. Kdevelop and Qt Creator are your force multipliers. Use these tools to create something beautiful and valuable.

Investigate Zsh. Zsh is a scripting language that runs in your terminal. Usually, you will have to install Zsh and switch your default shell from Bash to Zsh. You can start out using a configuration template, such as “Oh My Zsh,” or just take the time to learn how to configure Zsh yourself and do that. Investigate Zsh and scripting. Learn how to program your programmable operating system.

Investigate and install Neovim. Neovim is a very fast and powerful, programmable text editor. Like the other subsystems, this one is going to take time and effort to learn how to use effectively. Compared to Kate, Neovim will slow you down at first. Once you learn how to use Neovim, it is one of the fastest text editors available anywhere. vi was originally designed when computers were much smaller, as in less memory, and slower. So, vi was designed to maximize its speed and productivity and minimize it’s use of computer resources. Vim is an advanced version of vi. Neovim is an advanced version of Vim.

Investigate Markdown and Latex. Learn how to use them to produce professional quality content for your websites and books and other channels of entertaining education. Read a lot of literature about these programs, both on and offline. Watch a lot of videos and tutorials. Get in the habit of using Markdown and Latex to produce a steady stream of valuable content. Be a prolific artist.

Programming

GCC is the GNU C library and compiler, which you’ll need for programming in C and C++. The libraries I recommend are C, C++, QML, Lua, NodeJS and Python. Get them installed and enabled. Read the documentation for each one of them and get familiar with them. Along with HTML and CSS, they are the languages that you will be using to program a variety of applications.

When you create a project folder in Zsh, the first thing you do is use LXD to create a container. Then, you create a git repository within the container. And then, you develop the application within that secure space.

Create directories within your home directory, for your native projects (Applications that run on your computer’s desktop environment), another directory for your web projects (Applications that run in a web browser, such as websites) and a third directory for mobile applications for smart phones.

systemctl and journalctl are commands you can use to manage your Linux operating system. Get familiar with systemd and Wayland, in order to learn how to program your operating system. You can install and use Netstat and other tools to keep track of your connections to other computers and to the Internet, your global cloud of artificial intelligence. Investigate the ports and sockets your computers use to communicate with each other.

Security

Pay attention to the security of your system. Build security into your local development environment right from the start. ufw is your Uncomplicated Fire Wall. Study and learn how to use it well and routinely, in your computer management and your website development workflow. https://help.ubuntu.com/community/UFW has some pretty good documentation for UFW. Learn how to use the technology.

Set up and use Git and SSH to back up your work and collaborate with other programmers on whatever remote servers you will be using, such as BitBucket, Github or Inrupt. Your local development environment is the computer you are actually working on. Build your applications in containers on your computer, record everything in your Git repository and then transmit it to whatever remote hosting service you are using over TCP or UDP/IP and SSH/TLS.

Qemu and KVM are the Linux virtualization technology. KVM is an extension that enables Qemu to use the hardware on your computer to run compatible applications, rather than having to create a virtual environment for an incompatible architecture. Qemu is the classic Linux version of VirtualBox.

LXC is the Linux container technology that Docker is built with. LXD is an advanced user interface for the LXC containerization technology. These technologies are important tools you will use in your local development environment, which help you protect your computer by isolating applications from the rest of your computer, so that if the application crashes, it doesn’t take your whole computer down with it.

Get in the habit of using Flatpak or Snapcraft when you install new packages. Ubuntu uses Snapcraft. Most other distributions use Flatpak. My current operating system has 19 flatpaks and 5 snaps. I may have intentionally installed one of them. Mostly, I just use apt or pkcon and the application is automatically installed as a snap or flatpak.

Connections

Set up your local development environment so that you can see the application you are working on in your browser, at localhost for web apps, and on your desktop for native applications, in real time, while you are developing the application. Localhost is the web address 127.0.0.1. You will be able to see the code you are writing in your text editor or IDE and the application you are developing side by side, so you can see the results of your work in real time.

Get Apache2 or Nginx or both installed and properly enabled. If you use both, you will have to assign one of them to port 80 and the other to port 81. Use ports 442 and 443 for secure connections. Apache2 is best for running one dynamic program at a time. Dynamic programs are interactive applications. They accept user input and can change in response to that user input while running. Commenting would be one such user input. Various forms are another. Nginx is best for running multiple different static applications at the same time.