Tecnoaficiones

Las nuevas tecnologías al alcance de todos.

Agregador de canales de noticias

Introducción a Kotlin Flows: Emitiendo flujos de datos asíncronos en tiempo real

Actualidad en Androidsis - Hace 11 horas 58 mins

Cuando nos metemos en el mundo de las corrutinas en Android, nos encontramos con que a veces una sola respuesta no es suficiente. Aquí es donde entran los Kotlin Flows, que básicamente son herramientas capaces de soltar una ristra de valores uno tras otro, a diferencia de las funciones de suspensión tradicionales que solo nos devuelven un dato y ya está. Imagínate que necesitas actualizaciones constantes de una base de datos; un flujo es el compañero ideal para este trabajo.

Para que nos entendamos, un Flow es como una tubería de datos que se calcula de forma asíncrona. Es muy parecido a un Iterator, pero con la ventaja de que usa funciones de suspensión para no bloquear el hilo principal mientras se producen los valores. Esto es vital para que la aplicación no se quede colgada mientras esperamos que llegue una respuesta de la red o se procese un archivo pesado.

Los protagonistas del flujo de datos

En cualquier sistema de transmisión de datos tenemos tres figuras clave. Primero está el productor, que es quien genera la información y la lanza al flujo. Luego tenemos a los intermediarios, que son opcionales y se encargan de retocar o filtrar los datos antes de que lleguen al final. Por último, el consumidor es quien recoge esos valores para hacer algo con ellos, como refrescar la pantalla del usuario.

En el día a día de Android, solemos ver que el repositorio actúa como productor, mientras que la interfaz de usuario (IU) hace de consumidor final. A veces ocurre al revés, donde la IU produce eventos que otras capas deben procesar. Las capas intermedias son las que ajustan la información para que encaje exactamente con lo que la siguiente capa necesita.

Cómo poner en marcha un flujo

Para crear uno desde cero, lo más habitual es usar la función flow. Dentro de este bloque, podemos usar la función emit para enviar los datos manualmente. Por ejemplo, si tenemos una fuente de noticias que debe actualizarse cada ciertos segundos, podemos meter un bucle infinito con un delay para que el flujo siga vivo y enviando datos frescos.

Eso sí, hay un par de reglas que no podemos saltarnos. Primero, los flujos son estrictamente secuenciales; si llamas a una función de suspensión, el productor se detendrá hasta que esta termine. Segundo, no puedes llamar a emit desde un CoroutineContext diferente al del productor. Si necesitas cambiar el contexto, no intentes crear corrutinas nuevas dentro del bloque flow, mejor recurre a callbackFlow.

Transformando y consumiendo la información

Si queremos modificar los datos sin consumirlos todavía, usamos los operadores intermedios. Estos operadores, como map o onEach, crean una cadena de procesos que se quedan «dormidos» hasta que alguien realmente pida los datos. Es una forma muy eficiente de transformar la información, por ejemplo, filtrando solo las noticias que el usuario ha marcado como favoritas antes de mandarlas a la vista.

Para activar todo este mecanismo, necesitamos un operador terminal. El más común es collect, que es una función de suspensión y, por tanto, debe vivir dentro de una corrutina. Cuando ejecutamos collect, el productor se pone en marcha y empieza a emitir. El flujo se cerrará cuando la corrutina se cancele (como ocurre al borrar un ViewModel) o cuando el productor termine de emitir todos sus elementos.

Gestión de errores y contextos de ejecución

Como no todo es color de rosa y las librerías externas pueden fallar, contamos con el operador catch. Este nos permite atrapar excepciones inesperadas y decidir qué hacer: podemos simplemente avisar al usuario del error o incluso emitir valores de caché para que la aplicación no se quede vacía mientras no hay conexión.

Otro punto crítico es dónde se ejecuta el código. Por defecto, el productor usa el contexto de quien hace el collect. Si queremos que el trabajo pesado de E/S no sature el hilo principal, utilizamos flowOn. Este operador cambia el contexto del flujo ascendente, permitiendo que el productor y los operadores previos se ejecuten en un despacho optimizado como Dispatchers.IO, mientras que el consumidor sigue en el hilo de la IU.

Casos avanzados: callbackFlow y debounce

A veces nos topamos con APIs antiguas que usan callbacks en lugar de corrutinas. Para esto existe callbackFlow, que nos permite convertir esas devoluciones de llamada en flujos. A diferencia del flow normal, aquí podemos usar trySend para enviar datos desde contextos diferentes. Es fundamental usar awaitClose para limpiar las suscripciones y evitar fugas de memoria.

Un uso muy práctico de esto es implementar búsquedas en tiempo real en un EditText. Mediante la función debounce, podemos evitar que la aplicación haga una petición al servidor por cada letra que el usuario escribe. Si configuramos un margen de 500 milisegundos, el flujo solo emitirá la consulta cuando el usuario haya dejado de escribir brevemente, optimizando así el rendimiento y el consumo de datos.

Composición de múltiples flujos

Cuando la app crece, necesitamos combinar varias fuentes de datos. El operador zip empareja valores estrictamente uno a uno; si un flujo es más lento, el otro espera. Por otro lado, combine es más dinámico: emite un resultado cada vez que cualquiera de los flujos cambia, usando siempre el último valor conocido de los demás. Es ideal para pantallas que dependen de múltiples estados en tiempo real.

Si lo que queremos es simplemente juntar varios flujos en uno solo sin combinarlos, usamos merge. Este operador reenvía los valores tal cual llegan, manteniendo el orden de emisión de cada fuente. Es la opción perfecta para gestionar eventos independientes, como clics de botones y gestos de pantalla, en un único canal de procesamiento.

Para que todo este sistema sea robusto, lo ideal es manejar los errores lo más cerca posible de la fuente, usar clases selladas (sealed classes) o el tipo Result para representar estados de éxito o fallo, y aplicar estrategias de reintento con retry para fallos temporales. También es recomendable usar buffer o conflate si el productor es mucho más rápido que el consumidor para evitar cuellos de botella.

La capacidad de gestionar secuencias asíncronas mediante flujos permite crear aplicaciones Android mucho más fluidas, aprovechando la potencia de las corrutinas para transformar, combinar y filtrar datos en tiempo real sin comprometer la estabilidad del hilo principal ni la experiencia del usuario.

Uso de Channels para la comunicación segura entre diferentes Coroutines

Actualidad en Androidsis - Mié, 15/07/2026 - 11:11

Cuando nos metemos en el mundillo del desarrollo asíncrono, ya sea en el ecosistema de Android con Kotlin o en el entorno de .NET, nos topamos con un reto recurrente: ¿cómo hacemos para que distintas tareas se hablen entre sí sin que la aplicación acabe colgada o con errores de memoria? Las corrutinas han venido a salvarnos la vida, permitiéndonos escribir código que parece secuencial pero que en realidad no bloquea el hilo principal, lo que se traduce en una experiencia de usuario mucho más fluida y profesional.

Sin embargo, lanzar corrutinas a lo loco puede traer problemas si comparten datos. Aquí es donde entran en juego los Channels y las primitivas de sincronización. Estas herramientas actúan como el sistema de mensajería y seguridad necesario para que los datos fluyan de un punto a otro sin que haya colisiones, asegurando que la concurrencia sea realmente estructurada y no un caos de hilos peleándose por la misma variable.

El Modelo Productor-Consumidor con Channels

Imaginemos los Channels como una especie de tubería inteligente. En este modelo, tenemos una entidad que genera datos (el productor) y otra que los procesa (el consumidor). Lo mejor de todo es que esta comunicación se basa en una cola FIFO (First In, First Out), lo que garantiza que el orden de llegada se respete estrictamente mientras se mantiene la asincronía.

Dependiendo de lo que necesitemos, podemos crear canales de dos tipos. Por un lado, los canales ilimitados (Unbounded), que aceptan cualquier cantidad de elementos sin poner frenos, lo que hace que las escrituras sean básicamente instantáneas. Por otro lado, tenemos los canales limitados (Bounded), que tienen una capacidad máxima. Cuando estos se llenan, el sistema puede suspender al productor hasta que haya hueco o, si así lo configuramos, simplemente descartar los datos más antiguos o los nuevos.

Para que esto funcione a pleno rendimiento, es vital gestionar bien las APIs. El productor utiliza el ChannelWriter para enviar datos, mientras que el consumidor emplea el ChannelReader. Una práctica fundamental es marcar la finalización del canal mediante el método Complete(), avisando al consumidor de que ya no llegarán más mensajes y que puede cerrar su ciclo de trabajo.

Sincronización y Protección de Datos con Mutex

Cuando varias corrutinas intentan modificar la misma variable al mismo tiempo, entramos en el terreno peligroso de las condiciones de carrera. Aunque en Java usábamos bloques synchronized, en el mundo de las corrutinas esto es un problema porque bloquean el hilo completo. Para solucionar esto, utilizamos el Mutex (Exclusión Mutua).

El Mutex es brillante porque, en lugar de congelar el hilo, suspende la corrutina. Esto permite que el hilo quede libre para hacer otras tareas mientras la corrutina espera su turno para entrar en la sección crítica. La recomendación de oro aquí es usar siempre la función withLock { }, ya que se encarga de liberar el bloqueo automáticamente, incluso si ocurre una excepción, evitando así los temidos deadlocks.

No obstante, no debemos abusar del Mutex. Si solo necesitamos gestionar un contador simple o una bandera, es mucho más eficiente recurrir a tipos atómicos como AtomicInteger. El Mutex debe reservarse para cuando hay que coordinar múltiples variables o realizar operaciones más complejas que requieran una exclusión total.

Optimización de Corrutinas en Android: Scopes y Dispatchers

Para que una app de Android no se cierre con un error de «Application Not Responding» (ANR), es imprescindible sacar el trabajo pesado del hilo principal. Aquí es donde los Dispatchers entran en acción. Para tareas de lectura y escritura en disco o peticiones de red, el Dispatchers.IO es la elección correcta, mientras que para cálculos intensivos de CPU debemos usar Dispatchers.Default.

La gestión del ciclo de vida es otro punto crítico. Para evitar que las tareas sigan corriendo cuando el usuario ya ha cerrado la pantalla, utilizamos CoroutineScopes específicos. El viewModelScope es la herramienta ideal en la capa de ViewModel, ya que se cancela automáticamente cuando este se destruye, eliminando así cualquier posibilidad de fugas de memoria.

Cuando necesitamos que una función sea «segura para el hilo principal», aplicamos el modificador suspend y envolvemos la lógica pesada en un withContext(Dispatchers.IO). De esta forma, la función pausa su ejecución, cambia al hilo de E/S, termina el trabajo y regresa automáticamente al hilo de la UI para mostrar el resultado al usuario sin haber bloqueado la interfaz ni un solo milisegundo.

Flujos de Datos Reactivos con Flow y StateFlow

A veces no necesitamos un único valor, sino un flujo constante de actualizaciones. Para ello, Kotlin Flow es la herramienta definitiva. A diferencia de los canales, los flujos son «fríos», lo que significa que no empiezan a emitir datos hasta que alguien los recolecta. Esto es perfecto para crear repositorios que emiten cambios en la base de datos que la UI debe reflejar en tiempo real.

Para el estado de la interfaz, el StateFlow es la opción preferida ya que mantiene siempre el último valor emitido y lo entrega inmediatamente a cualquier nuevo observador. Para optimizar esto en Android, se recomienda el uso de stateIn, que permite convertir un flujo frío en uno caliente, compartiendo la suscripción entre múltiples consumidores y evitando procesos de recolección redundantes que consumirían batería y memoria.

Si nos encontramos con que la fuente de datos emite valores demasiado rápido (como al escribir en un buscador), podemos aplicar operadores como debounce para esperar a que el usuario deje de escribir o collectLatest. Este último es especialmente útil porque cancela la recolección anterior en cuanto llega un nuevo valor, asegurando que solo se procese la información más reciente y relevante.

Tener un dominio sólido sobre los Channels, el uso inteligente de Mutex para la sincronización, y la correcta elección de Scopes y Dispatchers permite construir aplicaciones robustas que aprovechan al máximo el hardware sin comprometer la estabilidad. La clave reside en minimizar el estado mutable compartido y priorizar el paso de mensajes y la programación reactiva para lograr un código limpio, mantenible y, sobre todo, eficiente.

Apple TV se planta a mitad de julio con uno de sus grandes estrenos del año: así es la 'Lucky' de Anya Taylor-Joy

Actualidad en Applesfera - Mié, 15/07/2026 - 11:01

Este 15 de julio es de esos días marcados en rojo en el calendario de estrenos de Apple TV, dado que hoy se ha estrenado la serie 'Lucky'. Se trata de un thriller mezclado con drama y que a todas luces es uno de los estrenos del verano, con permiso de la tercera temporada de 'Silo' (ya estrenada) o la cuarta de 'Ted Lasso' (llega en agosto).

La serie está basada en la novela homonima de Marissa Stapley. Una historia que habla sobre segundas oportunidades con una excriminal como protagonista. Una que, como ya sabes, interpreta Anya Taylor-Joy, a quien la crítica ya aclama como lo mejor de la serie.

El pasado siempre vuelve (aunque no quieras) {"videoId":"xampp6e","autoplay":true,"title":"Lucky — Tráiler oficial | Apple TV", "tag":"lucky", "duration":"129"}

Tal como empezamos a descubrir hace ya año y medio, la gran protagonista de 'Lucky' es Anya Taylor-Joy ('Gambito de dama', 'El abismo secreto'). Por supuesto, no estará sola, ya que le acompañará un elenco en el que destacan Annete Bening ('American Beauty', 'Los chicos están bien'), Timothy Olyphant ('Deadwood: la película', 'Justified'), Aunjanue Ellis ('King Richard', 'Así nos ven') o Cliffton Collins Jr. ('Truman Capote', 'The Last Showgirl').

Taylor-Joy interpreta a Luciana Armstrong, a quien conocen más por su diminutivo Lucky. Durante años vivió de las estafas, un mundo en el que creció desde niña y del que logró escapar para empezar de cero. Sin embargo, un golpe fallido la obliga a regresar a esa vida y a utilizar de nuevo las habilidades que creía haber dejado atrás.

Será ese el momento en el que comience una especie de carrera a contrarreloj, ya que Lucky se convierte en el objetivo tanto de las autoridades como de una peligrosa organización criminal. Esto hace que tenga que recurrir a identidades falsas y otros engaños que le harán recordar esa vieja vida de la que estaba huyendo.

En Applesfera La gran joya de la ciencia ficción 'Silo' llega a Prime Video con su primera temporada gratis

Uno de los ejes de la trama estará precisamente en la relación de Lucky con el pasado. Aunque ella quiere romper definitivamente con esa vida criminal, se irá encontrando casi por obligación con viejos enemigos, aliados y familiares. Y en esa lucha entre la persona que intenta ser y la que necesita volver a convertirse tendremos buena parte de la esencia de la serie.

La primera temporada (y única, de momento) estará compuesta por un total de siete capítulos. Por ahora ya se han estrenado ya sus dos primeros episodios en Apple TV. Le irán sucediendo un nuevo capítulo cada miércoles hasta llegar al 19 de agosto, fecha en la que ya estarán todos emitidos.

En Applesfera | 'Pluribus', segunda temporada: ya sabemos cuándo se rodará y su posible fecha de estreno

En Applesfera | Las 24 mejores películas de Apple TV y cómo verlas sin pagar un solo euro

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia Apple TV se planta a mitad de julio con uno de sus grandes estrenos del año: así es la 'Lucky' de Anya Taylor-Joy fue publicada originalmente en Applesfera por Álvaro García M. .

Las fábricas ya calientan motores para el iPhone 20 y el regreso del cristal huele a pura nostalgia

Actualidad en Applesfera - Mié, 15/07/2026 - 10:29

Parece mentira, pero estamos a un año vista de conocer el iPhone del 20 aniversario. Diez años ya de aquel iPhone X que muchos seguimos viendo como si fuese ayer. Con esa pantalla que por primera vez se comía el frontal entero y ese notch que tanto dio que hablar. Sí, pronto tendremos el iPhone 18 Pro sobre la mesa, pero Apple ya lleva tiempo entrenando esa nueva generación que llegará justo para celebrar dos décadas de iPhone.

Y quien mueve ficha ahora es la cadena de suministro. Fixed Focus Digital, un filtrador chino que últimamente anda metido en el debate sobre qué material usará Apple en sus próximos modelos, asegura que las fábricas encargadas de este rediseño ya han terminado su renovación para poder fabricarlo. Lo interesante de su mensaje no está tanto en la fábrica como en el material que señala como favorito: cristal, otra vez, con un acabado que apunta directo a la nostalgia de aquel iPhone X.

{"videoId":"xa7fp78","autoplay":true,"title":"Concepto iPhone 20 aniversario", "tag":"", "duration":"14"} Fixed Focus Digital entra en la conversación

Fixed Focus Digital no es un nombre que suene tanto como Ming-Chi Kuo o Mark Gurman, pero lleva meses metido de lleno en la discusión sobre los materiales que Apple usará en el iPhone del 20 aniversario. Esta misma semana ha vuelto hablar asegurando dos cosas:

  • El aluminio va a seguir siendo el material de los modelos de bordes rectos durante bastante tiempo. Ya sea el iPhone 18 Pro, iPhone 18e, etc. Los modelos "normales".
  • Por otro lado, deja la puerta abierta a que el iPhone del 20 aniversario, con sus bordes curvos, juegue con otras reglas. La opción preferida para este modelo pasa por volver al cristal, con una calidad de acabado que recodaría a la del primer iPhone Air. 

La fábrica encargada de este proceso ya habría terminado su renovación y estaría a la espera de que arranque la maquinaria, aunque el filtrador no ha querido dar el nombre del proveedor.

El cristal vuelve, y con qué acabado

Que Apple vuelva al cristal no es ninguna sorpresa, la sorpresa está en el nivel de acabado que se baraja. Situar la referencia en el iPhone Air habla de un cristal cuidado, con un tacto que va bastante más allá de lo que hemos visto en los últimos modelos Pro. Encaja, además, con la curvatura que se lleva meses describiendo para este iPhone: un cristal que envuelve los cuatro lados del dispositivo sin cortes en la pantalla.

En este puzle aparece también Lens Technology, uno de los grandes proveedores de cristal para las tapas traseras de iPhone, que ya se hizo con las plantas de ensamblaje de marcos metálicos y tapas de cristal que antes llevaba Catcher Technology. 

Fixed Focus Digital no ha confirmado que sea esta la fábrica de la que habla, pero el movimiento previo de Lens Technology absorbiendo esa capacidad de producción encaja con lo que se necesitaría para un proyecto de esta envergadura.

Dos tamaños, un nombre en duda y una fecha ya marcada

El diseño no es la única pieza que ya tenemos sobre la mesa. El iPhone del aniversario llegará en dos tamaños, siguiendo la estela de los Pro habituales, con pantallas de 6,3 y 6,9 pulgadas si mantiene las proporciones de los iPhone 18 Pro que veremos este septiembre. Nada de modelo único y especial para la ocasión: serán dos, como en cualquier otra generación.

El nombre, en cambio, todavía genera dudas. Durante meses todo apuntaba a iPhone 20, número redondo para un aniversario redondo. Pero filtraciones más recientes desde la cadena de suministro han metido en la ecuación el nombre iPhone 19 Pro. El debate sigue abierto.

Lo que sí parece cerrado es el chip. El iPhone del aniversario llegará con el A21, con nombre en clave Naxos, fabricado en un proceso de 2 nanómetros y heredero directo del A20 Pro. Los códigos internos de los dos modelos son V73 y V74, y su lanzamiento está previsto para el otoño de 2027, compartiendo escaparate con el plegable de segunda generación.

Conviene poner esta filtración en perspectiva antes de emocionarse demasiado. Apple no suele llegar a fabricación a gran escala hasta muy pocas semanas antes del lanzamiento. Con el iPhone 17, la producción de prueba arrancó en junio y el volumen completo llegó en agosto, apenas un mes antes de que el dispositivo saliera a la venta en septiembre.

Apple estaría acelerando ya los preparativos de fabricación de cara a este rediseño del 20 aniversario. Tiene sentido que, con un cambio de diseño tan grande de por medio, la preparación y reformas de las líneas empiece con mucha antelación. Septiembre de 2027 queda lejos todavía, pero la maquinaria, literalmente, ya se está poniendo en marcha.

En Applesfera | Nuevo iPhone plegable - Todo lo que creemos saber sobre él

En Applesfera | iPhone 20 aniversario - todo lo que creemos saber sobre él

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia Las fábricas ya calientan motores para el iPhone 20 y el regreso del cristal huele a pura nostalgia fue publicada originalmente en Applesfera por Guille Lomener .

Cancelación cooperativa de Coroutines: Cómo y cuándo detener una tarea en segundo plano

Actualidad en Androidsis - Mié, 15/07/2026 - 10:11

Seguro que alguna vez te ha pasado que lanzas un proceso en segundo plano y, de repente, el usuario cierra la pantalla o cambia de opinión. Si no gestionas bien ese hilo, te encuentras con que la aplicación sigue currando como si nada, consumiendo batería y memoria RAM como si no hubiera un mañana. Aquí es donde entra en juego la cancelación cooperativa, un concepto fundamental para que nuestras aplicaciones no se vuelvan locas y sean realmente eficientes.

Para que esto funcione, no basta con dar una orden de «parar»; la corrutina debe estar dispuesta a colaborar y comprobar si ya no es necesaria. Ya sea que estés programando en el ecosistema de Android con Kotlin Coroutines o dándole al Python con asyncio, entender cuándo y cómo detener una tarea es la diferencia entre una app profesional y una que se cierra sola por falta de recursos.

El concepto de cooperatividad en la detención

En el mundo de las corrutinas, la cancelación no es un hachazo fulminante. Es decir, si lanzas un Job y luego llamas a cancel(), la corrutina no se detiene instantáneamente si está ejecutando un bucle pesado de CPU. Para que el proceso sea efectivo, la tarea debe ser capaz de suspenderse o verificar explícitamente si ha sido cancelada.

Una forma muy efectiva de lograr esto en Kotlin es mediante la función ensureActive(), que lanza una excepción de cancelación si la corrutina ya no está activa. Por otro lado, todas las funciones de suspensión estándar, como delay o withContext, ya vienen preparadas para esto, por lo que si tu código depende de ellas, ya tienes gran parte del camino hecho.

Gestión de Scopes y Dispatchers para evitar fugas

No podemos lanzar tareas al aire sin control. El uso de GlobalScope es, en general, una mala idea porque crea corrutinas que no se detienen automáticamente, lo que facilita la aparición de fugas de memoria. Lo ideal es utilizar alcances ligados al ciclo de vida del componente, como el viewModelScope en Android, que se limpia solo cuando el ViewModel se destruye.

Para que el rendimiento sea óptimo, debemos elegir bien dónde se ejecuta el trabajo. El Dispatchers.Main es sagrado para la UI y solo debe hacer cosas ligeras. Si necesitamos leer un archivo o hacer una petición a una API, debemos saltar al Dispatchers.IO. Y si tenemos que procesar un JSON gigante o hacer cálculos matemáticos complejos, lo lógico es usar Dispatchers.Default, que aprovecha todos los núcleos de la CPU.

La concurrencia estructurada y los TaskGroups

Cuando manejamos múltiples tareas a la vez, la concurrencia estructurada es nuestra mejor aliada. En Python, la clase TaskGroup permite lanzar varias tareas y asegurarse de que todas finalicen antes de salir del bloque. Lo interesante es que si una de las tareas falla, el grupo cancela automáticamente el resto de los procesos hermanos, evitando que queden tareas zombis ejecutándose en el fondo.

En Kotlin, podemos conseguir un efecto similar con coroutineScope o supervisorScope. La diferencia es que el supervisor no tumba a los hermanos si uno falla, lo cual es vital cuando las tareas son independientes entre sí y no queremos que un error puntual detenga todo el flujo de trabajo.

Manejo de errores y la trampa de las excepciones

Aquí es donde muchos programadores meten la pata. Al capturar excepciones con un bloque try-catch, es muy común atrapar todas las Exception genéricas. El problema es que la CancellationException es la señal que usa el sistema para detener la corrutina. Si la capturas y no la vuelves a lanzar, estás «engañando» al sistema y la tarea seguirá ejecutándose aunque le hayas pedido que pare.

La regla de oro es capturar excepciones específicas, como IOException, y dejar que las de cancelación fluyan libremente. Solo si necesitas hacer una limpieza profunda de recursos (como cerrar un archivo o una conexión), puedes usar un bloque finally para asegurarte de que todo quede niquelado antes de que la corrutina desaparezca definitivamente.

Flujos de datos reactivos con Flow y asyncio

Para casos donde no queremos un único resultado sino un flujo constante de datos, el uso de StateFlow y SharedFlow en Kotlin o los iteradores asíncronos en Python es la clave. En Android, el patrón de usar un StateFlow en el repositorio y recolectarlo en la UI mediante collectAsStateWithLifecycle permite que la recolección de datos se pause automáticamente cuando la app pasa a segundo plano.

Si tienes una funcionalidad de búsqueda donde el usuario escribe letra a letra, no quieres lanzar diez peticiones al servidor. Aquí es donde collectLatest brilla, ya que cancela automáticamente la recolección anterior en cuanto llega un nuevo valor, optimizando el ancho de banda y la carga del dispositivo.

Sincronización y control de tiempo

A veces, una tarea se queda colgada y necesitamos un límite. El uso de withTimeout en Kotlin o asyncio.timeout() en Python nos permite definir un tiempo máximo de espera. Si la tarea no termina en ese plazo, se lanza un error de tiempo agotado y se procede a la cancelación de la tarea, evitando que el usuario se quede mirando una pantalla de carga infinita.

Para aquellos que necesitan proteger una operación crítica y que no debe cancelarse bajo ninguna circunstancia, existe la función shield() en asyncio. Esta crea una capa de protección que impide que la cancelación externa afecte al proceso interno, aunque se recomienda usarla con mucha cautela para no generar procesos incontrolables.

Medir distancias con el móvil parecía sencillo con las aplicaciones de regla. Estamos en 2026 y solo funciona bien en los iPhone Pro

Actualidad en Applesfera - Mié, 15/07/2026 - 09:31

Usar el móvil para prácticamente cualquier cosa aplica también a medir el espacio en el salón para colocar un mueble o colgar un cuadro y hasta saber cuánto mide exactamente una persona. Aunque quizás la exactitud no es la mejor palabra para definir las herramientas de medición que hay en smartphones Android y en muchos de los iPhone.

La cámara es el factor clave para realizar esas mediciones y es muy imprecisa en la mayoría de casos. De hecho, si aciertan es por pura casualidad. Sin embargo, desde los iPhone 12 Pro en adelante (siempre que hablemos de una versión 'Pro' o 'Pro Max'), las mediciones sí son exactas. Y todo gracias a un sensor al que no hacemos mucho caso.

La magia del LiDAR en los iPhone Pro

Pocos entendimos de primeras por qué Apple añadió un sensor LiDAR en los iPhone 12 Pro que posteriormente irían heredando todos sus sucesores 'Pro' hasta llegar a los actuales iPhone 17 Pro. Hasta los iPad Pro (desde los iPad Pro 2020) cuentan con dicho sensor. Sí, ese que es como una especie de círculo gris que aparece en el módulo de cámaras.

Pues bien, ese sensor sirve fundamentalmente para mapear en 3D el entorno mediante un escaneo en profundidad que resulta muy preciso. De fondo, también puede servirnos para mejorar fotografías en modo retrato aplicando mejor el efecto de profundidad gracias a que es capaz de identificar a la persona u objeto principal y su distancia del fondo. Pero es en las mediciones donde está su gran aliado.

En Applesfera Apple "se ha pasado" con iOS 27 beta 3: el nuevo efecto visual del fondo de pantalla es una genialidad

Tener un sensor como este permite calcular de forma precisa las distancias y, con ello, tener unas medidas exactas que no encontramos con otros móviles Android y tampoco con iPhone sin ese sensor. Y es que esos otros utilizan fundamentalmente la cámara para las mediciones, pero en ausencia de más sensores de precisión, no suelen ser fiables.

Así de exactas son las medidas en un iPhone Pro

Los iPhone ya traen consigo una aplicación llamada Medidas. Si la borraste, podrás volver a descargarla gratis en la App Store. Su funcionamiento es igual en todos los iPhone, aunque es en los comentados 'Pro' en los que gana un mayor sentido por ser donde encontraremos la mayor precisión.

Para utilizarla deberás estar enfocando la sala con la cámara y seguir las instrucciones que aparecen en pantalla, que suelen ser mover el móvil. Cuando esté listo aparecerá un círculo que te servirá para marcar uno de los extremos del objeto, espacio o persona que quieras medir. Solo tienes que pulsar el botón + una vez tengas el círculo en dicho extremo.

Después será cuestión de ir situando el resto de extremos para conocer las medidas exactas entre los puntos. Esas líneas que se dibujan se quedarán marcadas de forma permanente para que puedas consultar las medidas. Y, por supuesto, también podrás tomar una captura para que se quede guardado como si de una foto más se tratase.

Más allá de llevar años utilizando con eficiencia esta funcionalidad, es que también la hemos puesto a prueba con un metro. Y tal como puedes ver en las fotografías de este post, es muy exacto.

¿Entonces no sirven otros iPhone?

Sí y no. La aplicación estará disponible en ellos, pero los resultados no son tan fiables si no se tiene un sensor LiDAR. Puede que en alguna ocasión sí lo sea, pero honestamente creemos que es más por casualidad que por otra cosa. Puede ser útil si no te importan las medidas exactas, sino saber si algo es más grande o más pequeño que otra cosa.

Lo que sí es preciso en todos los iPhone es el nivel que viene incorporado en esa misma aplicación. Se obtiene gracias a los sensores de acelerómetro y giroscopio que sí tienen todos los iPhone. Por tanto, este te podrá ser útil para saber si un cuadro está recto antes de colgarlo o asegurarte de que una mesa está recta y no va a cojear.

En Applesfera | Cómo conseguir mejores fotografías con tu iPhone cambiando estos ajustes

En Applesfera | Los 47 mejores juegos para iPhone: gratis, de pago e incluidos en Apple Arcade

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia Medir distancias con el móvil parecía sencillo con las aplicaciones de regla. Estamos en 2026 y solo funciona bien en los iPhone Pro fue publicada originalmente en Applesfera por Álvaro García M. .

Filtran el primer producto de los creadores de ChatGPT: un altavoz que parece tener vida propia. Y Apple amenaza con truncarlo

Actualidad en Applesfera - Mié, 15/07/2026 - 08:31

¿Un altavoz? Sí, un altavoz será el primer producto de OpenAI. Aunque en principio, no será un altavoz más. Al menos esas son las intenciones de la compañía según un informe de Bloomberg en el que el filtrador Mark Gurman describe este dispositivo inédito con el que la compañía de IA quiere romper el mercado.

Esta filtración llega además en uno de los momentos más delicados en la fase de desarrollo. Justo cuando Apple demanda a OpenAI por, presuntamente, robar secretos comerciales. Esto es algo que el propio Gurman avanzaba ya que podría ser un lastre para el lanzamiento del producto. Al menos hasta que se dirima todo en un juicio.

"El primero de su categoría" Imagen: Wikimedia Commons

Mark Gurman dice que que el primer dispositivo de OpenAI se describe de forma interna como "el primero de su categoría". Lo resume afirmando que será "un ordenador diseñado para una IA que ayuda a hacer que las personas ocupadas sean más productivas". Y visto así, suena bastante genérico.

La idea de OpenAI es que tenga ChatGPT como eje de toda la experiencia. Además de responder preguntas, reproducir música o controlar dispositivos del hogar conectado, también podrá responder mensajes y aprovechar la información personal del usuario. Para ello, requerirá acceso a su correo electrónico y otras plataformas.

La clave parece no solo estar en lo que hará este altavoz, sino en cómo lo hará. El dispositivo buscaría anticiparse a las necesidades del usuario y actuar de forma proactiva en función de su contexto y hábitos.

En Applesfera Siri AI sí llegará a España y al resto de Europa. Será en Mac y hay 50 modelos compatibles

Uno de los aspectos en los que parecen insistir más la compañía es en que el dispositivo tenga una personalidad propia. Según la información de Bloomberg, incorporará elementos mecánicos capaces de moverse de forma autónoma para transmitir la sensación de que está "vivo", alejándose de la imagen de un simple altavoz inteligente que responde a comandos de voz.

Detrás de su diseño estará el equipo de LoveFrom, el estudio fundado por Jony Ive, histórico exjefe de diseño de Apple, dado que OpenAI adquirió io Products, la empresa de Ive y Sam Altman (CEO de OpenAI) que se empezó a encargar de este asunto. 

Jony Ive y Sam Altman | Imagen: io Products

Este gadget estará pensado también para acompañar al usuario por toda la casa y contará para ello con una batería recargable. Además, integrará una cámara y otros sensores para interpretar el entorno y el contexto en el que se encuentra el usuario. 

Todo ello se apoyará en GPT-Live, la evolución del modo de voz de ChatGPT presentada hace apenas unos días. Este es un modelo capaz de escuchar y hablar de forma simultánea, arrojando conversaciones más naturales y fluidas. Unido al carácter portátil del altavoz, se reforzaría esa idea de "compañero", alejándolo del concepto de dispositivo fijo en una habitación que sí tienen otros altavoces como los de Apple, Amazon o Google.

La demanda que amenaza con cambiarlo todo

Si atendemos a filtraciones pasadas, esto no parece muy distinto de lo que en cierto modo parece buscar Apple con Siri AI y algunos de los futuros productos filtrados, tales como el "HomePod con pantalla" y sus versiones que incluirían un brazo robótico. Aunque la intervención de Apple aquí viene más por otro lado.

Tal como recordábamos anteriormente, Apple ha demandado a OpenAI por un presunto robo de secretos comerciales relacionados con el desarrollo de nuevos dispositivos. Entre los señalados figura Tang Tan, antiguo responsable del diseño de producto del iPhone y actual jefe de hardware de OpenAI, además de otros exempleados de Apple que ahora trabajan en la compañía de Sam Altman.

Según Gurman, esta demanda podría tener consecuencias sobre este altavoz. OpenAI parece mantener el objetivo de presentarlo este mismo año para lanzarlo en 2027, pero internamente estarían reconociendo que el proceso judicial podría alterar esos planes. 

De hecho, Apple solicita una orden judicial para impedir la comercialización de los dispositivos si considera que se han desarrollado utilizando información confidencial. Por tanto, pese a estar cada vez más cerca de saber cuál será el primer producto de los creadores de ChatGPT, la incertidumbre que le rodea nos llena de dudas acerca de si finalmente lo veremos tan pronto como se esperaba.

Imagen de portada | Concepto generado con IA

En Applesfera | HomePod mini 2 - todo lo que creemos saber sobre él

En Applesfera | Apple Intelligence: todo lo que puedes hacer con la IA de Apple y qué dispositivos son compatibles

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia Filtran el primer producto de los creadores de ChatGPT: un altavoz que parece tener vida propia. Y Apple amenaza con truncarlo fue publicada originalmente en Applesfera por Álvaro García M. .

La gran joya de la ciencia ficción 'Silo' llega a Prime Video con su primera temporada gratis

Actualidad en Applesfera - Mar, 14/07/2026 - 19:00

Silo se ha convertido en una de las series insignia de Apple TV. De esas que aparecen siempre en los primeros puestos de lo más visto y que se han ganado un hueco entre las mejores del streaming en general. Incluso más allá del catálogo de la manzana. Ahora mismo vive uno de sus momentos más emocionantes con la tercera temporada recién estrenada, así que si todavía no le has dado una oportunidad, este es un buen momento para hacerlo.

Y es que Amazon acaba de poner encima de la mesa la excusa perfecta para engancharte a la historia. Desde el 12 de julio, la temporada 1 completa está disponible en Prime Video sin pagar el canal de Apple TV, siempre que ya cuentes con tu suscripción a Prime Video. Diez episodios para arrancar desde cero y llegar con el enganche puesto hasta donde de verdad empieza a pedirte la cartera.

Para disfrutar de esta primera temporada no tienes que hacer nada complicado. Solo entra en la aplicación de Prime Video, busca Silo en el buscador y la plataforma te ofrecerá directamente la primera temporada gratuita. Eso sí, siempre y cuando tengas la suscripción a Prime Video, que es la única condición que de verdad hace falta cumplir.

Una ingeniera, un búnker y todos los secretos del silo

Silo está basada en un saga literaria y nos lleva a un futuro distópico donde los últimos supervivientes de la humanidad viven bajo tierra. Están encerrados en un gigantesco silo cuya organización y sus secretos sostienen el frágil equilibrio de toda la comunidad. Ahí fuera, se les han enseñado durante generaciones que el mundo es tóxico e inhabitable. Y esa creencia es precisamente lo que mantiene unida (y controlada) a la sociedad que vive puertas adentro.

Rebecca Ferguson encabeza el reparto dando vida a Juliette Nichols, una ingeniera que termina metida de lleno en una investigación capaz de poner en duda todo lo que los habitantes del silo han dado por cierto durante generaciones. 

A partir de ahí, la serie combina misterio, ciencia ficción y suspense en una historia que ha sabido mantener enganchado al público (y a mi) episodio tras episodio, con esa mezcla de intriga política y drama humano que la ha llevado a ganarse un hueco entre las series más comentadas de los últimos años.

La primera temporada, la que ahora llega gratis a Prime Video, se estrenó originalmente en 2023. Son estos diez capítulos, con sus títulos y duraciones, los que tienes disponibles desde ya.

Y si quieres ver la temporada dos y tres de Silo...

La generosidad de Amazon y Apple TV llega hasta cierto punto. La temporada 1 es la única que está gratis, o mejor dicho, incluida en la tarifa de Amazon Prime. Para continuar con la historia hace falta seguir pagando el canal de Apple TV dentro de Prime Video. O la suscripción de Apple TV en su App, ahí como prefieras. Ya que el precio es el mismo: 9,99 euros al mes y un periodo de prueba de siete días.

Si te pones con ganas, siete días bastan para devorar buena parte de la temporada 2 e incluso alcanzar los episodios ya emitidos de la temporada 3. ¿Atracón? Puede. Sí. Un poco. La serie lo merece, todo sea dicho.

En Applesfera | Apple TV y sus estrenos: las próximas series, películas y documentales que veremos en su catálogo

En Applesfera | 'Silo', tercera temporada - capítulos, información y lo que se sabe de su renovación en Apple TV

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia La gran joya de la ciencia ficción 'Silo' llega a Prime Video con su primera temporada gratis fue publicada originalmente en Applesfera por Guille Lomener .

Así conseguía iTunes clavar nuestros gustos musicales con el botón Genius. Firmaba ahora mismo por volver a tenerlo en mi iPhone

Actualidad en Applesfera - Mar, 14/07/2026 - 18:00

Quienes usaron iTunes antes de su transformación en Apple Music seguramente utilizaron una funcionalidad muy conocida: las listas Genius. Con un simple botón sobre nuestra canción favorita, iTunes era capaz de crearnos una lista de música con un alto porcentaje de éxito en nuestro gusto. Muchos se preguntaron entonces qué genio se ocultaba tras las listas Genius de iTunes.

Listas Genius de iTunes: el alma detrás del algoritmo

Recuerdo utilizar el botón Genius con bastante frecuencia en mi iPhone hace años. Con la llegada de Apple Music en iOS 8, Apple comenzó a ocultar esta funcionalidad para eliminarla por completo con iOS 10. Del Mac tardó más tiempo en desaparecer. Pese a todo esto, no se han borrado mis buenas impresiones del sistema de recomendación, que ha sido un auténtico misterio para la mayoría de mortales.

Gracias a un post en Quora recogido en la revista MIT Technology Review, sabemos cómo funcionan las listas Genius de iTunes. El autor del post original era un ingeniero de Apple llamado Erik Goldman, que desveló el funcionamiento del sistema.

{"videoId":"x9j69su","autoplay":true,"title":"APPLE estuvo a punto de desaparecer por CULPA del iPod", "tag":"webedia-prod", "duration":"1194"}

Básicamente, nuestra librería de canciones se compara con las librerías de todos los usuarios de Genius. Apple entonces ejecuta unos algoritmos anteriormente secretos, que Goldman describe como algoritmos de recomendación similares a los usados por servicios como Netflix. 

"El cálculo de las estadísticas resultantes se realiza a nivel global, de forma regular y se almacenan en una caché", aseguró el ingeniero. Dentro del análisis de factores estadísticos se encuentran las variables latentes. Según Wikipedia, "son las variables que no se observan directamente sino que son inferidas a partir de otras variables que se observan".

Mediante estas técnicas estadísticas y utilizando las variables latentes de un conjunto de datos, se vuelve mucho más sencillo de resolver el problema pues se reduce su tamaño. Una vez tienes definidas las variables clave, se utiliza un modelo de espacio vectorial. Con él, tenemos casi todas las piezas del funcionamiento de las listas Genius de iTunes.

Dicho de una forma más sencilla: Genius no escuchaba tu música, escuchaba tus gustos comparados con los de millones de personas más. Si mucha gente que tenía en su biblioteca la misma canción que tú también solía tener otras diez canciones concretas, Genius entendía que esas diez canciones probablemente también te iban a gustar a ti, aunque nunca las hubieras escuchado. 

No era magia ni inteligencia artificial como la entendemos ahora, era estadística pura aplicada a millones de bibliotecas de iTunes trabajando en conjunto, algo parecido a lo que hace Netflix cuando te recomienda una serie porque a gente con tus mismos gustos también le gustó.

Genius sigue vivo, pero solo si sabes dónde mirar

Toda esta tecnología ha sido sustituida en el iPhone por Apple Music y sus listas seleccionadas por editores. Pero el nombre no ha desaparecido del todo: en la app Música para Mac, dentro del menú Archivo, sigue existiendo la opción de crear una playlist Genius o activar el Genius aleatorio. 

Ambas funciones siguen apoyándose en el mismo principio de comparar tu biblioteca con la de otros usuarios para tejer una lista con sentido. Es curioso encontrarse ese vestigio prácticamente intacto casi veinte años después, escondido en un rincón del escritorio mientras en el móvil ya ni se le espera.

Lo que sí sobrevivió en todas las plataformas, con otro nombre, fue la idea de partir de una canción para construir algo más grande: hoy Apple Music te deja crear una estación a partir de cualquier tema que te guste, un sistema similar en espíritu a Genius, pero que en mi caso no termina de acertar con la misma puntería que aquel botón que tantas tardes me acompañó.

En Applesfera | Apple Music esconde música gratis y para siempre: así puedes escuchar canciones sin pagar un euro

En Applesfera | Nuevo iOS 27 - Todas sus novedades, iPhone compatibles y cómo probarlo antes que nadie

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia Así conseguía iTunes clavar nuestros gustos musicales con el botón Genius. Firmaba ahora mismo por volver a tenerlo en mi iPhone fue publicada originalmente en Applesfera por Eduardo Archanco Guille Lomener .

Apple e Intel decidieron "divorciarse" hace seis años. Ya sabemos quién les ha reunido de nuevo: Donald Trump

Actualidad en Applesfera - Mar, 14/07/2026 - 17:00

Que Apple e Intel vuelvan a ser socios podría parecer una decisión únicamente estratégica por parte de ambas, aunque ya se vislumbraba un cierto carácter político viendo que fue el mismísimo Donald Trump, presidente de Estados Unidos, el que lo anunció. Ahora, en The Wall Street Journal revelan cómo fueron las negociaciones y el papel clave que jugó la administración estadounidense.

Tim Cook y Donald Trump en una visita a una fábrica de Mac Pro en Texas, en 2019 | Imagen: AP

Precedentes. Hace un mes se hacía oficial que Apple e Intel volverán a colaborar tras años en los que ambas compañías habían cesado sus relaciones tras la transición de chips Intel a Apple Silicon en los Mac. El nuevo acuerdo implica que Intel fabrique algunos de los chips de Apple en sus plantas dentro de Estados Unidos.

La negociación. Según cuentan ahora en The Wall Street Journal, el acercamiento entre las compañías se produjo después de que el todavía CEO de Apple, Tim Cook, negociara en Washington una exención a los aranceles sobre los semiconductores.

Cuentan que en esas reuniones con Donald Trump y el secretario de Comercio, Howard Lutnick, le instaron a utilizar fábricas de Intel para lograrlo. Y tras un proceso de negociación que no parece haber sido muy largo, llegó el acuerdo entre Apple e Intel.

En Applesfera Las 15 primeras cosas que me animaría a probar si instalas la beta pública de iOS 27

Prioridad estratégica. Dicen en WSJ que la Casa Blanca considera que recuperar a Intel es una cuestión de seguridad nacional e independencia tecnológica. Durante décadas fue el gran referente estadounidense en la fabricación de chips, pero perdió terreno frente a fabricantes asiáticos como TSMC y Samsung. 

Para la Administración Trump, revertir esa situación es una prioridad para reducir la dependencia exterior en una industria considerada estratégica. De ahí que el propio gobierno estadounidense les haya dotado con alrededor de 9.000 millones de dólares al adquirir un 10% de la compañía.

Por qué es importante. Más allá de una nueva colaboración de Apple con Intel, esta operación demuestra cómo vivimos tiempos en los que la política está influyendo claramente en las grandes decisiones de las compañías tecnológicas.

Nvidia es otra de las compañías que el gobierno de Trump quiere que sirvan como impulso a Intel | Imagen: Wikimedia Commons

No solo es Apple. Apple forma parte de una estrategia mucho más amplia para relanzar Intel. La Administración Trump también estaría impulsando acuerdos con otras grandes tecnológicas como Nvidia y SpaceX. Todo ello con el objetivo de volver a colocar a Intel como una de las compañías punteras en semiconductores.

El seguimiento. La implicación de Washington no terminará con este acuerdo, según WSJ. Afirman que los responsables del ministerio de Comercio mantienen reuniones periódicas con la dirección de Intel y reciben informes trimestrales sobre la evolución financiera y tecnológica de la compañía. Un seguimiento que afecta incluso a proyectos concretos como la ampliación de las fábricas para acoger nuevos procesos de empaquetado de chips.

Imagen de portada | Applesfera y Wikimedia Commons

En Applesfera | Nuevo MacBook Pro táctil con pantalla OLED - Todo lo que creemos saber sobre el próximo portátil profesional de Apple

En Applesfera | Apple macOS: todas las versiones hasta la fecha, cómo saber la que estás usando y cómo actualizar el sistema operativo

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia Apple e Intel decidieron "divorciarse" hace seis años. Ya sabemos quién les ha reunido de nuevo: Donald Trump fue publicada originalmente en Applesfera por Álvaro García M. .

watchOS 27 estrena nuevos gestos y su propio entrenador con IA. La beta pública abre sus puertas para que lo pruebes

Actualidad en Applesfera - Mar, 14/07/2026 - 15:30

La beta pública de watchOS 27 acaba de abrirse al igual que la de iOS 27. Con ella cualquiera puede meter en su Apple Watch lo que hasta ahora solo estaba reservado a quien tenía cuenta de desarrollador. Nosotros llevamos ya unas semanas con ella puesta en Applesfera (sin sustos que reportar) así que toca contarte qué te espera si decides sumarte.

Eso sí, antes de las novedades hay un punto a tener en cuenta en la beta de watchOS 27. Porque el Apple Watch juega con reglas distintas al resto de dispositivos de Apple a la hora de instalar betas.

Antes de instalar watchOS 27, un aviso importante

Aquí no hay marcha atrás, y es literal. En cuanto la beta de watchOS 27 entra en el reloj, ahí se queda hasta que llegue la versión definitiva en otoño. Sin la opción de volver atrás como si se puede con el iPhone. A eso se suma que el propio Apple Watch depende de que el iPhone también esté en iOS 27. Así que no es solo tener una beta, es tener dos.

La parte buena es que tratarse de la beta pública ya filtra bastante los problemas más gordos, porque Apple solo la libera cuando el software ha pasado ya varias rondas internas de pruebas. Pero sigue siendo una beta al fin y al cabo, así que cualquier fallo puntual entra dentro de lo esperable mientras Apple sigue afinando el sistema semana a semana.

La nueva pantalla de aplicaciones de watchOS 27

Si hay una novedad que cambia de verdad cómo se usa el reloj es esta. Al pulsar la corona digital ya no aparece siempre el mismo mosaico de iconos, sino una selección que varía según los hábitos de cada uno, ajustada por un sistema de inteligencia artificial que va aprendiendo con el uso diario. 

Cuanto más se repite una aplicación en poco tiempo, antes sube esa app a los primeros puestos, y quien prefiera la cuadrícula de siempre puede seguir accediendo a ella con un deslizamiento hacia abajo o pulsando el botón lateral.

Como en el Apple Watch se manejan muchas menos aplicaciones que en el iPhone, esta selección automática cubre casi siempre lo que hace falta sin tener que buscar nada.

Un gesto nuevo que se aprende en un segundo

Al doble toque de siempre, que servía tanto para abrir aplicaciones como para moverse por el sistema, se le une ahora un toque único. Con el podrás entrar en los widgets de la pantalla de inicio. La mecánica queda así: dos toques para pasar de un widget a otro, uno solo para entrar en el que está seleccionado, y la muñeca hacia atrás para salir, igual que hasta ahora.

Con dos toques te desplazas entre los widgets, con uno entras en él El resto de novedades de watchOS 27

Hay más cambios que completan el paquete, aunque con menos protagonismo. Workout Buddy, el entrenador con inteligencia artificial, estrena español y suma hasta tres voces distintas para ir narrando el entreno con datos como los kilómetros acumulados en el mes o el estado de los círculos de actividad.

El centro de control adopta el mismo tratamiento de Liquid Glass que ya se vio en iOS 27, y en el apartado de salud femenina el reloj gana la capacidad de detectar signos de premenopausia.

Siri AI hace también su aparición en el Apple Watch, pero arrastra las mismas dos trabas que ya tiene en el iPhone: por ahora solo habla inglés, y dentro de la Unión Europea ni siquiera en ese idioma está disponible, sin que Apple haya dado fecha para resolver ninguna de las dos cosas.

En Applesfera "He vuelto a confiar en el asistente de Apple": llevo una semana con la nueva Siri AI y te cuento mi experiencia Qué relojes son compatibles con watchOS 27

La lista de compatibles arranca en el Apple Watch Series 9, sube hasta el Ultra 2 y también incluye el SE de tercera generación. 

Compatibilidad watchos 27

Apple Watch Series 9

Apple Watch Series 10

Apple Watch Series 11

Apple Watch Ultra 2

Apple Watch Ultra 3

Apple Watch SE 3

Quedan fuera el Series 8, el Series 7, el Series 6 y el Ultra 1. El motivo es el ciclo de chips que usa en el reloj: los Series 6, 7 y 8 comparten el mismo procesador, así que cuando ese chip deja de dar para las funciones nuevas, caen los tres modelos de golpe. El mismo destino les espera dentro de unos años al Series 9, al 10 y al 11, que también van de la mano en este sentido.

Cómo instalar la beta pública en el Apple Watch

El primer paso es tener el iPhone la beta pública de iOS 27, algo imprescindible antes de tocar el reloj. Si todavía no la tienes instalada, el proceso pasa por:

  • Entrar en beta.apple.com desde Safari, iniciar sesión con la cuenta de Apple y aceptar los términos del programa.
  • Con esto hecho, solo queda ir a Ajustes, General, Actualización de software, y dentro de Actualizaciones beta seleccionar la opción de beta pública.

Con el iPhone ya actualizado, activar la beta en el reloj es cuestión de un par de pasos más, sin necesidad de volver a inscribirse en nada:

  1. Abrir la aplicación Apple Watch en el iPhone.
  2. Entrar en General y después en Actualización de software.
  3. Dentro de Actualizaciones beta, seleccionar watchOS 27 beta pública.
  4. Confirmar la descarga y dejar que el reloj se actualice conectado a corriente y cerca del iPhone.

Con esto, el Apple Watch ya queda dentro del programa de beta pública, listo para recibir watchOS 27 y todas las actualizaciones que Apple vaya publicando de aquí a septiembre. No será el año que más titulares deje para el Apple Watch, pero entre la fluidez del sistema y lo bien resuelta que está la nueva pantalla de aplicaciones, hay motivos de sobra para no quedarse esperando.

En Applesfera | Cómo instalar una beta de iOS 27 en el iPhone: paso a paso para hacerlo de una manera segura y oficial

En Applesfera | Nuevo iOS 27 - Todas sus novedades, iPhone compatibles y cómo probarlo antes que nadie

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia watchOS 27 estrena nuevos gestos y su propio entrenador con IA. La beta pública abre sus puertas para que lo pruebes fue publicada originalmente en Applesfera por Guille Lomener .

Anker Nano Charger con pantalla, análisis: un cargador pequeño que por fin cuenta qué está haciendo

Actualidad en Applesfera - Mar, 14/07/2026 - 14:00

Los cargadores suelen pasar desapercibidos. Los enchufamos, conectamos el cable y los dejamos ahí, muchas veces escondidos detrás de una mesa. Por eso, cuando vi por primera vez el Anker Nano Charger de 45 W con pantalla, pensé que el panel era poco más que un reclamo. La información ya está en el iPhone y, para cargarlo, cualquier adaptador USB-C decente debería bastar.

La verdad es que esa primera impresión cambió bastante rápido. Después de varias semanas usándolo, acabé mirando el cargador cada vez que conectaba el teléfono, básicamente porque elimina una duda muy concreta: sabes que el cable funciona, ves cuánta potencia está recibiendo el dispositivo y compruebas si la carga avanza como debería. Pero puedes hacer mucho más.

El tamaño ayuda a que todo el conjunto resulte más convincente. Su cuerpo mide unos 34x35,5x40 milímetros y pesa alrededor de 75 gramos. Cabe sin esfuerzo en cualquier bolsillo de una mochila y apenas se nota cuando lo llevas encima, es del tamaño típico de los micro-cargadores habituales, a pesar de tener pantalla. Con una construcción realmente robusta, tiene un único puerto USB-C y alcanza una potencia máxima de 45W, suficiente para cargar con rapidez un iPhone, un iPad y algunos portátiles ligeros como comentaré después.

La pantalla termina teniendo una utilidad bastante concreta

Al conectar un iPhone, se reconoce el modelo y muestra su nivel de batería en la pantalla del propio cargador. También informa de la potencia en tiempo real, la temperatura y el modo de carga activo. Esta identificación más precisa funciona con los iPhone 15 y posteriores, además de determinados modelos recientes de iPad Pro. Los demás dispositivos USB-C cargan igualmente (como Androids y otros dispositivos), aunque el cargador ofrece menos información sobre ellos.

En el día a día, el panel sirve para algo tan sencillo como comprobar si has utilizado el cable correcto. Puede ocurrir que conectes el iPhone esperando carga rápida y la potencia sea mucho menor de lo habitual. Basta con mirar la pantalla para saberlo. También permite distinguir entre una limitación del cable y una reducción normal de potencia porque la batería ya está bastante llena.

No sustituye a un medidor USB específico, ni falta que hace. Da información suficiente para entender lo que está ocurriendo sin convertir la carga del teléfono en una prueba de laboratorio. El panel es pequeño, pero se lee bien desde una distancia normal. Además, el botón táctil capacitivo superior permite cambiar entre vistas, consultar la temperatura, modificar el modo de carga y girar la interfaz cuando el enchufe obliga a colocar el cargador en una posición extraña.

Anker también ha incluido pequeñas animaciones y una especie de mascota que aparece de vez en cuando. Es algo puramente simpático y curioso sin más utilidad - pero reconozco que termina haciendo gracia, sobre todo porque un cargador suele ser el objeto tecnológico más impersonal de toda la mochila. Aquí, por lo menos, hay algo de carácter.

Los 45W tienen sentido para un iPhone y también para un iPad

La potencia máxima de 45W cubre con margen las necesidades de carga rápida de los iPhone actuales. En mis pruebas, consigo un 50% de batería alrededor de los veinte minutos con un iPhone 17 Pro, partiendo de un nivel bajo y usando un cable compatible. En ocasiones he logrado recuperar un 60% en media hora registrando un pico cercano a los 31W. Como siempre, el resultado depende de la temperatura, el modelo y el porcentaje inicial.

Esta velocidad en un dispositivo tan pequeño se agradece cuando tienes que salir de casa y descubres que el teléfono está casi vacío. Lo conectas mientras te preparas, recoges cuatro cosas o terminas el café, y veinte minutos después ya tienes batería suficiente para afrontar buena parte del día.

La pantalla muestra cómo cambia la entrega de energía durante ese proceso, y me parece interesante para entender como este cargador cuida inteligentemente a nuestros dispositivos. Primero aparece la fase de carga rápida, después una etapa más estable y, cerca del final, una carga lenta de mantenimiento. Anker llama a estas fases Fast, Steady y Trickle. El iPhone ya controla internamente la potencia que acepta, pero aquí ese comportamiento deja de estar escondido.

Con el iPad, los resultados también son interesantes. En una de las pruebas, un iPad Pro M4 de 13 pulgadas pasó del 15% al 60% en media hora y llegó hasta los 43W. Para un MacBook Air puede servir como cargador compacto, dependiendo del modelo y del trabajo que estemos realizando. En un MacBook Pro más exigente, la situación cambia: cargará más despacio y, bajo una carga de trabajo intensa, quizá se limite a mantener el porcentaje. Aunque como digo puede ser útil para un apoyo puntual.

Care Mode tiene más lógica cuando no hay ninguna prisa

El Anker Nano ofrece dos modos principales. Auto prioriza la velocidad dentro de los límites que marca el dispositivo: Care Mode, que se activa con una doble pulsación, reduce la potencia para controlar mejor la temperatura. Está pensado sobre todo para cargas largas, como las que hacemos durante la noche.

La idea es bastante razonable. Si vas a dejar el teléfono conectado durante seis o siete horas, da igual que alcance el 100% a las dos de la mañana o a las cuatro. No necesitas toda la potencia disponible. En ese escenario, tiene sentido cargar más despacio y evitar que tanto el teléfono como el adaptador se calienten más de la cuenta.

El Anker Nano permite alternar entre carga rápida y un modo más lento que reduce la temperatura, especialmente útil durante la noche

Además, poder cambiar de modo evita tener que guardar dos cargadores distintos. Durante el día, cuando necesito recuperar batería deprisa, utilizo Auto. Por la noche activo Care Mode y dejo el teléfono cargando con más calma. Es un gesto muy simple, pero encaja bien con la forma real en la que solemos usar el iPhone.

Los iPhone ya cuentan con gestión térmica, carga optimizada y controles internos de potencia. Care Mode reduce la temperatura porque baja los vatios, algo que también podría conseguirse usando un adaptador menos potente. Mis pruebas muestran una diferencia térmica apreciable, pero no permiten determinar cuánto influirá en la degradación de la batería después de varios años - aunque sin duda, ayudará a prevenir futuros problemas.

Una evolución inteligente del cargador habitual En naranja, el nuevo Nano Anker Display. En blanco, un cargador tradicional USB-C sin pantalla.

El Anker Nano Charger de 45W funciona especialmente bien como cargador compacto para un iPhone o un iPad. Ocupa muy poco, entrega potencia suficiente y muestra información que normalmente queda oculta. Está construido con muchísima calidad, es comodísimo de transportar y nos puede salvar de más de un apuro con su carga rápida y diferentes modos de uso.

Care Mode resulta coherente para la carga nocturna, aunque conviene verlo como lo que es: una reducción de potencia pensada para contener la temperatura. No garantiza que la batería vaya a conservarse intacta durante años, pero permite elegir entre rapidez y una carga más tranquila sin cambiar de adaptador. Todo ello por un precio que me parece muy razonable teniendo en cuenta su calidad y lo que ofrece.

La decisión de compra depende, sobre todo, de cuánto valoremos la pantalla. Sin ella, sería otro cargador GaN compacto con un solo puerto. Con ella, se vuelve más fácil saber qué ocurre cada vez que conectamos el teléfono, entender como lo estamos cargando y aplicar medidas rápidas dependiendo de cómo queramos cargarlo. Parece un detalle pequeño, pero después de acostumbrarme, los cargadores convencionales me resultan un poco más ciegos.

En Applesfera | Amazon tiene de oferta la base de carga plegable de Anker que es perfecta para llevártela de viaje y cargar tres dispositivos de Apple

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia Anker Nano Charger con pantalla, análisis: un cargador pequeño que por fin cuenta qué está haciendo fue publicada originalmente en Applesfera por Pedro Aznar .

Bizum Pay es oficial y llega al iPhone como competidor de Apple Pay: diferencias y cómo funciona

Actualidad en Applesfera - Mar, 14/07/2026 - 13:00

Compras algo, acercas el iPhone al datáfono, eliges una tarjeta y ¡Clin! Así es como funciona en esencia Apple Pay para pagos en establecimientos, pudiendo tener ahí integradas tarjetas de débito o crédito de multitud de entidades. Y ahora se suma una nueva forma de pagar con la aplicación de Bizum Pay, que estuvo en pruebas varios meses y ya ha llegado a iOS y Android.

Bizum Pay funciona como una app de cartera propia, ya que no es compatible con Apple Pay. Aunque la idea no es muy alejada, ya que con solo abrirla, podremos acercar el iPhone a un datáfono y pagar, pasándose el cobro directamente a la cuenta bancaria que tengamos asociada a Bizum.

Qué es Bizum Pay y cómo descargar su app

Aunque comparten marca, Bizum Pay no sustituye al Bizum que ya conocemos. Hasta ahora, la plataforma permitía enviar dinero entre particulares y hasta pagar en comercios online. Todo eso se mantiene.

Lo que hace Bizum Pay es dar un paso más y añadir una cartera digital independiente para pagar en comercios físicos acercando el móvil al datáfono, igual que haríamos con Apple Pay en el iPhone (o con Google Pay en móviles Android). Todo ello, a través del chip NFC del iPhone.

Para ello necesitarás tener su aplicación descargada en el dispositivo, la cual se puede descargar completamente gratis desde la App Store.

Bizum Pay

Bizum Pay vive en tu dispositivo y es la app donde guardar de forma segura tu método de pago presencial Bizum, tus tarjetas de crédito y débito, tus tarjetas de embarque, pases, tickets y demás en un único punto.

Descargar gratis Descargar gratis Configuración de Bizum Pay

Una vez descargues la app, el primer requisito es tener Bizum activado con una entidad bancaria compatible. Si ya cumples con ello, podrás iniciar sesión en Bizum Pay utilizando el mismo número de teléfono asociado al servicio. 

La aplicación comprobará la identidad del usuario y enlazará la cuenta bancaria ya registrada en Bizum. Una vez completado ese proceso ya no será necesario introducir datos bancarios cada vez que se vaya a pagar.

La aplicación actúa como una cartera digital independiente y será la encargada de gestionar los pagos presenciales. Eso sí, el despliegue depende también de que cada banco haya activado el soporte para Bizum Pay, por lo que su disponibilidad será progresiva. Por ahora, solo hemos podido certificarlo en Banco Sabadell, pero irán llegando más.

Las diferencias entre Bizum Pay y Apple Pay

Como explicábamos en la introducción, Apple Pay es accesible con solo acercar el iPhone a un datáfono, aunque también se puede acceder pulsando dos veces el botón lateral del iPhone. Bizum Pay también podrá configurarse como app de pago por defecto seleccionándola dentro de Ajustes > Pagos y apps sin contacto.

En Applesfera iOS 27 convierte a Wallet en lo que prometía: un sitio para (casi) todo

Una diferencia importante es que el dinero sale directamente de la cuenta bancaria vinculada a Bizum. No se trata de una tarjeta virtual almacenada en el móvil, sino de una transferencia inmediata entre cuentas que está en la infraestructura de pagos sin contacto de los comercios. 

La mayor diferencia es que Apple Pay funciona como una cartera donde el usuario almacena tarjetas de Visa, Mastercard, American Express u otras redes compatibles. Bizum Pay, en cambio, utiliza la infraestructura propia de Bizum y carga el pago directamente sobre la cuenta bancaria asociada al servicio, lo cual parece a priori más interesante para los comercios.

En Applesfera | Mucho más que pagar en la app Cartera: esto es todo lo que puedes hacer con Wallet

En Applesfera | Nuevo iOS 27 - Todas sus novedades, iPhone compatibles y cómo probarlo antes que nadie

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia Bizum Pay es oficial y llega al iPhone como competidor de Apple Pay: diferencias y cómo funciona fue publicada originalmente en Applesfera por Álvaro García M. .

Operadores avanzados de Flow: Cómo usar map, filter, zip y combine

Actualidad en Androidsis - Mar, 14/07/2026 - 11:09

Si te has pasado un tiempo picando código, seguro que te has dado cuenta de que los bucles tradicionales son un poco engorrosos. A veces, escribir un for se siente como hacer demasiada ceremonia técnica para lograr algo que debería ser sencillo, dejándonos con un código imperativo que nos dice paso a paso cómo moverse, pero que oculta la verdadera intención de lo que queremos conseguir.

La programación funcional llega al rescate para que dejemos de pelearnos con los índices y las variables temporales. Al adoptar un enfoque más declarativo, podemos centrarnos en el «qué» queremos hacer y no en el «cómo», lo que hace que nuestras aplicaciones sean mucho más fáciles de testear, refactorizar y, sobre todo, de leer sin que nos explote la cabeza.

El arte de transformar con Map

Cuando tenemos un array y necesitamos que cada uno de sus elementos pase por una transformación para generar una nueva lista, el operador map es la herramienta ideal. Básicamente, toma un conjunto de datos y aplica una función transformadora a cada elemento, devolviendo un nuevo array con la misma longitud que el original, pero con los valores modificados.

Un ejemplo clásico sería elevar al cuadrado una lista de números o convertir un montón de nombres a mayúsculas. A diferencia del forEach, que simplemente recorre el array, map retorna el producto final de una vez. Es fundamental no olvidar la sentencia de retorno en la función callback, ya que si se omite, terminarás con un array lleno de undefined, un error silencioso que puede ser un auténtico quebradero de cabeza al depurar.

En entornos modernos como Node.js o navegadores actuales, las arrow functions permiten que este proceso sea increíblemente conciso, eliminando la necesidad de escribir la palabra return si la lógica ocupa una sola línea.

Filtrando el ruido con Filter

No siempre queremos procesar todos los datos; a veces solo nos interesan aquellos que cumplen una condición específica. Aquí es donde entra filter, que actúa como un colador para nuestros arrays. Este método utiliza lo que llamamos funciones predicado, que son funciones que devuelven un valor booleano (true o false).

Si la función devuelve true, el elemento se queda; si devuelve false, se va. Es una alternativa brillante a los bucles con condicionales if internos, ya que evita la mutación del array original y nos permite asignar el resultado directamente a una nueva variable. Un detalle importante es asegurarse de que el retorno sea explícitamente booleano para evitar que las reglas de coerción de JavaScript interpreten mal tus datos y te devuelvan un array vacío sin avisar.

La potencia de Reduce: El acumulador

Si map y filter son útiles, reduce es donde realmente entramos en las ligas mayores. Mientras que los anteriores crean nuevas listas, reduce toma todos los elementos y los condensa en un solo valor. Puede ser un número, un string, un objeto o incluso otro array.

El funcionamiento se basa en un acumulador que guarda el resultado de la iteración anterior. Podemos definir un valor inicial para este proceso, lo cual es vital dependiendo del tipo de dato que queramos obtener. Por ejemplo, si queremos sumar las ventas totales de una tienda, empezamos con un 0; si queremos agrupar datos en un objeto, empezamos con un objeto vacío {}.

Es común que los principiantes se confundan esperando que reduce devuelva una lista, pero recuerda que su propósito es la reducción de datos. Aunque existe reduceRight para procesar la lista desde el final hacia el principio, en la gran mayoría de los casos el reduce estándar es más que suficiente.

Sinergia y Encadenamiento

El verdadero superpoder de estos operadores no está en usarlos aisladamente, sino en su capacidad de encadenarse uno tras otro. Podemos tomar una lista de tareas, convertir sus duraciones, filtrar las que fueron muy largas y finalmente sumar el total de horas para generar una factura, todo en una sola secuencia de flujo.

Este enfoque es el pilar de la programación reactiva. Al evitar el uso de índices manuales y estados mutables, el código se vuelve mucho más seguro y predecible. Además, existen librerías como Ramda o Lodash que extienden estas capacidades, permitiéndonos crear funciones reutilizables que podemos aplicar a diferentes conjuntos de datos sin repetir código.

Otras herramientas útiles: Find y Zip

A veces no necesitamos filtrar todos los elementos, sino encontrar solo el primero que cumpla una condición. Para ello existe el método find, que es más eficiente que filter ya que detiene la ejecución en cuanto encuentra la primera coincidencia. A diferencia de filter, que siempre devuelve un array, find devuelve el elemento encontrado o null si no hay resultados.

En otros contextos de Flow, como en Python o frameworks reactivos, encontramos operadores como zip, que permite combinar dos iterables en pares, o combine, que sincroniza múltiples flujos de datos. El uso de iteradores lazy en estos lenguajes permite que el procesamiento sea mucho más eficiente en memoria, ya que no calculan el resultado hasta que realmente se necesita.

Implementar estas técnicas nos permite escribir software más robusto, sustituyendo la verbosidad de los ciclos tradicionales por una lógica fluida y elegante que transforma, filtra y reduce la información de manera eficiente, garantizando que los datos originales permanezcan intactos y el flujo de trabajo sea totalmente transparente.

Entendiendo los Coroutine Dispatchers: Cuándo usar Main, IO y Default

Actualidad en Androidsis - Mar, 14/07/2026 - 10:09

Si alguna vez has sentido que tu aplicación de Android se queda congelada al cargar unos datos o que el código asíncrono se vuelve un laberinto de callbacks, es que necesitas dominar las corrutinas de Kotlin. Básicamente, estas herramientas nos permiten escribir procesos que no bloquean el hilo principal, logrando que la interfaz de usuario se mantenga fluida mientras hacemos tareas pesadas por detrás.

El truco para que esto funcione a la perfección no es solo lanzar corrutinas al azar, sino saber exactamente dónde se ejecutan. Aquí es donde entran los Dispatchers, que actúan como directores de orquesta decidiendo qué hilo se encarga de cada tarea para no saturar la CPU ni dejar la pantalla colgada.

Los Pilares de la Ejecución: Dispatchers

En Kotlin, no podemos lanzar una corrutina al vacío; siempre necesita un despachador. El Dispatcher.Main es el encargado de todo lo que el usuario ve. Se usa exclusivamente para interactuar con la UI, actualizar un LiveData o lanzar funciones rápidas. Si intentas hacer un cálculo complejo aquí, la app se lagueará inevitablemente.

Para las tareas que requieren leer archivos, escribir en una base de datos Room o hacer peticiones HTTP, tenemos el Dispatchers.IO. Este está optimizado para tareas de entrada y salida, donde el hilo pasa mucho tiempo esperando una respuesta externa. Por eso, este despachador puede escalar hasta 64 hilos, ya que no consume CPU intensivamente mientras espera.

Cuando el problema es la potencia de cálculo, como procesar un JSON enorme o ordenar una lista gigante, el Dispatchers.Default es la opción correcta. A diferencia del de IO, este se ajusta al número de núcleos físicos de tu procesador. No tiene sentido crear cien hilos si solo tienes cuatro núcleos, porque el sistema perdería tiempo precioso en el cambio de contexto.

Existe también el Dispatchers.Unconfined, aunque es muy raro verlo en proyectos reales. Este comienza la ejecución en el hilo donde se llama y luego se reanuda donde sea que la función suspendida haya terminado, por lo que no se recomienda a menos que sepas exactamente qué estás haciendo.

Controlando la ejecución con withContext y la Seguridad del Main Thread

Una de las mejores prácticas en Android es hacer que todas las funciones sean seguras para el hilo principal. Esto se logra usando withContext(). En lugar de obligar a quien llama a la función a saber en qué hilo ejecutarla, la propia función se encarga de cambiar el contexto.

Cuando usamos withContext(Dispatchers.IO), la corrutina se suspende en el hilo actual, se mueve al pool de IO para hacer el trabajo sucio y, una vez terminado, devuelve el resultado al hilo original. Lo mejor es que esto no añade una carga extra de rendimiento comparado con los viejos callbacks y permite escribir código que parece lineal pero que es asíncrono.

Es fundamental entender que marcar una función como suspend no significa que se ejecute automáticamente en un hilo secundario. Una función suspendida puede correr perfectamente en el Main Thread; lo que hace es pausar la ejecución sin bloquear el hilo, guardando el estado en el marco de pila para reanudarlo más tarde.

Gestión del Ciclo de Vida: Scopes y Jobs

Lanzar corrutinas con GlobalScope es, en la mayoría de los casos, un error garrafal porque es muy difícil de testear y puede causar fugas de memoria. Lo ideal es usar scopes ligados al ciclo de vida. En Android, contamos con viewModelScope para los ViewModels y lifecycleScope para las Activities o Fragments.

Cuando una Activity se destruye, su lifecycleScope se cancela automáticamente, lo que a su vez detiene todas las corrutinas activas en ese ámbito. Esto evita que la app intente actualizar una interfaz que ya no existe, previniendo los típicos crashes por referencias nulas.

Cada vez que usamos launch o async, obtenemos un objeto Job. Este Job es como un mando a distancia que nos permite controlar la corrutina. Podemos usar job.cancel() para abortar la tarea o job.join() si necesitamos esperar a que una corrutina termine antes de seguir con la siguiente.

Concurrencia y Paralelismo Real

Mucha gente confunde concurrencia con paralelismo. La concurrencia es como un malabarista que maneja varias bolas; parece que todas vuelan a la vez, pero solo toca una en cada momento. El paralelismo real ocurre cuando tenemos varios núcleos de CPU trabajando simultáneamente en tareas distintas.

Para lograr esto, usamos el constructor async, que nos devuelve un Deferred. Si lanzamos dos tareas con async(Dispatchers.Default) en un móvil con varios núcleos, ambas se ejecutarán exactamente al mismo tiempo. Para recuperar los valores, simplemente llamamos a await().

Si queremos lanzar varias tareas y asegurarnos de que todas terminen antes de seguir, lo más limpio es usar coroutineScope { ... }. Esto crea un entorno de concurrencia estructurada donde, si una de las tareas hijas falla, el scope gestiona el error y evita que las excepciones se filtren silenciosamente, algo que podría pasar si usamos async sin el await correspondiente.

Anatomía del Context Switching

El cambio de contexto o context switching es el proceso donde el sistema operativo pausa un hilo, guarda su estado y carga otro. Aunque las corrutinas son ligeras, cambiar entre Dispatchers.Default y Dispatchers.IO implica mover la ejecución entre diferentes pools de hilos.

Si abusamos de los cambios de contexto, el rendimiento puede bajar. Sin embargo, el framework de Kotlin es muy listo y optimiza los saltos. Si ya estás en un pool de hilos compatible, el sistema intentará mantenerte en el mismo hilo para evitar el overhead innecesario de guardar y cargar registros de la CPU.

A tener en cuenta: el uso de pools de hilos no garantiza que una corrutina se ejecute siempre en el mismo hilo de principio a fin. Después de un suspend y un resume, es posible que la corrutina despierte en un hilo diferente, por lo que depender de variables locales del hilo (ThreadLocal) puede ser arriesgado.

Para dominar el flujo asíncrono, lo ideal es lanzar la corrutina en el hilo principal mediante el scope adecuado, delegar las tareas pesadas a Dispatchers.IO o Default usando withContext, y aprovechar la potencia de async cuando necesitemos resultados en paralelo para que la aplicación vuele y la experiencia del usuario sea impecable.

Las 15 funciones de iOS 27 que justifican instalar la beta pública en tu iPhone hoy mismo

Actualidad en Applesfera - Mar, 14/07/2026 - 08:23

¿Ya tienes la beta pública de iOS 27 instalada, o estás a punto de darle al botón? Después de más de un mes conviviendo con este sistema en mi iPhone, aquí tienes lo primero que yo iría a mirar, sin necesidad de repasar cada rincón del sistema para notar el cambio. Esto no es la lista completa de novedades, que es larga y da para varios artículos, sino la selección de lo que a mí más me ha convencido en estas semanas de uso diario con iOS 27. 

{"videoId":"xaelf7u","autoplay":true,"title":"iOS 27 Las funciones que realmente usarás", "tag":"webedia-prod", "duration":"395"} El nuevo control de Liquid Glass

Dentro de Ajustes, en el apartado de Aspecto, está la novedad más visible de este año en cuanto a diseño. Apple ha añadido un control que permite elegir cuánta transparencia se quiere en Liquid Glass. Desde el máximo que llevo yo instalado hasta una versión mucho más "pulida" que recuerda al aspecto de iOS 18. 

A esto se suma el nuevo fondo de pantalla dorado de iOS 27, disponible en una versión estática, otra dinámica que cambia según la hora del día, y con la posibilidad de personalizar el color a placer

Dentro de las opciones de fondo de pantalla aparece también Image Playground, que ahora genera fondos con inteligencia artificial a partir de una simple descripción escrita, con resultados bastante más resueltos que en su primera versión.

El rendimiento que se nota, aunque no se vea

iOS 27 no es la actualización más vistosa de los últimos años, pero por debajo se nota mucho. Las aplicaciones abren un 30% más rápido, AirDrop llega a ser hasta un 80% más rápido y además encuentra mejor a los dispositivos cercanos, algo que últimamente fallaba bastante. El teclado de emojis carga más rápido, y la transición entre redes Wi-Fi y datos móviles es más exacta que antes.

Que la actualización no tenga tantos cambios visuales como la del año pasado no significa que Apple se haya relajado. El sistema se ha reescrito por debajo, y esa reescritura se traduce en una sensación de fluidez que se nota en el uso diario, incluso estando todavía en fase beta.

Siri AI, con dos inconvenientes por resolver

Siri AI es la gran reinvención de Siri que llevábamos años esperando: comprende mejor lo que le pides, mantiene un historial de conversación y es capaz de ejecutar acciones dentro de otras aplicaciones sin que haya que guiarla paso a paso. Pero de momento tiene dos inconvenientes que conviene tener en cuenta antes de hacerte ilusiones con la beta pública.

El primero es el idioma. Siri AI solo está disponible en inglés, así que aunque tengas el iPhone en español no vas a poder usarla todavía. El segundo llega después: cuando Apple la traiga en español, previsiblemente no llegará a la Unión Europea. De momento solo está disponible en Mac y no en iPhone, iPad ni Apple Watch, mientras la compañía sigue negociando con Bruselas.

En Applesfera ya la hemos probado saltándonos ese bloqueo, y te contamos cómo hacerlo y qué tal funciona. Pero en resumen, si instalas la beta pública de iOS 27 tal cual, no vas a encontrarte con esta nueva Siri AI. Ni estando en España ni en cualquier otro país fuera de la Unión Europea, al menos por ahora.

Las herramientas nuevas de Fotos

La aplicación Fotos es donde más se nota la evolución de Apple Intelligence. Además de la herramienta Limpiar, que ahora elimina personas y objetos con mayor precisión, Apple incorpora dos nuevas funciones dentro del editor.

Herramienta Limpiar

La primera es Extender, que genera automáticamente el contenido que falta en los bordes de una imagen para ampliar el encuadre. Resulta especialmente útil si quieres adaptar una fotografía al formato vertical de Instagram o recuperar una composición que se quedó demasiado ajustada.

Herramienta Extender

La segunda es Reencuadrar, una función que utiliza inteligencia artificial para modificar la perspectiva de una fotografía y generar un nuevo punto de vista. El resultado es sorprendentemente natural y mantiene con bastante fidelidad elementos complejos como los rostros o la geometría de la escena.

Herramienta Reencuadrar Atajos ya entiende lenguaje normal

Quien nunca ha terminado de dominar la aplicación de Atajos tiene ahora un motivo para volver a probarla. Basta con describir con texto normal lo que se quiere que haga un atajo. Sin necesidad de conocer las acciones internas ni de montarlo pieza a pieza. Apple Intelligence se encarga de programarlo automáticamente.

Pequeños cambios que vale la pena mirar

Hay varios retoques menores que suman en el día a día:

  • Muchas aplicaciones ganan una versión horizontal 
  • La aplicación del Tiempo suma pestañas de precipitaciones y viento, con información más detallada de un vistazo. 
  • Mensajes ya envía cada elemento de una conversación de forma independiente.
  • El menú de ajustes de los AirPods se ha reorganizado, más fácil de navegar que antes
  • Los álbumes compartidos de iCloud, que siguen siendo gratuitos, ahora se pueden ver desde Windows a través de iCloud.com
  • En Calendario basta con describir un evento en texto normal para que Apple Intelligence rellene la hora y los detalles automáticamente
  •  Y en Wallet, una entrada o un pase en papel o en un QR de correo se puede convertir en pase digital con solo hacerle una foto.

Ahora que la beta pública ya está disponible, estas son las primeras funciones que te recomendamos probar en cuanto termines de actualizar. Son las que mejor reflejan hacia dónde evoluciona iOS 27. Y aunque todavía quedan varias betas por delante, ya permiten hacerse una buena idea de todo lo que llegará en septiembre.

En Applesfera | Cómo instalar una beta de iOS 27 en el iPhone: paso a paso para hacerlo de una manera segura y oficial

En Applesfera | Nuevo iOS 27 - Todas sus novedades, iPhone compatibles y cómo probarlo antes que nadie

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia Las 15 funciones de iOS 27 que justifican instalar la beta pública en tu iPhone hoy mismo fue publicada originalmente en Applesfera por Guille Lomener .

Beta pública de iOS 27 ya disponible: cómo descargar y probar las novedades en tu iPhone antes de septiembre

Actualidad en Applesfera - Lun, 13/07/2026 - 22:47

Ha llegado el día que tanto esperábamos. Apple presentó iOS 27 el pasado mes de junio, y ahora ya tenemos disponible la beta pública. Todo el que quiera animarse a probar las novedades antes que nadie ya puede hacerlo. En Applesfera te vamos a contar exactamente qué esperar antes de que le des al botón de instalar.

La beta 3 para desarrolladores es una base bastante sólida de lo que llega ahora en la pública, así que el salto no debería dar ninguna sorpresa. Eso sí, sigue siendo software en fase beta y puede tener sus fallos, algo que no hay que perder de vista aunque las ganas de probar iOS 27 sean muchas.

Qué esperar de la beta pública de iOS 27

Una beta es un sistema operativo en desarrollo. Está en camino de su fase final, pero no es la versión estable que llegará para todos en otoño. Eso se traduce en que la batería puede rendir algo peor que con iOS 26, que alguna aplicación falle puntualmente y que aparezca algún cuelgue ocasional. Todo esto se va corrigiendo con las sucesivas betas que Apple publica cada una o dos semanas. Por lo que si te unes a la beta pública de iOS 27 toca actualizar el sistema con cierta frecuencia.

{"videoId":"xaelf7u","autoplay":true,"title":"iOS 27 Las funciones que realmente usarás", "tag":"webedia-prod", "duration":"395"}

Antes de instalarla, haz una copia de seguridad completa del iPhone en el ordenador, con iTunes en Windows o con Finder en Mac. Guárdala bien y no la sobrescribas hasta que estés seguro de que te quedas en iOS 27 de forma definitiva. Recomendamos hacer una copia de seguridad en un ordenador en lugar de en iCloud. Así, si vuelves a iOS 26, evitarás problemas de compatibilidad con las copias de iCloud creadas en una versión posterior.

En Applesfera Las 15 primeras cosas que me animaría a probar si instalas la beta pública de iOS 27 Beta pública y de desarrollador: la misma versión con otro calendario

Hay algo que siempre genera confusión cada verano. La beta pública número 1 de iOS 27 tiene como base la beta de desarrollador número 3, así que llega con buena parte del camino recorrido. El software es prácticamente el mismo en ambos programas. Lo que cambia es el calendario: la beta pública llega con un margen de seguridad respecto a la de desarrollador, por si aparece algún problema grave que Apple prefiera resolver antes de abrir el sistema a más gente.


fecha desarrollador

fecha pública

beta 1 (desarrollador)

8 de junio

-

beta 2 (desarrollador)

22 de junio

-

beta 3 (desarrollador)

6 de julio

-

beta 1 (pública)

-

13 de julio

Cómo instalar la beta pública de iOS 27 paso a paso

El proceso es el mismo de cada año. Solo tienes que seguir estos pasos:

  • Desde Safari, entra en beta.apple.com en el iPhone donde quieras instalar iOS 27.
  • Inicia sesión con tu cuenta de Apple y acepta las condiciones del programa de betas.
  • Abre Ajustes > General > Actualización de software. Toca Actualizaciones beta. > Selecciona iOS 27 Public Beta.
  • Vuelve a la pantalla anterior y espera unos segundos hasta que aparezca la actualización.
  • Pulsa Descargar e instalar y sigue las instrucciones en pantalla.

El proceso completo suele tardar entre media hora y una hora, dependiendo de tu conexión, del modelo de iPhone y de la carga de los servidores de Apple en ese momento.

Qué pasa cuando llegue el lanzamiento final

Durante las próximas semanas, Apple publicará una beta nueva cada dos semanas. Incluso en el mes de agosto se suele aumentar el ritmo a una nueva beta cada semana. Nuestro consejo es que no te quedes a medias en una beta antigua: si desactivas las actualizaciones beta, el sistema se queda anclado en esa versión, con los fallos que tuviera en ese momento sin corregir. 

Si en algún punto la experiencia no te convence, la única forma de volver de verdad a iOS 26 es restaurar el iPhone por completo desde el ordenador, no basta con desactivar la opción de beta en Ajustes.

Cuando se acerque el lanzamiento final, Apple publicará una última beta llamada Release Candidate, que suele coincidir con la presentación del nuevo iPhone 18 Pro. Instalar esa Release Candidate en cuanto esté disponible tiene premio, porque es prácticamente la misma versión que llegará después a todo el público, solo que con unos días de ventaja. Una vez la tengas instalada, ve a Ajustes, Actualización de software, y selecciona que no quieres seguir recibiendo actualizaciones beta, para quedarte definitivamente en el programa estable.

Por delante quedan unas semanas en las que veremos cómo Apple va puliendo iOS 27 beta a beta. Es una de las etapas más emocionantes del año para quienes disfrutamos probando novedades, viendo cómo evolucionan las funciones y descubriendo los cambios que llegarán a la versión final.

Con la copia de seguridad hecha y siendo consciente de que todavía puede haber algún fallo o un mayor consumo de batería, ya solo queda dar el paso y empezar a disfrutar de iOS 27 antes de su lanzamiento oficial.

En Applesfera | Cómo instalar una beta de iOS 27 en el iPhone: paso a paso para hacerlo de una manera segura y oficial

En Applesfera | Las 15 primeras cosas que me animaría a probar si instalas la beta pública de iOS 27

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia Beta pública de iOS 27 ya disponible: cómo descargar y probar las novedades en tu iPhone antes de septiembre fue publicada originalmente en Applesfera por Guille Lomener .

Uso correcto de lifecycleScope y viewModelScope para evitar fugas de memoria

Actualidad en Androidsis - Lun, 13/07/2026 - 18:11

Si alguna vez te has peleado con el famoso callback hell o has visto cómo tu aplicación se cierra inesperadamente por un crash, sabrás que gestionar la asincronía en Android puede ser un auténtico quebradero de cabeza. Las corrutinas de Kotlin llegaron para salvarnos el pellejo, permitiéndonos escribir código que parece lineal y sencillo, pero que por debajo hace magia moviendo tareas entre hilos sin que el usuario note ni un solo tirón en la pantalla.

El problema viene cuando lanzamos tareas que se quedan «colgadas» aunque la pantalla ya no exista, lo que nos lleva directos a las temidas fugas de memoria. Para evitar que la app se coma la RAM del dispositivo, necesitamos entender a la perfección dónde y cómo lanzar estas tareas. Aquí es donde entran en juego los scopes optimizados para el ciclo de vida, que se encargan de limpiar el desastre automáticamente cuando un componente muere.

Entendiendo los CoroutineScopes: ¿Quién manda aquí?

Un scope no es más que un límite que define cuánto tiempo debe vivir una corrutina. Si lanzamos algo en un ámbito que ya no es válido, la corrutina sigue ejecutándose en el vacío, consumiendo recursos y manteniendo referencias a objetos que ya deberían haber sido borrados. Para evitar esto, Android nos regala un par de herramientas ya configuradas.

El viewModelScope es la joya de la corona para la lógica de negocio. Se vincula directamente al ciclo de vida del ViewModel; es decir, que en el momento en que el ViewModel se destruye (porque el usuario salió de la pantalla definitivamente), todas las tareas que hayan empezado ahí se cancelan de golpe. Es la opción ideal para procesar datos que no deben sobrevivir a la destrucción de la vista pero que sí deben resistir cambios de configuración, como rotar la pantalla.

Por otro lado, tenemos el lifecycleScope, que está pegado al LifecycleOwner, ya sea una Activity o un Fragment. Si necesitas que una tarea se detenga exactamente cuando la Activity se destruye, este es tu sitio. Además, en el mundo de Jetpack Compose, contamos con LaunchedEffect, para un correcto control de efectos secundarios en Compose, que crea un scope ligado a la composición del elemento. Si el componente sale de la pantalla, la corrutina se cancela, evitando que animaciones o llamadas a red sigan corriendo en segundo plano sin sentido.

Dispatchers: El arte de no bloquear la interfaz

Lanzar la corrutina es solo la mitad del trabajo; ahora hay que decidir en qué hilo se ejecuta. Si intentas hacer una petición a una base de datos en el hilo principal, Android te lanzará un error o, peor aún, la interfaz se congelará y el usuario pensará que la app ha muerto.

  • Dispatchers.Main: Es el hilo de la UI. Solo debes usarlo para cosas rapidísimas, como actualizar un texto o mostrar un botón. Cualquier trabajo pesado aquí es pecado capital.
  • Dispatchers.IO: Está optimizado para operaciones de entrada y salida, como leer archivos, escribir en Room o hacer peticiones HTTP. Utiliza un pool de hilos elástico que permite muchas tareas simultáneas ya que la CPU no suele estar muy ocupada esperando la respuesta de la red.
  • Dispatchers.Default: Es el músculo para el cálculo intensivo. Si tienes que parsear un JSON gigante o filtrar una lista de miles de elementos, este dispatcher usa un número de hilos basado en los núcleos reales de tu CPU para aprovechar el paralelismo al máximo.

La jugada maestra aquí es usar withContext. Te permite cambiar el hilo en medio de una función suspendida. Puedes empezar en Main, saltar a IO para descargar un archivo y volver automáticamente al hilo principal para mostrar el resultado, todo sin escribir un solo callback.

Concurrencia y Paralelismo: launch vs async

No todas las tareas asíncronas son iguales. A veces solo queremos que algo pase (disparar y olvidar) y otras veces necesitamos un resultado para seguir avanzando. Para esto tenemos dos constructores fundamentales.

El comando launch es el más común. Lanza la tarea y nos devuelve un objeto Job, que es como un mando a distancia para controlar la corrutina. Con este Job podemos cancelar la tarea si el usuario decide cancelar la operación manualmente.

Si necesitamos un valor de vuelta, usamos async. Este constructor devuelve un Deferred, que es básicamente una promesa de que habrá un resultado. Lo interesante es que podemos lanzar varias tareas con async y luego llamar a await() para combinar los resultados. Si tienes 4 núcleos en tu móvil y lanzas tareas en Dispatchers.Default, verás que se ejecutan en paralelo real, reduciendo drásticamente el tiempo de espera.

Flujos de datos reactivos con Flow y StateFlow

Cuando no necesitamos un único valor, sino un chorro de datos que cambian con el tiempo, pasamos a usar Flow. A diferencia de las corrutinas simples, un Flow es «cold», lo que significa que no empieza a trabajar hasta que alguien se suscribe a él mediante collect.

En el desarrollo moderno, lo ideal es convertir esos flujos en StateFlow usando el operador stateIn dentro del ViewModel, siguiendo una guía completa de StateFlow y SharedFlow. Esto permite que la UI siempre tenga acceso al último estado emitido, incluso si el dispositivo se rota. Para consumir estos datos en Compose de forma segura, la recomendación es usar collectAsStateWithLifecycle. Esta función es clave porque detiene la recolección cuando la app pasa a segundo plano, ahorrando batería y memoria de forma inteligente.

Estrategias avanzadas para un código robusto

Para que nuestra app no sea un castillo de naipes, debemos gestionar los errores. En las corrutinas, las excepciones se propagan hacia arriba. Si un hijo falla, el padre también cae, a menos que utilicemos un SupervisorJob. Esto es vital cuando lanzamos tareas independientes donde el fallo de una descarga no debería cancelar la descarga de las demás.

Además, hay que recordar que la cancelación es cooperativa. Si tienes un bucle que procesa millones de datos, la corrutina no se detendrá mágicamente aunque canceles el scope; debes llamar a ensureActive() o comprobar isActive para que la corrutina sepa que debe morir y libere los recursos.

El uso correcto de los scopes de Android, la elección del dispatcher adecuado y la implementación de flujos reactivos constituyen la base de cualquier aplicación profesional. Al delegar la gestión del ciclo de vida a viewModelScope y lifecycleScope, y mover el trabajo pesado a los hilos de IO o Default, conseguimos una experiencia de usuario fluida, sin bloqueos y, sobre todo, libre de fugas de memoria que comprometan el rendimiento del dispositivo.

El origen de los nombres en macOS y por qué Apple abandonó los nombres de felinos por parajes de California

Actualidad en Applesfera - Lun, 13/07/2026 - 18:00

iOS, iPadOS, macOS, watchOS, visionOS, tvOS... Apple tiene muchos sistemas operativos, pero solamente el del Mac lleva un sobrenombre aparte del número. Apple lleva 25 años bautizando cada nueva versión de macOS con un nombre que acompaña siempre al número.

Desde Cheetah, anunciado en 2001, y hasta el nuevo Golden Gate que se presentó este año con macOS 27, han pasado 23 nombres para el sistema operativo de los Mac y todos ellos con algo en común: California. Ya fuesen nombres felinos o parajes, todos se ubican en el estado que vio nacer a la compañía.

De felinos a los parajes californianos

Apple, como tantas otras empresas, llevaban años manejando nombres internos para su software. En marzo de 2001 rompieron esa regla para presentar Mac OS X 10.0. O como oficialmente lo bautizó, Mac OS X Cheetah. Con ello se inauguró una tradición que, probablemente, nadie sabía que llegaría hasta nuestros días.

No se sabe exactamente el por qué de empezar a nombrarlos así de forma oficial, pero sí que se fueron fijando en la fauna felina de California. En los muchos parques naturales del estado abundaban los gepardos (cheetah), los pumas, jaguar o panteras. Todos ellos sirvieron para ir sucediendo a Mac OS X Cheetah.

  • Mac OS X Cheetah (Mac OS X 10.0).
  • Mac OS X Puma (Mac OS X 10.1).
  • Mac OS X Jaguar (Mac OS X 10.2).
  • Mac OS X Panther (Mac OS X 10.3).
  • Mac OS X Tiger (Mac OS X 10.4).
  • Mac OS X Leopard (Mac OS X 10.5).
  • Mac OS X Snow Leopard (Mac OS X 10.6).
  • Mac OS X Lion (Mac OS X 10.7).
  • OS X Mountain Lion (OS X 10.8).

Todo cambió en 2013. Aquel año tocaba renovar a Mountain Lion y Apple "se quedó sin felinos". Literalmente fue lo que explicó Craig Federighi en la WWDC13 cuando presentó OS X Mavericks, la versión 10.9 del sistema operativo y con la que se daba inicio a una nueva era.

Una vez agotados los nombres felinos, aquel año Apple empezó a promover nombres relativos a parajes californianos. Y así fue como llegamos a nuestros tiempos:

  • OS X Mavericks (OS X 10.9).
  • OS X Yosemite (OS X 10.10).
  • OS X El Capitán (OS X 10.11).
  • macOS Sierra (macOS 10.12).
  • macOS High Sierra (macOS 10.12).
  • macOS Mojave (macOS 10.12).
  • macOS Catalina (macOS 10.12).
  • macOS Big Sur (macOS 11).
  • macOS Monterey (macOS 12).
  • macOS Ventura (macOS 13).
  • macOS Sonoma (macOS 14).
  • macOS Sequoia (macOS 15).
  • macOS Tahoe (macOS 26).
  • macOS Golden Gate (macOS 27).

Y todo esto de los nombres se ha convertido ya en el momento más divertido de cada WWDC en la que Apple lo presenta. Craig Federighi, vicepresidente de servicios y hombre que lo presenta, ha convertido ya en meme ese momento.

Ver a partir del minuto 3:32

El último ejemplo lo vimos en la WWDC26, cuando Federighi afirmaba estar ante el fin de los nombres en macOS por "no haberse enterado" del nombre real. Hasta que apareció una furgoneta hippie con el equipo de marketing de Apple, con su vicepresidente Greg Joswiak a la cabeza para decir "¡Es Golden Gate, tío!".

El nombre y número del sistema también han ido variando

Mac OS X fue durante la primera parte del siglo el nombre oficial del sistema operativo de los Mac, independientemente de cuál fuese el número de la versión y el nombre escogido por Apple. En 2012, justo en el último año felino, la compañía decidió abreviarlo a OS X.

En Applesfera Me creía que ya conocía todo de Finder en Mac. Pero conocí estos atajos y ahora sí que soy un 'pro'

Aquel cambio apenas duró cuatro generaciones, ya que para 2016 llegaría el nombre del sistema que actualmente tenemos: macOS. Y escrito así, tal cual. No es Mac OS, ni MacOS, ni ninguna otra forma que no sea literalmente macOS.

De igual forma, la numeración también ha ido teniendo ciertos vaivenes. Durante 16 años tuvimos la versión 10 del sistema. Estas se iban renovando con actualizaciones intermedias cada dos meses y una gran actualización al año, pero siempre bajo el 10 como esquema. 

De la 10.0 se pasaba a la 10.0.1, de esa a la 10.0.2 y así sucesivamente hasta la siguiente gran actualización anual en la que sería la 10.1. De ahí a la 10.1.1, a la 10.1.2, 10.1.3... Y vuelta a empezar.

Realmente daba igual que la actualización fuese más o menos grande en cuanto a novedades. Todas pertenecían al número 10, hasta que en 2020 llegó macOS 11. Desde entonces y hasta el día de hoy, Apple ha ido cambiando la numeración cada año y después llegaron macOS 12, macOS 13 y así sucesivamente.

Apple igualó los números de todos sus sistemas operativos

El último gran cambio llegó cuando se pasó de macOS 15 a macOS 26. No es que alguien en Apple quisiese poner "16" y se equivocase y pusiese un 2. En realidad respondía a una estrategia de la compañía por facilitar la comprensión de los usuarios.

Cuando macOS 15 estaba vigente en los Mac, iOS 18 era el que estaba en los iPhone y watchOS 11 en los Apple Watch. Cada dispositivo tenía un sistema con una numeración distinta y no era fácil ver si iban a la par o no, así que Apple tomó la idea de asociar el año al número del sistema. Y así tuvimos iOS 26, macOS 26, watchOS 26, etc.

Quizás a estas alturas te pueda parecer extraño pensar que las versiones 26 se presentaron en 2025 y que en este 2026 se han presentado las 27, pero en realidad tiene sentido. Apple no cuenta el año en el que se presentan para numerarlas, sino que tiene en cuenta el año en el que mayor presencia tendrá.

Poniendo de ejemplo macOS 26, este sistema se lanzó a mediados de septiembre de 2025 y apenas estuvo tres meses y medio ese año. Sin embargo, habrá estado ocho meses y medio en 2026, ya que macOS 27 no se lanza hasta mediados de septiembre. Si eres jugador de FIFA (EA Sports FC), entenderás cómo va.

El silencioso cambio para dar presencia al número

Pese a siempre llevar una numeración, lo cierto es que Apple siempre le ha dado más protagonismo al nombre. De macOS 26 se reflejaba siempre como "macOS Tahoe" en todos sus carteles promocionales o sus páginas web. Igual que con cualquiera de las versiones anteriores.

Sin embargo, con macOS Golden Gate ya presentado, la cartelería de Apple lo representa como "macOS 27 Golden Gate". No es que esté mal hecho, ya que es una forma correcta de llamarlo y de hacerlo más entendible. Sin embargo, no deja de ser llamativo.

En Applesfera El primer susto con macOS 27: una app incompatible y cómo prepararte para lo que viene

Hay quien cree que podría ser un primer paso para decir adiós a los nombres. Y aunque no tenemos la certeza de que vaya ocurrir esto, tampoco podemos darlo por hecho y quizás sea solo una forma de facilitar todo al usuario como ya se hizo al igualar la numeración.

Por ello, tenemos ya el contador puesto a un año vista para que llegue la WWDC27. Y no solo por conocer las novedades de macOS 27, sino también su nombre. Eso y el gag que se inventa Craig Federighi para justificarlo.

En Applesfera | Nuevo MacBook Pro táctil con pantalla OLED - Todo lo que creemos saber sobre el próximo portátil profesional de Apple

En Applesfera | Apple macOS: todas las versiones hasta la fecha, cómo saber la que estás usando y cómo actualizar el sistema operativo

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

-
La noticia El origen de los nombres en macOS y por qué Apple abandonó los nombres de felinos por parajes de California fue publicada originalmente en Applesfera por Álvaro García M. .

Cómo ejecutar tareas asíncronas en paralelo y combinar sus resultados eficientemente

Actualidad en Androidsis - Lun, 13/07/2026 - 17:10

Seguramente te ha pasado que, tras pelearte un buen rato con el código, consigues que tu programa funcione, pero te das cuenta de que la interfaz se queda congelada o que el sistema no escala ni lo más mínimo. Es frustrante, ¿verdad? Muchas veces el problema no es la lógica en sí, sino que estamos tratando el flujo de trabajo de forma síncrona, obligando al procesador a esperar sentado a que terminen tareas externas antes de seguir con lo siguiente.

Para solucionar esto, existen modelos de programación que nos permiten lanzar procesos al aire y avisarnos cuando estén listos, permitiendo que el ordenador haga otras cosas mientras tanto. Ya sea en el ecosistema de .NET con C# o en el mundo de JavaScript, dominar el asincronismo y el paralelismo es la diferencia entre una aplicación que se siente fluida y profesional y una que parece sacada de los años noventa.

Entendiendo la asincronía frente al paralelismo

A menudo confundimos estos dos conceptos, pero no son lo mismo. Imagina que estás preparando el desayuno. Si lo haces de forma síncrona, primero viertes el café y no haces nada más hasta que la taza esté llena; luego calientas la sartén y te quedas mirando el fuego hasta que esté caliente. Es una pérdida de tiempo total. El modelo asíncrono es como cocinar en la vida real: pones el pan en la tostadora y, mientras se tuesta, empiezas a freír los huevos. No necesitas diez personas cocinando (paralelismo), sino que una sola persona gestiona varias tareas que avanzan independientemente.

El paralelismo real, en cambio, implica el uso de varios hilos de ejecución o procesadores. Aquí es donde tendrías a un cocinero para cada plato. Mientras que la asincronía se trata de no bloquear el hilo principal mientras esperas una respuesta (como una petición a una base de datos), el paralelismo busca dividir una carga pesada de CPU entre varios núcleos para terminar más rápido.

El modelo TAP y la magia de Async y Await en .NET

En C#, el modelo de programación asíncrona de tareas (TAP) nos ofrece una capa de abstracción brutal. Básicamente, nos permite escribir código que parece secuencial y fácil de leer, pero que por debajo el compilador transforma en una máquina de estados optimizada. Gracias a las palabras clave async y await, ya no tenemos que recurrir a callbacks complicados que ensucian el código.

Cuando marcamos un método como async, le estamos diciendo al sistema que ese método puede contener operaciones que tardan tiempo. Al usar await, el hilo actual no se bloquea; simplemente se libera para hacer otras cosas y retoma la ejecución justo donde se quedó una vez que la tarea ha finalizado. Es vital que toda la cadena de llamadas sea asíncrona; si metemos un método síncrono en medio de una pila asíncrona, acabaremos bloqueando el hilo y perdiendo todas las ventajas de rendimiento.

Estrategias para lanzar tareas en paralelo y combinar sus resultados

Si simplemente ponemos await delante de cada tarea, las estaremos ejecutando una tras otra. Para ganar velocidad, debemos iniciar las tareas simultáneamente. La clave está en llamar al método asíncrono sin el await inmediato, guardando la referencia en un objeto de tipo Task.

  • Task.WhenAll: Este método es la joya de la corona cuando queremos lanzar varias peticiones y esperar a que todas terminen. Devuelve una única tarea que se completa solo cuando todas las tareas de la lista han finalizado, permitiéndonos combinar los resultados de forma eficiente.
  • Task.WhenAny: Ideal para escenarios donde solo nos importa el primer resultado que llegue o queremos procesar las tareas a medida que vayan terminando, sin esperar al grupo completo.
  • Parallel.ForEachAsync: Introducido en versiones recientes de .NET, es perfecto para procesar colecciones grandes con operaciones de entrada y salida (I/O), permitiendo controlar el grado de paralelismo para no saturar el servidor externo.

Es fundamental distinguir si la carga es CPU-bound (cálculos intensos) o I/O-bound (red, disco). Para cálculos pesados, Task.Run es la mejor opción para mover la carga fuera del hilo principal. Para llamadas a APIs o bases de datos, Parallel.ForEachAsync o WhenAll son el camino correcto.

Gestión de errores y excepciones asíncronas

El manejo de errores en entornos asíncronos puede ser un dolor de cabeza si no se hace bien. En C#, cuando una tarea falla, la excepción no salta inmediatamente, sino que se almacena en la propiedad Exception del objeto Task, normalmente envuelta en una AggregateException. Sin embargo, al usar await, el sistema desempaqueta automáticamente la primera excepción interna, permitiéndonos usar bloques try-catch tradicionales de forma muy natural.

En JavaScript, el flujo es similar. Las promesas pueden estar en estado de resuelta o rechazada. Si una promesa en una cadena de .then() falla, el error se propaga hasta encontrar el primer manejador .catch(). Una herramienta potente es Promise.all(), que falla inmediatamente si cualquiera de las promesas del grupo es rechazada, lo cual es útil para asegurar que todas las dependencias de una operación se han cumplido.

De los Callbacks a las Promesas y Async/Await en JavaScript

Antiguamente, JavaScript dependía de los callbacks, lo que llevaba al famoso callback hell, donde el código se desplazaba hacia la derecha infinitamente debido a la anidación. Las promesas llegaron para limpiar esto, permitiendo encadenar acciones con .then() y gestionar errores con .catch(), haciendo que el flujo de datos fuera mucho más lineal.

La llegada de async/await en JavaScript llevó esto al siguiente nivel. Ahora podemos escribir funciones que pausan su ejecución sin detener el bucle de eventos del navegador o de Node.js. Es importante recordar que await solo funciona dentro de funciones async y que estas siempre devuelven una promesa por defecto. Una curiosidad técnica es que estas funciones son similares a los generadores, ya que pueden congelar su estado local y reanudarse más tarde.

Cuidado con las brechas asíncronas y el bucle de eventos

No todo es color de rosa; existen trampas peligrosas. Una de las más comunes ocurre al intentar modificar una variable externa dentro de un bucle asíncrono. Debido a que hay una brecha temporal entre que se inicia la tarea y que se recibe el resultado, el estado de la aplicación podría cambiar, provocando resultados impredecibles o errores de concurrencia.

Todo esto ocurre gracias al bucle de eventos (Event Loop). JavaScript ejecuta un solo programa a la vez. Cuando una tarea asíncrona termina, se añade a una cola y el bucle la procesa cuando el hilo principal queda libre. Por eso, si escribimos un bucle while infinito y síncrono, bloquearemos cualquier tarea asíncrona, aunque ya haya terminado, porque el hilo principal nunca llega a mirar la cola de eventos.

Tanto en .NET como en JavaScript, la clave para un software escalable reside en saber delegar el trabajo pesado o la espera de recursos externos a procesos que no detengan el flujo principal. Utilizando correctamente las tareas, las promesas y los mecanismos de control de concurrencia, logramos que las aplicaciones respondan con rapidez y aprovechen al máximo el hardware disponible, transformando procesos lentos y secuenciales en flujos de trabajo optimizados y paralelos.

Páginas

Suscribirse a Tecnoaficiones agregador