Thanks Sampriti !. I went back to my code and noticed some modifications I did but forgot to update the blog. Initially, I had created a donate call inside my constructor but later on created another function for it.
You should be able to call the function using the following command:
cast send <attacker_contract_address> "donate(address)" "<instance_address>" --private-key $PKEY --rpc-url $RPC_URL
Most probably you are not able to call the donate function from Remix because your deployed contract does not have enough Ether to send along with your transaction. Try depositing some Ether into your contract or send them along with the function call.
Since my constructor is payable, you can deploy the contract and send some Ether at the time of deployment.
I've updated the blog as well. Thank you so much for your input.