Language Selection

English French German Italian Portuguese Spanish

Programming: Git, C, Perl, Python and Java

Filed under
Development
  • git post-squash

    I wrote a little git tool that helps in an environment where PRs are merged using squash merges, but you still want to deal with feature branches properly.

  • Libvirt: programming language and document format consolidation

    Since the project’s creation about 14 years ago, libvirt has grown enormously. In that time there has been a lot of code refactoring, but these were always fairly evolutionary changes; there has been little revolutionary change of the overall system architecture or some core technical decisions made early on. This blog post is one of a series examining recent technical decisions that can be considered more revolutionary to libvirt. This was the topic of a talk given at KVM Forum 2019 in Lyon.

    Historical usage

    In common with many projects which have been around for a similar time frame, libvirt has accumulated a variety of different programming languages and document formats, for a variety of tasks.

    The main library is written in C, but around that there is the autotools build system which adds shell, make, autoconf, automake, libtool, m4, and other utilities like sed, awk, etc. Then there are many helper scripts used for code generation or testing which are variously written in shell, perl or python. For documentation, there are man pages written in POD, web docs written in HTML5 with an XSL templating system, and then some docs written in XML which generate HTML, and some docs generated from source code comments. Finally there are domain specific languages such as XDR for the RPC system.

    There are a couple of issues with the situation libvirt finds itself in. The large number of different languages and formats places a broad knowledge burden on new contributors to the project. Some of the current choices are now fairly obscure & declining in popularity, thus not well known by potential project contributors. For example, Markdown and reStructuredText (RST) are more commonly known than Perl’s POD format. Developers are more likely to be competent in Python than in Perl. Some of the languages libvirt uses are simply too hard to deal with, for example it is a struggle to find anyone who can explain m4 or enjoys using it when writing configure scripts for autoconf.

    Ultimately the issues all combine to have a couple of negative effects on the project. They drive away potential new contributors due to their relative obscurity. They reduce the efficiency of existing contributors due to their poor suitability for the tasks they are applied to.

  • [Perl] Monthly Report - January

    The start of year 2020 didn't go well as planned. First my Dad was hospitalised and I had to make emergency travel plan to visit India. Luckily he is out of danger and back home. During this whole drama, the Perl Weekly Challenge got less of my attention. Thankfully I had loads of support messages throughout. Some offered to chip in so that I can focus on my Dad's health. I even missed my turn of editing Perl Weekly newsletter. It never happened ever since I joined the team of editors. Thanks to the chief edit, Gabor Szabo, I survived.

    Another casualty of the January 2020, I missed submitting one Pull Request on everage in the month. I only submitted 22 Pull Requests. I have done this non-stop since October 2017. Sufferings didn't stop there, I couldn't get the monthly report published on the 1st Feb as per the tradition. It got delayed by 2 days.

  • Mike Driscoll: PyDev of the Week: Alessia Marcolini

    This week we welcome Alessia Marcolini (@viperale) as our PyDev of the Week! Alessia is a Python blogger and speaker. You can check out some of her work over on Medium. You can also see some of her coding skills on Github. Let’s spend a few moments getting to know her better!

    Can you tell us a little about yourself (hobbies, education, etc):

    Hello everybody, my name is Alessia and I’m 21. I come from a little town near Verona, a beautiful city in the north of Italy.

    I’ve been living in Trento (Italy) for 2 years and a half now. I moved here to attend university: I’m currently enrolled in the third year of a Bachelor’s degree in Computer Science.

    In 2017 I started working part time as a Junior Research Assistant in the Bruno Kessler Foundation, too. FBK is a research foundation based in Trento, working on Science, Technology, and Social Sciences. I’m part of the MPBA unit which focuses on novel applications of Deep Learning from complex data: e.g. Precision Medicine, Imaging and Portable Spectroscopy in industry processes, Nowcasting on time-spatial data. I’m currently working on deep learning frameworks to integrate multiple medical imaging modalities and different clinical data to get more precise prognostic/diagnostic functions.

    When not coding, I love dancing and listening to music. I have also been part of a hip hop crew until 2017.

  • What is new in CubicWeb 3.27 ?

    We are pleased to announce the release of CubicWeb 3.27. Many thanks to all the contributors of this release!

    Main changes in this release are listed below. Please note this release drops python2 support.

  • Django security releases issued: 3.0.3, 2.2.10, and 1.11.28

    In accordance with our security release policy, the Django team is issuing Django 3.0.3, Django 2.2.10 and Django 1.11.28. These releases address the security issue detailed below. We encourage all users of Django to upgrade as soon as possible.

  • How I’m testing in 2020

    Once upon a time I wrote a bit about testing, specifically how I was organizing and testing my open-source Django apps. It’s been a while since that post, though, and the calendar has even flipped over to a new penultimate digit in the year number, so it’s worth revisiting to go over what’s changed in how I do things and what’s stayed the same. And since I do maintain a couple things that aren’t Django-related, I’d like to talk about how I test them, too.

    But before I dive in, a reminder: this is a place where I publish my opinions. They’re based on my personal taste and they work for me. If something else works for you, stick with it, and if you prefer something else, that’s OK! Beyond basic stuff like “you should probably have some tests”, there aren’t really a lot of objectively right answers here.

    And now with that disclaimer out of the way, here’s how I’m testing in 2020.

  • Use a Flask Blueprint to Architect Your Applications

    Flask is a very popular web application framework that leaves almost all design and architecture decisions up to the developer. In this tutorial, you’ll learn how a Flask Blueprint, or Blueprint for short, can help you structure your Flask application by grouping its functionality into reusable components.

  • Python Logging with Datadog

    At Mergify, we generate a pretty large amount of logs. Every time an event is received from GitHub for a particular pull request, our engine computes a new state for it. Doing so, it logs some informational statements about what it's doing — and any error that might happen.

    This information is precious to us. Without proper logging, it'd be utterly impossible for us to debug any issue. As we needed to store and index our logs somewhere, we picked Datadog as our log storage provider.

    Datadog offers real-time indexing of our logs. The ability to search our records that fast is compelling as we're able to retrieve log about a GitHub repository or a pull request with a single click.

  • Camel K standalone Java file: Now with Java language support

    Apache Camel K should be as lightweight as possible. Therefore, the Camel K project provides standalone Java files to describe a Camel integration. The downside to this practice is that existing IDEs cannot provide complete support out of the box.

    [...]

    As a result, there is no intuitive configuration. However, Red Hat’s Tooling for Apache Camel K offers a new possibility.

    With Tooling for Apache Camel K version 0.11.0, Java language support is now included, and there are only two requirements. First, you need to have the word “camel” in the Java file’s content. Most of the time, this requirement is satisfied by the import package, itself. Second, you must have no project in the workspace. If there are projects, we expect that the classic Maven/Gradle build provides the Java language support. However, these requirements should not be a problem in most cases.

More in Tux Machines

digiKam 7.7.0 is released

After three months of active maintenance and another bug triage, the digiKam team is proud to present version 7.7.0 of its open source digital photo manager. See below the list of most important features coming with this release. Read more

Dilution and Misuse of the "Linux" Brand

Samsung, Red Hat to Work on Linux Drivers for Future Tech

The metaverse is expected to uproot system design as we know it, and Samsung is one of many hardware vendors re-imagining data center infrastructure in preparation for a parallel 3D world. Samsung is working on new memory technologies that provide faster bandwidth inside hardware for data to travel between CPUs, storage and other computing resources. The company also announced it was partnering with Red Hat to ensure these technologies have Linux compatibility. Read more

today's howtos

  • How to install go1.19beta on Ubuntu 22.04 – NextGenTips

    In this tutorial, we are going to explore how to install go on Ubuntu 22.04 Golang is an open-source programming language that is easy to learn and use. It is built-in concurrency and has a robust standard library. It is reliable, builds fast, and efficient software that scales fast. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel-type systems enable flexible and modular program constructions. Go compiles quickly to machine code and has the convenience of garbage collection and the power of run-time reflection. In this guide, we are going to learn how to install golang 1.19beta on Ubuntu 22.04. Go 1.19beta1 is not yet released. There is so much work in progress with all the documentation.

  • molecule test: failed to connect to bus in systemd container - openQA bites

    Ansible Molecule is a project to help you test your ansible roles. I’m using molecule for automatically testing the ansible roles of geekoops.

  • How To Install MongoDB on AlmaLinux 9 - idroot

    In this tutorial, we will show you how to install MongoDB on AlmaLinux 9. For those of you who didn’t know, MongoDB is a high-performance, highly scalable document-oriented NoSQL database. Unlike in SQL databases where data is stored in rows and columns inside tables, in MongoDB, data is structured in JSON-like format inside records which are referred to as documents. The open-source attribute of MongoDB as a database software makes it an ideal candidate for almost any database-related project. 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 the step-by-step installation of the MongoDB NoSQL database on AlmaLinux 9. You can follow the same instructions for CentOS and Rocky Linux.

  • An introduction (and how-to) to Plugin Loader for the Steam Deck. - Invidious
  • Self-host a Ghost Blog With Traefik

    Ghost is a very popular open-source content management system. Started as an alternative to WordPress and it went on to become an alternative to Substack by focusing on membership and newsletter. The creators of Ghost offer managed Pro hosting but it may not fit everyone's budget. Alternatively, you can self-host it on your own cloud servers. On Linux handbook, we already have a guide on deploying Ghost with Docker in a reverse proxy setup. Instead of Ngnix reverse proxy, you can also use another software called Traefik with Docker. It is a popular open-source cloud-native application proxy, API Gateway, Edge-router, and more. I use Traefik to secure my websites using an SSL certificate obtained from Let's Encrypt. Once deployed, Traefik can automatically manage your certificates and their renewals. In this tutorial, I'll share the necessary steps for deploying a Ghost blog with Docker and Traefik.