Local Development

I am a slow learner. I’ve learned all this by using Linux for 20 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 Wezterm, Zsh, Neovim, git and ssh, GCC, C/C++, Qt, Python, Rust, Lua 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 Wezterm, Zsh, Neovim and Kile and Kexi. Kdevelop and Qt Creator are your force multipliers. Use these tools to create something productive, 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, Lua and scripting in general. Learn how to program your programmable operating system.

Investigate and install Neovim. Neovim is a very fast and powerful, programmable text editor. vi was originally created by the people who created the C programming language and the Unix operating system. Computers were a lot smaller and slower back then than they are today. In order to compensate for the small memory and slow processors, vi had to be very fast and economical about using computer resources.

If you can learn how to use Neovim, which does have a fairly steep learning curve, you can make yourself a very high performance computer programmer. Learn how to use Lua scripting language to program Neovim. Rust and Lua seem to be the most popular languages for programming Linux these days. Wezterm is written in Rust. Neovim is written in Lua. So, learning these two languages will help you learn how to program your Linux operating systems. You can add other skills on top of that foundation of programming Linux.

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. 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++, Rust, Lua, QML, 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 net-tools 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 SourceForge. 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.

SourceForge is an open source IT business. Github and BitBucket are owned and operated by Microsoft and Google, respectively. I’ve never used SourceForge. I did have a Github account, but I’ve never used it. If I ever do get around to building a cloud based IT system, I will probably choose SourceForge, but I do not know enough to make that decision yet.

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.

I have not necessarily used all these applications, I’m just sharing what I’ve learned about using Linux in your own home office based free enterprise. I’m describing what I know about the applications, so you can investigate them further and not have to grope around in the dark to find out what the Linux programming tools are. Knowing what questions to ask is valuable information.

Just start working on C/C++, Rust, Lua, Wezterm, ufw, Neovim, qemu, LXC and LXD, ssh and SourceForge and start creating applications and content for your web applications. Websites are just one kind of application, you can also create applications for your desktop. You can use SourceForge, Github, Gitlab and ssh to work on other free and open source applications started by other developers.

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.