Shared posts
¿Es España un país SEGURO?, los MEJORES EJÉRCITOS .../ Juan Astray
Un episodio crudo, revelador y lleno de historias que muy pocos se atreven a contar.
Marcas de tiempo:
00:00 Introducción
00:03:37 ¿Cómo prepararse para un conflicto bélico o desastre?
00:12:12 ¿Qué habría que hacer en caso de una invasión?
00:20:27 Diferencia entre un soldado y un mercenario
00:28:32 ¿Cuánto se cobra si eres contratista?
00:36:10 Misión peligrosa en Irak
00:48:12 ¿Es España un país seguro?
00:49:19 ¿Están los policías mal preparados?
00:56:22 ¿Cuál es el mejor ejército del mundo?
01:03:02 Ranking de los mejores ejércitos
01:06:37 Asesinato de Charlie Kirk
01:14:18 De las misiones más peligrosa
Dentro de poco habrá un ‘Bad Luck Brian’ al que le caerá un Starlink en la cabeza.


Cada lanzamiento deja tras de sí un rastro de piezas, tanques y etapas que orbitan sin control. Cuando su trayectoria se degrada, la gravedad hace el resto: el material comienza a descender, ardiendo en el aire. Idealmente, los restos deberían desintegrarse por completo o caer en áreas designadas del océano. Pero como muestra este caso, no siempre sucede. @gizmodo
Ver post completo: Dentro de poco habrá un ‘Bad Luck Brian’ al que le caerá un Starlink en la cabeza.
Subir el SMI sin atender a la realidad salarial del país ha sido un error.



Se ha premiado al umbral bajo a costa de desincentivar a la zona media.
Ver post completo: Subir el SMI sin atender a la realidad salarial del país ha sido un error.
El Roto, en El País, sección de viñetas [web] [facebook] [instagram] [twitter]
Mastering Workloads in Kubernetes with Kueue — part 1: Queues and Priorities
Mastering Workloads in Kubernetes with Kueue — part 1: Queues and Priorities

If you run batch workloads like AI/ML training, scientific computing, or data processing on Kubernetes, you’ve likely encountered a frustrating reality: the default Kubernetes scheduler, while brilliant for services, is not designed for the complex demands of batch processing. Jobs get stuck, critical tasks wait for trivial ones, and expensive resources like GPUs sit idle.
This is the first in a series on solving these problems with Kueue, the open-source, Kubernetes-native job queuing system. We will start from the ground up, first understanding why a tool like Kueue is necessary, and then building a mature, policy-driven platform step-by-step. In this first guide, we will establish the bedrock of control: Predictable Isolation.
Why Vanilla Kubernetes Falls Short for Batch Workloads
The standard Kubernetes scheduler is a marvel of engineering for stateless, long-running services like web servers and APIs. However, when it comes to batch jobs that run to completion, its limitations become apparent.
Imagine a restaurant with no host or waiting list. This is essentially how the default scheduler works for pods, leading to resource fragmentation and deadlocks:
- No Concept of a “workload”: Kubernetes schedules individual Pods, not entire Jobs. This is the fundamental flaw: a Job requiring 100 Pods might only have 10 scheduled while the other 90 wait for resources. These 10 Pods are now blocking resources but cannot execute their work until the entire group is assembled.
- Resource Deadlock and Inefficiency: The partially scheduled Job creates a resource deadlock. The resources consumed by the early Pods are wasted, and the remaining cluster capacity is too small to fulfill another waiting Job, leading to poor cluster utilization.
- Limited Fairness and Priority: While Pods have a basic priority, the system lacks the advanced mechanism to guarantee resources for critical teams or enforce limits across different organizational groups. Resources are often distributed on a first-come, first-served basis, intensifying the chaos described above.
This leads to chaos, inefficiency, and frustration. Expensive hardware resources are poorly utilized, and platform administrators are forced to manually intervene.
Introducing Kueue
Kueue acts as the intelligent host for your cluster. It introduces a unified job queuing and resource reservation system. Crucially, Kueue intercepts Jobs before their Pods are even created. It places them in a managed queue and only admits the entire Workload to the cluster when it can guarantee that all necessary resources are available for the entire group of Pods. This prevents the resource deadlock and chaos caused by partial scheduling.
The core concepts
To understand Kueue, you need to know its five key building blocks:
- Workload: Kueue wraps any supported pod-creating resource (like a Job, StatefulSet, or custom resources) into its own API object called a Workload. This is the fundamental unit of work that Kueue manages. It ensures that the entire group of Pods, representing one batch task, is treated as one cohesive unit.
- Local Queue: This is the namespaced, user-facing entry point. When a user submits a job, they simply target a LocalQueue in their namespace. Its main job is to act as a funnel to a ClusterQueue.
- Cluster Queue: This is the heart of Kueue, managed by the cluster administrator. It is a cluster-scoped object that defines a pool of resources, sets quotas, and configures complex rules for sharing, borrowing, and preemption. This is where the real power lies.
- Resource Flavor : This allows you to label and manage different kinds of resources. For example, you could have a spot-gpu flavor and an ondemand-gpu flavor, and Kueue can manage quotas for each independently.
- Workload Priority Class: A global, cluster-level object that defines a job’s importance with a numerical weight. When resources are scarce, Kueue uses this to decide which Workload gets admitted first.
With these tools, we can move from chaos to a system that is fair, efficient, and aligned with business goals. Let’s see it in action!
Prerequisites
Naturally, this tutorial necessitates a Kubernetes cluster with Kueue already deployed. Setting this up on Google Cloud is straightforward, requiring only a few commands:
gcloud container clusters create "lekube-restaurant" \
--num-nodes=3 \
--machine-type="e2-standard-8" \
--region="us-central1"
helm install kueue oci://registry.k8s.io/kueue/charts/kueue \
--version=0.14.1 \
--namespace kueue-system \
--create-namespace \
--wait --timeout 300s
Our modest setup will feature a Kubernetes cluster with three nodes, each equipped with 8 vCPUs and 32 GB of RAM — ample resources to commence our initial operations. Please note that I am deploying Kueue version 0.14.1 via Helm. While this is the most current version at the time of writing, it is advisable to consult the official documentation for any subsequent updates.
The Grand Opening of “Le Kube”
Imagine you’ve just opened a trendy new restaurant, “Le Kube.” You have 16 tables of a single type (ResourceFlavor). On opening night, you have two types of customers (WorkloadPriorityClass):
- VIPs: These are high-profile guests who have reservations and expect immediate seating. Their satisfaction is critical to your restaurant’s success.
- Walk-ins: These are your regular customers. They are important for business, but they understand they might have to wait for a table.
Without a host, it’s chaos. Walk-ins rush to grab any open table, leaving a group of frustrated VIPs waiting in the lobby. Your restaurant is full, but your most valuable customers are unhappy. You need a system.
This restaurant scenario directly translates to the challenges of a modern AI platform built on our 16-CPU GKE cluster: VIPs are your Production Tier workloads: Critical model training or data processing jobs that must run on time. Walk-ins are your Research Tier workloads: Important for innovation, but they cannot block production jobs. Tables are your CPUs: The finite resources your Workloads need to run.
One Queue to Rule Them All
Your first instinct is to form a single line and simply let VIPs cut to the front. In Kueue, this translates to a single Cluster Queue where jobs are ordered by their Workload Priority.
Define Flavors and Priorities
First, let’s define our “table” type (ResourceFlavor) and our customer tiers (WorkloadPriorityClass). In Kueue, a higher numerical value for a priority class means higher priority.
kubectl apply -f - <<EOF
apiVersion: kueue.x-k8s.io/v1beta1
kind: ResourceFlavor
metadata:
name: "default-flavor"
---
apiVersion: kueue.x-k8s.io/v1beta1
kind: WorkloadPriorityClass
metadata:
name: "walk-in"
value: 100
---
apiVersion: kueue.x-k8s.io/v1beta1
kind: WorkloadPriorityClass
metadata:
name: "vip"
value: 200 # Higher value = higher priority
EOF
Set up the queue
Now, we create a single ClusterQueue for the whole restaurant (all 16 CPUs) and a LocalQueue for customers to line up in. Crucially, we enable preemption, which allows a newly arrived VIP to take a table from a Walk-in.
kubectl apply -f - <<EOF
apiVersion: kueue.x-k8s.io/v1beta1
kind: ClusterQueue
metadata:
name: "restaurant-cq"
spec:
namespaceSelector: {} # Allow all namespaces
preemption:
withinClusterQueue: "LowerPriority" # Allow higher priority to preempt lower
resourceGroups:
- coveredResources: ["cpu"]
flavors:
- name: "default-flavor"
resources:
- name: "cpu"
nominalQuota: 16 # All 16 tables are available
---
apiVersion: kueue.x-k8s.io/v1beta1
kind: LocalQueue
metadata:
namespace: "default"
name: "main-entrance-lq"
spec:
clusterQueue: "restaurant-cq"
EOF
A Night at “Le Kube”
Let’s see this in action. First, a large party of “Walk-ins” arrives and takes all 16 tables:
kubectl apply -f - <<EOF
apiVersion: batch/v1
kind: Job
metadata:
name: walk-in-job
labels:
kueue.x-k8s.io/queue-name: "main-entrance-lq"
kueue.x-k8s.io/priority-class: "walk-in"
spec:
parallelism: 16 # Takes all 16 tables
completions: 16
template:
spec:
containers:
- name: dummy-job
image: gcr.io/k8s-staging-perf-tests/sleep:v0.1.0
args: ["600s"]
resources:
requests:
cpu: 1
restartPolicy: Never
EOF
The job starts running. Now, a smaller but more important “VIP” party arrives, needing 4 tables:
kubectl apply -f - <<EOF
apiVersion: batch/v1
kind: Job
metadata:
name: vip-job
labels:
kueue.x-k8s.io/queue-name: "main-entrance-lq"
kueue.x-k8s.io/priority-class: "vip"
spec:
parallelism: 4 # Needs 4 tables
completions: 4
template:
spec:
containers:
- name: dummy-job
image: gcr.io/k8s-staging-perf-tests/sleep:v0.1.0
args: ["60s"]
resources:
requests: { cpu: 1 }
restartPolicy: Never
EOF
Validating the preemption
Let’s confirm that Kueue is doing its job. Check the status of the workloads: for each of the jobs the workload object has been created containing queue specific information:
NAME QUEUE RESERVED IN ADMITTED FINISHED AGE
job-vip-job-54020 main-entrance-lq restaurant-cq True 7s
job-walk-in-job-1b295 main-entrance-lq False 7s
You may also observe the status of the cluster queue — one workload is still pending:
kubectl get clusterqueue restaurant-cq -o wide
NAME COHORT STRATEGY PENDING WORKLOADS ADMITTED WORKLOADS
restaurant-cq BestEffortFIFO 1 1
We’ll examine what happened to the walk-in job in detail:
kubectl describe workloads job-walk-in-job-1b295
...
Normal QuotaReserved 40s kueue-admission Quota reserved in ClusterQueue restaurant-cq, wait time since queued was 1s
Normal Admitted 40s kueue-admission Admitted by ClusterQueue restaurant-cq, wait time since reservation was 0s
Normal EvictedDueToPreempted 40s kueue-admission Preempted to accommodate a workload (UID: [some_random_number], JobUID: [some_random_number]) due to prioritization in the ClusterQueue
Normal Preempted 40s kueue-admission Preempted to accommodate a workload (UID: [some_random_number], JobUID: [some_random_number]) due to prioritization in the ClusterQueue
Warning Pending 39s kueue-admission couldn't assign flavors to pod set main: insufficient unused quota for cpu in flavor default-flavor, 4 more needed
Our walk-ins were initially admitted, but had to be evicted due to prioritization. There were no more free tables, therefore they had to wait until vips finish. Fortunately after several minutes all the workloads completed:
kubectl get workloads
NAME QUEUE RESERVED IN ADMITTED FINISHED AGE
job-vip-job-54020 main-entrance-lq restaurant-cq True True 18m
job-walk-in-job-1b295 main-entrance-lq restaurant-cq True True 18m
The Velvet Rope (Multiple, Isolated Queues)
The single-line approach works, but it can lead to problems. What if VIPs keep showing up, constantly interrupting the Walk-ins? The Walk-ins might never get to finish their meals, leading to c̶u̶s̶t̶o̶m̶e̶r̶ resource starvation. This can also lead to “priority inflation” where everyone tries to claim they are a VIP.
Divide the restaurant
A better model is to create two separate, isolated sections in your restaurant: a “VIP Lounge” and a “General Dining” area, each with its own Cluster Queue. We’ll create two distinct queues. We’ll give 8 tables to the VIPs and 8 to the Walk-ins. By not putting them in a cohort (a concept we’ll explore in the next article), we ensure they are completely independent. What happens in the VIP Lounge stays in the VIP Lounge 😀:
kubectl apply -f - <<EOF
apiVersion: kueue.x-k8s.io/v1beta1
kind: ClusterQueue
metadata:
name: "vip-lounge-cq"
spec:
namespaceSelector: {}
resourceGroups:
- coveredResources: ["cpu"]
flavors:
- name: "default-flavor"
resources:
- name: "cpu"
nominalQuota: 8 # 8 dedicated tables for VIPs
---
apiVersion: kueue.x-k8s.io/v1beta1
kind: ClusterQueue
metadata:
name: "general-dining-cq"
spec:
namespaceSelector: {}
resourceGroups:
- coveredResources: ["cpu"]
flavors:
- name: "default-flavor"
resources:
- name: "cpu"
nominalQuota: 8 # 8 dedicated tables for Walk-ins
---
apiVersion: kueue.x-k8s.io/v1beta1
kind: LocalQueue
metadata:
namespace: "default"
name: "vip-entrance-lq"
spec:
clusterQueue: "vip-lounge-cq"
---
apiVersion: kueue.x-k8s.io/v1beta1
kind: LocalQueue
metadata:
namespace: "default"
name: "general-entrance-lq"
spec:
clusterQueue: "general-dining-cq"
EOF
You may now submit jobs to distinct queues. VIP jobs occupy their dedicated 8-table lounge without interrupting on General Dining’s 8 tables, ensuring predictable isolation.
Summary and What’s Next
We’ve just implemented two fundamental strategies for managing workloads with Kueue:
- Single Queue with Priorities:
- Pros: Simple to set up. Flexible, as high-priority work can use the entire cluster if needed.
- Cons: Can lead to starvation of low-priority work. Doesn’t provide guaranteed resources for different teams.
- Multiple Isolated Queues:
- Pros: Guarantees a slice of resources for each class of work (predictable isolation). Prevents resource starvation.
- Cons: Can be inefficient. If the VIP Lounge is empty, its 8 tables sit idle, even if there’s a long line for General Dining.
This brings us to the next challenge. What if we could get the best of both worlds? An approach where the VIPs have their guaranteed tables, but if those are full, they could borrow unused tables from the General Dining section?
In the next article, we’ll introduce Cohorts, Kueue’s powerful feature for enabling resource borrowing and lending, to build an even more dynamic and efficient restaurant. Stay tuned!
Mastering Workloads in Kubernetes with Kueue — part 1: Queues and Priorities was originally published in Google Cloud - Community on Medium, where people are continuing the conversation by highlighting and responding to this story.
How to Work with TOML Files in Python
TOML (Tom's Obvious Minimal Language) has become the modern standard for configuration files in Python projects. It's more expressive than INI files and cleaner than JSON or YAML.
Since Python 3.11, the standard library includes the tomllib module for reading and parsing TOML files. TOML offers several advantages over other configuration formats. It supports complex data types like arrays and nested tables while remaining human-readable. Many Python projects, including Poetry and setuptools, use pyproject.toml for configuration.
And in this tutorial, we’ll learn how to parse TOML files in Python.
Prerequisites
To follow along with this tutorial, you'll need:
-
Python 3.11 or higher: The
tomllibmodule is part of the standard library starting from Python 3.11 -
Basic Python knowledge: Familiarity with dictionaries, file I/O, and basic syntax
-
A text editor or IDE: Any editor to create and edit TOML and Python files
Table of Contents
Understanding the TOML Format
TOML files organize data into tables (similar to INI sections) but with more powerful features. Let's create a sample configuration to understand the syntax.
Create config.toml:
# Application configuration
title = "My Application"
version = "1.0.0"
[database]
host = "localhost"
port = 5432
username = "app_user"
password = "secure_password"
databases = ["myapp_db", "myapp_cache"]
pool_size = 10
ssl_enabled = true
[server]
host = "0.0.0.0"
port = 8000
debug = false
allowed_hosts = ["localhost", "127.0.0.1", "example.com"]
[logging]
level = "INFO"
format = "%(asctime)s - %(levelname)s - %(message)s"
handlers = ["console", "file"]
[cache]
enabled = true
ttl = 3600
max_size = 1000
[features]
enable_api = true
enable_webhooks = false
rate_limit = 100
This TOML file shows key features: simple key-value pairs, tables (sections in brackets), arrays (square brackets with comma-separated values), and different data types including strings, integers, booleans, and arrays.
How to Read TOML Files with tomllib
The tomllib module is part of Python's standard library starting from version 3.11. It provides a simple interface for loading TOML files like so:
import tomllib
with open('config.toml', 'rb') as f:
config = tomllib.load(f)
# Access values
app_title = config['title']
db_host = config['database']['host']
db_port = config['database']['port']
print(f"Application: {app_title}")
print(f"Database: {db_host}:{db_port}")
print(f"Config keys: {config.keys()}")
Output:
Application: My Application
Database: localhost:5432
Config keys: dict_keys(['title', 'version', 'database', 'server', 'logging', 'cache', 'features'])
Note that tomllib requires opening files in binary mode ('rb'). The load() function parses the TOML file and returns a regular Python dictionary.
Values are automatically converted to appropriate Python types: strings remain strings, integers become ints, booleans become True/False, and arrays become lists. Next, let’s take a closer look at working with different data types.
How to Work with TOML Data Types
TOML's type system maps cleanly to Python's built-in types. Here's how to work with different value types:
import tomllib
with open('config.toml', 'rb') as f:
config = tomllib.load(f)
# Strings
app_title = config['title']
# Integers
db_port = config['database']['port']
cache_ttl = config['cache']['ttl']
# Booleans
debug_mode = config['server']['debug']
cache_enabled = config['cache']['enabled']
# Arrays (become Python lists)
databases = config['database']['databases']
allowed_hosts = config['server']['allowed_hosts']
print(f"Databases: {databases}")
print(f"Type of databases: {type(databases)}")
print(f"Debug mode: {debug_mode}, type: {type(debug_mode)}")
With tomllib, you don't need special getter methods like ConfigParser. The returned dictionary contains properly typed Python objects ready to use as seen:
Databases: ['myapp_db', 'myapp_cache']
Type of databases: <class 'list'>
Debug mode: False, type: <class 'bool'>
How to Build a TOML Config Manager
For production applications, wrapping TOML loading in a configuration class provides better error handling and validation. Here’s how you can do it:
import tomllib
from pathlib import Path
class TOMLConfig:
def __init__(self, config_file='config.toml'):
self.config_file = Path(config_file)
if not self.config_file.exists():
raise FileNotFoundError(f"Config file not found: {config_file}")
with open(self.config_file, 'rb') as f:
self.config = tomllib.load(f)
def get(self, key, default=None):
"""Get a top-level configuration value"""
return self.config.get(key, default)
def get_section(self, section):
"""Get an entire configuration section"""
if section not in self.config:
raise ValueError(f"Section '{section}' not found")
return self.config[section]
You can use the TOMLConfig class like so:
config = TOMLConfig('config.toml')
# Get top-level values
app_title = config.get('title')
version = config.get('version')
# Get entire sections
db_config = config.get_section('database')
server_config = config.get_section('server')
print(f"{app_title} v{version}")
print(f"Database config: {db_config}")
This configuration class provides a clean interface to your TOML file. It validates that the file exists before trying to parse it and provides methods to safely access configuration values.
Running the above code gives this output:
My Application v1.0.0
Database config: {'host': 'localhost', 'port': 5432, 'username': 'app_user', 'password': 'secure_password', 'databases': ['myapp_db', 'myapp_cache'], 'pool_size': 10, 'ssl_enabled': True}
How to Handle Missing Values Safely
Your code needs to handle missing configuration gracefully. Here's how to provide defaults and validate required values:
import tomllib
def load_config_safe(config_file='config.toml'):
try:
with open(config_file, 'rb') as f:
return tomllib.load(f)
except FileNotFoundError:
print(f"Config file {config_file} not found, using defaults")
return {}
except tomllib.TOMLDecodeError as e:
print(f"Error parsing TOML: {e}")
raise
config = load_config_safe('config.toml')
# Get with defaults
db_host = config.get('database', {}).get('host', 'localhost')
db_port = config.get('database', {}).get('port', 5432)
debug = config.get('server', {}).get('debug', False)
print(f"Database: {db_host}:{db_port}")
print(f"Debug: {debug}")
Output:
Database: localhost:5432
Debug: False
This pattern uses chained .get() calls with defaults. If a section or key doesn't exist, you get the default value instead of a KeyError.
Conclusion
When working with TOML files in Python, follow these guidelines:
-
Always open in binary mode: The
tomllibmodule requires binary mode ('rb') when opening files. -
Use nested tables for organization: Take advantage of TOML's ability to nest tables for complex configurations.
-
Provide defaults for optional settings: Use
.get()with default values to make your application more flexible.
Consider using TOML for new projects. If you're starting fresh, TOML is a great choice for Python configuration. Happy coding!
El brillo de la automatización de muchas tiendas en Tokio tiene un secreto: manos humanas conectadas desde Filipinas
A miles de kilómetros de Japón, en un edificio de oficinas del distrito financiero de Manila, un grupo de jóvenes vigila el interior de tiendas donde nunca ha estado. Frente a ellos, los monitores muestran los movimientos de brazos robóticos que colocan bebidas en estantes refrigerados. Son los mismos robots que muchos clientes japoneses creen totalmente autónomos. En realidad, su aparente independencia depende de estos operadores filipinos que, conectados por Internet, corrigen errores de estas máquinas. Cuando una lata cae, toman el control.
etiquetas: japón, automatización, robots, filipinas
» noticia original (www.xataka.com)
40 años de 'David, el Gnomo', una serie española que fue censurada en EEUU y nos hizo llorar como magdalenas
La obra de Claudio Biern Boyd, que marcó la infancia de varias generaciones, se emitió por primera vez el 26 de octubre de 1985. Analizamos su éxito y la repercusión que tuvo en otros países.
etiquetas: david el gnomo, claudio biern boyd, 40 aniversario
» noticia original (www.vanitatis.elconfidencial.com)
Francia se ha acordado del canon digital y quiere subir la apuesta: cobrar por tus descargas de Netflix y otras plataformas
En la era del streaming, ya no se copia, se reproduce. En principio, es justo lo que tenía que ayudar a la industria. Y claro, ingresos por esta vía van cayendo. Ahí entra la nueva idea: gravar el modo offline de las plataformas. Si descargar temporalmente un capítulo implica hacer una copia, razonan desde París, entonces debería pagarse también por ello. Sería, literalmente, pagar dos veces por lo mismo.
etiquetas: francia, canon digital, descargas
» noticia original (www.genbeta.com)
Un baño de realidad. ¿Cómo es posible que nadie diga nada sobre el futuro?
Desde el punto de vista económico, no existe la variante de escasez de recursos. La teoría dice que si un recurso tiene dificultades de producción, la solución son precios más altos y ya está. Los límites geológicos o tecnológicos no existen y puesto que la creación de dinero puede llegar al infinito, nunca habrá problemas con cualquier recurso.
La realidad es ligeramente distinta.
Vamos a dar un repaso al problema del petróleo, por ejemplo.
El último informe de Rystad es bastante dramático, aunque haya pasado totalmente desapercibido.
La entrada es sublime ...
"Según el último estudio de Rystad Energy, publicado este mes, la cantidad global de reservas probadas de petróleo (las llamadas reservas P1) solo cubrirá 14 años de suministro de petróleo al ritmo actual de extracción. Dado que se espera que la reposición de reservas por nuevos descubrimientos de petróleo sea de tan solo alrededor del 10%, la producción mundial de petróleo se encamina a un déficit masivo en la próxima década."
Vamos a analizar el gráfico.
Oferta.
Nos muestra la producción de petróleo (en realidad empezamos mal, porque es la producción de todos los líquidos, incluyendo los LGN) prevista hasta 2050, dividida en cuatro grandes partes, cada una con un color.
En azul oscuro está la producción prevista sin ninguna inversión adicional desde 2024.
En azul más claro, la producción invirtiendo en el mantenimiento de la producción en los campos ya desarrollados (dedican el 90% de la inversión actual).
En verde-gris, la producción que vendrá a partir de 2025, procedente de proyectos en ejecución (ya sabéis Brasil, Guyana, Golfo de México, etc.)
En morado, los proyectos descubiertos, pero que no están en desarrollo.
Puesto que han incluido los LGN y probablemente biocombustibles y ganancias de refinería, la curva debería reducirse en esa misma cantidad, unos 20 millones de b/d, al menos.
El área bajo la curva hasta 2050, teniendo en cuenta solo el petróleo supone alrededor de 600.000 millones de barriles, frente a una reserva 2P de 710.000 millones.
La tabla con las reservas por categoría es este.
Es decir, teniendo en cuenta que los últimos barriles no se extraerán (demasiado caros o complejos de extraer), en 2050 no quedará ni una gota de petróleo, lo que induce a pensar que la curva está sobre-estimada y probablemente la producción real sea bastante más baja.
Además la parte de los descubrimientos en morado alcanza entre 15 y 20 millones en 2030, cuando la lista de proyectos conocidos hasta 2030 se queda en solo 8 millones. La producción real en 2030 (teniendo en cuenta que en 2025 llegaremos a los 85 millones de b/d) está inflada entre 7 y 13 millones y de la distribución de la curva y tenemos que suponer que la producción de petróleo seguirá subiendo hasta 2028-2029, lo que es algo bastante complicado con los proyectos en desarrollo. Al final, parece que están incluidos notables desarrollos de LGN (insisto, no son petróleo).
La producción de petróleo en 2030 debería estar en torno a 78-80 millones de b/d, muy por debajo de la actual (85 millones), con una caída apreciable en el periodo 2029-2030.
La clave la da el propio informe de Rystad.
"En 2024, se extrajeron 30.100 millones de barriles de petróleo a nivel mundial, mientras que se estima que los nuevos descubrimientos de petróleo ascenderán a 1.800 millones de barriles, lo que equivale a una tasa de reemplazo del 6%."
Y no se piensen que esa tasa tan baja es solo un año ... la exploración solo apunta a un 10% de la tasa de reposición en el futuro.
"Rystad prevé que la reposición de reservas por parte de nuevos proyectos petroleros convencionales sea inferior al 30 % de la producción en los próximos cinco años, mientras que la exploración solo repondría alrededor del 10 %."
Es evidente que sin nuevos descubrimientos estamos completamente perdidos, como muestra el gráfico.
Demanda.
Nos proporcionan tres escenarios.
Baja demanda.
Sobra petróleo hasta al menos 2035 y la curva desde entonces se alinea bastante bien con la oferta. Pero este escenario es casi el Net Zero, que ya sabemos no se está cumpliendo, ni en 2025.
Media demanda.
Sería un escenario parecido al APS de la IEA, donde se supone que las políticas anunciadas, se terminan cumpliendo. De momento, tampoco este escenario es el real, ni tiene visos de cumplirse en los próximos años, sobre todo con la presión de Trump al resto del mundo.
Alta demanda.
Este parece ser el escenario STEPS que si se ajusta a lo que estamos viendo. Mientras no tengamos datos fiables que cambian la tendencia, este escenario es el único que podemos considerar actualmente.
Análisis.
Si admitimos el escenario de alta demanda y suponemos que la oferta sigue el gráfico, los problemas empiezan en 2030, con una caída tipo acantilado Séneca a lo largo de la década siguiente, para terminar en 2040 con un gap de 35 millones de b/d.
De alguna forma IEA está avisando de lo que viene en su último informe.
"IEA advierte que sin nuevas inversiones en el petróleo (además de la ya existentes), el mundo tendría un déficit de 45 millones de b/d en 2050."
Hablar de déficit de 35 o 45 millones de b/d es una broma. No puede ser. Si la oferta no puede subir a ningún precio o si la demanda no puede pagar precios excesivos, significa que la demanda va a caer a los niveles de la oferta sin remedio.
Pero en 2035 el gap ya alcanzaría los 10-15 millones de b/d y tampoco es asumible.
Es decir, nos quedan cinco-diez años para evitar el mayor colapso de la historia. Un déficit de 3 o 4 millones de b/d (2030) puede superarse con restricciones, racionamientos, eliminación del petróleo para algunos países pobres y elevación de precios. Ya esta situación nos coloca en una crisis económica brutal, agravada por el exceso de deuda, en un punto donde solo hay dos posibilidades.
1º). Los BC se han empleado fondo y han emitido billones de dólares y euros para sostener el sistema , a costa de una inflación muy elevada. Los precios del petróleo suben por encima de los 100-150$ y se terminan cargando el sistema, causando una crisis económica tipo 1929. La demanda de petróleo se mantiene a duras penas, hasta el inicio de la crisis económica.
2º). Después de un intento inicial por parte de los BC, con inyección masiva de dinero, la confianza en el sistema se pierde y entramos en hiperinflación. El colapso deflacionario viene a continuación y tenemos una depresión peor que en 1929. La demanda de petróleo se hunde.
En cualquiera de los dos casos, 1929 es la referencia.
Pero este solo es el panorama para 2030-2035.
La crisis con mayúsculas.
Si superamos este periodo con una crisis tipo 1929, después viene lo peor. El hundimiento de la producción de petróleo por falta de inversión, aleja toda posibilidad de recuperación en años posteriores. El colapso es total a partir de 2035, con un decrecimiento sostenido, un aumento del paro generalizado, un descenso en la producción de todo tipo de materiales (supone que la transición energética tampoco es posible), y una continuación de la pérdida de poder adquisitivo, hasta acercarnos al cabo de los años, a un modelo tipo Cuba, sin recursos, en todo Occidente.
[La posibilidad de una guerra en este escenario es muy alta. Nadie se va a conformar con lo que tiene, si puede conseguir por la fuerza más energía. Y desgraciadamente, ya nos estamos preparando para ello. Por supuesto, de cara a la opinión pública, los preparativos son la respuesta a una amenaza real (Rusia) y no tienen nada que ver con una futura lucha por los recursos. Mientras tanto, Trump manda a su mejor portaaviones al Caribe en una curiosa "operación anti-droga".]
No hay inversiones, no hay producción, cae todo incluso la cantidad de alimentos disponibles, la sanidad, la educación, el comercio mundial se hunden sin remedio.
Y todo esto es increíblemente rápido. Un sistema sobre-apalancado muestra su debilidad, cuando el dinero no sirve. Y el colapso subsiguiente fomenta una retroalimentación perversa en todos los ámbitos.
Para los seguidores de la transición energética, ya he comentado que ni está ni se le espera, incluso cumpliendo sus mejores sueños. Y respecto a sustituir el petróleo por el carbón o el gas natural, llegaría demasiado tarde. No se puede cambiar una infraestructura global en unos pocos años.
Hemos tenido tiempo, desde los límites del crecimiento (1972) para prepararnos, pero no hemos hecho caso, excepto para practicar el escarnio y la burla constantes, porque el final del crecimiento no llegaba nunca. Acertaron en casi todo, con una precisión milimétrica y nos negamos a aceptar el resultado. Ahora toca pagar las consecuencias, de nuestro exasperante optimismo patológico.
Hemos vivido por encima de nuestras posibilidades durante mucho tiempo. Y no hay milagros. El sueño de una noche de verano proporcionado por la impresora mágica se desvanecerá en cuanto la primera escasez real aparezca en el mundo occidental.
Todos los análisis realizados sobre el futuro, se basan en una situación de abundancia de las fuentes energéticas (y del resto de recursos), pero nadie está teniendo en cuenta que el sistema capitalista no funciona en un entorno de decrecimiento energético. Y la continua apelación a la deuda, solo ha servido para ganar tiempo, consumir recursos del futuro y crear una imagen onírica de la situación real. Es curioso que las bolsas mundiales establezcan récord históricos continuados, mientras el futuro nunca ha sido tan negro. La ceguera crónica que ha protagonizado el sistema al completo, durante décadas, precederá a la negrura más absoluta, con solo unos pocos años de diferencia.
Faltan solo unos pocos años para comenzar el descenso, pero da igual, se seguirá negando todo. Los indicios están aquí, las señales parpadean en rojo por todas partes. Cada uno debe asumir como quiere vivir los próximos años.
Es hora de despertar.
Solo un opinión.
PD Para los "optimistas".
¿Alguien se cree que esta subida desesperada de la deuda pública americana es casualidad?
En 2008 se acabó el sistema real (aceleración salvaje en el crecimiento de la deuda) y entramos en Matrix. Desde entonces todo el crecimiento es artificial, producto de una deuda sin control que necesita cada vez más dólares de incremento de deuda, por dólar de crecimiento de PIB, dando lugar a este tipo de curvas de crecimiento exponencial insostenible.
Recordar que la deuda ha alcanzado los 38 billones de dólares en un par de meses.
Por pura lógica, el valor del dinero tiende a cero, cuando el crecimiento de la deuda tiende a infinito.
Bloqueos por el fútbol: LaLiga envía “advertencias” a pequeños comercios que denuncian caídas de sus webs los fines de semana
Cada fin de semana con balón rodando, a algunos comercios online en España se les para el mostrador digital. No es una metáfora: sus webs dejan de cargar para parte de los clientes justo en las horas clave de consumo. La dueña de LB Store GR, una tienda de material de gimnasia rítmica, decidió quejarse en X: “¿Qué culpa tenemos los pequeños comercios de las páginas piratas de fútbol? Cuando más activos están nuestros clientes, bloquean IPs y nadie puede comprar”. A las pocas semanas, recibió una carta certificada de LaLiga.
etiquetas: bloqueos, laliga, adverencias, cloudflare, carta certificada, libertad
» noticia original (noticias.madrid)
El “basurazo” de Almeida fracasa entre el rechazo de los vecinos y el mal cálculo del Ayuntamiento
El pasado mes de septiembre, a los buzones de centenares de miles de madrileños empezó a llegar una carta del Ayuntamiento con el anuncio de la incorporación de una nueva tasa de basuras. En la misiva, el gobierno municipal notificaba el cobro de la Tasa de Gestión de Residuos (TGR) y estimaba que, de media, el tributo ascenderá a los 140 euros anuales por vivienda y a los 300 euros en el caso de los locales comerciales. Efectivamente, en los recibos ya aparece desglosado un concepto que especifica el cargo por “prestación del servicio de gesti
etiquetas: almeida, pp, tasa de basuras
» noticia original (www.elsaltodiario.com)
La cruda realidad de los niños sin techo: "Nadie se explica que esto ocurra en una ciudad como Pamplona"
Menores que duermen a la intemperie en Pamplona y Comarca, colegios que se enfrentan a esa realidad. Durante veinte días, hemos acompañado a tres familias sin hogar que tratan de abrirse paso entre la incertidumbre y el frío. Al caer la noche, hay niños que se ven obligados a buscar refugio bajo aleros, en portales, en naves industriales abandonadas o incluso en coches prestados. Lo hacen sin mantas, sin una higiene adecuada... Las entidades sociales ya lo denunciaron en septiembre: hay familias con niños durmiendo en las calles de Pamplona.
etiquetas: pamplona, iruña, sintecho, personas, sin hogar
» noticia original (www.diariodenavarra.es)
Cuando viene uno del PP con el "cueto"de que China es una amenaza
Así respondió Enrique Santiago a la demagogia y la hipocresia del PP sobre China.
etiquetas: pp, china, amenaza, enrique, santiago. pc
» noticia original (www.youtube.com)
Evangélicos en el poder y el sueño de una nación cristiana en Estados Unidos
Las redes religiosas detrás de la nueva derecha no son marginales, son estructuras centenarias que buscan transformar la democracia en teocracia, con una cruzada moral que tilda de “woke” todo lo que no encaje con los ideales conservadores de los años 50. Trump fusiona religión con poder estatal y corporativo. Este año creó la Oficina de la Fe, liderada por su asesora espiritual, quien afirmó que “decirle ‘no’ al presidente Trump es decirle ‘no’ a Dios”. A lo largo de la historia, las peores atrocidades se han cometido en nombre de Dios.
etiquetas: política, religión, estados unidos, derecha, woke
» noticia original (www.perfil.com)
Hasta 16 detenidos en tres provincias, entre ellas Huelva, por explotar a extranjeros en labores agrícolas en "una situación similar a la esclavitud"
La Sección Tercera de la Audiencia de Jaén tiene previsto juzgar a once personas acusados de formar parte de una organización delictiva dedicada a la captación de personas en el Este de Europa, de Rumanía y Moldavia principalmente, para su explotación laboral en trabajos agrícolas. A los once procesados, el Ministerio Fiscal les reclama penas que van de los diez a los tres años de cárcel. El juicio se celebrará en la Audiencia de Jaén este martes 28 de octubre.
etiquetas: tribunales, explotación labotal, inmigración
» noticia original (www.huelvainformacion.es)
¿Por qué celebran? La gente común de Gaza explica cómo ganaron la guerra
¿Por qué, entonces, mi muro de redes sociales sigue mostrando a palestinos celebrando abiertamente su victoria? ¿Por qué los niños de Gaza, aunque demacrados y exhaustos por la hambruna, siguen bailando la tradicional debka? ¿Por qué Maria Hannoun, de 5 años y una de las muchas personas influyentes de Gaza, sigue recitando poesía de Mahmoud Darwish y enviando mensajes apasionados al presidente estadounidense Donald Trump de que Gaza jamás será derrotada?
etiquetas: palestina, resistencia, opinión, ramzy baroud
» noticia original (nuevarevolucion.es)
El desmantelamiento de la Escuela Andaluza de Salud Pública agravó el caos en la crisis de cribados
El profesor Joan Carles March advierte que fue cuando se privatizó el servicio, finalizó la trazabilidad de los avisos a mujeres.
etiquetas: desmantelamiento, escuela, andaluza, salud, pública, caos, crisis, cribados
» noticia original (www.lavozdelsur.es)
¿Qué le debe la alcaldesa de La Adrada al juez Peinado?: “No se explica si no tiene una recompensa”
La situación del chalet que el juez Juan Carlos Peinado, encargado de investigar a la mujer de Pedro Sánchez, Begoña Gómez, tiene en La Adrada (Ávila), sigue dando que hablar después de que ElPlural.com publicara sobre terreno las primeras informaciones sobre su posible irregularidad.
etiquetas: peinado, pp, juez, begoña gómez
» noticia original (www.elplural.com)
Un segundo testigo presencial confirma que Mazón llegó al Palau de la Generalitat casi a las 20.00 y cambiado de ropa
Un segundo testigo presencial desmonta las nuevas excusas de Mazón sobre su paradero en la tarde de la dana y apuntala la tesis de que no atendió en ningún momento la emergencia desde su despacho en la tarde de la dana.
etiquetas: dana, mazon
» noticia original (www.eldiario.es)
¿Por qué Nestlé es la compañía más malvada del mundo? ENG
Siempre que hay una discusión sobre las corporaciones más corruptas y poco éticas del mundo, Nestlé siempre encabeza la lista. Nestlé es una de las empresas más grandes del mundo, con cientos de productos que se venden en todo el mundo. No es de extrañar que Nestlé domine el mercado de alimentos procesados y envasados.
etiquetas: nestlé, basura, dominio del mercado, influencia política, falta de ética
» noticia original (startuptalky.com)
Categórico triunfo de La Libertad Avanza: gana en la provincia de Buenos Aires y obtiene más del 40% de los votos en todo el país
El oficialismo obtiene un fuerte respaldo en las urnas, incluso en la provincia de Buenos Aires, donde hace menos de dos meses había perdido por más 14 puntos. El Presidente iniciará la segunda etapa de su mandato con un mayor respaldo en el Congreso y oxígeno para realizar los cambios de Gabinete. Con más del 90% de las mesas escrutadas, el jefe de Gabinete, Guillermo Francos, informó que la Libertad Avanza obtuvo el 40,84% de los votos. Fuerza Patria y afines 31.64%.
etiquetas: argentina, elecciones
» noticia original (www.infobae.com)
Basura espacial: un fragmento de cohete cae en Australia y alerta al mundo
Podría ser parte del tanque de combustible o la etapa superior de un cohete, una pieza que logró sobrevivir al descenso a más de 20.000 km/h y al abrasador calor de la reentrada atmosférica. El hallazgo no causó daños ni heridos, pero dejó al descubierto un problema que crece.
etiquetas: basura espacial, fragmento, cohete, australia
» noticia original (es.gizmodo.com)
Roig dice que los afectados en la DANA se sintieron "desamparados" cuando él mismo obligó a sus empleados a trabajar aquel día
E presidente de Mercadona, Juan Roig, ha declarado que "hace un año nos sentimos desamparados" por la DANA del 29 de octubre, cuando él mismo obligó a sus empleados a acudir a sus puestos de trabajo aquel día. En un acto llamado ‘El orgullo de ser empresario', realizado en su propio auditorio, el Roig Arena, el dueño de la cadena de supermercados ha asegurado que “fue un fenómeno natural y que no se supo decir o no sé cuántos, pero lo peor es que luego nos sentimos desamparados", ignorando que desde las 7:36 de la mañana AEMET lanzó la alerta..
etiquetas: juan roig, afectados, desamparados, obligó, sus empleados, trabajar
» noticia original (www.diario-red.com)
Los hechos provocan el arrepentimiento de los votantes de extrema derecha
Un nuevo experimento social sugiere algo tan contraintuitivo como revelador: cuando se informa a la ciudadanía sobre el verdadero alcance de las brechas salariales, no son los progresistas quienes cambian de opinión, sino los votantes de extrema derecha. El hallazgo, contenido en el estudio Polarización política, desigualdad salarial y preferencias por la redistribución del Instituto de Investigación Económica y Social Aplicada de Melbourne, al que Diario Sabemos ha tenido acceso, cuestiona uno de los supuestos más arraigados de la política
etiquetas: estudio, extrema derecha, votantes, democracia
» noticia original (diariosabemos.com)
Grand Popo: cuando un país le roba la costa a su vecino
Togo y Benín son dos países limítrofes con una pequeña costa en el Golfo de Guinea. Sus huellas en el mapa son suficientemente similares para parecer territorios hermanos, como si alguien hubiera partido en dos un único país. Sobre el papel, ambos parecen tener una costa semejante, quizá ligeramente más larga la de Benín, pero si nos acercamos un poco en seguida detectamos algo raro: Benín le ha robado un tercio de su costa a Togo, a través de una estrechísima franja de terreno que, en su punto más angosto, apenas alcanza los setecientos metros
etiquetas: togo, benín, grand popo, costa
» noticia original (fronterasblog.com)
10Â000 carteleras de películas descargables de los años 40, 50, 60 y 70
Catálogo con 10 000 carteleras de cine, libremente descargables, en alta resolución.
etiquetas: películas, posters, carteleras
» noticia original (hrc.contentdm.oclc.org)







