Language Selection

English French German Italian Portuguese Spanish

Programming Leftovers

Filed under
  • GnuCOBOL 3.1rc-1 on

    While this version is a release-randidate (with an expected full release within 3 months) it is the most stable and complete free COBOL compiler ever available.

  • 6 best practices for managing Git repos

    This is arguably Rule Zero for a secure Git repository. As a project maintainer, whether you started it yourself or you’ve adopted it from someone else, it’s your job to know the contents of your own repository. You might not have a memorized list of every file in your codebase, but you need to know the basic components of what you’re managing. Should a stray file appear after a few dozen merges, you’ll be able to spot it easily because you won’t know what it’s for, and you’ll need to inspect it to refresh your memory. When that happens, review the file and make sure you understand exactly why it’s necessary.


    Third-party libraries are no exception to this rule. While it’s one of the many benefits of open source that you can freely re-use and re-distribute code you didn’t write, there are many good reasons not to house a third-party library in your own repository. First of all, you can’t exactly vouch for a third party, unless you’ve reviewed all of its code (and future merges) yourself. Secondly, when you copy third party libraries into your Git repo, it splinters focus away from the true upstream source. Someone confident in the library is technically only confident in the master copy of the library, not in a copy lying around in a random repo. If you need to lock into a specific version of a library, either provide developers with a reasonable URL the release your project needs or else use Git Submodule.

  • Scala contributor: Open source and diversity key to tackling dev skills shortage

    Diversity and open source can help fix the software developer skills gap, argued Scala contributor and Carnegie Mellon Assistant Professor Heather Miller in a keynote talk at the virtual Open Source Summit North America.

    Miller examined the IT and computer-related skills shortage from a US perspective. "The Department of Labor statistics show that in 2017 there were over 500,000 computing-related jobs open in the US that were not filled. They project that this number is going to get a lot higher. If this trend continues, it's obvious that there's no way these posts can be filled by computer science graduates."

    There are, however, many new people coming into the profession, not necessarily computer science graduates, and a notable point of recent StackOverflow research is the large number of respondents who consider themselves professional and have been coding for less than five years – 39.6 per cent in the latest survey.

    "The years of experience of professional software engineers, that is going down," said Miller.

  • Evgeni Golov: Automatically renaming the default git branch to "devel"

    It seems GitHub is planning to rename the default brach for newly created repositories from "master" to "main". It's incredible how much positive PR you can get with a one line configuration change, while still working together with the ICE.

    However, this post is not about bashing GitHub.

    Changing the default branch for newly created repositories is good. And you also should do that for the ones you create with git init locally. But what about all the repositories out there? GitHub surely won't force-rename those branches, but we can!

    Ian will do this as he touches the individual repositories, but I tend to forget things unless I do them immediately…

  • Web-augmented graphics overlay broadcasting with WPE and GStreamer

    To address the first point, WPE founding engineer, Žan Doberšek enabled software rasterizing support in WPE and its FDO backend. This is great because it allows WPE to run on machines without GPU (like continuous integration builders, test bots) but also “in the cloud” where machines with GPU are less affordable than bare metal! Following up, I enabled this feature in GstWPE. The source element caps template now has video/x-raw, in addition to video/x-raw(memory:GLMemory). To force swrast, you need to set the LIBGL_ALWAYS_SOFTWARE=true environment variable. The downside of swrast is that you need a good CPU. Of course it depends on the video resolution and framerate you want to target.

    On the latency front, I decided to switch from RTMP to WebRTC! This W3C spec isn’t only about video chat! With WebRTC, sub-second live one-to-many broadcasting can be achieved, without much efforts, given you have a good SFU. For this demo I chose Janus, because its APIs are well documented, and it’s a cool project! I’m not sure it would scale very well in large deployments, but for my modest use-case, it fits very well.

    Janus has a plugin called video-room which allows multiple participants to chat. But then imagine a participant only publishing its video stream and multiple “clients” connecting to that room, without sharing any video or audio stream, one-to-many broadcasting. As it turns out, GStreamer applications can already connect to this video-room plugin using GstWebRTC! A demo was developed by tobiasfriden and saket424 in Python, it recently moved to the gst-examples repository. As I kind of prefer to use Rust nowadays (whenever I can anyway) I ported this demo to Rust, it was upstreamed in gst-examples as well. This specific demo streams the video test pattern to a Janus instance.

    Adapting this Janus demo was then quite trivial. By relying on a similar video mixer approach I used for the first GstWPE demo, I had a GstWPE-powered WebView streaming to Janus.

  • PHP releases and support

    PHP is used extensively on the web. How new features, security fixes, and bug fixes make their way into a release is important to understand. Likewise, understanding what can be expected in community support for previous releases is even more important. Since PHP-based sites are typically exposed to the Internet, keeping up-to-date is not something a security-minded administrator can afford to ignore.

    PHP has not always had a formal release process and corresponding time frame for support; the official policy the project has now wasn't adopted until 2011. Before then, the decisions of when to make releases and how long to support them were both made less formally by key members of the community.

    Let's start with PHP versioning, where the project is more or less dependable. The versioning of PHP releases aims to follow Semantic Versioning. Major releases such as 3.0 and 4.0 always come with backward-compatibility breaks. Minor versions, such as 4.1 and 4.2, fix bugs and add new features that are backward-compatible in relation to the major release. Patch releases, such as 4.1.1, tend to be strictly for important bug fixes and should never break backward compatibility.

  • Intel AMX Support Begins Landing In LLVM

    Following Intel publishing the initial Advanced Matrix Extensions (AMX) documentation at the end of June, the open-source/Linux bring-up has continued for these new CPU instruction set extensions set to premiere with Sapphire Rapids next year.

  • Intel oneDNN 2.0 Deep Neural Network Library Working On More Performance Tuning

    Intel's open-source oneDNN library, which was formerly known as MKL-DNN and DNNL for this deep neural network library now living under the oneAPI umbrella, continues working on some big performance advancements for its 2.0 release.

    Intel on Thursday released oneDNN 2.0 Beta 7 and with it comes more Intel CPU performance optimizations around convolutional neural networks, binary primitive performance for the broadcast case, BFloat16 and FP32 weights gradient convolutions, INT8 convolutions with 1x1 kernel and spatial strides, and a variety of other specific areas within this deep learning library seeing optimizations.

More in Tux Machines

LibreELEC (Leia) 9.2.4

LibreELEC 9.2.4 (Leia) has arrived based upon Kodi v18.8. Changes since 9.2.3: firmware fixes for RPi (fixes booting issues) Kodi 18.8 Kodi 19 Matrix: We have currently no plans yet to create an official Alpha release of LE10 with the Alpha version of Kodi 19. Due the drawn out release cycle of Kodi and the experiences from the past few years we are waiting a bit longer to avoid major problems. Nightly builds could be downloaded like usual, that includes the latest unstable development snapshot of LE10/Kodi19. Read more

Android Leftovers

Why I still love tcsh after all these years

I consider myself a happy Bash user. However, when I started exploring Unix, it was on a proprietary Unix system that provided tcsh by default, so my earliest shell experiences were on a modern version of the C shell (csh). That turned out to be a fortunate accident because tcsh was also the shell of choice at the film studio where I worked later in my career. To this day, there are several tasks I associate with tcsh, even though there's no logical correlation there. I still use tcsh on at least one system, if only to stay in practice. I also keep it installed on all my systems to maintain compatibility with my own tcsh scripts and to ensure I can launch it when I need to write a script I prefer to have in tcsh. Read more

An Android operating system that prioritizes mobile data privacy

Android and iOS devices are notorious for uploading your personal data to their cloud services without your permission. If you are concerned about your mobile data privacy, you have another option to consider for your next smartphone: the /e/ operating system, a free and open source, Android-based operating system. The eFoundation community is led by Gaël Duval, a legacy Linux developer and entrepreneur who founded Mandrake Linux in 1998. Gaël has been passionate about computers since he was 10 years old. He has a degree in software engineering and started his career by creating Mandrake (which later became Mandriva) as a Linux distribution that catered to end users. Mandrake was a Red Hat Linux-based distribution that featured a graphical user interface by default, was easy to use, and focused on the desktop experience. Read more