Billionaire Robert Friedland drops the reality check:
We need to mine 10,000 years of copper in the next 18 years.
The world has absolutely no clue about the supply squeeze we are facing.
Save this video to stay ahead of the curve.
There’s a whole generation of programmers who have not been taught how to make modular software without using a network stack.
We used to teach modularity and loose coupling between in-memory modules.
SO much faster and without having to adopt network failures.
I've blogged about ZLinq, my new OSS for C# and Unity. It is a Zero-Allocation LINQ Library for .NET and covers all .NET 10 LINQ methods.
https://t.co/vsVYaclGHX
I made much of the furniture in my home. My wife cooks much of our food from
basic ingredients. I write my own software, I write my own textbooks, my own articles.
The idea that you are somehow ‘richer’ if you let other people do everything while specializing in your narrow field of expertise is pure utilitarian thinking. It is naive like only people who live on campuses can be.
What economists are telling you is that work has no innate value. It is all about what the work produces.
So if Joe receives 1000$ from the government, he is just as rich as if he had built something and made 1000$ of profit.
That’s obviously incorrect.
It matters to me that people use my software to solve their problems and that they are willing to pay me for my efforts. That has innate value above the money itself.
I an not looking to substitute my income for a passive one. I want to do work that matters.
I really feel sorry for the folks doing meaningless work such as preparing PowerPoint slides that nobody wants to watch.
Having expertise and applying it to get an income matters.
The food that my wife cooks is unlike what the market provides. Yes, she can outearn the market value of her food with her professional activities… but that’s silly. We want her food, not someone’s else.
Could my family be richer in financial terms? Absolutely. Why would I be building furniture instead of doing my professional work? That’s nonsense. Well that’s nonsense to someone who thinks that furniture is furniture. My furniture is unlike what the market provides.
At the level of a people… the same applies.
It matters to me as someone from Quebec that Denis Villeneuve is from Quebec.
It matters to Americans that they were first on the Moon.
Culture matters. What your kids do matter.
It is not all about GDP.
𝗪𝗵𝘆 𝗱𝗼𝗲𝘀 𝗚𝗼𝗼𝗴𝗹𝗲 𝗿𝗲𝗰𝗼𝗺𝗺𝗲𝗻𝗱 𝗠𝗼𝗱𝘂𝗹𝗮𝗿 𝗠𝗼𝗻𝗼𝗹𝗶𝘁𝗵𝘀 𝗶𝗻𝘀𝘁𝗲𝗮𝗱 𝗼𝗳 𝗠𝗶𝗰𝗿𝗼𝘀𝗲𝗿𝘃𝗶𝗰𝗲𝘀?
In the last decade, we have seen a massive trend of using microservices everywhere. We were building systems for a few hundred or thousand users and wanted to know how to make a system for millions of users. This was over-engineering and needed to be corrected. Why it was wrong? Because the development lasted long and we created incredibly complex systems, hard to maintain. This is especially true for startups that must go fast and stay simple.
A recent paper by authors from Google found that most of their developers split binaries for one of the following reasons: it improves performance, fault tolerance, and abstraction boundaries and allows for flexible rollouts.
Yet, splitting applications into microservices has its challenges:
🔸 𝗜𝘁 𝗵𝘂𝗿𝘁𝘀 𝗽𝗲𝗿𝗳𝗼𝗿𝗺𝗮𝗻𝗰𝗲. The overhead of serializing data and sending it across the network is increasingly becoming a bottleneck
🔸 𝗜𝘁 𝗵𝘂𝗿𝘁𝘀 𝗰𝗼𝗿𝗿𝗲𝗰𝘁𝗻𝗲𝘀𝘀. It is incredibly challenging to reason about the interactions between every deployed version of every microservice.
🔸 𝗜𝘁 𝘁𝗮𝗸𝗲𝘀 𝘄𝗼𝗿𝗸 𝘁𝗼 𝗺𝗮𝗻𝗮𝗴𝗲. Rather than having a single bi-nary to build, test, and deploy, developers must manage 𝑛 different binaries, each on their release schedule.
🔸 𝗜𝘁 𝗳𝗿𝗲𝗲𝘇𝗲𝘀 𝗔𝗣𝗜𝘀. Once a microservice establishes an API, it becomes easier to change by breaking the other services that consume the API.
So, they proposed the following approach:
𝟭. 𝗪𝗿𝗶𝘁𝗲 𝗺𝗼𝗻𝗼𝗹𝗶𝘁𝗵𝗶𝗰 𝗮𝗽𝗽𝗹𝗶𝗰𝗮𝘁𝗶𝗼𝗻𝘀 that are modularized into logically distinct components. A component is a long-lived agent, similar to an actor.
𝟮. 𝗟𝗲𝘃𝗲𝗿𝗮𝗴𝗲 𝗮 𝗿𝘂𝗻𝘁𝗶𝗺𝗲 𝘁𝗼 𝗱𝘆𝗻𝗮𝗺𝗶𝗰𝗮𝗹𝗹𝘆 and automatically assign logistical components to physical processes based on execution characteristics. So, if both components are in the same OS process, they are called regular method calls, but if they are co-located, calls are executed as RPCs over the network. Runtime decides whether these modules should be collocated or moved to different machines (and scaled, etc.).
𝟯. 𝗗𝗲𝗽𝗹𝗼𝘆 𝗮𝗽𝗽𝗹𝗶𝗰𝗮𝘁𝗶𝗼𝗻𝘀 𝗮𝘁𝗼𝗺𝗶𝗰𝗮𝗹𝗹𝘆, preventing different versions of an application from interacting.
This approach consists of two main parts: a programming model with abstraction that allows developers to write modularized applications and a runtime for building, deploying, and optimizing these applications. They claim that it reduces application latency by up to 15x and costs by up to 9x by simplifying application management and deployment.
If you want to check the framework implementing the approach from the paper, check https:// serviceweaver. dev/.
What do you think about this approach? Does it look like EJBs or CORBA?
#microservices
We lost a titan of programming languages, programming methodology, software engineering and hardware design. Niklaus Wirth passed away on the first of January. We mourn a pioneer, colleague, mentor and friend.
You (probably) don't need Micro-Frontends
This is the "Distributed and Decoupled Spectrum"
Make sure that you explore all the other options before trying to implement a fully distributed system