More in Tux Machines

OSS: Events, Google Summer of Code and More

The COVID-19 pandemic disturbed the work of event organizers everywhere. To slow the spread of this highly contagious virus, conferences that tend to host thousands in person faced a choice: Move entirely online, or cancel altogether. Many open source event organizers chose the latter, but not all of them.
Open Source 101 was due to be held in Austin, TX, on April 14. Instead, it hosted 1,000 attendees virtually. Later this month, the Linux Foundation will host the annual North American contingent of its Open Source Summit online. And rather than hosting DrupalCon around the world as planned, the Drupal Association will host DrupalCon Global online from July 14 - 17.
[...]
On a personal note, I've shared before how I started contributing to open source after attending a huge conference where I met several community leaders. By meeting and making connections face to face, I got plugged in much faster than if I had stumbled onto GitHub and searched through random projects. I fully support public health efforts to keep people safe, and haven't found virtual events to be a strong substitute for the informal conversations in the "hallway track."

I have submitted two talks proposals to Akademy. Earlier Albert called for more proposals, so let me repeat his reminder: send your talks proposals early to reduce panic in the programme committee. Anyone can join! And all things KDE and Qt related are good, as well as interesting stuff on the edge of the KDE community.
[...]
So be part, and send in your tale of KDE community activity.

This week, I started working on the Rocs graph layout capabilities. The Fruchtermani-Reingold [1] algorithm seems to be the most common option for drawing graphs automatically when no extra information about the graph is known. In fact, the Boost library implementation of this algorithm is currently being used by Rocs. However, the Fruchtermani-Reingold algorithm has some parameters that can change its results deeply. In order to better understand the algorithm and how different parameterizations lead to different results, I wrote my own C++ implementation directly in the Rocs’ libgraphtheory. This allowed me to generate debug information during the execution of the algorithm.
Unfortunately, tuning the parameters directly into the implementation is time consuming. Automatic parameter tuning solutions can not be applied in a trivial way, because the quality of the result obtained for a given parameterization is quite subjective. Therefore, I decided to make my manual tuning and evaluation process more efficient by creating a user interface that will allow me to choose parameter values and apply the algorithm to the current graph. Because I am new to Qt and the way to do this is to implement a Rocs’ plugin, it is not done yet. Creating such interface was already in my plans, but I expected to do it later.

Over the past week, I’ve been thinking a lot about George Floyd, Breonna Taylor, and Ahmaud Arbery. I have been thinking about white supremacy, the injustice that Black women and men are standing up against across the world, and all the injustices I can’t know, and don’t see.
The WordPress mission is to democratize publishing, and to me, that has always meant more than the freedom to express yourself. Democratizing publishing means giving voices to the voiceless and amplifying those speaking out against injustice. It means learning things that we otherwise wouldn’t. To me, it means that every voice has the ability to be heard, regardless of race, wealth, power, and opportunity. WordPress is a portal to commerce; it is a canvas for identity, and a catalyst for change.
[...]
If you would like to learn more about how to make a difference in your own community, here are a few resources I’ve gathered from WordPressers just like you.

Servers: Kubernetes, Compression and Debian Activities

Kubernetes celebrates its sixth birthday on June 7: One of the fastest-growing open source projects ever, it’s driving significant change in enterprise IT, helping developers manage containers at scale. Moreover, it helps them develop applications faster and manage resources in automated ways. That’s important not only in DevOps and agile environments, but also in any enterprise IT environment pushing for faster software development and more experimentation. And any CIO or IT leader will tell you, the CEO’s biggest wish right now is faster response to customer needs and outside changes - most recently, a global pandemic.
How much Kubernetes growth are we talking about? According to the CNCF Cloud Native Survey for 2019, 78 percent of respondents were using Kubernetes in production, up from 58 percent the previous year.

For distributions like Debian which have large archives of files that are compressed once and transferred a lot the “zstd --ultra -22” compression might be useful with multi-threaded compression. But given that Debian already has xz in use it might not be worth changing until faster CPUs with lots of cores become more commonly available. One could argue that for Debian it doesn’t make sense to change from xz as hard drives seem to be getting larger capacity (and also smaller physical size) faster than the Debian archive is growing. One possible reason for adopting zstd in a distribution like Debian is that there are more tuning options for things like memory use. It would be possible to have packages for an architecture like ARM that tends to have less RAM compressed in a way that decreases memory use on decompression.
For general compression such as compressing log files and making backups it seems that zstd is the clear winner. Even bzip2 is far too slow and in my tests zstd clearly beats gzip for every combination of compression and time taken. There may be some corner cases where gzip can compete on compression time due to CPU features, optimisation for CPUs, etc but I expect that in almost all cases zstd will win for compression size and time. As an aside I once noticed the 32bit of gzip compressing faster than the 64bit version on an Opteron system, the 32bit version had assembly optimisation and the 64bit version didn’t at that time.

Devices: Netbooks, Raspberry Pi and RISC-V

The first machine to kick off the craze was the Asus EEE PC 701, inspired by the One Laptop Per Child project. Packing a 700Mhz Celeron processor, a small 7″ LCD screen, and a 4 GB SSD, it was available with Linux or Windows XP installed from the factory. With this model, Asus seemed to find a market that Toshiba never quite hit with their Libretto machines a decade earlier. The advent of the wireless network and an ever-more exciting Internet suddenly made a tiny, toteable laptop attractive, whereas previously it would have just been a painful machine to do work on. The name “netbook” was no accident, highlighting the popular use case — a lightweight, portable machine that’s perfect for web browsing and casual tasks.
But the netbook was more than the sum of its parts. Battery life was in excess of 3 hours, and the CPU was a full-fat x86 processor. This wasn’t a machine that required users to run special cut-down software or compromise on usage. Anything you could run on an average, low-spec PC, you could run on this, too. USB and VGA out were available, along with WiFi, so presentations were easy and getting files on and off was a cinch. It bears remembering, too, that back in the Windows XP days, it was easy to share files across a network without clicking through 7 different permissions tabs and typing in your password 19 times.

Efinix has announced three RISC-V Software-defined SoC’s based on Charles Papon’s VexRiscv core and optimized for the company’s Trion T8 to T120 FPGA’s.
VexRiscv is a 32-bit RISC-V CPU using RISCV32I ISA with M and C extensions, has five pipeline stages (fetch, decode, execute, memory, and writeback), and a configurable feature set. Each SoC includes a RISC-V core, memory, as well as various I/O and interfaces.

Programming Leftovers

As a member of the Norwegian Unix User Group, I have the pleasure of receiving the USENIX magazine ;login: several times a year. I rarely have time to read all the articles, but try to at least skim through them all as there is a lot of nice knowledge passed on there. I even carry the latest issue with me most of the time to try to get through all the articles when I have a few spare minutes.
The other day I came across a nice article titled "The Secure Socket API: TLS as an Operating System Service" with a marvellous idea I hope can make it all the way into the POSIX standard. The idea is as simple as it is powerful. By introducing a new socket() option IPPROTO_TLS to use TLS, and a system wide service to handle setting up TLS connections, one both make it trivial to add TLS support to any program currently using the POSIX socket API, and gain system wide control over certificates, TLS versions and encryption systems used.

Recently I have been working to clean up the configuration file syntax and parsing in rpminspect. Several months back there were suggestions on fedora-devel to improve things with the configuration files. The ideas were good improvements, so I added them to my to do list and am now at a point where I can work on making those changes.

Google has released Android Studio 4.0, a massive update to its IDE for mobile app development, with features like an upgraded Layout Inspector, and the brand new Build Analyzer and motion editor.
Android Studio is based on JetBrains IntelliJ IDEA, a popular Java IDE, and version 4.0 uses IDEA 2019.3.3, according to the release notes, which came out in February 2020. The Android Studio incarnation is a little behind IDEA, for which version 2020 is out.

Do you write tests for your code? You probably should. And most of the time, pytest is the industry standard these days. But pytest can be much more than what you get from just installing it as a tool.
There are many amazing plugins that improve pytest in many aspects. That's why I invited Brian Okken to the show to tell us about his favorites. Listen in and your Python testing will be faster, stronger, and more beautiful!

I am an Architect & Developer & I love to code!
Lived & worked in many countries I have seen systems evolved from traditional client server to today's modern Cloud based Apps.
Now a days I code in Python/Django, Vue.js to develop Web, Android and iOS apps