Perhaps you have already thought about it or never felt the need to. However, taking a look at it might be worth some of your time.
Want to join me? Great, then let's go!
🧵🔽
1️⃣ Foundations
Have you ever bought a new computer or notebook? You pick a machine suitable for your needs, place an order and wait that it arrives. If it's a gaming PC, you'll sometimes have to build it yourself. That machine has to be placed, plugged in, needs to ...
... have it peripherals connected, etc.
It's the same process for servers. A server is nothing else than a computer that is specifically designed to run 24/7, host some form of software, be connected to a network, and so on. As it has some pretty special requirements ...
... this form of hardware usually costs a little more. Sometimes even into the 10k's of USD. What you get for it is usually a server CPU with a lot of cores, some huge amounts of RAM, and a fast network interface, and other special components.
When this machine arrives, you usually have to do a memory test that can take up to two days, just to ensure that your gigabytes of RAM work as expected. You then have to set everything up and finally place it within a rack, next to other machines.
If something fails, you have to contact your supplier and manage the repair. If there are software failures, you need administrators who take care of getting the machine up and running again.
That's a lot of work. The machine costs a lot of money, someone has to set everything up and run the test which also costs money. And in the end, you either find out that you only use 10% of this monster of a machine or you need 5 more of those.
2️⃣ Enter The Cloud
We live in the age of specialization. It's often simply not wise for a business to do everything itself. Online shops use fulfillment centers to handle their warehousing and shipping for them, companies pay external accountants to do their books, ...
... companies let other companies build their software for them, and so on.
It's the same for computing hardware. Why not simply let someone else take care of all the hardware for you? And if you only need a 1Ghz single core-CPU, and 512MB of RAM, ...
... why should you pay 50k for a machine that has multiple times the size, just in case you ever need more while also carrying all of the risk around with you?
This is exactly what cloud providers are offering and are there for.
3️⃣ A High-Level Look At The Cloud
Cloud providers offer computing power. They buy thousands of server machines, place them within their data centers, and then offer those resources for rent.
They carry the risk of failing machines and of outages. In return, they charge their customers money for using their computing resources.
Most of those providers offer way more than only raw computing power these days. They combine software and hardware and ...
... create products around the basic concept of renting out a server.
To be able to rent a virtual machine (EC2) on AWS, you need a little more than only some hardware within a data center. You need a software where customers can log in, choose the size of machine ...
... they want to rent, and place their order. There is also software that allows your users to access those systems, somehow deploy software to it, let it connect to the internet and vice versa, and much more.
This software is developed by many development teams working for the cloud providers. They create software around the basic computing power rental model, and also combine multiple existing products into a new product that offers even more features.
Those teams also develop client libraries in multiple programming languages to make it as easy as possible for external developers to work with their systems. The easier, the better because easy-to-use sells to IT departments, next to cost.
4️⃣ Conclusion
The cloud is actually something you could do yourself, extracted and abstracted away into a full business model, with as much automation as possible. The saying "The cloud is just someone else's computer" isn't really wrong, but as we've seen, it ignores a lot ...
... of software work around this basic concepts that actually makes the cloud usable for as many people and businesses as possible.
What do you think? Has your basic understanding of the cloud grown a little? If so, I'm glad it helped!
If not, what are you missing? Drop me some feedback!
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Code Reviews are a great way to use the experience and knowledge of a team to create good software. Not all review processes are enjoyable, though.
Here are 6 tips to make your review process better and more enjoyable for everyone!
🧵🔽
1️⃣ Make Expectations Clear
A good review process should both be standardized and individual. The terms of the process should be written down and transparent for everyone on the team. Each team member should know what is expected of them and all team members should agree ...
... on the terms. Changing the terms should always be a democratic process within the team. If the team disagrees on changes or terms, it should discuss the issues until there is consent.
On the other hand, the process should be flexible enough to allow for individuality.
Proof-Of-Work is the name of a cryptographic algorithm that is used for some blockchains when new blocks are to be appended to the chain.
Let's take a higher-level look at how this one works, shall we?
🧵🔽
1️⃣ The Basics
This algorithm creates a system in which one party (the prover) has to prove to one or multiple other parties (the verifiers) that they put in a certain amount of work for some purpose.
The work the prover has to put in is moderately hard to very hard, while the verifiers can pretty easily check whether the proof is correct. This creates an asymmetric system.
The original idea was to create protection against DDoS attacks and spam.
What are **some** possible applications of Blockchain technology?
Are there only cryptocurrencies? Are there more possible applications? Let's take a look at three possible applications outside of finance here to give you a general idea of what is possible.
🧵🔽
0️⃣ Foreword
A blockchain can be used to solve a lot of problems. Cryptocurrencies are only one possible way of applying the technology but there is way more to it.
We can take a look at some possible applications and what they each provide to users.
1️⃣ Social Networks
The current generation of social networks is centralized. Whether we talk about Facebook, Twitter, Instagram, TikTok, or whatever else. They all own your account, your content, your followers, and everything else.
Bitcoin is breaking record after record, but there must be more to the technology than just crypto, or not? Well, we can take a look at the underlying technology first to understand what it actually provides to us.
🧵⬇️
1️⃣ Foreword
This will be a high-level overview to give you an intro to blockchain technology. With further threads, we will dive deeper and deeper, so don't be sad if something you really looked forward to isn't included as detailed as you would have wished for, yet!
2️⃣ Client-Server Architecture
Before we dive into blockchain technology, we should take a look at how most of the internet works. We need this to understand the fundamental differences between a traditional model and the change blockchain technology brings.
Here are _some_ of the most essential git operations you will need when working as a developer.
🧵🔽
1️⃣ Create A New Repository
This is the most basic command you'll need. When you start a repository locally, your start with git init.
2️⃣ Clone A Repository
You can clone a remote repository to get a local copy of it. Your local repository is connected to the remote one so you can pull in changes and push yours to the remote.