I think this is one of the reasons we don't see huge productivity gains. Most F500 companies have pretty proprietary gnarly codebases which are going to be out-of-distribution. Context-engineering helps but you still don't get near the performance you get with in-distribution. It's probably not unsolvable but it's a pretty big problem ATM.
To that end:
1. Blink an LED (this is more rewarding than it seems it should be, because it proves that the toolchain works)
2. Learn to fade that LED on and off instead of blink
3. Learn to make an RGB pixel using red, green, and blue LEDs and some tissue paper
4. Realize that's kind of limiting, and use a WS2812B LED pixel instead
5. Notice that there's whole panels of WS2812B available
6. Buy one. Make it display dumb memes or emojis or dickbutts or whatever.
7. Add a web interface.
8. Give it a domain name.
9. Aim a camera at it, fire up a twitch stream, send the link to HN, and we'll spend a few hours or days shitposting on your little video wall
10. ???
11. (there is no profit. it's supposed to be fun, right?)
When he messed up the color conversion "Green Farquaad" was a recurring meme in our group chat.
Their "Vortex86DX3" is basically a dual-core 1 GHz Pentium II system on a chip...
Weight is of course a major consideration, but its not the primary reason im not bringing batteries on a hiking trip.
- A satellite communication device. You don't use them for internet access, but it does allow me to send my location and a small message so I can let an emergency contact know where I've made camp for the night (and a lack of a message means I'm in trouble). It also enables me to contact search and rescue if I know I'm in trouble.
We did have to use it once when my sister lost her footing and fell of the side of a mountain and shattered her leg. (full recovery, thankfully)
- GPS receiver. I've shifted to using my phone as my GPS unit (with Gaia GPS). Trail GPS units have been subjected to planned obsolescence in a bad way, many will only be supported for a few years now, after that you can't load maps into them anymore. Might as well use your phone and Gaia works offline. Although you do learn that modern cellphones really, really hate being offline for weeks on end and random things start breaking down.
The latter was super important this year. With the budget cuts to park services this year in the US, many of our back country trails are in worse disrepair than they usually are. There were multiple days where the only way I knew I was still on the trail was to follow the dot on my GPS and look for the occasional cut log...
However, next to it there's a M2 mac mini that uses all of 37 W when I'm playing Cyberpunk 2077 so...
> Both Intel and AMD provide runtime power control so this is tunable. The last ~10% of performance requires far more than 10% of the power.
Yes but the defaults are insane.
A Ryzen 9 7945HX mini pc I have achieves like ~80% of the all-core performance at 55W of my Ryzen 9 7950X desktop, which uses 225W for the CPU (admittedly, the defaults).
I think limiting the desktop CPU to 105W only dropped the performance by 10%. I haven't done that test in awhile because I was having some stability problems I couldn't be bothered to diagnose.
IMHO the major win of the IBM PC platform is that it standardized the boot process from the very beginning, first with the BIOS and later with UEFI, so you can grab any random ISO for any random OS and it will work. Meanwhile in the ARM world it seems that every single CPU board requires its own drivers, device tree, and custom OS build. RISC-V seems to suffer from the same problem, and until this problem is solved, I will avoid them like toxic waste.
It depends on the feature, but in many cases the answer is in fact 'yes.' There's a reason why Alpha support (defunct for decades) still goes on but Itanium support (defunct for years) has thoroughly been ripped out of systems.
Well, there really wasn't much support for atomic instructions in x86 before the introduction of compare-exchange in the 486. Any time you wanted guaranteed atomicity on a 386 you had to disable interrupts, which among other things means that if you lock up during a critical section your entire system hangs. Another implication is that nearly all of our lockless data structure constructs depend on compare-exchange instructions.
It vastly simplified some very tricky sections of the kernel to remove support for systems that don't have hardware atomic instructions, so it ended up being done.
If Linus's first introduction to C++ was to C++11, I'd imagine his opinion of C++ would be higher (probably not high enough to permit it into the kernel, though). To a large degree, Rust is "take the good new parts of C++11, strip out some of the legacy insanity, and let's also work out how to keep as much of the good stuff in a freestanding environment as possible." Which answers a lot of the objections that Linus had to C++!
We still don't have all of the interesting C++ features in freestanding mode. It's still a fairly unknown component of libc++ and libstdc++. I've only been playing with it recently because I was curious about how many of the c++17 and newer compile time features I could get to work in avr-g++.
And the answer is ... not much.
I've been spoiled by Rust's "core" crate.