My first project in Rust was replicating this paper because i wanted to learn rust but needed a project to work on because i hate learning from tutorials.
Of course, I had intended to go the OOP route because that’s what I was used to and this was my first time using rust… that was a bit of a headache. But I did eventually get it working and could watch the weights change in real time. (It was super slow of course but still cool)
Anyway I’ve started making a much much faster version by using a queue to hold neurons and synapses that need updating instead of running through all of them every loop.
It’s like lightning fast compared to the old version; I’m very proud of that. However, my code is an absolute mess and is now filled with
Vec<Arc<Mutex<>>>
And I can’t implement the inhibition in a lazy way like I did the first time, so that’s not fun…


Abbott: “So say you’re 40 and you like a girl that’s 10. Well you’re really too old for her because you’re 4x her age. So let’s say you wait 5years. Now you’re 45 and she’s 15, so you’re only 3x as old as her, but that’s still a bit much, so you wait another 15years and now you’re 60 and she’s 30. Only half your age now.
How long do you have to wait till you’re both the same age?”
Costello: “Well 4 then 3 then 2… at this rate she’d better be willing to wait for me too.”
Abbott: “what do you mean?”
Costello: “Going like this, eventually she’ll be older than me and she better wait for me to catch up.”
Abbott: “Why would she wait for you?”
Costello: “WELL I WAITED FOR HER!”