Programming/Development: Python, WordPress, Arduino, and More
-
From late-bound arguments to deferred computation, part 2 [LWN.net]
Discussion on PEP 671 ("Syntax for late-bound function argument defaults") has been going on—in fits and starts—since it was introduced last October. The idea is to provide a way to specify the default for a function argument that is evaluated in the scope of the function call, which will allow more concise, and visible, defaults. But there has been a persistent complaint that what the language needs is a more-general deferred computation feature; late-bound defaults would simply fall out as one specific user of the feature. The arrival of a proposal for deferred computation did not really accomplish that goal, however.
-
The ABI status of ELF hash tables [LWN.net]
It is fair to say that some projects are rather more concerned about preserving ABI compatibility than others; the GNU C Library (glibc) project stands out even among those that put a lot of effort into preserving interface stability, So it may be a bit surprising that a recent glibc change is being blamed for breaking a number of applications, most of which are proprietary games. There is, it seems, a class of glibc changes that can break applications, but which are not deemed to be ABI changes. When the dynamic linker starts a program, it must resolve all of the symbol references into shared libraries (including glibc). That can involve looking up thousands of symbols in long lists. Since this process must complete before an application can actually start running, it needs to happen quickly. Nobody likes a long delay between starting nethack and facing off against that first kobold, after all. So it is not surprising that some effort has gone into optimizing symbol lookup.
When the ELF file for a shared object is created by the linker, one of the sections stored therein contains a hash table for the symbols in that file. This hash table can be used to speed the lookup process and get the application underway. For many years, the System V standard for the format of this table has been DT_HASH; that format is supported by the toolchains on Linux. In 2006, though, the DT_GNU_HASH format was added as well; it includes a number of improvements intended to get nethack players into their dungeons even more quickly, including a better hash algorithm and a Bloom filter to short-circuit the search for missing symbols. This format is not well documented, but this 2017 blog post gives an introduction.
Since the hash table lives in its own ELF section, there is nothing preventing an ELF file from having more than one of them. Linkers on Linux systems can be told to create one format or the other — or to create both, each in its own section. Until recently, glibc has been built (by default) with a linker option explicitly requesting that both formats be created. That changed, though, with the glibc 2.36 release at the beginning of August; it contained a simple patch from Florian Weimer causing only the DT_GNU_HASH format to be generated.
-
People of WordPress: Bud Kraus - WordPress News
This month, as we approach WordCamp US, we feature Bud Kraus, a WordPress trainer who has made a career in helping others learn about software. He also shares how he has developed an approach to using technology in order to overcome longstanding difficulties with his eyesight.
[...]
Bud has taught web design since 1998, with students from more than 80 countries online or in person. He was determined not to let his sight difficulties stop him from his wish to help others learn website building and maintenance skills.
As WordPress evolves and new features release, Bud decided to extend his training services around helping new and existing users improve and practice their skills. He supports others in open source through volunteering to speak at WordPress events, and encourages others to do so too. He also gives time to help produce material for the free-to-access resource Learn WordPress, which is part of the WordPress.org project.
As a contributor to the Test and Training teams, Bud is keen for others to try contributing to these areas and help support the project’s future development. One of his current training priorities is to help people with using the block editor and Full Site Editing. He is an advocate for the usability of WordPress today, saying: “I can design all aspects of a website now with a block.”
-
Controlling a bionic hand with tinyML keyword spotting | Arduino Blog
Traditional methods of sending movement commands to prosthetic devices often include electromyography (reading electrical signals from muscles) or simple Bluetooth modules. But in this project, Ex Machina has developed an alternative strategy that enables users to utilize voice commands and perform various gestures accordingly.
The hand itself was made from five SG90 servo motors, with each one moving an individual finger of the larger 3D-printed hand assembly. They are all controlled by a single Arduino Nano 33 BLE Sense, which collects voice data, interprets the gesture, and sends signals to both the servo motors and an RGB LED for communicating the current action.