content: The International Planetary File System (IPFS) and why you should start using it today During the Bitcoin boom about a year ago I remember reading an article which talked about how NEO-NAZIS have gotten rich off Bitcoin and crypto currency in general. For many of us doxing is a constant threat and privacy is important to us. Being that one of the first things leftists will try and take away from you is your job, and income streams, a semi-anonymous currency was highly appealing to us. Since Bitcoin has many properties that we were looking for, we tended to gravitate towards it, bought it and ended up getting rich last year. The fact is, being online today and believing the things we believe will force us to always be on the look out for the next new technology that will allow us to subvert the current system and improve our lives. The current political and technology system will not look out for us, so we must look out for ourselves. In this post I wanted to talk about one of the those new technologies that I think can have a drastic improvement on our lives today, and in the future. Let us imagine a situation. You are a terra former on Mars. For this example it doesn't matter how you got here (insert your own fantasy here), but the white race has finally made it to space and is on other planets. You come in from a hard days work and want to browse the web a bit. There is only one issue. All of the websites where you want to download your memes from are back on Earth. All of the pictures and videos are physically separated from you (since you are hundreds of thousands of miles away through space). In order to communicate back to Earth using the HTTP protocol (what the internet uses today) could take hours just to establish a connection, days even weeks to actually download something. Seeing as you have a limited amount of time to browse the internet and download your memes this is no good. Enter IPFS. IPFS is a new internet protocol that looks to address this situation and solve it. You can think of IPFS as a mixture of the current HTTP protocol, but with peer-to-peer sharing and decentralization as the back bone of it. Let us look at the above example I just gave. You want to download a file that is hosted on a server on Earth. With IPFS, instead of having to make a connection with the CENTRALIZED server hosting your file, IPFS works in a DECENTRALIZED way. It begins by asking all of the computers on your local network if they have the file you are looking to download. If someone on your local network has the file, you just download it straight from them. No need to go all the way back to Earth to get it. If nobody on your local network has the file, then IPFS looks for the people in your neighbor hood that might have it. If someone has it, you down it from them. If nobody in your neighbor hood has it, then it will look at everyone on Mars. If nobody on Mars has it, then it will check with everyone on Earth. The first time someone on Mars has to download the file from Earth it would take a long time, but after that everyone on Mars would download the file from the first person that downloaded it, greatly increasing download speeds since you are downloading it locally from the planet you are on. "Ok, but how would IPFS know who is close to you? How would it be able to determine proximity?" Like I said IPFS is a completely new protocol. In order to use it you have to run a IPFS node on your computer. A IPFS node does a few things. By running an IPFS node on your computer you announce yourself to the network and in a way connect yourself to everybody else. When IPFS goes to look for a file, since it is aware of all the running IPFS nodes, it starts by looking for the nodes that are closest to you (those with the lowest latency) and asks those nodes if they have the desired file. Your IPFS node is used to download files, but also give already downloaded (or created) files that you have to other people that want it. In addition to this, as I said before, IPFS works in a peer-to-peer manor. Once IPFS finds a node that has the desired file, it continues to look for other nodes. As it finds multiple nodes that have the same file it wants to download, it will download different segments of the file from multiple people (just like how torrents work) speeding up download speeds even more. Also just like torrents, if one of the nodes disappears, the file is not lost. It can continued being downloaded by every other node that has it. This makes IPFS resilient to DDOS attacks, or centralized services being taken down. Since the files are not centrally located, it becomes almost impossible to take a file off of the IPFS network as long as people keep hosting it. "uncle_ted, you are rambling again. Can you just get to the good part". Sure thing. While we currently aren't on Mars where download speeds from Earth will be really slow, that aspect of IPFS doesn't matter. What does matter is decentralization. How many image hosting websites have we had to use? Sites like Imgur or Reddit can change their content policy on a whim and remove/censor our memes which will then be lost to time  or will require someone to have to re-upload it on a new image hosting site. How long will that new site last though? It takes money to run, but the administrator rarely makes enough in ad revenue to keep it operational. Will it last a year? 6 months? A month? Using IPFS we would no longer have to worry. Because we are using IPFS, we would just download the file using the IPFS protocol from anybody else that has the file, and in doing so be another node that acts as a backup to help share it and back it up to ensure it doesn't disappear. The way IPFS knows what file you want to download is through hashes. These hashes work like fingerprints for any picture/video/folder you put onto the IPFS network. As long as it is a static file/folder, it can be put on IPFS and it will be given a hash that can then be shared with anybody. As long as you have that hash, and someone on the IPFS network has the file that is associated with that hash, you will be able to download it.  Lets do a practical example. First you need to install IPFS on your computer. After that run through this basic usage to make sure you are up and running. WARNING this will require you to use your command line interface. I know for a lot of people this might be scary, but it will definitely be worth it. Take a little time to learn how to open up your command line and the basic commands to navigate, it isn't that hard. Ok, now that I have installed IPFS, I have my IPFS node running, let me add a file to the IPFS network. I have a picture that I want to share with you guys. I make sure I have my IPFS node running, then I start by using my command line to go where that file is located. I am using Linux (Ubuntu) and I have the file saved in my downloads directory. So using the command line I type in cd /home/$USER/Downloads to go to my downloads directory.  The file I want to add is called sam_hyde.png. To add the picture to the IPFS network I type in ipfs add sam_hyde.png. IT WORKED! This is the response I was given added QmRq6NkoWDzYsoZNgrEKdFJYjkbpjhQ3EFQ3cgptcjDKzL sam_hyde.png. The most import part of this is the second part. That is the hash that is associated with our picture of Sam. Now, if any of you wanted to download that picture of Sam, all you would need to do is open up your command line (and make sure your IPFS node is running) and type in ipfs get QmRq6NkoWDzYsoZNgrEKdFJYjkbpjhQ3EFQ3cgptcjDKzL and it would be downloaded.  I am sure you are saying "Thats cool and all, but how can I see what I am downloading, before I download it?". That is true, you are unable to see what picture of Sam I have created before downloading. In order to see it, you would have to download it, look at it, then decide if you want to keep it or not. That isn't very efficient. Because of this people run IPFS gateways. What this gateway is, is sort of a middle man. Since HTTP and IPFS are completely different protocols, they cannot work with each other. The gateway is set up so that it finds the IPFS content you want to see and then presents it in an HTTP format that your browser can display for you. Here is the address of the Cloud Flair gate way (I find that it is pretty quick) https://cloudflare-ipfs.com/ipfs/$HASH/ If you add in the hash of the file you created, or that you want to view, where $HASH is in the above link, the gateway will reach out to the IPFS network, find the content, then display it for you. There is one downside though. Since this is the gateway that most people use to view IPFS content without downloading it, the service has a lot of traffic which makes it slow. Also if you just added something to the network, it can take a little bit for your node to broadcast to other nodes to show that you are in possession of the added content. It might take a little bit for the gateway to find what you added and display it. anyways if you want to see the picture that I added of Sam you can go here If you use the IPFS gateway and see something that you like, all you need to do is copy the hash, then in your command line run ipfs get $HASH and it will be downloaded A few closing points. When you download something using ipfs get $HASH by default it will save the file/folder with the hashes name. This can be quite ugly as it is difficult to know what hash equals what file. You can name the file/folder whatever you want during the download process. All you need to do it run this command ipfs get -o 'name_you_want_to_download_it_as.extension' '$HASH'