Because I'm a bit sick at home and don't have enough projects already I started another, albeit small, project. Making a mould to make a mould, to cast some epoxy and to make use of my ZnS:Ag I have here ;-)
@ashten (my hearing is still in decent shape apparently... just checked and I can hear 15.5 kHz pretty clearly but 16 starts to roll off and I'm not hearing 17 at all. Although I don't have any idea how flat the response of my sound card or headphones are that high up.)
I'm thinking about just ripping autotools out of this project and if your environment can't handle an 8 bit char I'm going to just tell you that your environment isn't supported
@kwf I'm all for that. Autotools includes lots of checks for really, really obscure platforms that use EBCDIC and odd-sized chars and generally things that no computer made this century probably has.
For libscopehal and ngscopeclient, I made an executive decision - driven in no small part by limited engineering resources - to only support little endian 64-bit platforms with Vulkan 1.0 available.
So basically Linux, MacOS, Windows on x86-64 or ARM64.
@ezio Because flash IPs are expensive so if you want the cheapest possible silicon design, you don't want to have internal config memory.
Which means either external flash (like the ESP32) or a tiny ROM that downloads application code on startup (like the FX2). The latter option avoids the cost of even putting a $0.25 flash chip on the board.
Do not understand why people always use bloated third party json libraries and then complain about it when I've seen people using pico 8 create json (de)serializers in like 15 lines of code
@eniko Yeah this is something I was very careful about in ngscopeclient (which uses YAML metadata + binary waveform blobs, but the concept stands).
I've gone through several major iterations of the file format plus constant iterations adding features and settings, and I need to make sure that old files load in at least some semblance of correct state. No real way to do that other than manually.
I don't see many KiCad projects with detailed notes in the board files or schematic, which is kinda sad because it's a great way to keep notes for reference and important design descriptions.
My KiCad schematics and board files are absolutely littered with notes, with things from calculations for things to why things are done they way they are.
I wish more people would do it, makes things easier on everyone.
@lethalbit@gregdavill I normally have the first/top level page just be connections between other sheets and some high level notes, but not to that extent. Fab notes live separately.
There's a bunch of C-like successor languages that say they want to eliminate undefined behavior. I've never been able to figure out how they intend to deal with reads and writes to memory since a lot of these languages take what I would call the "naive" machine-centric view of memory which is hard to reconcile with source-level semantics for variables, etc. You can't really rename all of this stuff as "implementation-defined" and get out of jail for free.
Or just having a language that provides first class semantics for describing how variables are formatted in memory (i.e. replace C's abstract "integer of unknown size/format" data type with "32 bit little endian twos complement integer")? Because I'd definitely like that. And have not seen any language solve it well.
@pervognsen So, I'd argue a reasonable happy medium is to have the in memory representation of a single variable well defined, and the result of exceeding the language-defined bounds of the object described by a pointer is UB.
So using (&a)[1] to reference variable b (given both as stack variables with no parent object) is illegal since it relies on the assumption that A and B are allocated at consecutive addresses. But casting &a to a byte* is well formed and gives a predictable result if dumped as bytes.
@pervognsen However (&foo.a)[1] might be a well-defined way to alias foo.b since foo is a struct with (in such a language) a formally defined memory layout.