Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Huh, interesting. I have an older Logitech G700s mouse, so it uses the older Logitech software. I never had any issue with it on a Mac. I only used it occasionally to adjust the onboard settings, and then forget about it for years on end.
I now have a G703 (so new G Hub software) and while I haven't tried that on the Mac, I can configure the onboard settings from Windows or from Linux [0] with no issues whatsoever (aside from setting a button to show the battery level, which, for some reason, doesn't work).
---
[0] The Logitech software doesn't work on Linux, but Piper/ratbag work just fine.
https://github.com/libratbag/piper
For anyone interested in open hardware mice, I have to recommend Ploopy: https://ploopy.co/
Plug-and-play, flash your own firmware if you like. Current models ship with QMK (open firmware), although I believe my older trackball didn't, I'd have to flash it.
I have both a left-handed trackball (rare!) and a right-handed mouse from them, I like to alternate.
Two obvious complaints:
I use solaar[0] on Linux for my MX Master 2S; it's really nice and mostly works out of the box!
[0] https://github.com/pwr-Solaar/Solaar
Here on Linux, it (the Superlight) just works.
There's libratbag[0] if you want to mess with some DPI settings.
0: https://github.com/libratbag/libratbag
> Why can't we have a compiler with built in system call support?
Funny you should ask that. That is exactly how Virgil's compiler supports the Linux (and Darwin) kernels. Other than generating a small amount of startup assembly (10-20 ins), the compiler just knows the ELF (and MachO) binary formats and the calling conventions of the respective kernels. With some unsafe escape hatches (e.g. getting a pointer into the middle of a byte array), the rest is regular Virgil code that calls the kernel directly.
Take a look, I've been working on this for more than 10 years:
https://github.com/titzer/virgil/blob/master/rt/x86-64-linux...
The "Linux.syscall" is a special operator know to the compiler and it will let you pass an int (the syscall number) and whatever arguments you want (any types--it is implemented with flattening and polymorphic specialization) to the kernel.
With this I have implemented all kinds of stuff, including the userspace runtime system and even a JIT compiler (for my new Wasm engine).
Thanks for this, it's extremely awesome! Really happy to see others have gone so much farther than I ever did.
I started looking into this myself some years ago. Even started developing a liblinux with process startup code and everything. Abandoned it after I found the kernel itself had an awesome nolibc.h file that was much more practical for my C programming needs:
https://elixir.bootlin.com/linux/latest/source/tools/include...
My code is here if you'd like to take a look as well:
https://github.com/matheusmoreira/liblinux
It's amazing how this really lets you do everything... Want a JIT compiler? Map some executable pages and emit some code. You can statically allocate memory at process startup and then implement memory allocation and garbage collection in your own language.
Related posts
- The software industry rapidly convergng on 3 languages: Go, Rust, and JavaScript
- A Rigorous Derivation of the Bubble Sort Curve
- 🚀 A Comprehensive Guide to Personalizing Your GitHub Profile README
- Amazing git additional tool to install: git-interactive rebase-tool
- Elevate Your Laravel Eloquent Queries with Tappable Scopes