Language Selection

English French German Italian Portuguese Spanish


Programming Leftovers

Filed under
  • Introducing rpm-macros-virtualenv 0.0.1

    This is a small set of RPM macros, which can be used by the spec files to build and package any Python application along with a virtualenv. Thus, removing the need of installing all dependencies via dnf/rpm repository. One of the biggest usecase will be to help to install latest application code and all the latest dependencies into a virtualenv and also package the whole virtualenv into the RPM package.

    This will be useful for any third part vendor/ISV, who would want to package their Python application for Fedora/RHEL/CentOS along with the dependencies. But, remember not to use this for any package inside of Fedora land as this does not follow the Fedora packaging guidelines.

  • Program Synthesis is Possible in Rust

    Program synthesis is the act of automatically constructing a program that fulfills a given specification. Perhaps you are interested in sketching a program, leaving parts of it incomplete, and then having a tool fill in those missing bits for you? Or perhaps you are a compiler, and you have some instruction sequence, but you want to find an equivalent-but-better instruction sequence? Program synthesizers promise to help you out in these situations!

    I recently stumbled across Adrian Sampson’s Program Synthesis is Possible blog post. Adrian describes and implements minisynth, a toy program synthesizer that generates constants for holes in a template program when given a specification. What fun! As a way to learn more about program synthesis myself, I ported minisynth to Rust.

  • The devil makes work for idle processes

    TLDR: in Endless OS, we switched the IO scheduler from CFQ to BFQ, and set the IO priority of the threads doing Flatpak downloads, installs and upgrades to “idle”; this makes the interactive performance of the system while doing Flatpak operations indistinguishable from when the system is idle.

    At Endless, we’ve been vaguely aware for a while that trying to use your computer while installing or updating apps is a bit painful, particularly on spinning-disk systems, because of the sheer volume of IO performed by the installation/update process. This was never particularly high priority, since app installations are user-initiated, and until recently, so were app updates.

  • Rcpp now used by 1500 CRAN packages

    Right now Rcpp stands at 1500 reverse-dependencies on CRAN. The graph is on the left depicts the growth of Rcpp usage (as measured by Depends, Imports and LinkingTo, but excluding Suggests) over time. What an amazing few days this has been as we also just marked the tenth anniversary and the big one dot oh release.

  • Python in RHEL 8

    Ten years ago, the developers of the Python programming language decided to clean things up and release a backwards-incompatible version, Python 3. They initially underestimated the impact of the changes, and the popularity of the language. Still, in the last decade, the vast majority of community projects has migrated to the new version, and major projects are now dropping support for Python 2.

    In Red Hat Enterprise Linux 8, Python 3.6 is the default. But Python 2 remains available in RHEL 8.

  • How to stand out, and get hired, at Grace Hopper Celebration

    During the 2018 Grace Hopper Celebration of Women in Computing (GHC), attendees flooded the George Brown Convention Center in Houston Texas to network, learn and share information in celebration of women technologists. For students at GHC, the expo hall also doubled as a career fair. Here’s how to stand out when you’re trying to leave GHC with opportunities to chart your own path in technology.

    Recruiters, engineers, scientists and technologists were stationed at company booths to talk about their workplaces. They screened resumes, interviewed candidates and shared their experiences.

    This year I was able to attend GHC for the first time, not as a student seeking a position but as an employee of Red Hat. At Red Hat we do many things differently, interviewing at GHC is one of those things. Red Hat is seeking associates who possess both a strong technical aptitude as well as a passion for our products and services.

  • Vim in the Future


    I have learned Vim as a programming-centric tool, but I use it for other tasks, too. This post assumes a reader isn’t necessarily a programmer but is curious about how tech things get done.

Programming: WebRender, Healthcare Design Studio GoInvo, PHP Boost and Google Cloud Platform (GCP)

Filed under
  • Mozilla GFX: WebRender newsletter #30

    Hi! This is the 30th issue of WebRender’s most famous newsletter. At the top of each newsletter I try to dedicate a few paragraphs to some historical/technical details of the project. Today I’ll write about blob images.

    WebRender currently doesn’t support the full set of graphics primitives required to render all web pages. The focus so far has been on doing a good job of rendering the most common elements and providing a fall-back for the rest. We call this fall-back mechanism “blob images”.

    The general idea is that when we encounter unsupported primitives during displaylist building we create an image object and instead of backing it with pixel data or a texture handle, we assign it a serialized list of drawing commands (the blob). For WebRender, blobs are just opaque buffers of bytes and a handler object is provided by the embedder (Gecko in our case) to turn this opaque buffer into actual pixels that can be used as regular images by the rest of the rendering pipeline.

  • Healthcare Design Studio GoInvo Releases Open Source Research on Loneliness [Ed: Very odd if not 'creative' use of the term Open Source]
  • PHP Lands Preload Feature, Boosting Performance In Some Cases 30~50%

    PHP developers unanimously approved and already merged support for the new "preloading" concept for this web server language. PHP preloading basically allows loading PHP code that persists as long as the web server is running and that code will always be ready for each subsequent web request, which in some cases will dramatically speed-up the PHP performance on web servers.

    While PHP has long supported caching to avoid PHP code recompilation on each new web request, with each request PHP has still had to check to see if any of the source file(s) were modified, re-link class dependencies, and similar work. PHP preloading allows for given functions/classes to be "preloaded" that will survive as long as the web server is active. It effectively allows loading of functions or entire/partial frameworks that will then be present for each new web request just as if it were a built-in function.

  • Google Announces a Managed Cron Service: Google Cloud Scheduler

    Google announced a new Service on the Google Cloud Platform (GCP) - Cloud Scheduler, a fully managed cron job service that allows any application to invoke batch, big data and cloud infrastructure operations. The service is currently available in beta.

    With Google Cloud Scheduler customers can use the cron service with no need to manage the underlying infrastructure. There is also no need to manually intervene in the event of transient failure, as the services retries failed jobs. Furthermore, customers will only pay for the operations they run -- GCP takes care of all resource provisioning, replication and scaling required to operate Cloud Scheduler. Also, customers can, according to Vinod Ramachandran, product manager at Google, benefit from:

A "joke" in the glibc manual

Filed under

A "joke" in the glibc manual—targeting a topic that is, at best, sensitive—has come up for discussion on the glibc-alpha mailing list again. When we looked at the controversy in May, Richard Stallman had put his foot down and a patch removing the joke—though opinions of its amusement value vary—was reverted. Shortly after that article was published, a "cool down period" was requested (and honored), but that time has expired. Other developments in the GNU project have given some reason to believe that the time is ripe to finally purge the joke, but that may not work out any better than the last attempt.

The joke in question refers to a US government "censorship rule" from over two decades ago regarding sharing of information about abortion. It is attached to documentation of the abort() call in glibc and the text of it can be seen in the patch to remove it. One might think that an age-old US-centric joke would be a good candidate for removal regardless of its subject matter. That it touches on a topic that is emotionally fraught for many might also make it unwelcoming—thus unwelcome in documentation. But, according to Stallman, that's not so clear cut.


When pressed for more information about what these larger issues are, as O'Donell did, Stallman counseled patience. He did not offer any more information than that; perhaps the discussion has moved to a private mailing list or the like.

For many, including me, it is a little hard to understand why there is any opposition to removing the joke at all. It is clearly out of place, not particularly funny, and doesn't really push the GNU anti-censorship philosophy forward in any real way even if you grant that anti-censorship is a goal of the project (which some do not). There are, of course, those who oppose removing it because they are opposed to "political correctness" and do not see how it could be "unwelcoming", but even they might concede that it is an oddity that is poked into a back corner of a entirely unrelated document. And it is not hard for many to see that tying the topic of abortion to a C function might be upsetting to some; why waste a bunch of project time defending it when it has effectively no impact in the direction that Stallman wants, while putting off some (possibly small) percentage of glibc manual readers?

Read more

GNOME Development Updates From Carlos Garnacho and Robert Ancell

Filed under
  • Carlos Garnacho: On the track for 3.32

    It happens sneakily, but there’s more things going on in the Tracker front than the occasional fallout. Yesterday 2.2.0-alpha1 was released, containing some notable changes.

    On and off during the last year, I’ve been working on a massive rework of the SPARQL parser. The current parser was fairly solid, but hard to extend for some of the syntax in the SPARQL 1.1 spec. After multiple attempts and failures at implementing property paths, I convinced myself this was the way forward.

  • Robert Ancell: Counting Code in GNOME Settings

    I've been spending a bit of time recently working on GNOME Settings. One part of this has been bringing some of the older panel code up to modern standards, one of which is making use of GtkBuilder templates.

    I wondered if any of these changes would show in the stats, so I wrote a program to analyse each branch in the git repository and break down the code between C and GtkBuilder.

OpenJDK (Java Development Kit) and Java Community Process (JCP)

Filed under
  • Amazon Web Services promises to support OpenJDK through 2023 with release of internal tool as new open source project

    Developers using the popular OpenJDK (Java Development Kit) software tool can breathe a little easier Wednesday after Amazon Web Services announced it would support the tool with bug fixes and enhancements for the next several years with the release of an internally developed implementation of OpenJDK known as Amazon Coretto.

    Announced at Devoxx in Europe Wednesday, Coretto is an open-source distribution of OpenJDK developed for internal use at Amazon to manage Java applications. While Java is widely used to build enterprise applications, the future of OpenJDK has been in doubt thanks to Oracle’s decision to end support for the free version of OpenJDK as of this coming January.

  • One More Reaction to IBM's Acquisition of Red Hat

    Now that the dust has settled around the explosive announcement that IBM will be acquiring open source software provider and longtime Java Community Process (JCP) leader Red Hat, I wanted to share the reaction to the deal of one of the keenest (and most fearless) observers of the Java universe.

Programming: Compilers and Perl

Filed under
  • ARMv8.5 Support Lands In GCC Compiler With Latest Spectre Protection

    Landing just in time with the GCC 9 branching being imminent is ARMv8.5-A support in the GNU Compiler Collection's ARM64/AArch64 back-end.

    This ARMv8.5-A support is an incremental upgrade over the existing ARMv8 support. The ARMv8.5 additions are similar to what we already saw land for LLVM / Clang.

  • Comparing The Quality Of Debug Information Produced By Clang And Gcc

    I've had an intuition that clang produces generally worse debuginfo than gcc for optimized C++ code. It seems that clang builds have more variables "optimized out" — i.e. when stopped inside a function where a variable is in scope, the compiler's generated debuginfo does not describe the value of the variable. This makes debuggers less effective, so I've attempted some qualitative analysis of the issue.

    I chose to measure, for each parameter and local variable, the range of instruction bytes within its function over which the debuginfo can produce a value for this variable, and also the range of instruction bytes over which the debuginfo says the variable is in scope (i.e. the number of instruction bytes in the enclosing lexical block or function). I add those up over all variables, and compute the ratio of variable-defined-bytes to variable-in-scope-bytes. The higher this "definition coverage" ratio, the better.

  • Quo vadis, Perl?

    By losing the sight of the strategies in play, I feel the discussion degenerated very early in personal accusations that certainly leave scars while not resulting in even a hint of progress. We are not unique in this situation, see the recent example of the toll it took on Guido van Rossum. I can only sympathize with Larry is feeling these days.

4 tips for learning Golang

Filed under

My university's freshman programming class was taught using VAX assembler. In data structures class, we used Pascal—loaded via diskette on tired, old PCs in the library's computer center. In one upper-level course, I had a professor that loved to show all examples in ADA. I learned a bit of C via playing with various Unix utilities' source code on our Sun workstations. At IBM we used C—and some x86 assembler—for the OS/2 source code, and we heavily used C++'s object-oriented features for a joint project with Apple. I learned shell scripting soon after, starting with csh, but moving to Bash after finding Linux in the mid-'90s. I was thrust into learning m4 (arguably more of a macro-processor than a programming language) while working on the just-in-time (JIT) compiler in IBM's custom JVM code when porting it to Linux in the late '90s.

Read more

C language update puts backward compatibility first

Filed under

A working draft of the standard for the next revision of the C programming language, referred to for now as “C2x,” is now available for review.

Most of the changes thus far approved for C2x don’t involve adding new features, but instead clarify and refine how C should behave in different implementations and with regard to its bigger brother C++. The emphasis on refinement is in line with how previous revisions to C—C11 and most recently C17—have unfolded.

Read more

Programming: C++, Clang, WebKitGTK+

Filed under
  • Compile any C++ program 10× faster with this one weird trick!

    The main reason that C++ compiles slowly has to do with headers. Merely including a few headers in the standard library brings in tens or hundreds of thousands of lines of code that must be parsed, verified, converted to an AST and codegenerated in every translation unit. This is extremely wasteful especially given that most of that work is not used but is instead thrown away.

    With an Unity build every #include is processed only once regardless of how many times it is used in the component source files.

    Basically this amounts to a caching problem, which is one of the two really hard problems in computer science in addition to naming things and off by one errors.

  • Future Developments in clang-query

    I am not aware of any similar series existing which covers creation of clang-tidy checks, and use of clang-query to inspect the Clang AST and assist in the construction of AST Matcher expressions. I hope the series is useful to anyone attempting to write clang-tidy checks. Several people have reported to me that they have previously tried and failed to create clang-tidy extensions, due to various issues, including lack of information tying it all together.

    Other issues with clang-tidy include the fact that it relies on the “mental model” a compiler has of C++ source code, which might differ from the “mental model” of regular C++ developers. The compiler needs to have a very exact representation of the code, and needs to have a consistent design for the class hierarchy representing each standard-required feature. This leads to many classes and class hierarchies, and a difficulty in discovering what is relevant to a particular problem to be solved.

  • The GNOME (and WebKitGTK+) Networking Stack

    One guess which of those we’re going to be talking about in this post. Yeah, of course, libsoup! If you’re not familiar with libsoup, it’s the GNOME HTTP library. Why is it called libsoup? Because before it was an HTTP library, it was a SOAP library. And apparently somebody thought that when Mexican people say “soap,” it often sounds like “soup,” and also thought that this was somehow both funny and a good basis for naming a software library. You can’t make this stuff up.


    Haha no, it uses a dynamically-loadable extension point system to allow you to pick your choice of OpenSSL or GnuTLS! (Support for NSS was started but never finished.) This is OK because embedded systems vendors don’t use GPL applications and have no problems with OpenSSL, while desktop Linux users don’t produce tivoized embedded systems and have no problems with LGPLv3. So if you’re using desktop Linux and point WebKitGTK+ at an HTTPS address, then GLib is going to load a GIO extension point called glib-networking, which implements all of GIO’s TLS APIs — notably GTlsConnection and GTlsCertificate — using GnuTLS. But if you’re building an embedded system, you simply don’t build or install glib-networking, and instead build a different GIO extension point called glib-openssl, and libsoup will create GTlsConnection and GTlsCertificate objects based on OpenSSL instead. Nice! And if you’re Centricular and you’re building GStreamer for Windows, you can use yet another GIO extension point, glib-schannel, for your native Windows TLS goodness, all hidden behind GTlsConnection so that GStreamer (or whatever application you’re writing) doesn’t have to know about SChannel or OpenSSL or GnuTLS or any of that sad complexity.

Sourcegraph: An Open-Source Source Code Search Engine

Filed under

In a recent announcement, a Code Search and Navigation tool named Sourcegraph was declared Open Source. As it makes navigating through Source Code much more convenient, the tool itself going Open Source is definitely a big plus for developers!

Read more

Syndicate content

More in Tux Machines

OSS Leftovers

  • OpenStack regroups
    Only a few years ago, OpenStack was the hottest open-source project around, with a bustling startup ecosystem to boot. The project, which gives enterprises the tools to run the equivalent of AWS in their own private data centers, ran into trouble as it tried to tackle too many individual projects at the same time and enterprises took longer than expected to adopt it. That meant many a startup floundered or was acquired before it was able to gain traction while the nonprofit foundation that manages the project started to scale back its big tent approach and refocused on its core services.
  • SD Times news digest: Docker and MuleSoft’s partnership, ActiveState’s open-source language automation category, and Instana’s automatic Python instrumentation
    Docker and MuleSoft have announced a new partnership to modernize applications and accelerate digital transformation. As part of the partnership, the companies will work together to deliver new capabilities for legacy apps with APIs, legacy apps without APIs and new apps created in Docker. In addition, MuleSoft’s Anypoint platform will be combined with Docker Enterprise.
  • ActiveState Creates Open Source Language Automation Category
  • New open source cloud discovery tool arrives from Twistlock
    Cloud Discovery connects to cloud providers' native platform APIs to discover services such as container registries, managed Kubernetes platforms, and serverless services, and requires only read permissions. Other key features include:
  • Google Open-Sources "Amber" Multi-API Shader Test Framework
    The newest open-source graphics project out of Google is called Amber and it's a multi-API shader testing framework focused on capturing and communicating of shader bugs. Google's Amber tries to make it easier to capture/communicate shader bugs with a scripting-based workflow. The captured shaders can be in binary form, SPIR-V assembly, or a higher-level shading language. Amber is currently focused on supporting the Vulkan and Dawn graphics APIs.
  • Microsoft allies with Facebook on AI software [Ed: Evil likes/attracts evil. Now they can do their crimes together while blaming "AI". Longtime Microsoft propagandist Jordan Novet has decided to add the Microsoft lie (PR campaign) "Microsoft loves Linux" (in photo form) to an article that has nothing to do with Linux.]
  • Microsoft alliance with Facebook signals shift in AI approach

Android Leftovers

Security Leftovers

Devices: Adding Linux to A PDP-11, Adding GNU/Linux Software to Chrome OS, and Adding Ubuntu to Android

  • Adding Linux To A PDP-11
    The UNIBUS architecture for DEC’s PDPs and Vaxxen was a stroke of genius. If you wanted more memory in your minicomputer, just add another card. Need a drive? Plug it into the backplane. Of course, with all those weird cards, these old UNIBUS PDPs are hard to keep running. The UniBone is the solution to this problem. It puts Linux on a UNIBUS bridge, allowing this card to serve as a memory emulator, a test console, a disk emulator, or any other hardware you can think of. The key to this build is the BeagleBone, everyone’s second-favorite single board computer that has one feature the other one doesn’t: PRUs, or a programmable real-time unit, that allows you to blink a lot of pins very, very fast. We’ve seen the BeagleBone be used as Linux in a terminal, as the rest of the computer for an old PDP-10 front panel and as the front end for a PDP-11/03.
  • Chrome OS Linux apps will soon be able to access your entire Downloads folder and Google Drive
    Google is working hard to turn Chrome OS into more than just a browser, but a real, functional operating system for consumers of all kinds. Most recently, they’ve invited developers to the platform with Linux app support that enables all of their tools, including Android Studio, to work as expected. Soon, your Chrome OS and Google Drive files will be even more accessible to your Linux apps. [...] According to a new commit on the Chromium Gerrit, that’s all about to change. The commit primarily pertains to a new dialog that will be shown when sharing ‘root’ folders like My Drive or Downloads with your Chrome OS Linux apps (internally known as Crostini) container. The dialog is intended to forewarn you that sharing a root folder is a bit more serious than just sharing a sub-folder, and to be sure you know what you’re doing.
  • Samsung Note 9 and Tab S4 owners can run a full Ubuntu Desktop – Linux on Dex
    We have come a long way as an industry and if this is not one of the biggest milestones in personal computing, I don’t know what else qualifies. Over the past decade of smartphones being around, we have seen an exponential increase in the power that our smartphones pack. I mean, flagships from the past few years spot more RAM and processing power than most laptops out there, but the small form factor has always been a hindrance to the utilization of this power. I mean you can only do so much on a 5.5-inch display. Samsung has launched its “Linux on Dex” app in beta and is inviting geeks and tinkerers to register and help test and develop it. The app lets owners of specific Samsung devices “run” a full Ubuntu desktop on their device alongside Android.