SamSuka
3blue1brown
3blue1brown

patreon


Hamming codes part 2, early view

Following up on the last post, here’s a draft of part 2 to the error correction project.

(Edit: swapping out video link for the finalized version)

Hamming codes part 2, early view

Comments

Appreciate it!

3blue1brown

Thanks... I'm in your Pateron bucket from this video.. This has given me so many helpful ideas πŸ’‘

Scroaty Ball Sac

Great video pair, goes without saying! Truly minor nitpick: I just noticed that the pi creature at 2:15 doesn't transition to the fadeout position smoothly, but skips instead.

At 1:37 there is a frame linking to Ben Eater's video, but you don't talk about that.

Rion Boom Crabhands Keon

I am glad that you included the bit about larger blocks having a higher chance of containing more errors. I was thinking about that during the efficiency section, so it was really well timed.

Great! I really like this stuff, and using python to demonstrate the theory is a very, VERY useful tool. Love this videos!

Hmm, good point. Do you think it would fix it to simply state upfront that this move might look very weird and different at first, but will be explained shortly?

3blue1brown

Great! Love both of these videos. I had managed to get pretty close to the single line of python conceptually trying to solve the chess board puzzle, but hadn't quite gotten all the way there. Mostly because I didn't quite appreciate how xor worked for a list of more than 2 numbers. That was very nice to see wrapped up so simply with reduce.

Mike Jarvis

Me too!

Paolo Torelli

Ah, wonderful to hear, I think that's exactly the effect I was aiming for.

3blue1brown

Ah, haha, thanks for the catch.

3blue1brown

i found this absolutely fascinating. fwiw, i don't have any sort of computer science background, and i 100% agree with your statement at 11:20 that the first method does a better job of instilling the core intuition about how and why this works. i'm sure i could have followed it if you'd started with the XOR method, but it would have felt more like a fait accompli: here's this method, here's how it works, and see how elegant it is? i'm sure i would have been impressed with the elegance of it, but i would have had no idea how or why anyone arrived at it -- whereas this way, the revelation that the four parity bits spell out the location of the error elicited a "whaaaaaat?! that's awesome" that woke the cat :)

Tom Hawking

I think you go through the code section really well. Doing it out "by hand" with the xor and then replacing that with the functions was very clear. I think the jump at 6:05 from explain the binary location of the bits to the "all you need to do is xor the location of each point in the message with a 1" is extremely abrupt. It might be better to list the message itself with the position bits along side (like you do in the code later) and then take out the lines where the message is turned off. That's can also be seen as a multiplication followed by an xor to get rid of the if statement.

Gabe

At 13:47, the words you say do not match the title of the book.

Kevin

The parity bits could also be altered in transmission (or storage, or whatever). Maybe you could think of a system where you start with 16 information bits, and you add four parity bits. Then you would need two parity bits to check those initial four parity bits. And then one parity bit to check these two second order parity bits. You would end up with 16 information bits and seven parity bits, which is a ratio similar to 11/16. And you would still need to check for this third order parity bit, and then for the fourth order parity bit, and so on ... Part of the beauty of the Hamming code is that it also checks the parity bits. In other words, the parity bits take care of themselves.

Daniel Armesto

Awesome work Grant! I just happen to be reading Hamming’s book after hearing Bret Victor mention his influence so it’s quite lucky that my favorite math channel is putting out related content...must be some of that luck Pasteur was talking about.

Wait but ... When you do the example, why start with 16 useful data bits? You need to sacrifice the five parity bits at positions 0, 1, 2, 4 and 8, so why are they part of the starting point of 16 random data bits?

Jan Prummel

Fascinating! If you ever want to do a full explainer of Reed-Solomon codes, I would enjoy watching that as well.

Excellent!

Awesome! I love the message at the end.


More Creators