I have been using web3 nodejs and infura.io to build apps that interact w/ the Ethereum Blockchain and it is all great but I don't like the idea of a failure point my my apps because they rely on a third party (I.e. infura.io). How does one interact w/ the blockchain without use of a third party, obviously this is possible since infura themselves must be doing it
Infura is basically just running a bunch of nodes to which it provides access for you. So you just need to run your own node.
There are a few different node clients available; the most popular are Geth and Parity. You can choose any client you wish. So just download the client program, read instructions and start synchronizing the node with the blockchain. Once it's fully synchronized you can use it the same way you'd use Infura (and in many other ways as well).
If your goal is to eliminate single points of failure in your system, you need to study how peer to peer applications like geth achieve resilience.
Replacing infura by a node that you own and control is a good first step as infura is used by a lot of dapps and could be the target of an attack to take dapps down. However, by doing this, you're simply replacing a point of failure by another.
What geth does during the peer discovery phase is connecting to a list of trusted bootnodes. These bootnodes can inform your geth node about the addresses of other nodes. This way you end up with a list of peers to sync from.
If a node falls, there are plenty of other nodes to relay the informations, and the network can continue to operate. If all the trusted bootnodes fall, the network stops functioning.
If your app is a desktop app, you can embed a geth node in your app like AKASHA did.