To keep things simple for a blog post, there shouldn’t be too many requirements. Here are some very minimal ones:

There are x votes per referendum. Let’s name such a vote a "voting token".

An account can submit multiple voting token. In other words, there’s no check whether an account submitted one or more tokens.

Votes are public. Third-party can check which account submitted which tokens. In other words, anyone can check transactions and who created them - which is the benefit of the blockchain. However, it’s not trivial to bind an account to a specific identity.

Answers can be either "yes", "no", or "blank".

The account that creates the referendum also gets credited with all initial voting tokens. It’s up to the creating account to dispatch the tokens to other accounts so they can submit them.

At anytime, the state of the submitted voting tokens can be queried.

When all voting tokens have been cast, the result should be computed.