Language Selection

English French German Italian Portuguese Spanish

Programming Leftovers

Filed under
Development
  • Python in 2021: The Good, The Bad, and the Ugly

    In this post, I want to look at the biggest strengths and weaknesses of Python, with more emphasis on the weaknesses, just because these problems have been there for years now and some of the rough edges bleed a lot.

  • GitLab files to go public as both revenue and losses surge

    GitLab Inc., which provides a cloud service to enable software developers to share code and collaborate on projects, today announced plans to go public with an initial offering of stock.

    The San Francisco-based company, which counts among its competitors Microsoft Corp.-owned GitHub and Atlassian Corp. PLC’s BitBucket, didn’t reveal yet how much it plans to raise or precisely when it will do the IPO. It was last valued at $6 billion after a secondary share sale in January, and has raised a total of $400 million from investors such as Khosla Ventures, Altimeter Capital, TCV, Franklin Templeton and Coatue Management.

  • [Old] LLVM internals, part 1: the bitcode format

    I’ve done a couple of posts on LLVM itself, mostly on things you can do with LLVM or how LLVM represents particular program features.

    I’ve received some good feedback on these, but I’d like to focus a sub-series of posts on LLVM’s implementation itself: the file formats, parsing strategies, and algorithmic choices underlying LLVM’s public interfaces (APIs, CLIs, and consumable output files). I’ll be writing these posts as I work on a series of pure-Rust libraries for ingesting LLVM’s intermediate representation, with the end goal of being able to perform read-only analyses of programs compiled to LLVM IR in pure Rust.

    For those who don’t know what LLVM is, this post has a broader background on LLVM’s components and intermediate representation.

  • [Old] LLVM internals, part 2: parsing the bitstream

    In the last post, I performed a high-level overview of LLVM’s bitcode format (and underlying bitstream container representation). The end result of that post was a release announcement for llvm-bitcursor, which provides the critical first abstraction(s) for a pure-Rust bitcode parser.

    This post will be a more concrete walkthrough of the process of parsing actual LLVM bitstreams, motivated by another release announcement: llvm-bitstream.

    Put together, the llvm-bitcursor and llvm-bitstream crates get us two thirds-ish of the way to a pure-Rust parser for LLVM IR. The only remaining major component is a “mapper” from the block and record representations in the bitstream to actual IR-level representations (corresponding to llvm::Module, llvm::Function, &c in the official C++ API).

  • LLVM internals, part 3: from bitcode to IR

    This post marks a turning point: now that we have reasonable abstractions for the bitstream container itself, we can focus on mapping it into a form that resembles LLVM’s IR. We’ll cover some of the critical steps in that process1 below, introducing a new crate (llvm-mapper) in the process.

    Also, critically: this post is the first in the series where our approach to parsing and interpreting LLVM’s bitcode differs significantly from how LLVM’s own codebase does things. The details of the post should still be interesting to anyone who wants to learn the details of how an IR-level LLVM module is constructed, but will not reflect how LLVM itself does that construction2.

More in Tux Machines

Security Leftovers

today's howtos

  • How To Install Cinnamon on Debian 11 - idroot

    In this tutorial, we will show you how to install Cinnamon on Debian 11. For those of you who didn’t know, Cinnamon is the default desktop environment of the Linux Mint distribution which offers advanced features and a traditional user experience. Cinnamon is also available as an optional desktop for other Linux distributions like Ubuntu, Fedora, Arch Linux, OpenSUSE, etc. This article assumes you have at least basic knowledge of Linux, know how to use the shell, and most importantly, you host your site on your own VPS. The installation is quite simple and assumes you are running in the root account, if not you may need to add ‘sudo‘ to the commands to get root privileges. I will show you through the step-by-step installation of the Cinnamon desktop environment on a Debian 11 (Bullseye).

  • Run Nexus Repository Behind Nginx Reverse Proxy - kifarunix.com

    In this tutorial, you will learn how to run Nexus repository behind Nginx reverse proxy. Nginx can be configure to proxy HTTP requests. In this setup, Nginx receives requests and passes it onto specified proxied server, fetches the response, and sends it back to the client.

  • Linux Foundation to introduce new DevOps Bootcamp
  • SUSE documentation survey 2021 – some results
  • How to install Friday Night Funkin: Neo on a Chromebook

    Today we are looking at how to install Friday Night Funkin: Neo on a Chromebook. Please follow the video/audio guide as a tutorial where we explain the process step by step and use the commands below.

  • How to use the Buttercup password manager on Linux

    Buttercup is an advanced, open-source password vault. It encrypts your passwords with AES 256bit cryptography to keep them safe. If you’re tired of proprietary password solutions on Linux and want something open-source, you’ll love this guide. In this tutorial, we’ll go over how to install Buttercup on Linux. We’ll also show you how to set up your password vault and generate a secure password. Note: Buttercup is also available for iOS and Android in their respective app stores.

  • How to use YouTube Music on the Linux desktop

    YouTube Music is an excellent service. But, sadly, there is no official client for Linux users to enjoy the service. Thankfully, the community has taken it upon itself to create an unofficial YouTube Music app. Here’s how to use it on your system.

  • How to use the AuthPass password manager on Linux

    AuthPass is an open-source password manager for Android, iOS, Linux, Mac OS, and Windows. It is secure and a great way to save your passwords and sensitive information. In this guide, we’ll show you how to set up AuthPass on Linux and how to use it too.

  • How to install Zoom on Elementary OS 6.0 - Invidious

    In this video, we are looking at how to install Zoom on Elementary OS 6.0.

  • How to Install and Configure RabbitMQ on Debian 11

    RabbitMQ is a free, open-source and one of the most popular message broker software. It supports multiple messaging protocols and uses plugins to communicate with popular messaging solutions like MQTT. A message broker is an application that stores messages for an application. Whenever an application wants to send data to another application, the app publishes the message onto the message broker. RabbitMQ can be deployed in distributed configurations to meet high-scale, high-availability requirements. In this post, we will show you how to install and configure RabbitMQ message broker software on Debian 11.

  • How to Create an Amazon Machine Image (AMI) and use it on AWS

    An Amazon Machine Image (AMI) provides the information required to launch an instance. An EC2 instance can not be launched without an AMI. We can create as many instances as we want from a single AMI when we need multiple instances with the same configuration. To create an instance we can use readily available AMI or we can create our own AMI. To create a custom AMI we need to first launch an instance using one of the available AMIs, make the required configuration on the instance and then use that instance to create an AMI. Instances launched from this new custom AMI include the customizations that we made when we created the AMI. We can create AMIs from either running or stopped instances. Once we create an AMI, we can either keep it private so that only we can use it, or we can share it with a specified list of AWS accounts. We can also make our custom AMI public so that the community can use it.

New bash programming articles

  • How to use bash aliases

    Most of the users like to use shortcuts for running commands. There are many commands in Ubuntu that we need to execute regularly. It will be very helpful for us if we can run those common commands by typing shortcut commands. Using bash aliases, Ubuntu users can easily create shortcut commands of the large commands those are used frequently. Bash aliases not only make the task easier but also save the time of the users. The user can declare alias temporary or permanently. The temporary aliases can be used as long as the session of the user exists. If the user wants to use shortcut commands every time the session starts, then he or she has to create permanent alias by using ~/.bashrc and ~/.bash_profile files. This tutorial shows how you can create and use bash aliases in Ubuntu by using some examples.

  • Bash Arithmetic Operation

    Using bash aliases, Ubuntu users can easily create shortcut commands of the large commands those are used frequently. Bash aliases not only make the task easier but also save the time of the users. The user can declare alias temporary or permanently. How to use bash aliases is explained in this article.

  • How to use arrays in Bash

    When you want to use multiple data using a single variable in any programming language, you have to use array variables. The list of data can be assigned and used using an array variable. Bash is a weakly typed language that does not require defining any data type for declaring the variable. Array declaration in bash is a little bit different from other standard programming languages. Two types of the array can be declared in bash. Numeric array and associative array. If the index of an array is numeric, then it is called a numeric array, and if the index of an array is a string, it is called an associative array. How you can declare a numeric array, associative array, and iterate elements of the array using for loop are described with examples in this tutorial.

  • Bash Head and Tail Command

    Many types of commands are available in bash to show the content of a file. Most commonly used commands are ‘cat’, ‘more’, ‘less’, ‘head’ and ‘tail‘ commands. To read the entire file, ‘cat’, ‘more’, and ‘less‘ commands are used. But when the specific part of the file is required to read then ‘head‘ and ‘tail‘ commands are used to do that task. ‘head‘ command is used to read the file from the beginning and the ‘tail‘ command is used to read the file from the ending. How you can use ‘head‘ and ‘tail‘ commands with different options to read the particular portion of a file is shown in this tutorial. You can use any existing file or create any new file to test the functions of ‘head‘ and ‘tail‘ commands. Create two text files named products.txt and employee.txt with the following content to show the use of ‘head‘ and ‘tail‘ commands.

  • Bash Range

    You can iterate the sequence of numbers in bash in two ways. One is by using the seq command, and another is by specifying the range in for loop. In the seq command, the sequence starts from one, the number increments by one in each step, and print each number in each line up to the upper limit by default. If the number starts from the upper limit, then it decrements by one in each step. Normally, all numbers are interpreted as a floating-point, but if the sequence starts from an integer, the decimal integers will print. If the seq command can execute successfully, then it returns 0; otherwise, it returns any non-zero number. You can also iterate the sequence of numbers using for loop with range. Both seq command and for loop with range are shown in this tutorial by using examples.

  • Bash Script User Input

    In the seq command, the sequence starts from one, the number increments by one in each step, and print each number in each line up to the upper limit by default. If the seq command can execute successfully, then it returns 0; otherwise, it returns any non-zero number. Two ways to generate the sequence of numbers are shown with examples in this article.

  • BASH while loop examples

    Three types of loops are used in bash programming. While loop is one of them. Like other loops, a while loop is used to do repetitive tasks. This article shows how you can use a while loop in a bash script by using different examples.

Mark Text is a Minimal Open Source Markdown Editor

Markdown is developers’ favorite text writing language. It is so clean, simple and minimal and allows developers to focus only on the writing process itself, rather than the writing syntax or other trivial issues. That’s why, it is essential that you use a minimal, distraction-free and clean markdown editor to write or edit your markdown files, so that you can find comfort in your long writing sessions (E.g for documentation or similar). Luckily, many open source markdown editors exist for all types of users and their use cases. Today we’ll be seeing Mark Text; a minimal open source application for writing markdown documents. Read more