thom_nic
Definitely not, it's pressure from the anti-gun lobby that keeps pushing "one more bill that this time will actually change violent crime statistics, we promise!"
These bills are being introduced in the states that already have the most restrictive gun control already, yet to nobody's surprise, hasn't done much to curb violent crime. But the lobby groups and candidates campaign and fundraise on the issue so they have to keep the boogeyman alive rather than admit that the policies have been a failure.
$ gnutls-cli --print-cert public.cyber.mil 443 </dev/null
Processed 150 CA certificate(s).
Resolving 'public.cyber.mil:443'...
Connecting to '23.9.224.83:443'...
- Certificate type: X.509
- Got a certificate list of 2 certificates.
- Certificate[0] info:
- subject `CN=comm-cyber.mil,OU=DISA,OU=PKI,OU=DoD,O=U.S. Government,C=US', issuer `CN=DOD SW CA-74,OU=PKI,OU=DoD,O=U.S. Government,C=US', serial 0x087ef6, RSA key 2048 bits, signed using RSA-SHA256, activated `2025-08-11 17:51:06 UTC', expires `2026-09-12 17:51:06 UTC', pin-sha256="zqDELcwzXa0DHRYN6o+J5FGm2fSFXYb3O0knmjH3MrE="
Public Key ID:
sha1:2925dac566b06932f1995cc904f1e723e26d6f5d
sha256:cea0c42dcc335dad031d160dea8f89e451a6d9f4855d86f73b49279a31f732b1
Public Key PIN:
pin-sha256:zqDELcwzXa0DHRYN6o+J5FGm2fSFXYb3O0knmjH3MrE=
-----BEGIN CERTIFICATE-----
...snip
-----END CERTIFICATE-----
- Certificate[1] info:
- subject `CN=DOD SW CA-74,OU=PKI,OU=DoD,O=U.S. Government,C=US', issuer `CN=DoD Root CA 6,OU=PKI,OU=DoD,O=U.S. Government,C=US', serial 0x4a, RSA key 2048 bits, signed using RSA-SHA384, activated `2023-05-16 16:05:29 UTC', expires `2029-05-15 16:05:29 UTC', pin-sha256="NJVFdvvbhMFMXyUHKDk1RLnMkkY5Qt9eP3Q0Q8QHPUk="
-----BEGIN CERTIFICATE-----
...snip
-----END CERTIFICATE-----
- Status: The certificate is NOT trusted. The certificate issuer is unknown.
*** PKI verification of server certificate failed...
*** Fatal error: Error in the certificate.Exactly. The old "I'm sorry I got caught" and not "I'm sorry I did it."
In the US I am pretty sure we are already on the decline.
I think it has to do with, during the industrial revolution and post-war, huge scientific advancements and tech grew the economy, fed capitalism by means of providing new desirable goods to consumers (e.g. dishwashers, nicer cars, etc.)
I wonder if we've reached a "peak" of consumer comfort where advances in science/ tech/ medicine are no longer frequent/ impactful enough to meaningfully satisfy consumers, (why do we care about exploring Mars?) so it's easy for people to reject it and say "we don't need science."
I've used debootstrap to build a Debian distro for ARM with a custom kernel (for an Olimex board target or Beaglebone.) That's very hands-off and not nearly the same "depth" as LFS. The next step was taking the same kernel and building a busybox-based rootfs. Then I had to make my own PID 1 and do init work to bring up services such as networking on boot which was very educational, yet busybox provides most of the "lego bricks" that you're not left writing too much from scratch.
Building to an embedded target also allows one to punt on the most annoying and complex parts of a desktop linux distro, such as the desktop environment, audio/video drivers, UEFI bootloader, etc. Building a semi-custom (e.g. Arch or Debian/debootstrap, Buildroot or OpenEmbedded) headless distro was what I'd call a "shallow dive" or gentle introduction to more of Linux's inner workings without having to understand every bit in order to get a running system.
Granted each one is built by hand so the artisanal craft is easy to appreciate.
But exclusivity is there, because these shops are building less than a dozen bikes per year. If you got your hands on one, wow it will turn heads when you roll up to the bier garden at the CX race.
I started poking at some source files at random in ntoskernel, and it only took a minute to get some "hits" from the ReactOS source:
$ rg InitializeContextThread
./ntoskrnl/ke/thrdobj.c:872: KiInitializeContextThread(Thread,
./ntoskrnl/ke/powerpc/thrdini.c:53:KiInitializeContextThread(IN PKTHREAD Thread,
./ntoskrnl/ke/i386/thrdini.c:92:KiInitializeContextThread(IN PKTHREAD Thread,
./ntoskrnl/ke/amd64/thrdini.c:36:KiInitializeContextThread(IN PKTHREAD Thread,
./ntoskrnl/ke/arm/thrdini.c:53:KiInitializeContextThread(IN PKTHREAD Thread,
./ntoskrnl/include/internal/ke.h:464:KiInitializeContextThread(
$ rg NpxFrame
./ntoskrnl/ke/i386/v86vdm.c:473: PFX_SAVE_AREA NpxFrame;
./ntoskrnl/ke/i386/v86vdm.c:480: NpxFrame = &StackFrame->NpxArea;
./ntoskrnl/ke/i386/v86vdm.c:481: ASSERT((ULONG_PTR)NpxFrame % 16 == 0);
./ntoskrnl/ke/i386/v86vdm.c:485: RtlCopyMemory(KiGetThreadNpxArea(Thread), NpxFrame, sizeof(FX_SAVE_AREA));
./ntoskrnl/ke/i386/v86vdm.c:510: PFX_SAVE_AREA NpxFrame = &StackFrame->NpxArea;
./ntoskrnl/ke/i386/v86vdm.c:512: ASSERT((ULONG_PTR)NpxFrame % 16 == 0);
./ntoskrnl/ke/i386/v86vdm.c:551: RtlCopyMemory(NpxFrame, V86Frame->ThreadStack, sizeof(FX_SAVE_AREA));
Now that said, I have no idea what I'm looking for, or if this is significant. But since we have the source for both, it seems we can do better than speculate w/r/t how much code is similar between them. I know that does not prove copying but I think the author's point can't be blindly dismissed.The recovery mode could even be initiated remotely, so you could re-flash a device without ever touching it. Of course you have to be careful, if the re-flash failed you could be SOL :) Apparently I need to go back and improve it so we can re-flash without rebooting!
These days you can use things like containers (Balena also looks very cool) to achieve a similar goal in possibly a "safer" way. But the idea of being able to re-flash the entire system while running it felt sort of like changing the engine of a car while driving it down the freeway!
I've got a 15" "late 2013" rMBP, set display options to "more space." I've got a total of 45 tabs open between a couple different windows (I use the userChrome hack to re-enable multiple tab rows.) Cycled between tabs, refreshed, navigated around FB, GMail, etc. Can't get the CPU to do anything out of the ordinary.
- mdnsd (not in Busybox),
- merecat httpd (much more full-featured than busybox httpd)
- inadyn dynamic DNS updater
- finit (IMO much nicer than busybox's runsv)
- watchdogd
- uftpd
- ntpd (with ipv6 support!)
He has been super responsive to requests as well.That's not to say they are blameless but we could point fingers at pretty much every federal agency. ICE is just in the crosshairs at the moment.
Literally half of programmers: "Ugh why can't everything be Javascript" Other half of programmers: "Ugh Javascript is the worst language in existence" /s
Given that javascript (esp on mobile) has a hard time reaching native performance, they presumably chose Dart because its design makes it immensely easier to target native iOS and Android without drastically augmenting JS to the point where it's no longer JS.
If there's a non-JS language that's easy to learn for a JS programmer, Dart (and I guess, TS) are it.
[1] https://www.ifixit.com/Guide/Motorola+Moto+X+Battery+Replace...
Only if you quality that with "among consumers." There is tons of demand for ARM-based modules that are designed to be embedded in a commercial product. Comparing this product to any SBC such as RPi3 or Orange Pi completely misses the point. Just look at the headers on pretty much every SBC. If you see 0.1" pitch headers, it's meant for hobbyists, not commercial application.
As mentioned elsewhere, you can compare this to CM3, but there are tons of other players in this space (and there have been for longer than the CM has been around.) To name a few: Anything from Variscite, Myir, Toradex: note many of these cost well north of $50 because they're meant for commercial/ industrial. Samsung Artik 053, Chip Pro, Olimex SOMs and SOPINE are some newer players that have been pushing the price down a bit in this space. So this product is price competitive, esp since there aren't many aarch64 modules out there.
Specifically: if you were designing a product that needs Ethernet (esp GbE) you almost certainly would not choose the RPi CM because it's not on the BCM chip. i.MX and AM335x support 10/100 MAC/Phy, H5 supports GbE. If you were doing an automotive product, RPi and H5 do not have CAN, so you might choose an AM335x SOM. There is definitely a real demand for alternatives to the RPi in the space that this product is targeting.
I am oversimplifying a bit, but you should be able to take these instructions [1], combine with a kernel and bootloader built for this board, and write the resulting image to eMMC/flash. You need to configure a few things correctly, boot cmdline & bootloader options but that's it.
Source: have used debootstrap to build custom distros for a couple ARM modules as well as x86.
What differs is what each chip actually supports. E.g the Pi/BCM2835 doesn't have onboard ethernet MAC/Phy. Neither Pi nor H3 have onboard CAN but maybe neither of those things matter. Point is these days most of the details of the chip are abstracted away; if you have good kernel support there's not a lot to worry about.
This is in fact way easier than options for python, ruby (and probably many others) which tend to install versioned dependencies to some shared directory and then add them to the path at runtime. So you're very right, it's trivial to not need npm at all, ever, in production.
It seems that, while not a silver bullet, FV tools of this sort would be the most reliable way of discovering (and preventing) these sort of issues in microarchitecture.