How Does Tor Really Work? The Definitive Visual Guide (2020)

Today, we’re going to do a technical deep-dive into how Tor really works. No mention of how to access Tor, no mention of what might be on Tor. This is how Tor works. Without speculation and without exaggeration of what Tor is. Just a deep-dive into the technical stuff of how Tor works. This article is designed to be read by anyone, with **ZERO **knowledge on networking or Tor. Let’s dive right in....

September 19, 2020 · 31 min · Bee

Designing Effective Peer to Peer Networks

This is an informed opinion piece on designing effective peer to peer (P2P) networks. I’ve written extensively about peer to peer networks, and have even designed my own (albeit, bad) cryptocurrency. By the end of the article, we should have a good understanding of the important questions to answer when designing effective P2P networks. #myemail { background-color: #f0f0f0; color: black; padding: 15px; border-radius: 25px; width: 80%; margin: 0 auto; } #little { color: grey; font-size: 10px; } #email { width: 100%; padding: 10px; } #submit { width: 100%; background: rgb(36,255,204); } #gdpr { width: 15px; height: 15px; } Want the ebook?...

April 26, 2020 · 17 min · Bee

What Is Dynamic Programming With Python Examples

Dynamic programming is breaking down a problem into smaller sub-problems, solving each sub-problem and storing the solutions to each of these sub-problems in an array (or similar data structure) so each sub-problem is only calculated once. It is both a mathematical optimisation method and a computer programming method. Optimisation problems seek the maximum or minimum solution. The general rule is that if you encounter a problem where the initial algorithm is solved in O(2n) time, it is better solved using Dynamic Programming....

December 31, 2019 · 35 min · Bee

Learn Functional Python in 10 Minutes

In this short 10 minute article, you’ll learn what the functional paradigm is in Python. You’ll also learn about list comprehensions. 📌 Functional Paradigm In an imperative paradigm, we do things by giving the computer a sequence of tasks and then it executes them. While executing them, it can change states. For example, let’s say we set A = 5, then we change the value of A. We have variables in the sense that the value inside the variable varies....

November 20, 2019 · 13 min · Bee

Divide and Conquer Algorithms with Python Examples

Often I’ll hear about how you can optimise a for loop to be faster or how switch statements are faster than if statements. Most computers have over 1 core, with the ability to support multiple threads. Before worrying about optimising for loops or if statements try to attack your problem from a different angle. Divide and Conquer is one way to attack a problem from a different angle. Don’t worry if you have zero experience or knowledge on the topic....

November 20, 2019 · 15 min · Bee

How Does BitTorrent Work? a Plain English Guide

No talk about downloading things on BitTorrent. Or the best clients to do so. Just a deep-dive into the technical side of it. Anyone can read this article. Requires ZERO knowledge on networking or BitTorrent to read this. BitTorrent is one of the most common protocols for transferring large files. In February 2013, BitTorrent was responsible for 3.35% of all worldwide bandwidth, more than half of the 6% of total bandwidth dedicated to file sharing....

November 20, 2019 · 21 min · Bee

Hash functions explained for non cryptographers

A hash function takes a message, m, and returns a pseudo-random string of letters/numbers which should be unique to that message. Let’s say the hash function returns “aBc67D” for the message “I love dogs”. This function should not return the same “aBc67D” for “Donuts are cool”. Hashing algorithms have 3 requirements: A hashing algorithm needs to be reasonably fast to compute and reasonably fast to verify. If you change one single bit anywhere in the message, the outputted string must look completely different....

November 19, 2019 · 10 min · Bee

Public Key Cryptography Simply Explained

Public key cryptography seems magical to everyone, even those who understand it. In this post, I’m going to explain public key cryptography. Public Key Cryptography is based on asymmetric cryptography, so first let us talk about symmetric cryptography. Symmetric Cryptography Your front door is usually locked by a key. This key unlocks & locks your front door. With symmetric cryptography, you have one key which you use to unlock and lock things....

November 19, 2019 · 20 min · Bee

Greedy Algorithms In Python

Greedy algorithms aim to make the optimal choice at that given moment. Each step it chooses the optimal choice, without knowing the future. It attempts to find the globally optimal way to solve the entire problem using this method. Why Are Greedy Algorithms Called Greedy? We call algorithms greedy when they utilise the greedy property. The greedy property is: At that exact moment in time, what is the optimal choice to make?...

November 19, 2019 · 13 min · Bee

How linked lists work with an application to Blockchain

The blockchain is an immutable, ordered, back-linked list of blocks of transactions. If you want to truly understand blockchain you need to understand linked lists. Linked Lists are a linear collection of data elements. Linearty in a linked list is not defined by each element’s physical placement. Instead each data node in a linked list points to one or two other nodes in the linked list. With an array such as [1, 2, 3] you know that the element 1 is at position [0] and element 2 is at position [1]....

October 10, 2019 · 12 min · Bee