Learn How Much You Can Earn in Medium As a Regular Writer

Let’s Take a Look at my Medium metrics in Detail So You Can Estimate Yours —My Year 2021 in Review.

Photo by Lala Azizli on Unsplash

I want to do this article to try to be as transparent as possible about how my year in Medium has gone in different aspects: readers, followers, subscribers… and yes, earnings!!!

I know that there are a lot of articles explaining a lot of insights about how they are performing in Medium. And, probably, you will not see here the most significant numbers in any of the metrics I could choose, which is why I think this is a good post for everyone.

This post shows you how something as regular as you could be if you decide to start your journey as a Medium writer can perform with the same dedication I put it.

The additional motivation for this post is to set the expectations for the next year that I hope will be better. I could focus more on this great activity of sharing knowledge with all the audience and the great community we are creating here at Medium.

Posts Written

This section covers the first metric I would like to focus on because this is the most important. And this is clear. If you write more, you will engage more with your audience. For sure, the content needs to be of excellent quality, but it is essential that the number of posts you write is high and the frequency is stable so that you can grow a community and know when they can expect the next piece. As you know, this is not my first job or dedication, so I am not as good at this aspect as I should be, but let me show the numbers:

Published Post per Month

As you can see, I try to keep the stability in my published posts, trying to target a weekly period, so trying to reach 4 per month. However, I could stick to it for half of the months. Also, you can see the boost in the motivation n when you start a new year you can see as you can see in the first three months of the year. So, in total, you can see that I have published 46 posts. It is not a significant mark, but it is what I could do.

Followers and Subscribers

This metric is pretty much the most important because it tells you how your community behaves. If you are engaging with them if they like the topics you write, and how the changes you are doing are affecting this community. This community is your core, and it will decide how the rest behaves. You need to invest in it, you will feed it. You need to treat it as it deserves.

So, what are my numbers on this topic? I didn’t start from scratch, so let me share first the numbers I had on January 1st, 2021: 119 Followers, 0 Email subscribers, and 0 Referred Members (this is normal as it has been introduced at a late point this year). So, here are the numbers for the 2021 year:

Followers and Subscribers metrics in 2021

So, I am ending the year with a total of 261 subscribers what it means an increase of 120% what is excellent. Still, this increase has been fantastic until October, and after that, it is a little bit steady, and as you can see, it matches with the less post published on my side. So you can see the trend genuinely because the community is growing and your published posts. If you don’t believe me, let’s take a look at this chart:

Published post per month (red line) vs. Monthly new Followers (blue bars)

So, as you can see, you need to invest in starting seeing your community growing. After my three great months with a lot of publishing, I could see that. After that point, when my publication rate decreased also it did the growth of the community. And, when I kept the pace steady, I was able to stay steady the growth. So, the more you publish, the more consistent you are, the stronger your community will grow.

Show me the money!!

And last… but totally not least, because I am sure this is what you would like to see the different earnings. So I will talk here about earnings before taxes so we can compare the same things and it would be more beneficial to you, but before we start a disclaimer: We had “a different year” because of the Medium Partner program that I was able to engage on some months of the year so that makes my year much more successfully as I could think, but here are the numbers, but before we start again let’s see the starting point. In December 2020, I earned $30,41 with all the posts I had published.

Earning per Month in 2021

So, as you can see, I am not making myself rich, but that’s fair. I get a lot of joy from writing and sharing my knowledge, and if any of my posts have helped you, this is more important to me than any number you can see in the graph above. But let’s talk about the numbers:

  • You can see several periods: the one where we had the boost of the Medium Partner Program is clear on the screen (August — October 2021), and others were were good because some posts generated a lot of attention. The rest set the base bar, and we can consider the “base earning.”
  • The good thing about Medium is that this is based on your monthly viewers and reading time, so all the posts you have published during all your life are counting and generating revenue each month. So again, the most you published, the most you will generate because it is not the same generate $0.01 per post when you have 100 posts than when you have 10.000 posts.
  • I have earned (before taxes) $965.06, which is an average of $87.73 / month on the 11 months I have considered for this study. So it is not bad at least to help you pay some tools you use to write and encourage you to continue on 2022 stronger.

Summary

I hope you have liked this post, and again, I tried to be as transparent as possible, and I hope you have acknowledged that. This is to show you how somebody like me who uses some of my spare time to write can earn in Medium. For sure, this will not make me rich, at least not in any currency I can trade with, but there are much more things than just $ and BTC when you talk about things that all this work is generating.

So, I hope I can count on you for our 2022 journey!

Black Friday Tech Items on AliExpress — November Edition

This month we will go with a set of items that could improve your life when you are traveling and save some money using some of the Black Friday items

Photo by Markus Winkler on Unsplash

If you also looking for items that could help you to improve your travel kit, take a look at these items I bought from AliExpress I bought during the 11/11 and Black Friday season. Join me on this journey!!

Cable Organizer for Your Team Items

If you are traveling and you are like me probably you are going to need a lot of cables and gadgets around your main device (laptop, tablet or similar thing). And in my case that always finished with a lot of things at the bottom of a bag making it impossible to find anything you need quick. With this organizer you can have everything at hand and also you can bring it inside your laptop case.

Small Bag but full of capabilities

Sometimes I need to go for a travel and I don’t want to bring everything with me, because I am not planning to work or anything, but at least some minimum stuff we need to have, right? In my case that minimum pack is: iPad Mini, Power Bank, and some cable chargers for USB-C, Lightning, and USB-Micro. So I decided to include this bag that has a lot of great features such as TSA Lock for this travels to the US and an option to have a USB-C charger to charge your devices. All with a fashion and modern look with a perfect quality look. Take a look at the item and decide for yourself.

Smart Lock for Xiaomi To Never Forget your Pin Lock

Again focus on security and safety when you are traveling I always like to have a lock with my bags to ensure that we are everything is under control. And I have the problem that I usually forgot the Pin of those locks when I am not using them on a regular basis. So, I decided to do the jump to a smart lock that works with my fingerprints to avoid this situation. Now, the only thing that I need to do is to make sure that is charged, but in the months that

Summary

I hope those items will help you on completing your travel kit so you could upgrade your trips! Also, if you have more items that are also part of your travel kit please don’t hesitate to let me know using the comments of this post!!

How To Set Up an Openshift Local Cluster ?

Learn how you can use CodeReady Containers to set up the latest version of Openshift  Local just on your computer.

Run Openshift Local
Photo by pawel szvmanski on Unsplash

At this time, we all know that the default deployment mode for any application we would like to launch will be a container-based platform and, especially, it will be a Kubernetes-based platform.

But we already know that there are a lot of different flavors of Kubernetes distributions, I even wrote an article about it that you can find here:

Some of these distributions try to follow as close as they could the Kubernetes experience but others are trying to enhance and increase the capabilities the platform provides.

Because of that sometimes it is important to have a way to really test our development in the target platform without waiting for a server-based developer mode. We know that we have in our own laptop a Kubernetes-based platform to help do the job.

minikube is the most common option to do this and it will provide a very vanilla view of Kubernetes, but something we need a different kind of platform.

[visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9taW5pa3ViZS5zaWdzLms4cy5pby9kb2NzLyIsImltYWdlX2lkIjowLCJpbWFnZV91cmwiOiIiLCJ0aXRsZSI6IiIsInN1bW1hcnkiOiIiLCJ0ZW1wbGF0ZSI6InVzZV9kZWZhdWx0X2Zyb21fc2V0dGluZ3MifQ==”]

Openshift from RedHat is becoming one of the de-facto solutions for private cloud deployments and especially for any company that is not planning to move to a public-cloud managed solution such as EKS, GKE, or AKS. In the past we have a similar project as minikube known as minishift that allow running in their own words:

Minishift is a tool that helps you run OpenShift locally by running a single-node OpenShift cluster inside a VM. You can try out OpenShift or develop with it, day-to-day, on your localhost.

[visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL2NvZGUtcmVhZHkvY3JjIiwiaW1hZ2VfaWQiOi0xLCJpbWFnZV91cmwiOiJodHRwczovL29wZW5ncmFwaC5naXRodWJhc3NldHMuY29tL2I4NTI3NjdhZTZiZjRmOTk3MWMyMTMxZGZmZGU2M2NkZDY3MzhhMTA0NDlhN2IwN2MxNzc4OGNjMjY0NDE0M2EvY29kZS1yZWFkeS9jcmMiLCJ0aXRsZSI6IkdpdEh1YiAtIGNvZGUtcmVhZHkvY3JjOiBSZWQgSGF0IENvZGVSZWFkeSBDb250YWluZXJzIGlzIGEgdG9vbCB0aGF0IG1hbmFnZXMgYSBsb2NhbCBPcGVuU2hpZnQgNC54IGNsdXN0ZXIgb3B0aW1pemVkIGZvciB0ZXN0aW5nIGFuZCBkZXZlbG9wbWVudCBwdXJwb3NlcyIsInN1bW1hcnkiOiJSZWQgSGF0IENvZGVSZWFkeSBDb250YWluZXJzIGlzIGEgdG9vbCB0aGF0IG1hbmFnZXMgYSBsb2NhbCBPcGVuU2hpZnQgNC54IGNsdXN0ZXIgb3B0aW1pemVkIGZvciB0ZXN0aW5nIGFuZCBkZXZlbG9wbWVudCBwdXJwb3NlcyAtIEdpdEh1YiAtIGNvZGUtcmVhZHkvY3JjOiBSZWQgSGF0IENvZGVSZWFkeSBDb250YWluZXJzIGlzIGEgdG9vbCB0aC4uLiIsInRlbXBsYXRlIjoidXNlX2RlZmF1bHRfZnJvbV9zZXR0aW5ncyJ9″]

The only problem with minishift is that they only support the 3.x version of Openshift but we are seeing that most of the customers are already upgrading to the 4.x release, so we can think that are a little alone in that duty, but this is far from the truth!

Because we have CodeReady Containers or CRC to help us on that duty.

[visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL2NvZGUtcmVhZHkvY3JjIiwiaW1hZ2VfaWQiOi0xLCJpbWFnZV91cmwiOiJodHRwczovL29wZW5ncmFwaC5naXRodWJhc3NldHMuY29tL2I4NTI3NjdhZTZiZjRmOTk3MWMyMTMxZGZmZGU2M2NkZDY3MzhhMTA0NDlhN2IwN2MxNzc4OGNjMjY0NDE0M2EvY29kZS1yZWFkeS9jcmMiLCJ0aXRsZSI6IkdpdEh1YiAtIGNvZGUtcmVhZHkvY3JjOiBSZWQgSGF0IENvZGVSZWFkeSBDb250YWluZXJzIGlzIGEgdG9vbCB0aGF0IG1hbmFnZXMgYSBsb2NhbCBPcGVuU2hpZnQgNC54IGNsdXN0ZXIgb3B0aW1pemVkIGZvciB0ZXN0aW5nIGFuZCBkZXZlbG9wbWVudCBwdXJwb3NlcyIsInN1bW1hcnkiOiJSZWQgSGF0IENvZGVSZWFkeSBDb250YWluZXJzIGlzIGEgdG9vbCB0aGF0IG1hbmFnZXMgYSBsb2NhbCBPcGVuU2hpZnQgNC54IGNsdXN0ZXIgb3B0aW1pemVkIGZvciB0ZXN0aW5nIGFuZCBkZXZlbG9wbWVudCBwdXJwb3NlcyAtIEdpdEh1YiAtIGNvZGUtcmVhZHkvY3JjOiBSZWQgSGF0IENvZGVSZWFkeSBDb250YWluZXJzIGlzIGEgdG9vbCB0aC4uLiIsInRlbXBsYXRlIjoidXNlX2RlZmF1bHRfZnJvbV9zZXR0aW5ncyJ9″]

Code Ready Containers purpose is to provide to you a minimal Openshift cluster optimized for development purposes. Their installation process is very very simple.

It works in a way similar to the previous VM and OVA distribution mode, so you will need to get some binaries to be able to set up this directly from Red Hat using the following direction: https://console.redhat.com/openshift/create/local

You will need to create an account but it is free and in a few steps you will get a big binary about 3–4 GB and your sign code to be able to run the platform and that’s it, in a few minutes you will have at your disposal a complete Openshift Platform ready for you to use.

CodeReadyContainers local installation on your laptop

You will be able to switch on and off the platform using the commands crc start and crc stop.

Console output of execution of the crc start command

As you can imagine this is only suitable for the local environment and in no way for production deployment and also it has some restrictions that can affect you such as:

  • The CodeReady Containers OpenShift cluster is ephemeral and is not intended for production use.
  • There is no supported upgrade path to newer OpenShift versions. Upgrading the OpenShift version may cause issues that are difficult to reproduce.
  • It uses a single node that behaves as both a master and worker node.
  • It disables the monitoring Operator by default. This disabled Operator causes the corresponding part of the web console to be non-functional.
  • The OpenShift instance runs in a virtual machine. This may cause other differences, particularly with external networking.

I hope you find this useful and that you can use it as part of your deployment process.

Kubernetes Advanced Topics: Init Containers

Discover how Init Containers can provide additional capabilities to your workloads in Kubernetes

Photo by Rinson Chory on Unsplash

There are a lot of new challenges that come with the new development pattern in a much more distributed and collaborative way, and how we manage the dependencies is crucial to our success.

Kubernetes and dedicated distributions have become the new standard of deployment for our cloud-native application and provide many features to manage those dependencies. But, of course, the most usual resource you will use to do that is the probes.

Kubernetes provides different kinds of probes that will let the platform know the status of your app. It will help us to tell if our application is “alive” (liveness probe), has been started (startup probe), and if it is ready to process requests (readiness probe).

Kubernetes Probes lifecycle by Andrew Lock (https://andrewlock.net/deploying-asp-net-core-applications-to-kubernetes-part-6-adding-health-checks-with-liveness-readiness-and-startup-probes/)

Kubernetes Probes are the standard way of doing so, and if you have deployed any workload to a Kubernetes cluster, you probably have used one. But there are some times that this is not enough.

That can be because the probe you would like to do is too complex or because you would like to create some startup order between your components. And in that cases, you rely on another tool: Init Containers.

The Init Containers are another kind of container in that they have their image that can have any tool that you could need to establish the different checks or probes that you would like to perform.

They have the following unique characteristics:

  • Init containers always run to completion.
  • Each init container must complete successfully before the next one starts.

Why would you use init containers?

#1 .- Manage Dependencies

The first use-case to use init containers is to define a relationship of dependencies between two components such as Deployments, and you need for one to the other to start. Imagine the following situation:

We have two components: a Web App and a Database; both are managed as containers in the platform. So if you deploy them in the usual way, both of them will try to start simultaneously, or the Kubernetes scheduler will define the order, so it could be possible the situation of the web app will try to start when the database is not available.

You could think that is not an issue because this is why you have a readiness or a liveness probe in your containers, and you are right: Pod will not be ready until the database is ready, but there are several things to note here:

  • Both probes have a limit of attempts; after that, you will enter into a CrashLoopBack scenario, and the pod will not try to start again until you manually restart it.
  • Web App pod will consume more resources than needed when you know the app will not start at all. So, in the end, you are wasting resources on the process.

So defining an init container as part of the web app deployment that checks if the database is available, maybe just including a database client to quickly see if the database and all the tables are appropriately populated, will be enough to solve both situations.

#2 .- Optimizing resources

One critical thing when you define your containers is to ensure that they have everything they need to perform their task and that they don’t have anything that is not required for that purpose.

So instead of adding more tools to check the component’s behavior, especially if this is something to manage at specific times, you can offload that to an init container and keep the main container more optimized in terms of size and resources used.

#3.- Preloading data

Sometimes you need to do some activities at the beginning of your application, and you can separate that for the usual work of your application, so you would like to avoid the kind of logic to check if the component has been initialized or not.

Using this pattern, you will have an init container managing all the initialization work and ensuring that all the initialization work has been performed when the main container is executed.

Initialization process sample (https://www.magalix.com/blog/kubernetes-patterns-the-init-container-pattern)

How to define an Init Container?

To be able to define an init container, you need to use a specific section of the specification section of your YAML file, as it is shown in the picture below:

apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
  - name: myapp-container
image: busybox:1.28
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
  - name: init-myservice
image: busybox:1.28
command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myservice; sleep 2; done"]
  - name: init-mydb
image: busybox:1.28
command: ['sh', '-c', "until nslookup mydb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for mydb; sleep 2; done"]

You can define as many Init Containers as you need. Still, you will note that all the init containers will run in sequence as described in the YAML file, and one init container can only be executed if the previous one has been completed successfully.

Summary

I hope this article will have provided you with a new way to define the management of your dependencies between workloads in Kubernetes and, at the same time, also other great use-cases where the capability of the init container can provide value to your workloads.

Remote Tech Worker? You Need These AliExpress Items — October Edition

This month we will go with a “Remote-worker” edition to improve your main gadgets when you are working outside your usual (home)office.

Photo by Markus Winkler on Unsplash

Last month we already cover some of the items that I bought recently that are helping me on my duty as a remote worker in the tech industry to be able to perform my activity at my best possible level without losing all the flexibility and possibilities that the working from any remote location can provide to you.

If you also looking for items that could help you to improve your remote worker kit, take a look at these items I bought from AliExpress. Go with me on this journey!!

Smaller USB-C 65W Charger

Usually, you will bring some laptop charger and probably you also have more chargers for other devices, but I always try to minimize the space needed to be able to bring as minimal things as needed but all the ones that can provide me any value, and that’s why I found and I totally recommend this smaller USB-C charger:

[visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9lcy5hbGlleHByZXNzLmNvbS9pdGVtLzEwMDUwMDE0NTc5NTAwNDMuaHRtbD9zcG09YTJnMHMuOTA0MjMxMS4wLjAuMjc0MjYzYzBRRlRPUG0iLCJpbWFnZV9pZCI6MCwiaW1hZ2VfdXJsIjoiIiwidGl0bGUiOiIiLCJzdW1tYXJ5IjoiIiwidGVtcGxhdGUiOiJ1c2VfZGVmYXVsdF9mcm9tX3NldHRpbmdzIn0=”]

45W Xiaomi External Powerbank

But even with the smallest charger, you will find yourself in places that don’t have a power adapter close to you. It could be because your favorite table in your cafe is far from the socket or just because it doesn’t have any. Or because you are working from the beach and you couldn’t any power supply in so many meters around you. Here is the solution for that situations, a battery that can charge your laptop as well as any other device that you could bring with you. It is able to power my Macbook Pro 13″ but also all the other devices that I bring with USB-C output but as well 2 USB 3.0 ports that you can use at the same time.

[visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9lcy5hbGlleHByZXNzLmNvbS9pdGVtLzQwMDEyOTY0MDU3MDMuaHRtbD9zcG09YTJnMG8ucHJvZHVjdGxpc3QuMC4wLjI0OWI3OWE2bmlidXJIJmFsZ29fcHZpZD0xMTM0NzM4My1hYTZlLTQ1MjQtODE4NS0zYTUyODYyYzQxMDImYWxnb19leHBfaWQ9MTEzNDczODMtYWE2ZS00NTI0LTgxODUtM2E1Mjg2MmM0MTAyLTYmcGRwX2V4dF9mPSU3QiUyMnNrdV9pZCUyMiUzQSUyMjEwMDAwMDE1NjU0OTcwNzMzJTIyJTdEIiwiaW1hZ2VfaWQiOi0xLCJpbWFnZV91cmwiOiJodHRwczovL2FlMDEuYWxpY2RuLmNvbS9rZi9IM2ViMWRlMTllZmE0NDIwOWIxNWQ4Y2YwMWQxNTVjZjNtL0NhcmdhZG9yLVVTQi10aXBvLUMtR0FOLWRlLWNhcmdhLXItcGlkYS02NVctNC0wLTMtMC1RQzQtMC5qcGciLCJ0aXRsZSI6IjI0Ljk4VVMgJCA0MCUgZGUgREVTQ1VFTlRPfENhcmdhZG9yIFVTQiB0aXBvIEMgR0FOIGRlIGNhcmdhIHLDoXBpZGEsIDY1VywgNCwwLCAzLDAsIFFDNC4wLCBRQywgUEQzLjAsIFVTQiBDLCBwYXJhIE1hY2Jvb2sgUHJvLCBpUGhvbmUgMTIsIFNhbXN1bmcgeSBwb3J0w6F0aWx8Q2FyZ2Fkb3JlcyBkZSB0ZWzDqWZvbm8gbcOzdmlsfCAtIEFsaUV4cHJlc3MiLCJzdW1tYXJ5IjoiwqFDb21wcmEgZsOhY2lsLCB2aXZlIG1lam9yISBBbGlleHByZXNzLmNvbSIsInRlbXBsYXRlIjoidXNlX2RlZmF1bHRfZnJvbV9zZXR0aW5ncyJ9″]

External TouchScreen for the times that you need an additional display

There are people that are so used to work with two screens that when they try to embrace the fully remote worker mode they are struggling because of that. Because when you are working outdoors it is complex to have a second screen with you… or it is not? I also use this second screen that is also a touch screen that helps me in that situation where I prefer to use a second screen. It could be because I am on a workshop and I prefer to have both displays separated or just because of the task that I am performing it is providing more value to have an additional screen. Also, it has other use-cases like connecting your gaming console to that as well 🙂

[visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9lcy5hbGlleHByZXNzLmNvbS9pdGVtLzQwMDA3NTYyMzU5MTkuaHRtbD9zcG09YTJnMHMuOTA0MjMxMS4wLjAuMjc0MjYzYzBqbVo5WmIiLCJpbWFnZV9pZCI6MCwiaW1hZ2VfdXJsIjoiIiwidGl0bGUiOiIiLCJzdW1tYXJ5IjoiIiwidGVtcGxhdGUiOiJ1c2VfZGVmYXVsdF9mcm9tX3NldHRpbmdzIn0=”]

Summary

I hope those items will help you on completing your remote worker kit so you could improve your performance! Also, if you have more items that are also part of your remote worker kit please don’t hesitate to let me know using the comments of this post!!

AccessModes Eases The Path To Stateful Workloads Running on Kubernetes Platform

Kubernetes AccessModes provides a lot of flexibility on how the different pods can access the shared volumes

Photo by Daniel Páscoa on Unsplash

All Companies are moving towards a transformation, changing the current workloads on application servers running on virtual machines on a Data Center towards a cloud-native architecture where applications have been decomposed on different services that run as isolated components using containers and managing by a Kubernetes-based platform.

We started with the easiest use-cases and workloads moving our online services, mainly REST API that works on a load-balancing mode, but the issues began when we moved other workloads to follow the same transformation journey.

Kubernetes platform was not ready at the time. Most of their improvements have been made to support more use-cases. Does that mean that REST API is much more cloud-native than an application that requires a file-storage solution? Absolutely Not!

We were confusing different things. Cloud-native patterns are valid independent of those decisions. However, it is true that in the journey to the cloud and even before, there were some patterns that we tried to replace, especially File-based. But this is not because of the usage of the file itself. It is was more about the batch approach that was closely related to the use of files that we try to replace for several reasons, such as the ones below:

  • The online approach reduces time to action: Updates and notifications come faster to the target, so components are current.
  • File-based solutions reduce the solution’s scalability: You generate a dependency with a central component that has a more complex scalability solution.

But this path is being eased, and the last update on that journey was the Access Modes introduced by Kubernetes. Access Mode defines how the different pods will interact with one specific persistent volume. The access modes are the ones shown below.

  • ReadWriteOnce — the volume can be mounted as read-write by a single node
ReadWriteOnce AccessMode Graphical Representation
  • ReadOnlyMany — the volume can be mounted read-only by many nodes.
ReadOnlyMany AccessMode Graphical Representation
  • ReadWriteMany — the volume can be mounted as read-write by many nodes
ReadWriteMany AccessMode Graphical Representation
  • ReadWriteOncePod — the volume can be mounted as read-write by a single Pod. This is only supported for CSI volumes and Kubernetes version 1.22+.
ReadWriteOncePod AccessMode Graphical Representation

You can define the access mode as one of the properties of your PVs and PVCs, as shown in the sample below:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
 name: single-writer-only
spec:
 accessModes:
 - ReadWriteOncePod # Allow only a single pod to access single-writer-only.
 resources:
 requests:
 storage: 1Gi

All of this will help us on our journey to have all our different kinds of workloads achieving all the benefits from the digital transformation and allowing us as architects or developers to choose the right pattern for our use-case without being restricted at all.

Best Technical Items I Bought Recently On AliExpress — September 2021 Edition

This month we will go with a “Remote-worker” edition to improve your main gadgets when you are working outside your usual (home)office.

Photo by Markus Winkler on Unsplash

We all know that there are a lot of things in AliExpress, some of them work as expected and you love them as soon as you get it at home and some don’t meet your expectations and they disappointed you a bit.

My idea here is to try to save some efforts on your side to try to go directly to the items that I have bought recently that I found useful not only while I was watching them on the web but also as soon as they arrived at my home:

Apple Keyboard Cover

For this working remote session that I need to work on pretty much every place, you can imagine. My usual home, vacation home, cafes, just in some table outside I have found very useful the Apple Keyboard.

It is very small in size but very comfortable for a small keyboard so it is being a critical part of my backpack so I have decided to add a cover to it.

I found this at AliExpress that was so great that I decided to also buy another one to give a gift to my sister as well.

[visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9lcy5hbGlleHByZXNzLmNvbS9pdGVtLzQwMDA2MTM0MjgxMDIuaHRtbD9zcG09YTJnMHMuOTA0MjMxMS4wLjAuMTY2ZDRjNGRYNm5HdFQiLCJpbWFnZV9pZCI6MCwiaW1hZ2VfdXJsIjoiIiwidGl0bGUiOiIiLCJzdW1tYXJ5IjoiIiwidGVtcGxhdGUiOiJ1c2VfZGVmYXVsdF9mcm9tX3NldHRpbmdzIn0=”]

100W USB-C Laptop Charger For The Car

Again related to work remotely I already said that I can work in any place imaginable. So I also do it on the car while I am not driving of course, so I decided to add to my toolchain a 100W USB-C car charger that will power not only all my USB-C items but also my Macbook Pro 13″ 2021.

[visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9lcy5hbGlleHByZXNzLmNvbS9pdGVtLzEwMDUwMDEzMDM1NDc0ODguaHRtbD9zcG09YTJnMHMuOTA0MjMxMS4wLjAuMjc0MjYzYzB4a2hNMXoiLCJpbWFnZV9pZCI6LTEsImltYWdlX3VybCI6Imh0dHBzOi8vYWUwMS5hbGljZG4uY29tL2tmL0g1MDdhMTMwYTA2YmI0YmE1YmQxODJlZGFjZGRiZDFlMncvWGlhb21pLWNhcmdhZG9yLWRlLWNvY2hlLTEwMFctNVYtM0EtRHVhbC1VU0Itci1waWRvLVFDLWFkYXB0YWRvci1kZS1jYXJnYS1wYXJhLmpwZyIsInRpdGxlIjoiMjcuMTJVUyAkIHxYaWFvbWkgY2FyZ2Fkb3IgZGUgY29jaGUgMTAwVyA1ViAzQSBEdWFsIFVTQiByw6FwaWRvIFFDIGFkYXB0YWRvciBkZSBjYXJnYSBwYXJhIGlQaG9uZSBTYW1zdW5nIEh1YXdlaSBYaWFvbWkgMTAgU21hcnRwaG9uZSBjb24gY2FibGV8Q2FyZ2Fkb3Jlc3wgLSBBbGlFeHByZXNzIiwic3VtbWFyeSI6IsKhQ29tcHJhIGbDoWNpbCwgdml2ZSBtZWpvciEgQWxpZXhwcmVzcy5jb20iLCJ0ZW1wbGF0ZSI6InVzZV9kZWZhdWx0X2Zyb21fc2V0dGluZ3MifQ==”]

And then we can complete with a USB-C to USB-C 100W cable as well

[visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9lcy5hbGlleHByZXNzLmNvbS9pdGVtLzMyODY0Mjc2MjQ3Lmh0bWw/c3BtPWEyZzBzLjkwNDIzMTEuMC4wLjI3NDI2M2MwYW5VVGl2IiwiaW1hZ2VfaWQiOjAsImltYWdlX3VybCI6IiIsInRpdGxlIjoiIiwic3VtbWFyeSI6IiIsInRlbXBsYXRlIjoidXNlX2RlZmF1bHRfZnJvbV9zZXR0aW5ncyJ9″]

iPad Second Screen Mounter for Laptop

This has changed my life completely. After Apple released the usage of Sidecar to be able to use my iPad (in my case, this will be an iPad Mini 5th Generation) as a second screen of my Macbook I was looking for a device ready to place the iPad close to the laptop so we can use it without needing much space just place it at the side of the main screen.

This component will have the great quality to do the job and also provide a high-quality look and a lot of different replaces to fit any screen of the tablet and any screen of the laptop and also provide a hole to be able to charge and connect the tablet to the laptop or to an external power source

[visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9lcy5hbGlleHByZXNzLmNvbS9pdGVtLzQwMDAyMDU5OTk1NjAuaHRtbD9zcG09YTJnMHMuOTA0MjMxMS4wLjAuMjc0MjYzYzBmSlNYcXgiLCJpbWFnZV9pZCI6MCwiaW1hZ2VfdXJsIjoiIiwidGl0bGUiOiIiLCJzdW1tYXJ5IjoiIiwidGVtcGxhdGUiOiJ1c2VfZGVmYXVsdF9mcm9tX3NldHRpbmdzIn0=”]

Let’s Face It: Top Devs Are Not In Twitch Or YouTube!!

Content creators are educating junior Devs on social platforms that probably idealize their view even when they are not top of their class.

Photo by ELLA DON on Unsplash

We are living a moment of maximum exposure to content creation with software development topics. The last news regarding this topic is the creation of a specific section regarding Software Development Channels in the popular streaming platform Twitch:

[visual-link-preview encoded=”eyJ0eXBlIjoiZXh0ZXJuYWwiLCJwb3N0IjowLCJwb3N0X2xhYmVsIjoiIiwidXJsIjoiaHR0cHM6Ly9nYW1ld29ybGRvYnNlcnZlci5jb20vMjAyMS8wOS8wMy90d2l0Y2gtaW50cm9kdWNlcy1uZXctc29mdHdhcmUtZ2FtZS1kZXZlbG9wbWVudC1nYW1pbmctY2F0ZWdvcnktYm9vc3RpbmctZ2FtZWRldi1jb250ZW50LWRpc2NvdmVyYWJpbGl0eSIsImltYWdlX2lkIjotMSwiaW1hZ2VfdXJsIjoiaHR0cHM6Ly9nYW1ld29ybGRvYnNlcnZlci5jb20vd3AtY29udGVudC9wcmV2aWV3cy9wb3N0L3R3aXRjaC1pbnRyb2R1Y2VzLW5ldy1zb2Z0d2FyZS1nYW1lLWRldmVsb3BtZW50LWdhbWluZy1jYXRlZ29yeS1ib29zdGluZy1nYW1lZGV2LWNvbnRlbnQtZGlzY292ZXJhYmlsaXR5LnBuZyIsInRpdGxlIjoiVHdpdGNoIGludHJvZHVjZXMgbmV3IOKAnFNvZnR3YXJlICYgR2FtZSBEZXZlbG9wbWVudOKAnSBzdHJlYW1pbmcgY2F0ZWdvcnksIGJvb3N0aW5nIGdhbWVkZXYgY29udGVudCBkaXNjb3ZlcmFiaWxpdHkgfCBHYW1lIFdvcmxkIE9ic2VydmVyIiwic3VtbWFyeSI6IlR3aXRjaCBhbm5vdW5jZWQgdGhhdCBpdOKAmXMgaW50cm9kdWNpbmcgbmV3IFNvZnR3YXJlICYgR2FtZSBEZXZlbG9wbWVudCBzdHJlYW1pbmcgY2F0ZWdvcnkgdG8gaW1wcm92ZSB0aGUgZGlzY292ZXJhYmlsaXR5IG9mIGNvbnRlbnQgZm9yIGRldnMuIiwidGVtcGxhdGUiOiJ1c2VfZGVmYXVsdF9mcm9tX3NldHRpbmdzIn0=”]

And that is just an additional stage on the trend that we are seeing in the past years where the content created and the people investing their time in sharing their knowledge on the internet are exploding.

The caption of the Software and Game Development from Twitch.tv

You pretty much can find a Live Channel that will teach or share with you a lot of knowledge and experience on all the topics regarding software development. No matter what topic you are looking for, you will have it there. For example, I just went earlier today. I found the following live channels: Making an MMO from scratch, Maya Development, Java Programming, GoLang programming, CMS programming using Django and Python, and much more.

This is a great thing. We live in an era where we have great quality content at our disposal, especially in our industry, that will help us improve our skills and knowledge base. All these content creators are the key contributors to that. And those are increasing the popularity of the best content creators reaching outstanding levels.

But that situation is also creating the circumstance that junior devs or just people starting a new skill start to think that the people showing their view or experience regarding a topic are the top devs in that area, and that is very far from the truth. So it is leaning to a dangerous situation.

To be clear: Content Creators are not usually Great Devs. Normally there are regular devs with awesome communication skills. And that is more important with a will to share what they know with their audience. Even that there are earning money with this, to be fair, they have an unambiguous determination to play a social role of sharing the knowledge with the world, and that’s very important.

This is not just trying to shame content creators because of their quality; this is happening in all industries. Best knowledge shared is not usually top of their practice. You can think of any topic: Mathematics, Physics but also Sports. Are the best narrators of Football the best players? No, for sure.

But because of this reason, it is important to keep in mind this where we are attending to those channels or viewing those videos that they are not the true experts, so you should always cross-check their statements to be sure this is aligned with the best practices and processes.

If you would like to see what real good devs are doing, it is much easier to find it close to where the code resides. Using platforms such as GitHub or SourceForge top star projects that provide value and reading their conversations or analyzing their commits, we will provide you a much clearer view of what real top developers are doing.

GitHub projects providing an incredible source of knowledge and good practices

Another option is subscribing to the mailing list of those projects where you can see real developer discussion, the main points they are doing, and the reasoning behind those decisions.

A mailing list will help you understand what the reasoning behind some important software decisions is

This is much important knowledge rather than what you can see in a live session of somebody programming on a streaming platform, but this is also part of the process because you will need to have the foundation to be ready to understand what the discussion is referring to and to that introduction level the way that this awesome content creator is sharing the knowledge is the best way for anyone to understand it and assimilate it.

Is It gRPC As Fast Versus REST As All The Industry Is Talking About?

Let’s find if gRPC protocol that is raising as one of the strong alternatives against traditional REST service can show all the benefits that people are claiming

Photo by Omar Flores on Unsplash

If you already have been around the tech industry lately you know that gRPC is becoming one of the most popular protocols for integration among components, mainly microservices because of its benefits comparing with other standard solutions such as REST or SOAP.

There are other alternatives that are also becoming much popular on a daily basis such as GraphQL but today’s focus is on gRPC. If you would like to take a look at GraphQL benefits you can take a look at the article displayed below:

[visual-link-preview encoded=”eyJ0eXBlIjoiaW50ZXJuYWwiLCJwb3N0Ijo3MywicG9zdF9sYWJlbCI6IlBvc3QgNzMgLSBXaHkgU2hvdWxkIFlvdSBVc2UgR3JhcGhRTCBmb3IgeW91ciBBUElzPyIsInVybCI6IiIsImltYWdlX2lkIjoyNDQ5LCJpbWFnZV91cmwiOiJodHRwOi8vYWxleGFuZHJlLXZhenF1ZXouY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzAxL2ltZ182MWVkMTNiNDAwOGMxLmpwZyIsInRpdGxlIjoiV2h5IFNob3VsZCBZb3UgVXNlIEdyYXBoUUwgZm9yIHlvdXIgQVBJcz8iLCJzdW1tYXJ5IjoiMyBiZW5lZml0cyBvZiB1c2luZyBHcmFwaFFMIGluIHlvdXIgQVBJIHRoYXQgeW91IHNob3VsZCB0YWtlIGludG8gY29uc2lkZXJhdGlvbi4gUGhvdG8gYnkgTWlrYSBCYXVtZWlzdGVyIG9uwqBVbnNwbGFzaCBXZSBhbGwga25vdyB0aGF0IEFQSXMgYXJlIHRoZSBuZXcgc3RhbmRhcmQgd2hlbiB3ZSBkZXZlbG9wIGFueSBwaWVjZSBvZiBzb2Z0d2FyZS4gQWxsIHRoZSBsYXRlc3QgcGFyYWRpZ20gYXBwcm9hY2hlcyBhcmUgYmFzZWQgb24gYSBkaXN0cmlidXRlZCBhbW91bnQgb2YgY29tcG9uZW50cyBjcmVhdGVkIHdpdGggYSBjb2xsYWJvcmF0aXZlIGFwcHJvYWNoIGluIG1pbmQgWyZoZWxsaXA7XSIsInRlbXBsYXRlIjoidXNlX2RlZmF1bHRfZnJvbV9zZXR0aW5ncyJ9″]

So, what are the main benefits that are usually exposed regarding gRPC usage and why companies such as Netflix or Uber is using it?

  • Lightweight messages
  • High performance
  • Streaming pattern support

So it seems a good alternative from a renovated version of the traditional remote procedure call that has been using on the 90’s but let’s try it in some real-use cases to try to measure the benefits that everyone is claiming, especially regarding performance and lightweight of the messages, so I decided it to define a very easy scenario of a request/response pattern between two application and test them with a normal REST call and a gRPC call.

Simple Test Scenario Definition

Tecnology Stack

We are going to use TIBCO Flogo to create the application to use a visual no-code to simplify the application generating. If you would like to take a look more in detail about this technology please take a look at the post below:

[visual-link-preview encoded=”eyJ0eXBlIjoiaW50ZXJuYWwiLCJwb3N0IjoxMjIsInBvc3RfbGFiZWwiOiJQb3N0IDEyMiAtIFRJQkNPIEZsb2dvIEludHJvZHVjdGlvbiIsInVybCI6IiIsImltYWdlX2lkIjoyNzcyLCJpbWFnZV91cmwiOiJodHRwOi8vYWxleGFuZHJlLXZhenF1ZXouY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzAxLzFWUzBwMG9MOTNPR1N6YjhHMUtLekNRLnBuZyIsInRpdGxlIjoiVElCQ08gRmxvZ28gSW50cm9kdWN0aW9uIiwic3VtbWFyeSI6IkZsb2dvIGlzIHRoZSBuZXh0IG5ldyB0aGluZyBpbiB0aGUgZGV2ZWxvcGluZyBhcHBsaWNhdGlvbnMgaW4gYSBjbG91ZC1uYXRpdmUgd2F5LiBTaW5jZSBpdHMgZm91bmRhdGlvbiBoYXMgYmVlbiBkZXNpZ25lZCB0byBjb3ZlciBhbGwgdGhlIG5ldyBjaGFsbGVuZ2VzIHRoYXQgd2UgbmVlZCB0byBmYWNlIHdoZW4gZGVhbGluZyB3aXRoIG5ldyBjbG91ZC1uYXRpdmUgZGV2ZWxvcG1lbnQuIFNvLCBwbGVhc2UsIGlmIHlvdSBvciB5b3VyIGVudGVycHJpc2UgaXMgc3RhcnRpbmcgaXRzIG1vdmVtZW50IHRvIHRoZSBjbG91ZCBpdOKAmXMgdGhlIG1vbWVudCB0byBbJmhlbGxpcDtdIiwidGVtcGxhdGUiOiJ1c2VfZGVmYXVsdF9mcm9tX3NldHRpbmdzIn0=”]

So, we are going to create two application: First one will be activated on a scheduled bases each 100 ms and it will call using gRPC to the second application that we just return the data to the call application hard-coded to avoid any other third party system could impact on the performance measure.

Regarding the data that we are going to transmit this will be a simple Hello world approach. First application will send a name to the second application that it will return the “Hello, name, This is my gRPC (or REST) application” to be able to print that in console.

REST Approach

Below are shown the application for the test case using TIBCO Flogo technology to define it:

Flogo Applications for the REST case

As you could see it is simple and intuitive we have the first application activated by a Trigger and with a REST Invoke activity and then a Log Message to print what it has been received. Second application is even simpler, just expone the REST API and return the hard-coded data.

gRPC Approach

gRPC approach will be a little bit more difficult because we need to create the protobuf definition for the gRPC client and server. So we will start with a simple definition of the Hello service as you can see in the picture below:

Protobuf definition for the gRPC Test Scenario

And based on that we can generate the different applications both the client and the server of this simple test:

gRPC Apps in TIBCO Flogo

As you can see application are very similar to the one for REST just changing one protocol for the other and that is one of the awesome things of TIBCO Flogo, we can just have a simple implementation without knowing the details of the newest protocols but getting all the advantages that they provide.

Test Results

After 100 executions of the REST service those are the metrics we were able to get using the Prometheus exporter that the tool provides:

Prometheus metrics for the REST Scenario Execution

So we have around 4 ms for the client flow and 0.16 ms for the REST service itself, so they are already low numbers. Do you really think that a gRPC version could improve it? Let’s watch it. Here are the same metrics for 100 invokes of the second flow using gRPC:

Prometheus metrics for the gRPC Scenario Execution

So as you can see the improvement is awesome even for a simple service running on localhost. The gRPC service had a metrics of 0.035 ms vs the 0.159 that it had the REST version pretty much an improvement of 77.98% vs the REST API, this is just incredible.. but what about the client? It went from 4.066 ms to at 0.89 ms what means another 78.1% of improvement.

Graphical Representation of Both Scenario Executions

So the rationale should be if this can be done with a simple service where data exchanged is pretty much nothing, what it can do when the payload is big? the options are just unimaginable..

Summary

We tested the good things we have heard online of the gRPC method that most of the cutting-edge technologies are using today and we have been impressed just a simple scenario comparing it with the performance of a REST interface. For sure gRPC has its cons like any other option but in terms of performance and message optimization the data speaks for itself, it is just amazing. Stay tuned for new tests regarding gRPC benefits and also some of its cons to try to see if could be a great option for your next development!

API Terminology: We Are Using Wrong the Term API and It is Driving Me Crazy

When marketing steals a technical word, it leads to madness and a complete change of its meaning.

Photo by Tengyart on Unsplash

API is the next on the list. It is always the same pattern regarding technical terms when they go beyond the normal really techy forum and reach a more “mainstream” level in the industry. As soon as this happens, the term starts to lose its meaning, and it starts to be like a wildcard word that can be very different things to very different people. If you don’t believe me come with me to this set of examples.

You can argue that terms need to evolve and that the same word can mean different things as long as the industry continues to evolve, and that is true. For example, the package term that in the past is referred to way to package software to be able to share it usually through mail or an FTP server as a TAR package it has been re-defined with the eclosion of the package managers in the 90’s and after that with the artifact management to handle dependencies with approaches such as Maven, npm and so on.

But I am not talking about these examples. I am talking about when a term is used a lot because it is fancy and means evolution, or modernization, so you try to use it as much as possible, even to mean different things. And one of these terms is API.

API stands for Application Programming Interface, and as its name states, it is an interface. Since the beginning of computer time, it has been created to reference the contract and how you need to interact with a specific application program. However, the term was mainly used for libraries to define their contract for other applications that needed the capability.

So If we would like to show this in a graphical form, this is the API referring to:

With the eclosion of the REST Services and mobile apps, the term of API will expand beyond its normal usage and become a normal word in today’s world because all devs need some API to do work. Starting from the common capabilities such as Authentication until just concrete capabilities are needed to perform its work.

The explosion of services that exposed their own API required a way to provide central management to exposed interfaces, especially when we start to publish some of these capabilities to the outside world. We needed to secure them, identify who was using them and at what level, and a way for devs to find the needed documentation to be able to use their services. And because of that, we have the rise of API Management solutions.

And then microservices came to revolutionize how applications are performed, and that suppose that now we have more services each of them providing its own API at a level that pretty much we have one service for one capability and because of that one API for one capability something as you can see in the picture below:

And the usage of API became so popular that some people started to use the term to refer to the interface and the whole service implementing this API, which leads and is leading to a lot of confusion. So because of that, when we talk now about API Development, we can talk about very different things:

  • We can talk about the definition and model of the interface itself and its management.
  • We can talk about a service implementation with an API exposed to be used and managed appropriately.
  • We can even talk about a service that uses several APIs as part of its capability implementation.

And the main problem when we use the same term to differ to so many different things is that the word loses all its meaning and with that to complicate our understanding in any conversation and that leads to many problems we could avoid just using the proper words and try to keep all the buzz and marketing a little bit out of the technical conversations.