Building Edge AI Infrastructure with KVM, openSUSE, and Ollama
Edge AI infrastructure is transforming how we deploy machine learning workloads, bringing computation closer to data sources while maintaining privacy and reducing latency. This comprehensive guide demonstrates building an edge analytics platform using KVM virtualization, openSUSE Leap (15.6), K3s, and Ollama for local AI inference.
Our architecture leverages a KVM homelab infrastructure originally set-up by my Google Summer of Code Mentor. This set-up was built to create specialized AI nodes in a distributed cluster, with Longhorn providing shared storage for models and application data. Each component is chosen for reliability, scalability, and edge-specific requirements.
Prerequisites and Architecture Overview
This setup requires:
- KVM hypervisor with existing infrastructure
- Minimum 8GB RAM per VM (16GB recommended for larger models)
- Network storage for distributed file system
- Basic Kubernetes and networking knowledge
The final architecture includes multiple specialized nodes, distributed storage, monitoring, and load balancing for high-availability AI inference.
VM Foundation Setup
Creating the Edge AI Node
Start with a clean VM deployment using established automation tools:
cd ~geeko/bin/v-i
sudo ./viDeploy -c ./VM-K3s.cfg -n edge-ai-01
System Configuration
Complete the openSUSE installation with consistent settings across all nodes:
Installation Settings:
- Keyboard: US
- Timezone: UTC
- Root password:
gsoc(consistent across cluster)
Network Configuration:
# Configure static networking
cd /etc/sysconfig/network
cp ifcfg-eth1 ifcfg-eth0
vi ifcfg-eth0
Edit network configuration:
STARTMODE=auto
BOOTPROTO=static
IPADDR=172.xx.xxx.xx/24
Set hostname and disable firewall for edge deployment:
hostnamectl set-hostname edge-ai-01
echo "172.xx.xxx.xx edge-ai-01.local edge-ai-01" >> /etc/hosts
systemctl disable --now firewalld
systemctl restart network
Essential Package Installation
Install required components for Kubernetes and distributed storage:
zypper refresh
zypper install -y open-iscsi kernel-default e2fsprogs xfsprogs apparmor-parser
systemctl enable --now iscsid
Storage Configuration for Longhorn
Prepare dedicated storage for distributed AI workloads:
lsblk
fdisk /dev/vdb
# Create new GPT partition table and primary partition
mkfs.ext4 /dev/vdb1
mkdir -p /var/lib/longhorn
echo "/dev/vdb1 /var/lib/longhorn ext4 defaults 0 0" >> /etc/fstab
mount -a
systemctl reboot
Kubernetes Cluster Integration
Joining the Edge AI Cluster
Access your Rancher management interface to create a dedicated AI cluster:
- Navigate to Rancher WebUI:
http://172.16.200.15 - Create → Custom cluster
- Name:
edge-ai-cluster - Select K3s version
- Copy and execute registration command:
curl -fsSL https://get.k3s.io | K3S_URL=https://172.xx.xxx.xx:6443 K3S_TOKEN=your-token sh -
Verify cluster connectivity:
kubectl get nodes
kubectl get pods --all-namespaces
Ollama Installation and Configuration
Installing Ollama
Deploy Ollama for local LLM inference:
curl -fsSL https://ollama.com/install.sh | sh
systemctl enable --now ollama
Cluster Access Configuration
Configure Ollama for distributed access:
mkdir -p /etc/systemd/system/ollama.service.d
vi /etc/systemd/system/ollama.service.d/override.conf
Add cluster binding:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Apply configuration:
systemctl daemon-reload
systemctl restart ollama
Model Deployment Strategy
Deploy models based on hardware capabilities:
# For 8GB RAM nodes - quantized models
ollama pull phi3
# For 16GB+ RAM nodes - higher precision
ollama pull phi3
# Verify installation
ollama list
Quantized models (q4_K_M) reduce memory usage by ~75% while maintaining performance for edge analytics.
Edge Analytics Platform Deployment
Repository Setup
Clone the Edge Analytics ecosystem:
git clone https://github.com/rudrakshkarpe/Edge-analytics-ecosystem-workloads-openSUSE.git
cd Edge-analytics-ecosystem-workloads-openSUSE
Configuration for Cluster Deployment
Update Kubernetes manifests for distributed deployment:
vi k8s-deployment/streamlit-app-deployment.yaml
Modify Ollama endpoint:
- name: OLLAMA_BASE_URL
value: "http://172.xx.xxx.xx:11434"
Application Deployment
Deploy in correct order for dependency resolution:
kubectl apply -f k8s-deployment/namespace.yaml
kubectl apply -f k8s-deployment/storage.yaml
kubectl apply -f k8s-deployment/streamlit-app-deployment.yaml
kubectl apply -f k8s-deployment/ingress.yaml
Verify deployment status:
kubectl get pods -n edge-analytics
kubectl logs -f deployment/edge-analytics-app -n edge-analytics
Distributed Storage with Longhorn
Longhorn Deployment
Deploy distributed storage system:
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
Wait for all pods to be running:
kubectl get pods -n longhorn-system -w
Configure Default Storage Class
Set Longhorn as default for persistent volumes:
kubectl patch storageclass longhorn -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Multi-Node Scaling and Specialization
Additional Node Deployment
Scale the cluster with specialized nodes:
Node IP Assignment:
- edge-ai-02:
172.16.220.11 - edge-ai-03:
172.16.220.12
Node Labeling for Workload Distribution
Label nodes based on capabilities:
# GPU-enabled nodes
kubectl label node edge-ai-02 node-type=gpu-inference
# CPU-optimized nodes
kubectl label node edge-ai-03 node-type=cpu-inference
Specialized Model Deployment
Deploy appropriate models per node type:
# GPU nodes - larger models
ssh root@172.16.220.11
ollama pull phi3
# CPU nodes - optimized quantized models
ssh root@172.16.220.12
ollama pull phi3
Production Monitoring and Operations
Monitoring Stack Deployment
Deploy comprehensive observability:
kubectl apply -f k8s-deployment/monitoring.yaml
Service Access
For development and testing access:
# Edge Analytics application
kubectl port-forward svc/edge-analytics-service 8501:8501 -n edge-analytics
# Prometheus metrics
kubectl port-forward svc/prometheus 9090:9090 -n monitoring
# Grafana dashboards
kubectl port-forward svc/grafana 3000:3000 -n monitoring
Operational Commands
Model Management:
# Check model status across cluster
kubectl exec -it daemonset/ollama -n edge-analytics -- ollama list
# Update models cluster-wide
kubectl exec -it daemonset/ollama -n edge-analytics -- ollama pull llama3:latest
Scaling Operations:
# Horizontal scaling
kubectl scale deployment edge-analytics-app --replicas=3 -n edge-analytics
# Resource monitoring
kubectl top nodes
kubectl top pods -n edge-analytics
Access Points and Integration
Service URLs:
- Edge Analytics UI:
http://172.xx.xxx.xx:8501 - Rancher Management:
http://172.16.200.15 - Prometheus Metrics:
http://172.xx.xxx.xx:9090 - Grafana Dashboards:
http://172.xx.xxx.xx:3000(admin/admin)
Key Advantages of This Architecture
- Privacy-First: All AI inference happens locally, ensuring data never leaves your infrastructure
- Scalable: Kubernetes orchestration enables easy horizontal scaling as workloads grow
- Resilient: Distributed storage and multi-node deployment provide high availability
- Cost-Effective: Utilizes existing hardware infrastructure without cloud dependencies
- Flexible: Support for various model sizes and quantization levels based on hardware
Troubleshooting Common Issues
VM Connectivity:
virsh list --all
virsh console edge-ai-01
Kubernetes Issues:
kubectl describe node edge-ai-01
kubectl get events --sort-by=.metadata.creationTimestamp
Ollama Service Problems:
systemctl status ollama
journalctl -u ollama -f
curl http://172.xx.xxx.xx:11434/api/tags
This edge AI infrastructure provides a robust foundation for deploying local LLMs with enterprise-grade reliability, enabling organizations to leverage AI capabilities while maintaining complete control over their data and compute resources.
For advanced configurations and additional features, explore the complete repository documentation and consider integrating with external tools like vector databases for enhanced RAG capabilities.
Huge shoutout to my mentors Bryan Gartner, Terry Smith, Ann Davis for making this set-up possible.
Resumen de las Novedades de KDE ⚙️ Gear 25.08 Summertime Edition
Hoy os traigo una entrada recopilatoria, fruto de los experimentos visuales que estoy realizando en el blog. Se trata del resumen de las novedades de KDE ⚙️ Gear 25.08 Summertime Edition, un simple compendio de las funcionalidades más destacadas de este lanzamiento veraniego compuesto de 4 pequeños artículos.
Resumen de las Novedades de KDE ⚙️ Gear 25.08 Summertime Edition
Son solo cuatro entradas pero llenas de cosas jugosas y útiles. No os las podéis perder.
Mix de Novedades de KDE ⚙️ Gear 25.08 Summertime Edition
Disponible KDE Gear 21.12, un regalo anticipado…
Novedades de Dolphin en KDE ⚙️ Gear 25.08 Summertime Edition
Disponible KDE Gear 21.12, un regalo anticipado…
Novedades para la productividad en KDE ⚙️ Gear 25.08 Summertime Edition
Disponible KDE Gear 21.12, un regalo anticipado…
Novedades de Itinerary en KDE ⚙️ Gear 25.08 Summertime Edition
Disponible KDE Gear 21.12, un regalo anticipado…
KDE Gear, un Software gratuito para todo el mundo pero que necesita de tu apoyo

Recuerda, todo este software es gratuito y sin publicidad en todos los sentidos: no te cuesta ni un euro y no se cobra en en forma de datos personales. No obstante, si quieres ayudar a su desarrollo siempre puedes participar en su campaña de recaudación de fondos.
La entrada Resumen de las Novedades de KDE ⚙️ Gear 25.08 Summertime Edition se publicó primero en KDE Blog.
Request Workflow Redesign: RPM Lint Results Filtering
Quick Install: Kubernets Cluster (RKE2) with Warewulf
In a previous blog
post
we've learned how we can leverage Warewulf - a node deployment tool used in
High Performance Computing (HPC) - to deploy a K8s cluster using RKE2. The
deployment was described step-by step explaining the rationale behind each
step.
This post supplements the previous post by providing a quick install guide
taking advantage of pre-build containers. With the help of these we are able
to perform the deployment of an RKE2 cluster with a few simple commands.
Warewulf uses PXE boot to bring up the machines, so your cluster nodes need
to be configured for this and the network needs to be configure so that the
nodes will PXE-boot from the Warewulf deployment server. How to do this and
how to make node known to Warewulf is covered in a post
about the basic Warewulf setup.
Prerequisite: Prepare Configuration Overlay Template for RKE2
K8s agents and servers use a shared secret for authentication - the
connection token. Moreover, agents need to know the host name of the
server to contact.
This information is provided in a config file: /etc/rancher/rke2/config.yaml
We let Warewulf provide this config file as a configuration overlay.
A suitable overlay template can be installed from the package
warewulf4-overlay-rk2:
zypper -n install -y warewulf4-overlay-rke2
Set Up the Environment
First we set a few environment variables which we will use later.
cat > /tmp/rke2_environment.sh <<"EOF"
server=<add the server node here>
agents="<list of agents>"
container_url=docker://registry.opensuse.org/network/cluster/containers/containers-15.6
server_container=$container_url/warewulf-rke2-server:v1.32.7_rke2r1
agent_container=$container_url/warewulf-rke2-agent:v1.32.7_rke2r1
token="$(for n in {1..41}; do printf %2.2x $(($RANDOM & 0xff));done)"
EOF
Here we assume we have one server node and multiple agent nodes whose
host names will have to replace in the above script.
Lists of nodes can be specified as a comma-seperated list, but also as
a range of nodes using square brackets (for example k8s-agent[00-15]
would refer to k8s-agent00 to k8s-agent15) or lists and ranges combined.
Also, the script generates a connection token for the entire cluster. This
token is used to allow agents (and secondary servers) to connect to the
primary server1. If we set up the server persistently outside of Warewulf
we either need to add this token to the config file /etc/rancher/rke2/config.yaml
on the server before we start the rke2-server service for the first time
or grab it from the server once it has booted.
In this example, we are using a 'short token' which does not contain
the fingerprint of the root CA of the cluster. For production environments
you are encouraged to create certificates for your K8s cluster beforehand
and calculate the fingerprint from the root CA for use in the agent token.
Refer to the appendix below how to do so.
In case your server is already running you will have to grab the token from
it instead and set the variable token in the script above accordingly.
It can be found in the file /var/lib/rancher/rke2/server/node-token.
Finally, we set the environment:
source /tmp/rke2_environment.sh
Obtain the Node Images
The openSUSE registry has pre-built image for K8s agents. Taking advantage of these removes the tedious task of preparing the base images. We pull these and build the container:
wwctl container import ${agent_container} leap15.6-RKE2-agent
wwctl container build leap15.6-RKE2-agent
In the previous blog we've talked about the implications deploying K8s servers using Warewulf. If we plan to deploy the server using Warewulf as well, we pull the server container from the registry also and build it:
wwctl container import ${server_container} leap15.6-RKE2-server
wwctl container build leap15.6-RKE2-server
Set up Profiles
We utilize Warewulf profiles to configure different aspects of the setup and assign these profiles to the different types of nodes as needed.
Set up rootfs
The settings in this profile will ensure that a rootfs type is set so
that a call to pivot_root() performed by the container runtime will
succeed.
wwctl profile add container-host
wwctl profile set --root tmpfs -A "crashkernel=no net.ifnames=1 rootfstype=ramfs" container-host
Set up Container Storage
Since the deployed nodes are ephemeral - that is they run out of a RAM disk,
we may want to to store container images as well as administrative data
on disk. Luckily, Warewulf is capable of configuring disks on the deployed
nodes.
For this example, we assumes that the container storage should reside on
disk /dev/sdb, we are using the entire disk and we want to scrap the data
at every boot.
Of course other setups are possible, check the upstream
documentation for
details.
wwctl profile add container-storage
wwctl profile set --diskname /dev/sdb --diskwipe "true" \
--partnumber 1 --partcreate --partname container_storage \
--fsname container_storage --fswipe --fsformat ext4 \
--fspath /var/lib/rancher \
container-storage
Note: When booting the node from Warewulf, the entire disk (/dev/sdb in
this example) will be wiped. Make sure it does not contain any valuable
data!
Set up the Connection Key
When we've set up our environment, we generated a unique connection key which we will use throughout this K8s cluster to allow agents (and secondary servers) to connect to the primary server.
wwctl profile add rke2-config-key
wwctl profile set --tagadd="connectiontoken=${token}" \
-O rke2-config rke2-config-key
Set up the Server Profile
Here, we set up a profile which is used to point agents - and secondary servers - to the primary server:
wwctl profile add rke2-config-first-server
wwctl profile set --tagadd="server=${server}" -O rke2-config rke2-config-first-server
Set up and Start the Nodes
Now, we are ready to deploy our nodes.
Set up and deploy the Server Node
If applicable, set up the server node
wwctl node set \
-P default,container-host,container-storage,rke2-config-key \
-C leap15.6-RKE2-server ${server}
wwctl overlay build ${server}
Now, we are ready to PXE-boot the first server.
Set up and deploy the Agent Nodes
We now configure the agent nodes and build the overlays:
wwctl node set \
-P default,container-host,container-storage,rke2-config-key,rke2-config-first-server \
-C leap15.6-RKE2-agent ${agents}
wwctl overlay build ${agents}
Once the first server node is up and running we can now start PXE-booting the agents. They should connect to the server automatically.
Check Node Status
To check the status of the nodes, we connect to the server through ssh and run
kubectl get nodes
to check the status of the available agents.
Appendix: Set Up CA Certificates and caluculate Node Access Token
Rancher provides a script (enerate-custom-ca-certs.sh) to generate the
different certificates required for a K8s cluster.
First, download this script to current directory:
curl -sOL --output-dir
. https://github.com/k3s-io/k3s/raw/master/contrib/util/generate-custom-ca-certs.sh
and run the following commands:
export DATA_DIR=$(mktemp -d $(pwd)/tmp-XXXXXXXX)
chmod go-rwx $DATA_DIR
./generate-custom-ca-certs.sh
wwctl overlay rm -f rke2-ca
wwctl overlay create rke2-ca
files="server-ca.crt server-ca.key client-ca.crt client-ca.key \
request-header-ca.crt request-header-ca.key \
etcd/peer-ca.crt etcd/peer-ca.key etcd/server-ca.crt etcd/server-ca.key"
for d in $files; do
d=${DATA_DIR}/server/tls/$d
wwctl overlay import --parents rke2-ca $d /var/lib/rancher/rke2/${d#${DATA_DIR}/}.ww
wwctl overlay chown rke2-ca /var/lib/rancher/rke2/${d#${DATA_DIR}/}.ww 0
wwctl overlay chmod rke2-ca /var/lib/rancher/rke2/${d#${DATA_DIR}/}.ww $(stat -c %a $d)
done
ca_hash=$(openssl x509 -in $DATA_DIR/server/tls/root-ca.crt -outform DER \
|sha256sum)
token="$( printf "K10${ca_hash% *}::server:"; \
for n in {1..41}; do printf %2.2x $(($RANDOM & 0xff));done )"
The certificates will be passed to the K8s in the system overlay.
If you are setting up mulitple K8s clusters you may want to create
separate certificates for each cluster and place the overlay name
into the clusters namespace instead of using rke2-ca.
Before you delete $DATA_DIR, you may want to save the root and
and intermiate certificates and keys ($DATADIR/server/tls/root-ca.*,
($DATADIR/server/tls/intermediate-ca.*) to a safe location.
If you have a root and intermediate CA you want to reuse, you may copy
these into the directory $DATADIR/server/tls before running
generate-custom-ca-certs.sh. Use $token as the agent token instead.
-
Secondary servers need to find the primary server endpoint like nodes. Therefore, they recieve the access token like nodes. ↩
La lucha contra los bloqueadores de publicidad sigue
Nuevo capítulo en Alemania en la lucha contra el uso de bloqueadores de publicidad en nuestros navegadores

La truñificación de internet quiere hacer que sea imposible saltarse sus medidas a la hora de evitar publicidad invasiva y abusiva, recopilación de datos, seguimiento de tu navegación, etc.
Para ello, una pieza importante (y yo casi diría imprescindible) a la hora de utilizar nuestro navegador web y estar a salvo de cantidades ingentes de publicidad son los bloqueadores de publicidad que incorporamos a nuestros navegadores.
Por eso, las grandes empresas que quieren llenar internet de una cloaca comercial y ser las únicas partes que digan qué se puede hacer y qué no tienen desde hace tiempo una batalla contra los bloqueadores de publicidad.
Desde el blog de la comunidad de Mozilla que desarrolla el navegador Firefox, Daniel Nazer ha escrito un artículo interesante: ¿Está Alemania a punto de prohibir los bloqueadores de anuncios? La libertad, la privacidad y la seguridad del usuario están en riesgo.
Puedes leer el artículo original en inglés en este enlace:
Gracias a publicarlo bajo una licencia CC, lo he traducido y compartido en el blog por si os puede resultar tan interesante como a mí.
Sirva como difusión de estas piezas de software tan importante como los bloqueadores de publicidad para que los apoyemos y puedan seguir desarrollándose. Vamos a leerlo…
En Internet, los usuarios confían en los navegadores y las extensiones para dar forma a la forma en que experimentan la web: para proteger su privacidad, mejorar la accesibilidad, bloquear contenido dañino o intrusivo y tomar el control de lo que ven. Pero un fallo reciente de la Corte Suprema Federal de Alemania corre el riesgo de convertir una de estas herramientas esenciales, el bloqueador de anuncios, en una responsabilidad de derechos de autor y, al hacerlo, amenaza el principio más amplio de elección del usuario en línea.
Imagina que estás viendo la televisión y vas a la cocina a tomar un aperitivo durante una pausa publicitaria. O pulsas el botón de avance rápido para omitir algunos anuncios mientras escucha un podcast. O tal vez estés leyendo un periódico en tu casa y veas que incluye una sección especial compuesta por contenido de IA alucinado, por lo que tiras a la basura esa sección que no te interesa. ¿Fueron estos actos de infracción de derechos de autor? Claro que no. Pero si haces algo así con una extensión del navegador, una decisión reciente del Tribunal Supremo Federal de Alemania sugiere que tal vez estás infringido los derechos de autor. Esta lógica equivocada pone en riesgo la libertad, la privacidad y la seguridad del usuario.
Hay muchas razones, además del bloqueo de anuncios, por las que los usuarios pueden querer que su navegador o una extensión del navegador modifique una página web. Estos incluyen cambios para mejorar la accesibilidad, evaluar la accesibilidad o proteger la privacidad. De hecho, los riesgos de la navegación van desde el phishing (suplantación de personalidad por una fraudulenta) hasta la ejecución de código malicioso, el seguimiento invasivo, las huellas que dejamos en internet y los daños más mundanos, como elementos ineficientes del sitio web que desperdician recursos de procesamiento (N.d.T: Es decir cargar mucha información que no es más que publicidad hace que se gaste más procesamiento, capacidad, ancho de banda, etc en cargar algo que no es indispensable para poder ver la página correctamente).
Los usuarios deben estar equipados con navegadores y extensiones de navegador que les brinden protección y opciones frente a estos riesgos. Un navegador que ejecutara de manera inflexible cualquier código servido al usuario sería una pieza de software extraordinariamente peligrosa. Los bloqueadores de anuncios son solo una pieza de este rompecabezas, pero son una forma importante en que los usuarios pueden personalizar su experiencia y reducir los riesgos para su seguridad y privacidad.
El reciente fallo judicial es el último desarrollo en una batalla legal entre el editor Axel Springer (N.d.T: una gran editorial alemana que publica un periódico sensacionalista) y Eyeo (el desarrollador de Adblock Plus) que se ha estado abriendo camino en el sistema legal alemán durante más de una década.
El litigio ha incluido reclamos de competencia y derechos de autor. Hasta ahora, Eyeo ha prevalecido en gran medida y se ha mantenido la legalidad de los bloqueadores de anuncios. Lo más significativo es que, en 2022, el tribunal de apelación de Hamburgo dictaminó que Adblock Plus no infringía los derechos de autor de los sitios web, sino que simplemente facilitaba a los usuarios la elección de cómo deseaban que su navegador mostrara la página.
Desafortunadamente, el pasado 31 de julio de 2025, el Tribunal Supremo Federal de Alemania anuló parcialmente la decisión del tribunal de Hamburgo y devolvió el caso para continuar con los procedimientos. El BGH (como se conoce al Supremo Tribunal Federal) pidió una nueva audiencia para que el tribunal de Hamburgo pueda proporcionar más detalles sobre qué parte del sitio web está alterada por los bloqueadores de anuncios, si este código está protegido por derechos de autor y en qué condiciones podría justificarse la interferencia.
El impacto total de este último desarrollo aún no está claro. El BGH emitirá un fallo escrito más detallado explicando su decisión. Mientras tanto, el caso ahora ha regresado al tribunal inferior para una investigación adicional. Podrían pasar un par de años más hasta que tengamos una respuesta clara. Esperamos que los tribunales finalmente lleguen a la misma conclusión sensata y permitan a los usuarios instalar bloqueadores de anuncios.
Esperamos sinceramente que Alemania no se convierta en la segunda jurisdicción (después de China) en prohibir los bloqueadores de anuncios. Esto limitará significativamente la capacidad de los usuarios para controlar su entorno en línea y potencialmente abrirá la puerta a restricciones similares en otros lugares. Tal precedente podría envalentonar los desafíos legales contra otras extensiones que protegen la privacidad, mejoran la accesibilidad o mejoran la seguridad. Con el tiempo, esto podría disuadir la innovación en estas áreas, presionar a los proveedores de navegadores para que limiten la funcionalidad de la extensión y alejar Internet de su naturaleza abierta e impulsada por el usuario hacia una con flexibilidad, innovación y control reducidos para los usuarios.
Vemos otro ejemplo más de cómo la internet abierta y plural que fue en origen ha derivado hacia una «truñificación» en la que prima el control, el rastreo y la explotación de las personas que navegan por internet para extraer sus datos, venderlos y saber todo de ti.
Extractivismo y la sobreexplotación de internet quizá acabe con ella. Quedan reductos en los que el trato personal, y desinteresado prima (como este blog personal) pero cada vez son más reductos minoritarios.
Los buscadores indexan grandes páginas, que emplean mucho dinero en atraer visitas para venderte y mostrarte publicidad, por eso esas grandes páginas ven un peligro en ese software que elimina la publicidad de sus sitios y hace que la navegación sea más diáfana.
Siempre habrá maneras de sortearlas, pero es muy cansado tener que estar siempre a la contra o quizás tener que instalar cosas cada vez más complicadas para conseguir no pisar el fango maloliente al navegar por internet…

Episodio 7 de Accesibilidad con Tecnologías libres: Diseño accesible, asistente virtual, eslibre 2024 y teclados
A ver si entre este mes de agosto y septiembre me pongo al día con este podcast (ya podéis intuir que son muchos los episodios de retraso que llevo). De momento ya llevo dos seguidos con éste, así que os presento el episodio 7 de Accesibilidad con Tecnologías libres: Diseño accesible, asistente virtual, eslibre 2024 y teclados. Una oportunidad más para conocer las opciones que existen para acercar la teconología a todo el mundo.
Episodio 7 de Accesibilidad con Tecnologías libres: Diseño accesible, asistente virtual, eslibre 2024 y teclados
Hace más de dos años que presenté este podcast y he dejado pasar demasiado tiempo para seguir promocionándolo. Areglé este error hace un tiempo pero perdía la inercia. Así que vuelvo con nuevos bríos para seguir promocionándolo como se merece.
Me complace presentar el séptimo episodio de Accesibilidad con Tecnologías libres que tiene el siguiente resumen:
- Rompiendo barreras, con Eva Marco. En la que nos habla sobre el «Diseño accesible». Explica por qué es importante tenerlo en cuenta al inicio de tu proyecto y se ven ejemplos para ir aplicando en tu proyecto.
- 00:13:19 Odisea en el ciberespacio, con David Marzal. Entrevista a Lorenzo Carbonell (Atareao) en la que hablamos de las posibilidades del FLOSS y las automatización con los nuevos LLM / «IAs».
- Como su último proyecto de asistente virtual para GNU/Linux en Atareao 601.
- 00:36:27 Accesibilidad web, con Pablo Arias. Nos habla sobre la navegación con el teclado por las páginas web.
- 00:46:53 Otros mundos, otras realidades, con Thais Pousada. Comenta su paso por la esLibre 2024.
- 01:02:19 Diseño para todos, con Jonathan Chacón. Nos habla de teclados opensource.

Transcripción disponibles en steno.fm por si vuestra Podcatcher no los implementa, como estas.
Créditos de la música:
- «Evening» de Kevin MacLeod (incompetech.com) – Licensed under CC: By Attribution 4.0
Este podcast tiene licencia Reconocimiento-CompartirIgual 4.0 Internacional (CC BY-SA 4.0).
Más información: Séptimo episodio de Accesibilidad con Tecnologías Libres
Podcast Accesibilidad con Tecnologías libres

Jorge Lama, Víctor , David Marzal, Thais Pusada, Pablo Arias, Jonathan Chacon y Markolino son el equipo reunido para crear el podcast Accesibilidad con Tecnologías libres, un podcast para hablar sobre temas de accesibilidad y tecnologías libres.
En palabras de sus creadores:
En informática, la accesibilidad incluye diferentes ayudas como pueden ser las tipografías de alto contraste o gran tamaño, magnificadores de pantalla, lectores y revisores de pantalla, programas de reconocimiento de voz, teclados adaptados y otros dispositivos apuntadores o de entrada de información.
Además, las inteligencias artificiales están empezando a ser un gran aliado para mejorar la accesibilidad en muchos aspectos. Existen podcasts y canales de vídeo que hablan de la accesibilidad centrándose en entornos Windows o de Apple porque son los más conocidos por el público generalista. Pero en este podcast queremos dar a conocer otros aspectos de la accesibilidad y su relación con otras tecnologías menos conocidas.
Tecnologías que consideramos libres y que nos parecen mejores para la sociedad, en muchos casos…
Por supuesto, os invito a visitar la página de Archive.org donde están recogidos el resto de programas y donde nos indican también aquellos que estań subtitulados, aunque creo que al final lo estarán todos:
Créditos de la música:
La música usada ha sido «Evening» de Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 4.0 License
http://creativecommons.org/licenses/by/4.0/
Personalmente, me parece un podcast muy interesante que aborda un tema recurrente en el mundo del Software Libre pero que todavía está lejos de solucionarse. Los diferentes proyectos de escritorio de GNU/Linux implementan cosas pero en muchas ocasiones no están coordinadas realmente con las personas que las necesitan. Esperemos que en los próximos años este aspecto se vaya mejorando y, si ocurre, creo que este podcast tendrá parte de culpa, en el buen sentido de la palabra.
Más información: Accesibilidad con Tecnologías Libres
La entrada Episodio 7 de Accesibilidad con Tecnologías libres: Diseño accesible, asistente virtual, eslibre 2024 y teclados se publicó primero en KDE Blog.
Los libros que me eligen
La mayoría de las veces son los libros en las estanterías de la biblioteca municipal los que me eligen para ser leidos

Desde que hace unos años volví a redescubrir mis ganas por leer, la biblioteca municipal (apoya tu biblioteca municipal) ha vuelto a ser un lugar de peregrinación al que de manera recurrente asistir para buscar, sacar prestado o devolver algún libro.
No tengo un apartato lector de libros electrónicos y reconozco que puede ser muy útil y muy cómodo, pero sigo prefiriendo el libro en su formato físico y por tanto las estanterías de la biblioteca munipal de mi ciudad son un buen lugar en el que perderse, buscar, encontrar y ser encontrado.
Al recobrar el sentido de la lectura, (como quien recobraba el sentido del olfato después de haberlo persido) vuelvo a disfrutar de los paseos por la biblioteca en la búsqueda de cierto libro. Pero muchas veces, han sido los libros los que me han elegido a mi como lector y de forma imperceptible han llamado mi atención de formas diversas para que me acerque a ellos, los saque de su estantería y los aleje de sus compañeros para echarles un vistazo a la portada, al resumen que se ofrece en las contraportadas o solapas, o me fije en el escritor y la pequeña biografía si se adjunta.
Y sí, los libros me llaman la atención y me reclaman para que me fije en ellos. Muchos de los libros que he leido eran auténticos desconocidos para mí, tanto su título como el nombre de la persona que los escribe. Algunos de esos libros que reclamaron mi atención volvieron a su paciente espera en la estantería después de que yo los hubiera ojeado y no hubiera decidido llevármelo prestado, quizás en otro momento y en otra circunstancia o quizás nunca más…
Pero muchos hicieron que su portada inquietante o curiosa reclamara mi atención o quizás el título evocador o en menor medida el nombre de quien lo escribió. Han sido muchos los descubrimientos que he hecho de esta manera y todos han sido muy satisfactorios.
Otras veces quizás me sonaba de algo el título o el nombre de quien lo escribía o en su biografía se mencionaba tal o cual hecho que llamaba mi atención y aquella pequeña obra impresa viajaba hasta mi casa para rellenar espacios y tiempos de lectura. Perfectos desconocidos que nadie nos había presentado, con los que se llegó a forjar un buen vínculo lector-libro.
Otros es cierto que me sonaba el nombre de quien los escribía pero desconocía por completo la historia del libro o de cualquier otro libro que hubiera escrito y con alguno ha habido reincidencia y han sido más libros de la misma persona los que han llegado a mis manos. Compañeros de balda en la biblioteca municipal del primer libro que saqué.
La biblioteca tiene un servicio de reserva de tal o cual título, para ponerte en lista de espera a la hora de leer el libro en cuestión. Ese libro es uno de esos títulos muy reclamado o del lector superventas del momento que vuelve a la carga con otro extenso libro de la saga ya exprimida que poco tiene que aportar, salvo pingües beneficios para la editorial y la persona que los escribe.
Y ese título que tiene muchos pretendientes, cuando te llega la oportunidad y la lista va avanzando te llaman y lo vas a recoger para leerlo. Pero eso a mí me parece un desagravio hacia los demás libros. Muchos son los libros que deberían ser leidos, no acepto que tal o cual sea muy solicitado y otros acumulen polvo en las estanterías hasta que alguien da con ellos por una u otra casualidad. Hay incluso quien si no es ese libro no saca otro para la espera. Eso sí que no.
No, no voy a esperar a leer un libro, esa forma de encontrarme con ellos no me gusta. Seguiré guiándome por desconocidos algoritmos analógicos que hacen que mis pasos se encuentren con el libro adecuado en un único y preciso momento del espacio tiempo.
Sí eso son, casualidades. Los libros me escogen por azarosos designios y vericuetos del destino. Están a la altura adecuada, en el pasillo preciso y quizás muestran su portada porque el libro que les precede ha caido perezosamente sobre la balda y justo en ese momento paso yo por allí y me fijo en él.
Y más ilusión me hace si descubro entre sus páginas un marcapáginas olvidado, una nota de la compra, un ticket de aparcamiento o billete de tren. Ese nimio extra hace más interesante el libro.
Y ya en casa, antes de empezar su lectura echo un vistazo a las veces que se ha prestado. Si se ha hecho recientemente o si en cambio ya hacía años que nadie lo aireaba a la luz de una bombilla. Si es así le consuelo y le doy las gracias y empezamos nuestra relación.
Y al acabarlo, (aunque haya a quien le provoque risas) no empiezo otra lectura en el mismo día. Espero por lo menos un día para empezar a leer otro libro. Eso de acabar uno y empezar otro lo veo de mal gusto. Es como besar a alguien apasionadamente en el velatorio de tu pareja, eso está feo…
Y el destino vuelve a girar, me dirijo a la biblioteca y allí están todos los libros disponibles haciendo lo que sea preciso para que esta vez sea ese y no otro el escogido… El azar, o quizás no…
Configuración inicial del sistema de KDE – Esta semana en Plasma
Es increíble el trabajo de promoción que está realizando Nate en su blog, dese hace más del tiempo que puedo recordar. Cada semana hace un resumen de las novedades más destacadas, pero no en forma de telegrama, sino de artículo completo. Su cita semanal no falla y voy a intentar hacer algo que es simple pero requiere constancia. Traducir sus artículos al castellano utilizando los magníficos traductores lo cual hará que: la gente que no domine el inglés esté al día y que yo me entere bien de todo. Bienvenidos pues a «¡Configuración inicial del sistema de KDE – Esta semana en Plasma». Espero que os guste y, sobre todo, que pueda mantener el ritmo de publicación de Nate Graham.
Configuración inicial del sistema de KDE – Esta semana en Plasma
Nota: artículo original en Blogs KDE. Traducción realizada utilizando deepl.com. Esta entrada está llena de novedades de la Comunidad KDE. Mis comentarios están entre corchetes.
¡Bienvenido a un nuevo número de «Esta semana en Plasma»! Cada semana cubrimos lo más destacado de lo que está sucediendo en el mundo de KDE Plasma y sus aplicaciones asociadas como Discover, System Monitor, y más.
Y quiero destacar la entradilla porque creo que esta semana tenemos una novedad muy destacada:
Esta semana, ¡Plasma obtuvo un asistente de configuración inicial del sistema! Durante algunos años, hemos tenido el Welcome Center, que se ejecuta después de iniciar sesión por primera vez. Pero, ¿qué crea la cuenta de usuario en la que inicias sesión?
Si eres la persona que instaló el sistema operativo, el instalador lo hizo después de que le dijiste qué nombre de usuario y contraseña querías. Pero, ¿qué pasa si alguien más ejecutó el instalador? Digamos, la empresa a la que le compraste la computadora. O la última persona que borró la máquina antes de dártela o vendértela. En este caso, no se han configurado cuentas de usuario, por lo que algo debe hacerlo.
KDE Initial System Setup ahora se encarga de ello. Kristen McWilliam ha llevado KISS de un proyecto experimental interno a una parte lista para producción de la historia de la configuración de OEM.
KISS llega en Plasma 6.5.0.

Mejoras en la interfaz de usuario
Plasma 6.5
Actualmente, los paneles de Plasma se pueden desplazar cuando contienen demasiados elementos para ver a la vez (normalmente por tener muchas aplicaciones abiertas o al entrar en el modo táctil). Esta función de desplazamiento no se activa de inmediato; primero, los iconos del gestor de tareas se comprimen un poco, pero a partir de cierto punto dejan de comprimirse y el panel se vuelve desplazable. (Niccolò Venerandi, enlace)
Se ha mejorado la curva de mapeo de tonos utilizada por KWin al mostrar contenido HDR. Con suerte, ¡ahora debería verse aún mejor! (Xaver Hugl, enlace)
Por defecto, la página de Tablet Drawing de Ajustes del sistema ya no se muestra si no tienes ninguna tableta gráfica conectada. Por supuesto, como somos KDE, existe la opción de mostrar estas páginas filtradas si las necesitas para solucionar problemas, por ejemplo. (Kai Uwe Broulik, enlace)
El flujo de salida para los sonidos de retroalimentación de volumen ya no aparece brevemente en el widget de Volumen de Audio y en la página de Ajustes del Sistema. (Ismael Asensio, enlace)
Se ha mejorado la accesibilidad de la página de Atajos de Ajustes del Sistema. (Christoph Wolk, enlace) [Paso a paso].
Se ha añadido información más relevante sobre tus controladores de juegos a la página de Controladores de Juegos de Ajustes del Sistema. (Jeremy Whiting, enlace) [La imformación es básica para poder ajustar mejor nuestros dispositivos].
La notificación que dice «te perdiste algunas notificaciones» después de salir del modo No molestar ya no se hace visible en la vista de historial después de que expira, porque si puedes verla allí, ya estás en el lugar sobre el que querías que te informara. (Nate Graham, enlace) [La lógica se impone poco a poco].
Corrección de errores importantes
Plasma 6.4.5
Se han solucionado varios problemas relacionados con la personalización del panel Plasma: un problema que impedía que la tecla Escape cerrara el cuadro de diálogo de configuración y otro que provocaba que los widgets se quedaran bloqueados si se pulsaba Escape mientras se arrastraban. (Niccolò Venerandi, enlace 1 y enlace 2)
Al clonar un panel, ahora también se clonan los ajustes de su widget de la bandeja del sistema, si lo tiene. (Niccolò Venerandi, enlace)
Se ha corregido un problema de diseño con el widget de volumen de audio que podía provocar que la secuencia de grabación de una aplicación se indentara visualmente más de lo que debería.(Christoph Wolk, enlace) [Reconozco que no entiendo este error].
Plasma 6.5
Se han aplicado varias correcciones de errores adicionales para los iconos del escritorio con el fin de garantizar que no se desplacen tanto. Una de ellas soluciona un problema relacionado por el que los iconos restablecían sus posiciones después de cambiar entre la disposición de carpetas y la disposición de escritorio, y luego volver atrás. (Akseli Lahtinen, enlace)
Se han realizado algunas correcciones de fiabilidad en el servidor RDP integrado para garantizar que en todas las distribuciones se pueda habilitar manualmente y que no se inicie automáticamente a menos que se le indique específicamente. (Arnav Rawat y Nate Graham, enlace 1 y enlace 2)
Se ha corregido un problema que provocaba que el widget independiente de volumen de audio del panel ocupara a veces demasiado espacio. (Niccolò Venerandi, enlace)
Otra información de errores destacables:
- 5 bugs Plasma de muy alta prioridad (uno más que la semana pasada). Lista actual de errores
- 27 fallos de Plasma de 15 minutos (uno menos que la semana pasada). Lista actual de fallos
Mejoras de rendimiento y aspectos técnicos
Plasma 6.4.5
Se ha solucionado un problema grave en los controladores gráficos de la GPU AMD. (Xaver Hugl, enlace)
Se ha solucionado un caso en el que Plasma podía bloquearse después de copiar archivos desde una ubicación de red lenta (o posteriormente inaccesible) y abrir la ventana emergente del portapapeles. (Fushan Wen, enlace)
Plasma 6.5
Se ha cambiado a un temporizador más ligero para el bucle de renderizado de KWin, lo que reduce ligeramente el uso de recursos en general. (Aleix Pol Gonzalez, enlace) [Optimizando recursos].
Se ha implementado la compatibilidad con la versión 2 del portal de accesos directos globales. (David Redondo, enlace)
Frameworks 6.18
Se ha mejorado aún más la velocidad de generación de miniaturas en todo el software KDE. (David Edmundson, enlace)
Cómo puedes ayudar
KDE se ha convertido en algo importante en el mundo, y tu tiempo y contribuciones nos han ayudado a conseguirlo. A medida que crecemos, necesitamos su apoyo para mantener KDE sostenible.
Puedes ayudar a KDE convirtiéndote en un miembro activo de la comunidad e involucrándote de alguna manera. Cada colaborador marca una gran diferencia en KDE – ¡no eres un número o un engranaje en una máquina!
Tampoco tienes que ser programador. Existen muchas otras oportunidades:
- Clasificar y confirmar informes de errores, tal vez incluso identificar su causa raíz.
- Contribuir al diseño de fondos de pantalla, iconos e interfaces de aplicaciones.
- Diseñar y mantener sitios web
- Traducir elementos de texto de la interfaz de usuario a su propio idioma.
- Promover KDE en su comunidad local
- …¡Y un montón de cosas más!
¡También puedes ayudarnos haciendo una donación! Cualquier contribución monetaria – por pequeña que sea – nos ayudará a cubrir los costes operativos, salarios, gastos de viaje de los colaboradores, y en general a mantener KDE llevando el Software Libre al mundo.
Para obtener una nueva característica de Plasma o una corrección de errores mencionada aquí, siéntase libre de enviar un commit a la solicitud de fusión correspondiente en invent.kde.org.
La entrada Configuración inicial del sistema de KDE – Esta semana en Plasma se publicó primero en KDE Blog.
DeepSeek R2 atrasado: o que deu errado?

A DeepSeek tentou treinar o modelo R2 nos chips Ascend da Huawei para reduzir dependência da Nvidia, mas problemas técnicos persistentes travaram o projeto. O plano foi refeito: treino em Nvidia, inferência em Ascend. Resultado: adiamento do lançamento (previsto para maio) e um retrato honesto dos desafios de autonomia tecnológica na IA.
O que aconteceu?
O lançamento foi adiado; a expectativa de mercado é que o R2 chegue “nas próximas semanas”. Enquanto isso, vale lembrar: o R1 foi desenvolvido majoritariamente em Nvidia H20, hoje o chip mais popular na China.
A DeepSeek iniciou o treinamento do R2 em hardware Ascend (Huawei).
Segundo pessoas ouvidas pelo Financial Times, falhas recorrentes durante o treino inviabilizaram o cronograma, levando a empresa a migrar o treinamento para GPUs Nvidia e manter Ascend para a inferência.
A pressão de Pequim para priorizar tecnologia nacional encontrou um limite prático: quando “chegou a hora do treino pesado”, estabilidade e maturidade do stack fizeram diferença.
Por dentro do gargalo: treino ≠ inferência
Treinar um modelo de IA é como mandar alguém para anos de universidade:
- exige muito poder computacional de ponta a ponta (meses contínuos, clusters grandes, interconexão rápida);
- requer ecossistema de software estável (drivers, compiladores, kernels, bibliotecas, otimizadores, depuração);
- demanda resiliência operacional e financeira (quedas e inconsistências custam tempo e dinheiro).
A inferência, por sua vez, é “usar o diploma”: roda o modelo já treinado para responder perguntas. É pesada, mas menos sensível a arestas no stack.
A conclusão da DeepSeek: Ascend aguenta validação e inferência, mas a maratona do treinamento ainda cobra maturidade adicional.
A geopolítica no data center
- Os EUA restringiram exportações de chips avançados para a China; em julho, autorizaram a volta das vendas do H20 (com limitações).
- Pequim incentiva o setor a migrar para Ascend (autonomia estratégica), e ao mesmo tempo questiona o uso de chips dos EUA em projetos críticos.
- A linha Ascend está na lista negra dos EUA por alegações de uso de tecnologia americana restrita.
- Na prática, Nvidia segue dominante no treino de modelos de fronteira, enquanto o ecossistema Ascend cresce — com ênfase em inferência.
Por que isso importa
-
Risco tecnológico vs. prazo de mercado
Apostar em um stack menos maduro pode estourar cronogramas. Para quem disputa janelas de lançamento, atraso custa mindshare e receita. -
Custo total de propriedade (TCO)
Treino instável gera restarts, retrabalho e subutilização de cluster, elevando o custo por token treinado. -
Portabilidade de modelos
Projetar pipelines para “train em A, infer em B” aumenta resiliência, mas também complexidade operacional (toolchains, formatos, kernels). -
Sinal para o ecossistema
O caso reforça a mensagem: hardware importa, mas software e tooling maduros são o verdadeiro fosso competitivo no treino de LLMs de grande porte.
Lições práticas para líderes técnicos
Antes de mudar do stack Nvidia para outro (ou de adotar um “duplo stack” treino/inferência), responda:
- Maturidade do ecossistema: drivers, kernels, compiladores, bibliotecas (atenção a regressões sob carga real de treino).
- Tooling e depuração: profiler, verificadores de precisão, diagnósticos de OOM, kernels customizados.
- Compatibilidade de frameworks: cobertura de operadores, suporte a paralelismo (tensor/pipeline/data), mixed precision, kernels otimizados.
- Interconexão e I/O: topologia do cluster, throughput de armazenamento (checkpointing frequente sem gargalo).
- Planos de rollback: como sair rápido de um stack se o MTBF sob treino longo for inaceitável?
- Estratégia híbrida: é viável treinar onde é mais estável e servir onde é mais econômico sem duplicar demais o esforço?
Para onde olhar nas próximas semanas
- Calendário do R2: se chega sem novos adiamentos, é sinal de que o treino em Nvidia estabilizou.
- Atualizações do stack Ascend: correções de estabilidade sob treino distribuído prolongado serão o termômetro da evolução.
- Movimentos de pares: ByteDance, Tencent e Alibaba continuam em H20; qualquer mudança ampla de rumo seria um indicador forte.
Conclusão
O adiamento do DeepSeek R2 não é apenas um tropeço operacional: é um estudo de caso sobre trade-offs entre autonomia tecnológica, maturidade de ecossistema e time-to-market. A mensagem é clara: para treinar modelos de ponta, o software conta tanto quanto o silício. Enquanto Ascend avança e conquista espaço em inferência, Nvidia preserva a dianteira onde a estabilidade extrema ainda decide — o treinamento.
Fonte:
https://www.tomshardware.com/tech-industry/artificial-intelligence/deepseek-reportedly-urged-by-chinese-authorities-to-train-new-model-on-huawei-hardware-after-multiple-failures-r2-training-to-switch-back-to-nvidia-hardware-while-ascend-gpus-handle-inference
https://br.investing.com/news/stock-market-news/deepseek-adia-lancamento-de-novo-modelo-de-ia-devido-a-problemas-com-chips-da-huawei-1648171