Showing posts with label Development. Show all posts
Showing posts with label Development. Show all posts

Monday, October 5, 2020

Why Linux is perfect for web developers

Linux runs the cloud, the Internet and super-computers. Learn why web developers love Linux too!
Photo by Ilya Pavlov on Unsplash

Following up on our previous discussion on why use Linux, and learned why Linux is ideal for development. Today, let's focus on why Linux is a fantastic system for web developers.

If you recall our previous post, we started alluding to this StackOverflow pool, where Linux was cited as the most loved technology by developers at 83%. There are multiple reasons for that. Let's learn about them next.

Linux is free

Obviously, one of the main reasons to run Linux is because Linux is free. As poverty (unfortunately) grows around the world, it's important to minimize costs for users and companies. Since prices for Windows lincenses are really high and utilizing MacOS, almost impeditive for most of us, being free allows Linux to reach a much wider audience including independent developers, small organizations taught and used in schools, universities and research labs at a really low cost.

Robust package management

While it's true that MacOS users can use brew to enhance their terminal experience, and even Microsoft is building Windows a package manager (despite 20years late 😌) they are nothing more than a poor adaptation of Linux's built-in package mangers. It's on Linux where the real experience shines since the package manager integrates into the update system which integrates into the shell. 

Quicker access to modern tools

You'll get quicker access to the latest releases of your favorite programming language on Linux too. Linux users frequently get earlier access to Golang, Rust, NodeJS - just to name some - without resorting to building them from scratch.

Streamlined workflow

Beyond getting access to the latest tools, developing on Linux will be a much more pleasant experience to to the nature of the system: an awesome and powerful shell (Bash on most cases) accessible via a powerful window manager (GNOME or KDE) being backed by a super solid system with an extensible list of packages available to install at your fingertips.

Awesome command line tooling

Developers love the command line. Using the command line is key to automate your tasks and to opmitze tasks, resulting in huge productivity gains. Today, even tasks that are commonly UI-based such as browsing the web, managing files and even watching YouTube. Web developers can gain signifiant productivity if they embrace this workflow which's the recommended way to building new web apps quickly with ReactJS, VueJS, Angular. Popular tools and frameworks such as WordPress and even proprietary tools such as SendGrid or HubSpot have their own CLIs.

Plus, tools such as tmux or i3, allow you to multitask without sacrificing your productivity.

On the left man git, on the right: vim on top and htop on bottom

Streamlined cloud and container integration

As Red Hat usually says, containers are Linux. Creating your web app today requires probably a lot of dependencies, some of which (a database server, for example) may not be trivial to install - or may use a lot of your resources. Containers are today the way to streamline that process as you can build complex applications with tools such as DockerDocker Compose and Minikube.

Dotfiles

Once you get comfortable with the shell, you'll probably want to customize it to your needs. Developers realize that they really make them productive. Since it's common days to work on multiple machines, an elegant solution to that problem is to host your dotfiles in a private or public repository like GitHub so you can quickly restore your favorite settings in any of your development machines.

Integrated Git

Git is an essential requirement today. On Linux git is an integral part of the workflow (of course, it was invented by Linux Torvalds, Linux creator to facilitate the complex integration workflow of the Linux kernel). Using git in Linux makes everything simpler as it integrates into your command line and shell.

A powerful shell

Bash (and siblings such as ZSH and Fish) is a really powerful tool in Linux. Developers who know it can leverage it to enhance their workflows. For example, you could map the following three commands:
  • git add .
  • git commit -m <your-message>
  • git push
As one operation, the following gcp command:
gcp(){
        msg="More updates"
        if [ -n "$1" ]
        then
                msg=$1
        fi
        git add . && git commit -m "$msg" && git push;
}
So that using it, would be:
gcp "Some commit message"

Oh, and simply typing gcp would do all the above using "More updates" as the git commit message. Use but don't abuse 😊.

Linux is reliable

Writing software requires a a reliable system. As you probably know, Windows (and even Macs) are not as reliable as their companies tell advertise. Your Linux system will rarely crash. You'll also realize that Linux tools will be more stable than their Windows or Mac equivalents.
Remember this?

Excellent Documentation

Developers have to frequently access the documentation. Linux comes the man tool allowing you access to the documentation you need available regardless of your exposure to to the internet. Just run man <cmd> to view documentation for the software you need:

Good for old hardware

Linux is also excellent for old hardware. For example, you can run lighter tools that utilize less resources. Most distributions (such as Fedora LXDE shown below) release alternative lightweight versions optimized for lower-end hardware.

Updated Software

Another reason why developers love Linux is because (1) they're exposed to the cutting edge software and (2) they'll get frequent updates/upgrades. Regarding the latter, updates on Linux are not only reliable but are more frequent than anything you'd get on those systems. The system will be updated multiple times a week and a new version can be available every 6 months depending on the distribution with long-term releases available every 2 years.

Outstanding software availability

Not only installing software on Linux is simple  Every Linux distribution provides a tool to manage software with lots (literally, thousands) of apps. Visual Studio Code, Slack? You'll find on Linux. You'll also find enterprise software like Zoom and Microsoft Teams if you need to talk to your clients.
Source: Slack Downloads

Networking tools

Web development is all about networking. Linux comes with powerful networking tools, some of which you probably heard of. Samba, nmap, whois, nslookup, ping, curl, ssh, among others are natively available. There's just so much here and once you learn these tools you probably wouldn't be able to work without them.

Cloud-native tools

Linux comes with lots of tools to use in cloud development. The most commons are Docker (and its sibbling podman) and Kubernetes but it also has easily installable access to tooling for Azure, AWS, GCP and devops/automation tooling such as Ansible, Helm, Vagrant and more.

Support from a huge community

Linux users are spread around communities over the internet. Being on Reddit or on forums of your specific distribution, developers frequently share their thoughts with similarly minded folks around the web. This helps them share knowledge, news, learn new things and obviously, help others.

Linux is highly customizeable

Another reason web developers can benefit from using Linux is due to its extensive customization. With the right instructions they can customize their system as they wish resulting in a quicker setup or, in case containers aren't sufficient, modelling their systems as per the customer's requirements.

 Some of the things you can tweak in Linux are:

  • Desktop Managers: don't like GNOME or KDE? There's XFCE, LXQT, LXDE, etc for you.
  • Login Managers: how you login to your system.
  • Desktop themes: configure themes, colors, etc.
  • Fonts: customize your fonts, sizes, etc.
  • Shell: shell is the application that runs on your terminal and also can be changed or customized.
  • Systems and Services: your system will have an endless list of services to choose from.
  • Kernel: even the kernel, the main process of your system can be customized. 

Enterprise-Grade Security

Linux comes with built-in enterprise security tooling. Beyond that, curated repositories Linux users are used to having repositories curated by the community and available for them. That means less viruses, no adware, unsafe or untrusted software running on your machine.

Conclusion

On this post we understood a little more why developers use and love Linux. You too could benefit from using it today! We hope you learned something new today and are excited to try out Linux and use it as your main system as we do!

See Also

Monday, September 28, 2020

Why Developers love Linux

Linux runs the cloud, the Internet and super-computers. Learn why developers use and love Linux too.
Photo by Arget on Unsplash

Following up on our previous discussion on why use Linux, today we will discuss why Linux is the favorite operating system of developers, the folks who build the software you use. To get started, let's back up our assumption using StackOverflow's own insights, where it shows Linux is the most loved technology by developers:

Linux is free

Obviously, one of the main reasons to run Linux is because Linux is free. As poverty (unfortunately) grows around the world, it's important to minimize costs for users and companies. Since prices for Windows licenses are really high and utilizing MacOS, almost impeditive for half of the world, being free allows Linux to reach a wider audience including independent developers, small organizations, schools, universities and research labs.

Linux is (way) more secure

Linux is also (way) more secure than Macs and Windows. That's mainly due to its:
  • open-source code: due to its open nature, researches and hackers frequently inspect and crack the code. When issues are found, they're reported and fixed by community.
  • open collaboration model: open-source code also fosters open collaborations. Developers from all over the world will frequently push fixes to the software you use making it better and more secure.
  • enterprise-grade software: tools like SELinux that are run on mission critical environments run on your machine too.
  • different permission model: Linux users run on a low permission level making it very improbable that even if you're hit by a virus, you would infect the machine.
  • frequent updates: your system will always be updated getting the latest security, software and kernel fixes. These are usually the holes crackers explore to target you.
  • smaller exposure to viruses: yes, Linux has viruses but on an infinite smaller proportion than Windows users get. Linux also has anti-viruses if you need too.
  • curated repositories: the easiest way to install software on your Linux is by using its own repositories. These repositories are curated and are less prone to have viruses.

Awesome Command Line

Developers love the command line. Using the command line is key to automate your tasks and to opmitze tasks, resulting in huge productivity gains. Today, even tasks that are commonly UI-based such as browsing the web, managing files and even watching YouTube can be accomplished from the terminal. Plus, tools such as tmux or i3, allow you to multitask without sacrificing your productivity.
On the left man git, on the right: vim on top and htop on bottom

Linux is reliable

Writing software requires a a reliable system. As you probably know, Windows (and even Macs) are not as reliable as their companies tell advertise. Your Linux system will rarely crash. You'll also realize that Linux tools will be more stable than their Windows or Mac equivalents.
Add caption

Excellent Documentation

Developers have to frequently access the documentation. Linux comes the man tool allowing you access to the documentation you need available regardless of your exposure to to the internet. Just run man <cmd> to view documentation for the software you need:

Good for old hardware

Linux is also excellent for old hardware. For example, you can run lighter tools that utilize less resources. Most distributions (such as Fedora LXDE shown below) release alternative lightweight versions optimized for lower-end hardware.

Updated Software

Another reason why developers love Linux is because (1) they're exposed to the cutting edge software and (2) they'll get frequent updates/upgrades. Regarding the latter, updates on Linux are not only reliable but are more frequent than anything you'd get on those systems. The system will be updated multiple times a week and a new version can be available every 6 months depending on the distribution with long-term releases available every 2 years.

Streamlined cloud and container integration

As Red Hat usually says, containers are Linux. Creating your application today requires probably a lot of dependencies, some of which (a database server, for example) may not be trivial to install - or may use a lot of your resources. Containers are today the way to streamline that process as you can build complex applications with tools such as Docker, Docker Compose and Minikube.

Dotfiles

Once you get comfortable with the shell, you'll probably want to customize it to your needs. Developers realize that they really make them productive. Since it's common days to work on multiple machines, an elegant solution is to hosting your dotfiles in a private or public repository like GitHub so you can quickly restore your favorite settings in any of your development machines.

Integrated Git

Git is an essential requirement today. On Linux git is an integral part of the workflow (of course, it was invented by Linux Torvalds, Linux creator to facilitate the complex integration workflow of the Linux kernel). Using git in Linux makes everything simpler as it integrates into your command line and shell.

A powerful shell

Bash (and siblings such as ZSH and Fish) is a really powerful tool in Linux. Developers who know it can leverage it to enhance their workflows. For example, you could map the following three commands:

  • git add .
  • git commit -m <your-message>
  • git push
As one operation, the gcp command listed below:
gcp(){
        msg="More updates"
        if [ -n "$1" ]
        then
                msg=$1
        fi
        git add . && git commit -m "$msg" && git push;
}
So that using it, would be:
gcp "Some commit message"

Oh, and simply typing gcp would do all the above using "More updates" as the git commit message. Use but don't abuse 😊.

Outstanding software availability

Not only installing software on Linux is simple but Linux distributions come with thousands of applications to choose from. Need communication software? Linux has Slack, Skype, Zoom and even Microsoft Teams. Need a modern development environment? Try Visual Studio Code.
Source: Slack Downloads

Powerful build tooling

Its really simple to install the build tools you'll need in Linux. GCC, Make, glibc, Gdb, git and many other tools needed on their development workflows are available either out of the box or from their systems' package manager.

Powerful networking tooling

Linux is perfect for networking. And it offers lots, lots, and lots of tools in the space. Some of them you probably heard of are Samba, nmap, whois, nslookup, ping, curl, ssh, among others. There's just so much here and once you learn these tools you probably wouldn't be able to work without them.

Cloud-native tools

Linux comes with lots of tools to use in cloud development. The most commons are Docker (and its sibling podman) and Kubernetes but it also makes it very simple to install tooling for Azure, AWS, GCP and devops/automation tooling such as Ansible, Helm, Vagrant and others.

Support from a huge community

Linux users are spread around communities over the internet. Being on Reddit or on forums of your specific distribution, developers frequently share their thoughts with similarly minded folks around the web. This helps them share knowledge, news, learn new things and obviously, help others.Curated repositories Linux users are used to having repositories curated by the community and available for them. That means no viruses, adware, unsafe or untrusted software.

Linux is highly customizable

Another reason developers use Linux is due to its extensive customization. Here are some of the things that can be customized on Linux:

  • Desktop Managers: don't like GNOME or KDE? There's XFCE, LXQT, LXDE, etc for you.
  • Login Managers: how you login to your system.
  • Desktop themes: configure themes, colors, etc.
  • Fonts: customize your fonts, sizes, etc.
  • Shell: shell is the application that runs on your terminal and also can be changed or customized.
  • Systems and Services: your system will have an endless list of services to choose from.
  • Kernel: even the kernel, the main process of your system can be customized.

Powerful hardware integrations

Into IoT, Rasperry Pi, Arduino? Due to the open nature of these platforms and to the vast documentation available, developers have access to an outstanding amount of technical information on how everything works. And Linux is the best system to do so.

Conclusion

On this post we understood a little more why developers use and love Linux. You too could benefit from using it today! We hope you learned something new today and are excited to try out Linux and use it as your main system as we do!

See Also

Tuesday, September 15, 2020

How to become an open-source contributor

Looking to contribute to an open-source but don't know where to start? Here are some tips.
Photo by Mohamed Nohassi on Unsplash

Open-source software is everywhere! Today, it's highly probable that many of the tools you use and love are open-source. For example, the internet runs on Linux, SmartTVs, drones, cars, super computers, Android phone and yes, even your iOS device (which's based on BSD, a decades-old open-source project) runs some sort of open-source software. There are hundreds thousands of projects you probably use without knowing that are available for free.

But don't think you need to be a technical genius to help. On this post we will learn why and how to support free/open-source communities around the world.

Why contribute to Open-Source projects

Why contribute to open-source? Here are some reasons:

  • You would like to help your favourite project grow
  • You would like to participate in a broader community
  • You would like to gain experience in a specific field
  • You would like to make that project better
  • You would like to fix that annoying error you keep getting
  • You would like to give it back to your project of choice 
  • You would like to learn new things

Different Types of Contributions

And before jumping into the real actions, we'd like you to understand that open-source projects do not only need programmers! There's real need for volunteers in other areas such as translators, writers, designers and much, much more. So let's review them.

Contributing to Open-Source Projects

Let's review some concrete actions you can take today to help with your favorite open-source project. Feel free to skip to section that makes more sense for you.

How to help as a Programmer

If you know how to program, here are some ways you can help the community: writing code, submitting pull requests, reviewing code and even fixing typos in the documentation. But before modifying the code, it's important to understand the project requirements, philosophy, workflow and communication channel.

How to help as a Writer

Like writing? There's definitely gaps in documentation on free/open-source software. Anyone can help as a writer by creating/updating documentation, writing tutorials and even fixing small typos.

How to help as a Designer

For designers, there are lots of opportunities to contribute. For example creating logos, badges, UI mockups, event banners, designing fonts, improving the user experience and even creating custom t-shirts! How cool is that?

Helping in Events

You're a social person? So why not help in the events? You can always participate in small events on your community, school or even on install fests and release parties.

Participating in Events

Open-source communities tend to be very active. They frequently organize events (in-person/online) which will get more interesting with more people. Look for events in your project's page for more information.

    Testing the software

    Know well some specific software? Why not help the project by testing if it installs and runs successfully as per the documented notes. Found an error, report it in the available channel which could be on a website or on Slack/IRC/Disqus.

    Translating

    Speak more than one language? There's lots of projects looking for volunteers to help with translations. Search for information on your project's translation team.

    Supporting other Users

    You can always support other users by answering their questions on StackOverflowAskFedora or AskUbuntu for example.

      Helping with Infrastructure

      Know systems and infrastructure? You definitely could help by maintaining servers, maintaining the build systems, donating servers.

      Packaging Software

      You know technical stuff but not exactly a programmer? Why not package software for your Linux distro.

      Helping others

      On your school, university or company? What about educating people on how to use free/open-source software? Help people use your favorite project.

      Writing posts

      What about blog posts? Even those as simple as as this one help people around the world! 😊

      Donating

      Finally, if you got no time or think you got no skills, have you considered donating to one of those organizations? Here are some tips:

      Reaching Out

      So go ahead, visit for your project's website, talk to the community and reach out for more information.

      Conclusion

      On this post we reviewed multiple ways you too can become an open-source contributor. Most people think that contributing to open source is just about code while it is not. There's tons of ways we can start helping others out there.

      References

      See Also

      Featured Article

      Free Software, Open-Source, Libre, FOSS and FLOSS: what are the differences?

      Are these just different names for the same thing? Or there are differences? Photo by Romain Vignes on Unsplash We have been discussing...

      Popular this Week