Language Selection

English French German Italian Portuguese Spanish

today's leftovers

Filed under
  • On the Importance of On-Screen Keyboards

    The role of keyboards cannot be overstated. They originated long before computers, and survive in the smartphone era. Millions of people text their friend by tapping away on their shiny pocket computers using the venerable QWERTY layout dating back to 1873.

    It is hard to imagine a phone without a way to enter text. Some of us are dreaming about Minority Report-style gesturing, but the Librem 5 continues the keyboard tradition.


    The task took me on an interesting and educating journey. The Wayland train took me via input methods to Asia, through protocols, to FLOSS communities. I will try to describe my story for you.

  • How Does Project Aiur, An Open Source AI-Engine Substantiate Scientific Knowledge

    As research in science progresses by leaps and bounds, there are a lot of readily available information in the online space, making knowledge sharing in areas like science easier.

    However, there is so much research information available that it is sometimes confusing as to what is right and what is wrong. Given the vast amount of resources, it is essential to carry out in-depth analysis of the resources. This has been made possible with AI and ML innovations.

  • OpenBSD at BSDCan 2018
  • Summer of Code: Evaluation and Key Lengths

    I spent some time testing my OpenPGP library PGPainless and during testing I noticed, that messages encrypted and signed using keys from the family of elliptic curve cryptography were substantially smaller than messages encrypted with common RSA keys. I knew already, that one benefit of elliptic curve cryptography is, that the keys can be much smaller while providing the same security as RSA keys. But what was new to me is, that this also applies to the length of the resulting message. I did some testing and came to interesting results:

  • Major speedup for big DWG's

    Thanks to David Bender and James Michael DuPont for convincing me that we need a hash table for really big DWGs. I got a DWG example with 42MB, which needed 2m to process and then 3m to free the dwg struct. I also had to fix a couple of internal problems.

    We couldn't use David Bender's hashmap which he took from Android (Apache 2 licensed), and I didn't like it too much neither. So today I sat down and wrote a good int hashmap from scratch, with several performance adjustments, because we never get a key 0 and we won't need to delete keys.
    So it's extremely small and simple, using cache-friendly open addressing, and I got it right at the second attempt.

    Performance with this hash table now got down to 7 seconds.
    Then I also removed the unneeded dwg_free calls from some cmdline apps, because the kernel does it much better then libc malloc/free. 3 minutes for free() is longer than the slowest garbage collector I've ever seen.
    So now processing this 42MB dwg needs 7s.

  • California Can Lead the Way in Open Access
  • Better API testing with the OpenAPI Specification

    If you search the internet for "unexpected API behavior," you'll soon discover that no one likes when an API doesn't work as anticipated. When you consider the increasing number of APIs, continuous development, and delivery of the services built on top of them, it's no surprise that APIs can diverge from their expected behavior. This is why API test coverage is critical for success. For years, we have created unit and functional tests for our APIs, but where do we go from there?

More in Tux Machines

Programming: GCC, C++, Python and PHP

  • AMD GCN GPU Target Continuing To Improve For The GCC 10 Compiler
    With the recent release of the GCC 9 stable compiler there is the initial "AMD GCN" GPU target/back-end merged. However, for this GNU Compiler Collection release the AMD GCN target isn't all that useful but continued work on it gives us hope of seeing it in good shape for next year's GCC 10 release. With the GCC 9.1 release, the AMD GCN back-end can only handle running basic single-threaded programs... Not exactly useful for graphics cards. The GCC 9 code supports targeting the Fiji and Vega 10 GCN instruction set architecture.
  • IBM Begins Plumbing "Future" Processor Into GCC Compiler - POWER10?
    IBM engineers have landed initial support for "-mcpu=future" into the GCC compiler... As they say in the commit message, "a future architecture level, as yet unnamed." This IBM "future" processor is being added to the POWER architecture code succeeding POWER9. More than likely, its the early enablement work for POWER10.
  • Little Trouble in Big Data – Part 1
    A few months ago, we received a phone call from a bioinformatics group at a European university. The problem they were having appeared very simple. They wanted to know how to usemmap() to be able to load a large data set into RAM at once. OK I thought, no problem, I can handle that one. Turns out this has grown into a complex and interesting exercise in profiling and threading. The background is that they are performing Markov-Chain Monte Carlo simulations by sampling at random from data sets containing SNP (pronounced “snips”) genetic markers for a selection of people. It boils down to a large 2D matrix of floats where each column corresponds to an SNP and each row to a person. They provided some small and medium sized data sets for me to test with, but their full data set consists of 500,000 people with 38 million SNP genetic markers!
  • Why precompiled headers do (not) improve C++ compile times
    Would you like your C++ code to compile twice as fast (or more)? Yeah, so would I. Who wouldn't. C++ is notorious for taking its sweet time to get compiled. I never really cared about PCHs when I worked on KDE, I think I might have tried them once for something and it didn't seem to do a thing. In 2012, while working on LibreOffice, I noticed its build system used to have PCH support, but it had been nuked, with the usual poor OOo/LO style of a commit message stating the obvious (what) without bothering to state the useful (why). For whatever reason, that caught my attention, reportedly PCHs saved a lot of build time with MSVC, so I tried it and it did. And me having brought the PCH support back from the graveyard means that e.g. the Calc module does not take 5:30m to build on a (very) powerful machine, but only 1:45m. That's only one third of the time. In line with my previous experience, on Linux that did nothing. I made the build system support also PCH with GCC and Clang, because it was there and it was simple to support it too, but there was no point. I don't think anybody has ever used that for real. Then, about a year ago, I happened to be working on a relatively small C++ project that used some kind of an obscure build system called Premake I had never heard of before. While fixing something in it I noticed it also had PCH support, so guess what, I of course enabled it for the project. It again made the project build faster on Windows. And, on Linux, it did too. Color me surprised.
  • KDAB at CppCon 2019
    CppCon is the annual, week-long face-to-face gathering for the entire C++ community – the biggest C++ event in the world. This year, for the first time, CppCon takes place in the stunning Gaylord Rockies Hotel and Convention Center in Aurora, Colorado, very near Denver International Airport.
  • Clear Linux Discovers Another AVX2/AVX512 Fix/Optimization To Yield Better Performance
    For those running a system with AVX-512 support, Clear Linux builds as of this week should be yielding even better performance on top of their existing AVX2 and AVX-512 optimizations. The Intel developers working on Clear Linux uncovered an issue how the new GCC 9 compiler has been building the important libm math library poorly in AVX2/AVX-512 mode. This poor code compilation yielded slowdowns in various math functions since the switch to the GCC 9 compiler.
  • Building Machine Learning Data Pipeline using Apache Spark
  • It is easier to gather package meta-data from PyPI package ecosystem, once know the right way
  • Python 2.7 vs Python 3.4 ─ What should Python Beginners choose?
  • Be Quick or Eat Potatoes: A Newbie’s Guide to PyCon
  • Remote Development with Wing Pro
    In this issue of Wing Tips we take a quick look at Wing Pro's remote development capabilities.
  • Data School: Data science best practices with pandas (video tutorial)
  • PHP extensions status with upcoming PHP 7.4

PostgreSQL 12 Beta 1 Released!

The PostgreSQL Global Development Group announces that the first beta release of PostgreSQL 12 is now available for download. This release contains previews of all features that will be available in the final release of PostgreSQL 12, though some details of the release could change before then. In the spirit of the open source PostgreSQL community, we strongly encourage you to test the new features of PostgreSQL 12 in your database systems to help us eliminate any bugs or other issues that may exist. While we do not advise you to run PostgreSQL 12 Beta 1 in your production environments, we encourage you to find ways to run your typical application workloads against this beta release. Read more Also: PostgreSQL 12 Beta Released With Performance Improvements

ZFS On Linux 0.8 Released With Native Encryption, TRIM, Device Removal

The feature-packed and long-desired ZFS On Linux 0.8 release has finally taken place! ZoL 0.8 is out there! ZFS On Linux 0.8 has debuted today as the newest feature release for this ZFS file-system port for Linux systems. ZFS On Linux 0.8 supports up through the latest Linux 5.1 stable series while still working going back to the Linux 2.6.32 kernel days, but the SIMD support isn't available on stock 5.0+ kernels leading to big performance penalties. Read more

Ubuntu Leftovers: Blobs, Snapcraft and Arronax

  • Ubuntu 19.10 To Bundle NVIDIA's Proprietary Driver Packages As Part Of Its ISO
    For Ubuntu 19.10 the developers are adding the NVIDIA driver packages onto the ISO. The NVIDIA binary drivers won't be activated by default, but will be present on the install media to make it easier to enable post-install. The open-source NVIDIA "Nouveau" drivers will remain the default for NVIDIA graphics on new Ubuntu installations, but this change is positioning the mainline and legacy NVIDIA proprietary drivers onto the Ubuntu ISO so that they can be easily obtained locally post-install. The main driver here is allowing users to enable the NVIDIA proprietary graphics on Ubuntu even if you don't have an Internet connection. NVIDIA has already okay'ed the distribution of their driver packages with the Ubuntu ISO.
  • Snapcraft parts & plugins
    Last week, we published Introduction to snapcraft, a tutorial that provided a detailed overview of the snap build process. We touched on the concepts like snap ecosystem components, snapcraft command line, snapcraft.yaml syntax, and more. We’d like to expand on the first lesson, and today, we are going to talk about parts and plugins, used in the build process of snaps.
  • Arronax – Graphical Tool to Create Desktop Launcher in Ubuntu
    For those who want to manually create desktop shortcut launcher in Ubuntu 16.04, Ubuntu 18.04, Ubuntu 19.04, Arronax is a good choice with graphical user interface. Other than creating .desktop file via Linux command, Arronax offers a graphical interface to create (and also edit) desktop shortcut for application, executable file, or URL.