Language Selection

English French German Italian Portuguese Spanish

Programming Leftovers

Filed under
  • 15 favorite programming tutorials and insights

    Happy new year! 2020 was one heck of an unusual year with the COVID-19 pandemic pushing us to stay at home and dramatically transforming our lifestyles. However, a time like this is also the best time to start picking up a new programming language or to level up your existing programming skillset. We begin with some light reading: What is your first programming language? and Why developers like to code at night. Next, we have articles about some specific programming languages like C, D, and Awk.

  • Raspberry Pi 400 for working and learning at home
  • Software is drowning the world

    One of the many upsides I’ve had from working at lots of organisations is that you get to see what’s common. Are things like this everywhere? Frequently, the answer is yes!

    An example of this is tech debt.

    I see organisations which are running to stand still, and I’m not sure they realised they’re doing that.

    What do I mean by this?

    Every time you decide to solve a problem with code, you are committing part of your future capacity to maintaining and operating that code. Software is never done.

    Here’s a few examples of demonstrating what I mean: [...]

  • Extracting the list of O'Reilly Animals

    Now I want to grab the entire list of O’Reilly cover animals, and Mojolicious is going to help me do that.

    O’Reilly Media, who publishes most of my books, is distinctively known by the animals it chooses for their covers. Edie Freedman explains how she came up with the well-known design in A short history of the O’Reilly animals. I think I first saw this design on the cover of sed & awk; those Slender Lorises (Lori?) are a bit creepy, but not creepy enough to keep me away from the command line.

  • Dirk Eddelbuettel: BH 1.75.0-0: New upstream release, added Beast

    Boost is a very large and comprehensive set of (peer-reviewed) libraries for the C++ programming language, containing well over 100 individual libraries. The BH package provides a sizeable subset of header-only libraries for use by R.

    Version 1.75.0 of Boost was released in December, right on schedule with their April, August and December releases. I now try to follow these releases at a lower (annual) cadence and prepared BH 1.75.0-0 in mid-December. Extensive reverse-depends checks revealed a need for changes in a handful of packages whose maintainers I contacted then. With one exception, everybody responded in kind and brought updated packages to CRAN which permitted us to upload the package there two days ago. And thanks to this planned and coordinated upload, the package is now available on CRAN a mere two days later. My thanks to the maintainers of these packages for helping it along; this prompt responses really are appreciated. The version on CRAN is the same as the one the drat announced in this tweet asking for testing help. If you installed that version, you are still current as no changes were required since December and CRAN now contains same file.

  • Improve your software product delivery process performance using metrics (Sleepy

    As many other graduates in physics, I have passion for Faymann. His explanations of complex concepts made them seem reachable for students like me up to a point where you develop a taste for simplicity. Producing software at scale is complex, but if you have some basic and often simple concepts clear and you keep passionate about simplicity, you not just be able to better understand the management challenges ahead of you but also to communicate them more effectively, as well as the potential solutions.


    We have justified the relevance to start simple when evaluating the performance of our delivery process. We have created the simplest possible model to start our analysis from. We described such model as well as a mathematical construct to characterize it. Some considerations were provided about how to perform the measurements and plot the results as part of a quantitative analysis.

    We learned how to move from a quantitative to a qualitative analysis and why. Once the qualitative analysis done, we defined a data driven improve­ment kata to improve the performance of our delivery process iteratively. Such kata is summarized in a simple board.

    In essence, this is a process any organization can follow in order to improve de performance of the delivery process effectively. If you are not able to say out loud what has been your Throughput and Stability the past quarter, last month, yesterday, today… your delivery process is not under control. In such case, it is hard to imagine that you will be able to improve it in a meaningful way.

  • Clang LTO Support Looks Like It Could Land For Linux 5.12 - Phoronix

    The support for Clang LTO of the Linux kernel for link-time optimizations when using that GCC alternative compiler looks like it will land with Linux 5.12.

    For a number of months the Clang LTO wiring to the Linux kernel has been undergoing rounds of review and of interest from multiple parties. Vendors like Google already make use of Clang link-time optimizations as part of their kernel builds on mobile devices. There's been much interest and it looks like for Linux 5.12 that work will likely land -- it's been queued into a "-next" branch ahead of the Linux 5.12 merge window in February.

  • 2021.01/02 So. Much. New. Stuff. – Rakudo Weekly News

    The past two weeks, while yours truly was taking a little break, have turned out so many new projects that one can only say this is an excellent beginning of 2021 for the Raku Programming Language. Which will hopefully turn out to be better for everybody than 2020 turned out to be.


    JJ Atria and James Raspass have unveiled another online Raku ecosystem browser called Still a little rough around the edges, and not complete yet, but good to see something like this being developed in the Raku Programming Language itself (see source on Gitlab and /r/rakulang comments).

  • [Older] Big Data Manipulation for Fun and Profit Part 1 -

    These days everyone seems to be speaking about Big Data - but what does it really mean? The term is used quite ambiguously in a variety of situations. For the purposes of this article, and the series, we will refer to big data whenever we mean ‘a large amount of textual data, in any format (for example plain ASCII text, XML, HTML, or any other human-readable or semi-human-readable format). Some techniques shown may work well for binary data also, when used with care and knowledge.

More in Tux Machines

today's howtos

  • How to Install IonCube Loader on Ubuntu - Cloudbooklet

    How to Install IonCube Loader on Ubuntu. IonCube Loader is a PHP extension used when you are using a PHP script that is encrypted using ionCube. IonCube needs to be installed in your webserver and made accessible to your PHP to use it. In this guide you are going to learn how to install ionCube loader on Ubuntu or Debian and configure your PHP or PHP-FPM and PHP-CLI to use it.

  • How to Setup CentOS Stream from AWS Marketplace

    In the current trend of IT Infrastructure, Cloud Computing occupies a tremendous role. Most of the top companies are looking for Cloud Providers to have their Infrastructure. As per our requirement, we can provision our servers at any time. According to the server configuration, we will be charged per usage. Amazon Marketplace is the place where you can find software from qualified third-party vendors. It is like an online software store where you can buy software and use it as per your need. In this article, we will see the detailed steps to launch CentOS-Stream from AWS Marketplace.

  • Create a MAN page for your own program or script with Pandoc - PragmaticLinux

    A MAN page is documentation for a software program or script, created in the groff typesetting system. Ever tried writing a MAN page? I bet you thought to yourself: “Yeez, there’s got to be an easier way to do this”. Luckily, there is. In this tutorial, I’ll show you how to write a MAN page comfortably in Markdown. Then we’ll use Pandoc to create the actual MAN page for your program or script, properly formatted in the groff typesetting system.

  • Looking into Linux user logins with lslogins

    One convenient way to list details about user logins on a Linux system is to use the lslogins command. You'll get a very useful and nicely formatted display that includes quite a few important details. On my system and likely most others, user accounts will start with UID 1000. To list just these accounts rather than include all of the service accounts like daemon, mail and syslog, add the -u option as shown in the example below.

Programming Leftovers

  • Coming in glibc 2.33: Reloadable nsswitch.conf

    In my previous article about nsswitch.conf I talked about how simple, perhaps too simple, this config file is to use. What I didn’t cover then was how simplistic its internal implementation is. Specifically, an application only loads this file once—the first time it’s needed. So, what do you do when nsswitch.conf needs to change? How do you update all of the running applications? You don’t! The only way to force a reload is to stop the application and restart it. That is not always an option, especially for critical applications that might take a long time to restart. Recent work behind the scenes in the GNU C library will change all of this. As of glibc version 2.33, this config file now reloads and reparses each time it changes, and only the configuration is reloaded. If the configuration calls for an external shared library to be loaded, that object is only ever loaded once. It may be called in a different sequence, or not called at all, but it is never unloaded. This behavior avoids a whole class of problems related to unloading shared objects that might still be in use.

  • SEGGER's Complete J-Link Software Now Available for Linux on ARM

    SEGGER’s entire portfolio of J-Link software is now available for Linux on ARM, for both 32-bit and 64-bit platforms. This includes both the command-line programs and GUI tools such as J-Flash, J-Flash SPI, J-Scope, the J-Link Configurator, and the GUI version of the GDB Server. “J-Link can now be used on Raspberry Pi and other ARM-based machines, without any limitations,” says Alex Grüner, CTO at SEGGER. “Small single-board ARM computers now offer the same functionality as x86 powered machines. The inexpensive Raspberry Pi and similar boards are now viable options, especially in test farms and production environments.”

  • Bootstrappable builds

    The idea of Reproducible Builds—being able to recreate bit-for-bit identical binaries using the same source code—has gained momentum over the last few years. Reproducible builds provide some safeguards against bad actors in the software supply chain. But building software depends on the tools used to construct the binary, including compilers and build-automation tools, many of which depend on pre-existing binaries. Minimizing the reliance on opaque binaries for building our software ecosystem is the goal of the Bootstrappable Builds project. For example, GCC is written in C and C++, which means that it requires compilers for those two languages in order to be built from source. In practice, that generally means a distribution would use its existing binary executables of those tools to build a new GCC version, which would then be released to users. One of the concerns with that approach is described in Unix inventor Ken Thompson's Turing Award lecture "Reflections on Trusting Trust" [PDF]. In a nutshell, Thompson said that trusting the output of a binary compiler is an act of faith that someone has not tampered with the creation of that binary—even if the source code is available. The Bootstrappable Builds project was started as an offshoot of the Reproducible Builds project during the latter's 2016 summit in Berlin. A bootstrappable build takes the idea of reproducibility one step further, in some sense. The build of a target binary can be reproduced alongside the build of the tools required to do so. It is, conceptually, almost like building a house from a large collection of atoms of different elements.

  • Parasoft Accelerates CI/CD Pipeline Through Partnership With IAR Systems

    IAR Build Tools for Linux uses the leading build tools from IAR Embedded Workbench and empowers software developers who build safety-critical applications to work directly on the Linux host environment, eliminating toolchain version management.

  • Josef Strzibny: Working with decimals in Elixir

    Integers are not enough, and floats are flawed? Decimals to the rescue! A short guide of what’s important when working with decimals in Elixir. This post is about the Decimal 2.0 module from decimal Hex package. As with every module in Elixir, running h Module and Module.module_info in IEx is a good place to start.

  • Swift Deploys: Dealing with Anti-Patterns and Unresolved Issues

    In a long end-of-the-year blog post, Charity Majors, co-founder and CTO of, discussed lead time to deploy, or “the interval encompassing the time from when the code gets written and when it’s been deployed to production.”

  • Perl weekly challenge 95

    You are given a number $N. Write a script to figure out if the given number is Palindrome. Print 1 if true otherwise 0.

  • Perl Weekly Challenge 95: Palindrome Numbers and Demo Stack
  • Learn awk by coding a "guess the number" game |

    Once you understand these concepts, you can start figuring the rest out. For example, most languages have a "way of doing things" supported by their design, and those ways can be quite different from one program to another. These ways include modularity (grouping related functionality together), declarative vs. imperative, object-orientation, low- vs. high-level syntactic features, and so on. An example familiar to many programmers is "ceremony," that is, the amount of work required to set the scene before tackling the problem. The Java programming language is said to have a significant ceremony requirement, stemming from its design, which requires all code to be defined within a class.

  • The terminal, the console and the shell - what are they?

    The other day, as I was going through some of my old notes, I stumbled upon something I had written about the console, the terminal and the shell on Unix-like operating systems. I have decided to rewrite these notes in order to share them here on my website. So without further ado we will now stroll down memory lane and take a quick look at the origins of the Unix terminal and shell. And I will also give my advice to new users on Linux or BSD regarding the choice of terminal emulator and shell.

Raspberry Pi: EasyOS, YARH.IO, Proprietary Blobs and Inkplate

  • Current status of EasyOS on the Pi4

    The videos seem to play OK though. Regarding the hanging, SM seems to be waiting on a response from, so I don't know if that is a problem with or the network interface. Regarding point-3, sometimes just replugging the USB-stick is sufficient to get it recognized. But sometimes replugging multiple times still does not work.

  • Stripped-down Raspberry Pi 3B+ SBC powers YARH.IO Micro 2 DIY handheld PC

    We’ve already seen a few DIY Raspberry Pi-based handheld computers in the past with the likes of Zero Terminal V3 or hgTerm powered by a Raspberry Pi Zero and a stripped-down Raspberry Pi 3 board respectively. So why not another? YARH.IO Micro 2 DIY handheld PC is based on a Raspberry Pi 3B+ SBC stripped from its Ethernet port, whose double stack USB connectors have been replaced with single stack USB connectors. The DIY computer also adds off-the-shelf parts with a 4″ touch screen display and a Bluetooth keyboard without touchpad, and gets its power from a 3,500 mAh battery.

  • Get VMware on Raspberry Pi
  • 2.5-inch "Industrial Pi" Pico-ITX SBC offers PoE , mini DP++ port

    Inkplate 10 also supports Peripheral Mode which allows you to control the display from another board such as Raspberry Pi or Arduino via commands sent over a UART or USB connection.

Xfce 4.16 Desktop Lands in openSUSE Tumbleweed, Download Now

If you’ve been waiting for Xfce 4.16 to land in openSUSE Tumbleweed, I have some good news today as the wait is over and you can install the desktop environment right now from distribution’s software repositories and upgrade from Xfce 4.14. Xfce 4.16 brings many goodies for fans of the lightweight desktop environment, including fractional scaling, dark mode for the Panel, CSD (Client-side decorations) support for all the Settings dialogs, a revamped About Xfce dialog with info about CPU, GPU and RAM, as well as a refreshed look with new icons and color palette. Read more