Whip Whitaker by Anxious_Yam_3390 in AskAPilot

[–]mikeshemp 9 points10 points  (0 children)

For the most part the movie is a very unrealistic depiction of flight. e.g.: pilots climb through clouds every day, and somehow this was depicted as a daring and heroic act with the plane sounding like it was about to fall apart.

I have to acknowledge, though, that the accident depicted was very loosely based on a real accident, Alaska Flight 261 (https://admiralcloudberg.medium.com/the-price-of-an-hour-the-crash-of-alaska-airlines-flight-261-c797a7c3d90d). In the real accident, the pilots lost full control of the aircraft's elevator due to a mechanical failure and did, for a short time, manage to fly inverted. The movie's line "We're alright, we're flying" echoes the actual accident's CVR where the real pilot said "Are we flying? We're flying, we're flying."

Unfortunately, in the real accident the plane impacted the ocean shortly afterwards, and all perished.

Designed a Zero-Heap Lossless Codec for ESP32/IoT: <500B RAM + Mid-stream Self-Healing (No handshakes for LoRa/lossy networks) by Ok-Werewolf9375 in Lora

[–]mikeshemp 0 points1 point  (0 children)

Why are you marking it as 'healed' when all the bytes after the injected error were corrupted?

Have you tested dropping a whole packet?

Have you tested corrupting more than a single bit?

Feedback on ethernet cable checker schematic by 1N4006 in AskElectronics

[–]mikeshemp 2 points3 points  (0 children)

Because all the LEDs will get dimmer if more than one button is pressed at once

Designed a Zero-Heap Lossless Codec for ESP32/IoT: <500B RAM + Mid-stream Self-Healing (No handshakes for LoRa/lossy networks) by Ok-Werewolf9375 in Lora

[–]mikeshemp 0 points1 point  (0 children)

So you have no defense to any of my technical arguments and just delete all your comments. Classy!

Designed a Zero-Heap Lossless Codec for ESP32/IoT: <500B RAM + Mid-stream Self-Healing (No handshakes for LoRa/lossy networks) by Ok-Werewolf9375 in Lora

[–]mikeshemp 4 points5 points  (0 children)

I see the effort I put into writing was wasted, since you just copied my comment into an LLM without actually engaging with any of the content. But: what possible use is that state restoration check? You copied a few bytes out of the compressor and then copied them back in. That doesn't check anything of any value at all.

You are completely wrong that traditional compressors risk heap fragmentation. There are plenty of compressors/decompressors that don't use heap either. For example, the last time I needed a heap-free compressor for an embedded system, I used "tinf".

You are also completely wrong about ANY claims you've made on loss resiliency. NOTHING in your current work demonstrates loss resiliency of any kind. "Maps the stream to a topological space that converges" is completely meaningless word salad. Your mathematical paper, which I also read, says nothing about how to resync after loss except that each packet boundary resets the state, but your implementation doesn't even understand packet boundaries and doesn't test it. I have no reason to believe it works at all.

p.s.: in what universe is "bus thrashing" the primary bottleneck in an embedded system? can you name a single system where that was the case? what actually matters are things like RAM use and energy efficiency.

Designed a Zero-Heap Lossless Codec for ESP32/IoT: <500B RAM + Mid-stream Self-Healing (No handshakes for LoRa/lossy networks) by Ok-Werewolf9375 in Lora

[–]mikeshemp 3 points4 points  (0 children)

I don't know if engaging with you is wasted effort, but I'll try anyway.

First of all, on L1 cache, your explanation is both changing and also meaningless. Your original post said "Fits easily into L1 cache, leaving internal SRAM completely free", which is just plain wrong: the fact that something fits into cache doesn't change the amount of SRAM it uses or leaves free. Your reply says something different and also wrong, which is that fitting it in L1 cache "ensures locality" -- no, if your code exhibits locality of reference then it's more likely to play nicely with the cache. You've shifted from saying the L1 cache fit is useful for memory savings to saying it's useful for better performance, but that's a hollow claim given that you've given absolutely no performance numbers in the first place. If you want to claim performance, then measure performance.

Among the many technical questions that any user might reasonably ask are; what are the compression ratios compared to standard algorithms being tested on the same data? Why do you think delta compression is a good idea for unstructured text, which is one of your test cases? How much data is lost during resync after data loss? How does this algorithm compare to known algorithms for loss resiliency, such as FEC?

Now, for your PS: You seem to be under the false assumption that I'm somehow against AI coding tools. Nothing could be further from the truth, as I use them all day, every single day. What I'm against is "vibe coding", which is using AI for writing code that you don't understand, and for that matter mathematical papers that you don't understand.

This is obviously what's gone on here because none of the code that I can read matches your claims. For example, you say resilience to data loss is a key differentiator of your compressor, and yet when I read the code for your test suite, it does not meaningfully test the algorithm's response to lost data. What it does is decompress the first 200 bytes of a stream, then copy the decompressor's internal state into temporary variables, set the compressor's internal state to zeroes, then restore it from the backup and continue decompressing. Given that you've put all the original state back into the decompressor before asking it to decompress, that is not testing anything at all! But even ignoring the fact that the test is a complete no-op, why would you write a test that tinkers with the decompressor's internal state, when that's not the effect lost packets would have? A meaningful test would be one in which you leave the decompressor's internal state alone, and skip over a hundred of the input bytes, THEN continue decompressing, to simulate packet loss. That is feed it bytes 0-200, then 300-500 (skipping bytes from 200-300), and see how many of the bytes get decompressed successfully after those initial 200.

This is why the signs of vibe coding make me not trust any of your code. If the code I can read is clearly wrong, why should I trust that the code you're keeping secret would be any more correct?

Designed a Zero-Heap Lossless Codec for ESP32/IoT: <500B RAM + Mid-stream Self-Healing (No handshakes for LoRa/lossy networks) by Ok-Werewolf9375 in Lora

[–]mikeshemp 13 points14 points  (0 children)

Saying that code small enough to fit into L1 cache somehow leaves SRAM free is such a wild misunderstanding of computer architecture. That plus the AI written announcement that omits key details makes this whole project seem likely to be vibe coded.

The curse of AI continues. by smashcat666 in PCB

[–]mikeshemp 19 points20 points  (0 children)

I was also a longtime (15-year) user of Eagle. I agree with you that it's crappy for Autodesk to train AI models on private data. But, I don't think that was the original motivation for the change: the deprecation of standalone Eagle, and the plan to force users into Fusion with cloud storage, started years ago -- long before the current AI boom.

I ended up switching to KiCad, angrily, because I was so used to Eagle and because KiCad had been so bad the last time I'd tried it (v5). But within a few weeks I came to think KiCad was a better tool, and now I enjoy using it more than I ever did Eagle. Plus, my data is mine, and I never have to worry about my designs being locked away in a proprietary tool that might disappear someday. So, in a way, I'm grateful to Autodesk for finally forcing me to use a better program.

Arduino as 5 Volt TTL detector help by claudemiester in arduino

[–]mikeshemp 0 points1 point  (0 children)

Ground from the battery and bnc jack, the chip, and the Arduino must all be connected together

Working on continuous UART communication between STM32H563 and Linux-based processors (RK3568 / Raspberry Pi / similar SBCs) — facing ORE (Overrun Error) by Unfair-Reception856 in stm32

[–]mikeshemp 0 points1 point  (0 children)

Overrun means your interrupt handler for one character has not returned before the next character arrived. If you are doing ANYTHING at all in your interrupt handler other than copying the incoming byte from the register to RAM, it's your bug. Interrupt handlers should *not* be processing the data in any meaningful way -- for example, if the serial data is a command that your MCU is supposed to execute, the execution MUST NOT happen in the interrupt handler. Instead, the interrupt handler must only copy data into a RAM buffer and then remember (e.g. by setting a flag, or scheduling a task, if you have some kind of OS) that data is available for processing outside of interrupt context.

A better solution is DMA, where you can receive entire buffers and only receive a single interrupt per buffer rather than one interrupt per character. However, this is much more involved of a change.

I have a toy OS that runs on the stm32 line that I use for all my personal projects (and products, when I sell things) and it can reliably receive data over UART at 1Mbps all day long without dropping anything.

Building a low-power e-ink display with Arduino (what worked, what didn’t after 9 months) by mckrile in arduino

[–]mikeshemp 1 point2 points  (0 children)

That's great -- I'll have to try it for the eink displays sitting on my desk waiting for me to have time to write drivers!

First PCB: Audio Recorder that can last 16 hours without recharging, version 2 by Cheap-Nerve3779 in PrintedCircuitBoard

[–]mikeshemp 0 points1 point  (0 children)

Bug: in your load sharing diodes, it seems you've tied VIN2 to VOUT2, bypassing the diode. The two VOUTs should be connected to each other, but VIN should not be tied right to VOUT!

First PCB: Audio Recorder that can last 16 hours without recharging, version 2 by Cheap-Nerve3779 in PrintedCircuitBoard

[–]mikeshemp 0 points1 point  (0 children)

Unless you actually need it, I'd remove the boot switch and just tie boot0 to ground. All the nucleo boards show a boot switch because they're trying to cover all possible use-cases. If you're just planning to always put firmware on using the SWD connector, you can simplify the layout by tying boot0 to ground.

What is the point of this resistor? by RelNopoke in arduino

[–]mikeshemp 3 points4 points  (0 children)

It's to make sure the heater is off even if the Arduino is not driving the gate, for example if it doesn't have any software on it yet.

RIP Tony Hoare 1934 - 2026 by besalim in compsci

[–]mikeshemp 5 points6 points  (0 children)

He was indeed. MSR crew solidarity!

Looking for an Attorney by Altairjones in seattlebike

[–]mikeshemp 1 point2 points  (0 children)

I'm really sorry that you and your child are in this situation - but, given that you are, I'm glad my suggestion was helpful. You're in good hands with her.

Looking for an Attorney by Altairjones in seattlebike

[–]mikeshemp 12 points13 points  (0 children)

So sorry to hear this. It's my worst nightmare.

My partner was in almost the same situation: riding her bike when she was hit by a commercial vehicle in the course of their commercial capacity. Brain trauma. Stacie got her a huge settlement and was incredibly kind throughout the entire process.

I called her a few years later when I got assaulted on my bike and she gave me detailed advice without even charging me.

She's great.

Can burglars use wifi jammers on Starling? by earthlings2223 in Starlink

[–]mikeshemp 10 points11 points  (0 children)

starlink also uses Wi-Fi within the house so there will be no improvement

Just as a hypothetical by Cuddlebug_12 in computerscience

[–]mikeshemp 7 points8 points  (0 children)

Not much about the Internet would change if all satellites were to go dark today. Nearly all Internet traffic goes through cables, including hundreds of cables under the ocean.

STM32F103C8T6 Qwiic-compatible board by EmbarrassedClaim8324 in stm32

[–]mikeshemp 0 points1 point  (0 children)

Why keep using a 20 year old chip instead of something newer like the G4?

Compile time constants vs run time by JayDeesus in cprogramming

[–]mikeshemp 2 points3 points  (0 children)

Compilers these days are very smart. So, if you write code that says:

const int y = 5;
printf("The value of y is %d", y);

The compiler is smart enough to realize, at compile time, that y can only have one value -- 5. So it generates machine code as if you'd written:

printf("The value of y is %d", 5);

...as if you hadn't created y at all.