Language Selection

English French German Italian Portuguese Spanish

Development

Programming: LLVM Clang, Debian Tools, OpenCV

Filed under
Development
  • LLVM Clang Gets Support For Configuration Files

    Ahead of next week's LLVM 6.0 feature freeze / code branching, the Clang C/C++ compiler front-end has picked up support for the concept of configuration files.

    Clang configuration files basically come down to a file that can store multiple parameters to pass to Clang, just as you would otherwise do via the command-line but can now be stored into a text file. The purpose of these Clang configuration files is maninly for cross-compiler arguments or other use-cases where you may otherwise be passing a ton of repeated arguments to Clang.

  • pam-krb5 4.8

    This is the default Kerberos PAM module for Debian and Ubuntu systems, and supports both MIT Kerberos and Heimdal. I'm not sure how many people still use straight Kerberos PAM modules these days, with sssd taking off, but I'm still maintaining it.

    This release fixes a somewhat obscure bug: if you configure the module to do expired password changes properly, it checks to see that the expired credentials can still get kadmin/changepw credentials to do the password change. However, it was setting credential options improperly on that call, which could cause it to spuriously fail if, say, krb5.conf is configured to request proxiable credentials but kadmin/changepw doesn't support proxiable credentials. Thanks to Florian Best for the excellent bug report.

  • Animated line drawings with OpenCV

    OpenCV is a pretty versatile C++ computer vision library. Because I use it every day it has also become my go-to tool for creating simple animations at pixel level, for fun, and saving them as video files. This is not one of its core functions but happens to be possible using its GUI drawing tools.

  • rra-c-util 7.0

    This is my collection of utility libraries and support code for (mostly) C software.

    The major version bump is due a backwards-incompatible change: dropping the SA_LEN macro from portable/macros.h, including all the Autoconf machinery to probe for it. This macro came from INN's old portability code when porting to IPv6, but INN turned out to not really need it and it's never caught on. It was causing some warnings with GCC 7 that would otherwise have been hard to fix, so it was time for it to go.

  • C TAP Harness 4.2

    The functional change in this release of my test framework for C programs is the addition of a new is_blob test function. This is equivalent to ok(memcmp(...)) but it reports where the two memory regions differ as a diagnostic.

GNOME Development

Filed under
Development
GNOME
  • Ubuntu Monthly Update Cadence

    For core components they need to wait there turn so they would be the likely culprit if something breaks. To do that we’ll have a list of how closely coupled different components are. For example, these could be the highly coupled components: Kernel - Mesa
    Kernel - Systemd
    Mesa - Gnome
    Systemd - Gnome

  • A Proposal To Update Ubuntu's Kernel/Mesa/GNOME Components On A Monthly Basis

    It's not quite the Ubuntu rolling-release process that some have proposed over the years, but a new proposal is being formulated for shipping updates to key Ubuntu system components on a monthly basis rather than having to wait six months for updates to the Linux kernel, Mesa, etc.

    Longtime Ubuntu developer Bryan Quigley is currently working on an "Ubuntu Monthly" proposal by which key system components would see updates on a monthly cadence, when new releases are available and warranted, etc. The goals of this proposal would be to get "fresh software" to users faster, predictable that it's useful for more users, useful for business use-cases, trivial to triage problems with upgrading just one component at a time, and be easier for systems to be updated.

  • Adding tags to my jekyll website

    This iteration of the olea.org website uses the Jekyll static website generator. From time to time I add some features to the configuration. This time I wanted to add tags support to my posts. After a fast search I found jekyll-tagging. To put it working has been relatively easy because if you are not into Ruby you can misconfigure the gem dependencies as me. And to add some value to this post I’m just sharing some tips I added not written in the project readme file.

  • State of Meson in GLib/GStreamer

    During the last couple of months I’ve been learning the Meson build system. Since my personal interests in Open Source Software are around GLib and GStreamer, and they both have Meson and Autotools build systems in parallel, I’ve set as personal goal to list (and try to fix) blocker bugs preventing from switching them to Meson-only. Note that I’m neither GLib nor GStreamer maintainer, so it’s not my call whether or not they will drop Autotools.

Mozilla: Firefox Extensions for New Year’s Resolutions and Rust Programming

Filed under
Development
Moz/FF
GNOME
  • Firefox Extensions for New Year’s Resolutions

    It’s that time of year again where we endeavor to improve ourselves, to wash away poor habits of the past and improve our lot in life. Yet most of us fall short of our yearly resolution goals. Why? Maybe we just haven’t found the right Firefox extensions to assist our annual renewals…

  • This Week in Rust 214

    Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Tweet us at @ThisWeekInRust or send us a pull request. Want to get involved? We love contributions.

  • Zeeshan Ali: My journey to Rust

    As most folks who know me already know, I've been in love with Rust language for a few years now and in the last year I've been actively coding in Rust. I wanted to document my journey to how I came to love this programming language, in hope that it will help people to see the value Rust brings to the world of software but if not, it would be nice to have my reason documented for my own sake.

Programming: Unit Testing, podlators, FRustrations

Filed under
Development
  • Unit Testing: Time-Consuming but Product-Saving

    Long-time Node.js advocate Ashley Williams kicked off her recent Twitter thread in the same sort of stream of consciousness that many devs go through when they are coming to terms with the truth: Unit testing is annoying but necessary.

    Unit testing is an essential part of developing software applications. Also called component testing, it is all about isolating one unit of code to verify that it’s working as it should be. And unlike many types of testing, this is usually done by the developer of the code itself.

    A unit test differs from an integration test because an integration test, as its name suggests, focuses on the interaction between these units, modules, or components, as a unit test focus on one specific piece. The unit test also mocks behavior while the integration test runs on the actual code or in production.

  • podlators 4.10

    podlators is the source for Pod::Man and Pod::Text, which convert POD documentation to man pages and text documents.

    This version includes a fairly significant formatting change for Pod::Man: man page links and function names (including auto-discovered function names) are now bold instead of italic.

  • FRustrations 1

    I’ve been hacking about learing Rust for a bit more than a year now, building a Hawk crate and hacking on a distributed lock service named Rubbish (which will never amount to anything but gives me a purpose).

    In the process, I’ve run into some limits of the language. I’m going to describe some of those in a series of posts starting with this one.

    One of the general themes I’ve noticed is lots of things work great in demos, where everything is in a single function (thus allowing lots of type inference) and most variables are 'static. Try to elaborate these demos out into a working application, and the borrow checker immediately blocks your path.

    Today’s frustration is a good example.

Programming: Game Development, Fuzzing, PHP, Weblate, LLVM 5.0.1 Release

Filed under
Development
  • 10 keys to quick game development

    In early October, the inaugural Open Jam sponsored by Opensource.com drew 45 entries from teams located around the world. The teams had just three days to create a game using open source software to enter into the competition, and three teams came out on top.

    We hosted our own Open Jam event at our university for anyone who wanted to participate. We reserved a computer lab for the weekend and taught people how to use open source software—Godot for the game engine, LMMS for music creation, GIMP for 2D art, and Blender for 3D art—to create games and game art assets. Three games were submitted from our event: Loathsome, Lost Artist, and Paint Rider (which I created).

  • Fuzzing: An Old Testing Technique Comes of Age

    Both proprietary and open source development tends to have more developers than testers. As a result, automated testing has become increasingly common. In the last year, fuzzing — testing with dummy or random data — has become particularly widespread, and its popularity seems likely to continue.

    Fuzzing’s name is newer than the concept itself. Computer scientist Gerald Weinberg recalls that when he worked at IBM and Mercury Project in the late 1950s “it was our standard practice to test programs by inputting decks of punch cards taken from the trash. We also used decks of random number punch cards. We weren’t networked in those days, so we weren’t much worried about security, but our random/trash decks often turned up undesirable behavior.

  • Safely testing my students’ PHP graded labs with docker containers

    Of course one may give a grade only by reading the students’ code and not testing, but that would be bad taste. And yes, there are probably ways to escape the container safety net in PHP… but I sould maybe not tempt the smartest students of mine in continuing on this path

  • New projects on Hosted Weblate
  • LLVM 5.0.1 Release

    LLVM 5.0.1 is now available! Download it now, or read the release notes.

    This release contains bug-fixes for the LLVM 5.0.0 release. This release is API and ABI compatible with 5.0.0.

  • LLVM 5.0.1 Released

    LLVM 5.0.1 is now available as the first and likely only point release to LLVM 5.0.

    LLVM 5.0.1 incorporates bug fixes that were requested for back-porting to LLVM 5.0 rather than waiting for LLVM 6.0. LLVM 5.0.1 retains API/ABI compatibility with LLVM 5.0.0.

Programming/Development: Journal of Open Source Software (JOSS), Qt, Julia vs. Python, and GitHub Stats

Filed under
Development
  • Who gets the credit?

    The primary goal of the Journal of Open Source Software (JOSS) is to give researchers who develop, contribute to, and maintain open source software a means to get citable credit for their work within today’s research ecosystem. In short, JOSS is a developer-friendly journal for publishing research software packages. It’s also an online academic journal (ISSN 2475-9066) with a formal peer review process that is designed to improve the quality of the software submitted by making sure it meets minimum standards and includes standard identifiers for content on digital networks (Digital Object Identifiers, or DOIs) for all accepted papers.

  • nanoQuill

    Qi, KDAB and Qt have now taken their collaboration one step further by introducing nanoQuill, otherwise known as “The Coloring Book of Life,” which is a crowdsourced coloring book and mobile app that gives anybody the opportunity to color cancer images to help annotate organelles inside those electron microscopy images. Qi is then able to take the crowdsourced annotations to measure a cell’s detail, render 3D images from the colored 2D images, and ultimately train new deep learning algorithms, all in the name of advancing cancer research.

  • An Unexpected C++ Journey

    Some of you may know that KDAB employees enjoy flexibility on working hours as well as location, and some choose to work from home, with the opportunity to share childcare, do part-time study or simply enjoy an out-of-the-way location. All that’s required is a decent bandwidth for KDAB work.

  • Julia vs. Python: Julia language rises for data science

    Of the many use cases Python covers, data analytics has become perhaps the biggest and most significant. The Python ecosystem is loaded with libraries, tools, and applications that make the work of scientific computing and data analysis fast and convenient.

    But for the developers behind the Julia language — aimed specifically at “scientific computing, machine learning, data mining, large-scale linear algebra, distributed and parallel computing”—Python isn’t fast or convenient enough. It’s a trade-off, good for some parts of this work but terrible for others.

  • Who contributed the most to open source in 2017? Let’s analyze GitHub’s data and find out.

    Note that analyzing GitHub doesn’t include top communities like Android, Chromium, GNU, Mozilla, nor the the Apache or Eclipse Foundation, and other projects that choose to run most of their activities outside of GitHub.

Programming/Development: Pipenv, Builder 3.27 Progress, and Compiler

Filed under
Development
  • Pipenv – The Officially Recommended Python Packaging Tool

    Yesterday, we published a beginners guide to manage Python packages using PIP. In that guide, we discussed how to install pip, and how to install, update, uninstall Python packages using pip. We also discussed the importance of virtual environments and how to create a virtual environment using venv and virtualvnv tools. However managing multiple environments using venv and virtualenv tools is tedious task. No worries! There is an another python package manager named pipenv, which is the new recommended Python Packaging tool by Python.org. It can be used to easily install and manage python dependencies without having to create virtual environments. Pipenv automatically creates and manages a virtualenv for your projects. It also adds/removes packages from your Pipfile as you install/uninstall packages.

  • An odd test failure
  • Builder 3.27 Progress (Again)

    As normal, I’ve been busy since our last update. Here are a few highlights of features in addition to all those bug fixes.

  • Builder IDE Becoming More Capable In GNOME 3.28

    The GNOME Builder development environment has already been working on many new features for next year's GNOME 3.28 desktop environment while even more features are now on track.

    Work already being addressed is improved Flatpak support, pseudo-terminal support in the build pipeline, improved search, better CMake and Meson build system integration, support for unit tests, and more.

    Lead GNOME Builder IDE developer Christian Hergert has written another status update on his latest improvements for the project.

  • Compiler to convert Go language to JavaScript

    Developers wanting to use the Google Go language, aka Golang, for web programming can try the beta open source Joy compiler, which promises—when it reaches production release—to turn Go code into JavaScript code.

    With Joy, idiomatic Go code will be translated into JavaScript that will work in every browser (as ECMAScript 3 code, with ECMAScript 5 code on the roadmap as well), the open source project claims. It also means JavaScript developers will be able to use Go’s type system and tools. Joy project creator Matthew Mueller says the Go-to-JavaScript translation work is about 90 percent complete.

Programming/Development: Most In-Demand Programming Languages and More

Filed under
Development
  • Top 7 Most In-Demand Programming Languages Of 2018: Coding Dojo

    Most of the fields in the tech industry demand a regular learning from you as they are dynamic in nature. You need to be up-to-date with the latest trends and make sure that your skillset matches the needs of your target industry.

    For developers, this change becomes even more necessary. For example, today’s mobile app developers need to eventually make a shift from Java and Objective-C to Kotlin and Swift, respectively. This growing adoption and demand is reflected clearly in different lists of the popular programming languages.

    [...]

    Coding Dojo analyzed the data from job listing website Indeed.com. This job posting data revolved around twenty-five programming languages, frameworks, and stacks. It’s worthing noting that some most loved programming languages like Ruby and Swift didn’t make the cut as their demand was lower as compared to other biggies. The other growing languages that didn’t make the cut were R and Rust.

  • The proof is in the pudding

    I wrote these when I woke up one night and had trouble getting back to sleep, and spent a while in a very philosophical mood thinking about life, success, and productivity as a programmer.

  • littler 0.3.3

    The fourth release of littler as a CRAN package is now available, following in the now more than ten-year history as a package started by Jeff in 2006, and joined by me a few weeks later.

    littler is the first command-line interface for R and predates Rscript. In my very biased eyes better as it allows for piping as well shebang scripting via #!, uses command-line arguments more consistently and still starts faster. Last but not least it is also less silly than Rscript and always loads the methods package avoiding those bizarro bugs between code running in R itself and a scripting front-end.

Tryton and Python Deprecation Warnings

Filed under
Development
  • Trying Tryton

    The quest to find a free-software replacement for the QuickBooks accounting tool continues. In this episode, your editor does his best to put Tryton through its paces. Running Tryton proved to be a trying experience, though; this would not appear to be the accounting tool we are searching for.
    Tryton is a Python 3 application distributed under the GPLv3 license. Its home page mentions that it is based on PostgreSQL, but there is support for MySQL and SQLite as well. Tryton, it is said, is "a three-tier high-level general purpose application platform" that is "the core base of a complete business solution providing modularity, scalability and security". The "core base" part of that claim is relevant: Tryton may well be a solid base for the creation of a small-business accounting system, but it is not, out of the box, such a system itself.

  • Who should see Python deprecation warnings?

    As all Python developers discover sooner or later, Python is a rapidly evolving language whose community occasionally makes changes that can break existing programs. The switch to Python 3 is the most prominent example, but minor releases can include significant changes as well. The CPython interpreter can emit warnings for upcoming incompatible changes, giving developers time to prepare their code, but those warnings are suppressed and invisible by default. Work is afoot to make them visible, but doing so is not as straightforward as it might seem.
    In early November, one sub-thread of a big discussion on preparing for the Python 3.7 release focused on the await and async identifiers. They will become keywords in 3.7, meaning that any code using those names for any other purpose will break. Nick Coghlan observed that Python 3.6 does not warn about the use of those names, calling it "a fairly major oversight/bug". In truth, though, Python 3.6 does emit warnings in that case — but users rarely see them.

Programming/Development: GAPID 1.0 and Atom 1.23

Filed under
Android
Development
Software
  • Diagnose and understand your app's GPU behavior with GAPID
  • GAPID 1.0 Released As Google's Cross-Platform Vulkan Debugger

    Back in March we wrote about GAPID as a new Google-developed Vulkan debugger in its early stages. Fast forward to today, GAPID 1.0 has been released for debugging Vulkan apps/games on Linux/Windows/Android as well as OpenGL ES on Android.

    GAPID is short for the Graphics API Debugger and allows for analyzing rendering and performance issues with ease using its GUI interface. GAPID also allows for easily experimenting with code changes to see their rendering impact and allows for offline debugging. GAPID has its own format and capturetrace utility for capturing traces of Vulkan (or GLES on Android too) programs for replaying later on with GAPID.

  • Hackable Text Editor Atom 1.23 Adds Better Compatibility for External Git Tools

    GitHub released Atom 1.23, the monthly update of the open-source and cross-platform hackable text editor application loved by numerous developers all over the world.

    Including a month's worth of enhancements, Atom 1.23 comes with the ability for packages to register URI handler functions, which can be invoked whenever the user visits a URI that starts with "atom://package-name/," and a new option to hide certain commands in the command palette when registering them via "atom.commands.add."

    Atom 1.23 also improves the compatibility with external Git tools, as well as the performance of the editor by modifying the behavior of several APIs to no longer make callbacks more than once in a text buffer transaction. Along with Atom 1.23, GitHub also released Teletype 0.4.0, a tool that allows developers to collaborate simultaneously on multiple files.

Syndicate content

More in Tux Machines

Microsoft Entryism, Openwashing, and Matt Asay's Latest Attack on FOSS

GNU Privacy Guard (GnuPG), GNU Radio, and BPF Compiler Collection

  • Future directions for PGP
    Back in October, LWN reported on a talk about the state of the GNU Privacy Guard (GnuPG) project, an asymmetric public-key encryption and signing tool that had been almost abandoned by its lead developer due to lack of resources before receiving a significant infusion of funding and community attention. GnuPG 2 has brought about a number of changes and improvements but, at the same time, several efforts are underway to significantly change the way GnuPG and OpenPGP are used. This article will look at the current state of GnuPG and the OpenPGP web of trust, as compared to new implementations of the OpenPGP standard and other trust systems. GnuPG produces encrypted files, signed messages, and other types of artifacts that comply to a common standard called OpenPGP, described in RFC 4880. OpenPGP is derived from the Pretty Good Privacy (PGP) commercial software project (since acquired by Symantec) and today is almost synonymous with the GnuPG implementation, but the possibility exists for independent implementations of the standard that interoperate with each other. Unfortunately, RFC 4880 was released in 2007 and a new standard has not been published since then. In the meantime, several extensions have been added to GnuPG without broader standardization, and a 2017 IETF working group formed to update RFC 4880 ultimately shut down due to lack of interest. GnuPG 2 is a significantly heavier-weight software package than previous GnuPG versions. A major example of this change in architecture is GnuPG 2's complete reliance on the use of the separate gpg-agent daemon for private-key operations. While isolating private-key access within its own process enables improvements to security and functionality, it also adds complexity. In the wake of the Heartbleed vulnerability in OpenSSL, a great deal of scrutiny has been directed toward the maintainability of complex and long-lived open-source projects. GnuPG does not rely on OpenSSL for its cryptographic implementation, instead it uses its own independent implementation: Libgcrypt. This leads to the question of whether GnuPG's cryptographic implementation is susceptible to the same kinds of problems that OpenSSL has had; indeed the concern may be larger in the case of GnuPG.
  • Foundations of Amateur Radio - Episode 137
    I've been playing with a wonderful piece of software called GNU Radio, more on that in a moment.
  • An introduction to the BPF Compiler Collection
    In the previous article of this series, I discussed how to use eBPF to safely run code supplied by user space inside of the kernel. Yet one of eBPF's biggest challenges for newcomers is that writing programs requires compiling and linking to the eBPF library from the kernel source. Kernel developers might always have a copy of the kernel source within reach, but that's not so for engineers working on production or customer machines. Addressing this limitation is one of the reasons that the BPF Compiler Collection was created. The project consists of a toolchain for writing, compiling, and loading eBPF programs, along with example programs and battle-hardened tools for debugging and diagnosing performance issues. Since its release in April 2015, many developers have worked on BCC, and the 113 contributors have produced an impressive collection of over 100 examples and ready-to-use tracing tools. For example, scripts that use User Statically-Defined Tracing (USDT) probes (a mechanism from DTrace to place tracepoints in user-space code) are provided for tracing garbage collection events, method calls and system calls, and thread creation and destruction in high-level languages. Many popular applications, particularly databases, also have USDT probes that can be enabled with configuration switches like --enable-dtrace. These probes are inserted into user applications, as the name implies, statically at compile-time. I'll be dedicating an entire LWN article to covering USDT probes in the near future.

openSUSE Tumbleweed Users Receive Important Mesa Linux Graphics Stack Update

Four snapshots were released this week for OpenSuSE Tumbleweed, which is a rolling release GNU/Linux distribution where users install once and receive updates forever. Probably the most important change added in these snapshots was related to the graphics stack, which was updated to Mesa 17.3.2, a release that neede to be split into two parts to improve the build performance of the distribution. "In order to improve the distro build performance, Mesa was split into two parts to be built. Users that updated their system using “–no-recommends” did not get Mesa-dri auto-installed, resulting in the graphical system possibly not starting up. Simply install Mesa-dri for now manually (dependency chain fixes are underway)," said Dominique Leuenberger in the mailing list announcement. Read more

EXT4 vs. XFS vs. Btrfs vs. F2FS With Linux 4.15 Comparing KPTI/Retpoline

The latest in our benchmarking with KPTI and Retpoline for Meltdown and Spectre mitigation is comparing the performance of the EXT4, XFS, Btrfs and F2FS file-systems with and without these features enabled while using the Linux 4.15 development kernel. Read more