The DHGBinaryUtils is a set of static routines (for convenience packed into classes) written in Vala that are aimed at facilitating storage and retrieval of data chunks from uint type variables.
The whole set is composed of four main modules. Three of them are designed for management of fixed length chunks (8, 10 and 16 bits). They allow for storage of 4, 3 and 2 chunks respectively in 32bits uint and twice as much in 64bits one. The last, fourth module contains routines enabling variable chunks' lengths. While more flexible, their performance is around 3/4th of their fixed length counterparts.
It's often underestimated how useful bitwise operations may be. Specifically when it comes to data exchange and storage. While modern approach favors text based linked lists and descriptive markup structures, when it comes to fast throughput or large amounts of data, bit based operations are the most efficient and will always be.
What makes them even more efficient is an ability to store smaller chunks of bits inside larger variables.
One of examples can be 32bits color information composed of RGBA channels. All in a single stream of bits that can be easily pushed through buses in one machine cycle.
More details on Gitlab:
The DndOrderListBox is a Gtk.ListBox descendant allowing for reordering its rows both with pointer or keyboard actions.
Contrary to some other implementations that use child widgets to enable drag'n'drop behavior the DndOrderListBox is widget agnostic and operates only on native rows.
The only caveat here is that child widgets must be able to receive drag events and thus must have own X11 windows.
To see it in action go to our project on Gitlab:
[ optional ] Experiment with different parametrically designed shapes of QLBRD modules.
Have Blender installed with Sverchok addon. Knowledge how to use Blender is highly recommended.
Take nodes.blend file from files in this project. Run it.
In Compositor view you can switch to Sverchok nodes. Open a node tree called NodeTree :) . It contains scripted node with my script loaded, solidify node and BMesh visualization node. All connected.
By changing parameters of Scripted Node you can change shape, number, deformations of all modules. If provided with high enough number of vertical and horizontal divisions (parameters 1,2,3) the resulting mesh is a good base to make final, printable part.
If curious, take a look into the file that feeds the node. I did my best comment as much as possible. And you can ask me directly as well.
QLBRD is a project aimed at solving certain issues I observed while using different models of remote controllers. Instead of listing what is wrong with them, it's more reasonable to say how my solution helps people interact with their devices..
QLBRD shape fits into human palm. It fills it. User can feel something under fingers, feels response of keys when they surrender to pressure. At the same time most of hand can remain relaxed without need to keep it in the air.
QLBRD can work in any position, user just holds it like a tennis ball and works by pressing keys and changes modes of operation by changing ball orientation in space. User can use it not only as a keyboard but also as a mouse like pointing device, 3d manipulator, game controller.
Thanks to Bluetooth interface QLBRD can interact with any device it can connect. There is a possibility to use different keyboard and controller profiles.
QLBRD can prevent carpal tunnel syndrome and similar conditions. CTS affects people working with computers whose work requires constant repetition of the same movements especially with excessive flexion and straightening of wrists. Using QLBRD can bring relief in suffering from such conditions as it forces movement and training of wrists while it does not require constant strain in muscles.
QLBRD is meant to be composed of different modules sharing common data bus and power line. Modules are attached to main ring and are swappable. This enables for easy extension and adaptation to different tasks.
QLBRD can be worn on hand like a smart bracelet. More, in such position and with added modules it may be used as a smartwatch (with addition of eink module and possibly a gsm one as well).
My aim is to have a device that can be assembled using off-the-shelf components and some skill. 3d printer can be of help when it comes to plastic parts, but I provide all project files that can be ordered with external service providers as well. It's worth mentioning that I do not deal with such maker activities on a regular basis and thus have limited lab equipment. If I am able to make it, everyone can.