Visiones artificiales
En la primera entrega traemos un poco de todo: desde el mainstream de la IA y los LLMs, pasando por realidades mixtas y librerías de terceros, hasta manejo de repositorios y programación avanzada
Arrancamos esta newsletter al terminar el parón navideño, lo que supone la vuelta a la frenética actualidad donde cada día tenemos un anuncio sobre algún nuevo modelo grande de lenguaje o algún producto a que nace a partir de ellos. Apple no se queda atrás y también hace sus pinitos en este campo lanzando sus propios modelos.
Pero el mundo de la programación nos trae más novedades interesantes.
El 2 de febrero ya podrás comprarte Apple Vision Pro
Hay una compañía que siempre consigue hacerse oír por encima de los demás aunque sea lanzando un producto el día inaugural de la feria de electrónica más grande del mundo a la que ni siquiera asiste. Y esa compañía no puede ser otra que Apple que anunciaba la fecha de lanzamiento del su casco de realidad mixta (o computación espacial) Vision Pro. Sólo el tiempo lo dirá pero lo de la manzana no dan puntada sin hilo y si unimos los puntos la puesta en el mercado se parece mucho a la de los otros productos clave de la marca. Eso sí, las unidades será limitadas y además sólo está disponible en EEUU.
Lo que si tenemos disponible es la nueva versión de Xcode, la 15.2, que nos permite no sólo trabajar en aplicación para visionOS con una versión estable (no beta) sino que también es posible realizar la subida al App Store para que el día 2 de Febrero estén disponibles para los afortunados que se hagan con el Vision Pro. Además ha lanzado varios artículos en el blog de desarrollo. Me quedo sin duda con esta pieza que condensa el material disponible si queremos crear aplicaciones para visionOS.
Lo que es arreglar bugs y mejorar el rendimiento para la siguiente versión si eso.
Lo importante de las librerías es el mantenimiento
No todas las librerías de terceros son malas. La calidad es algo tangible pero no lo es tanto el mantenimiento que las mismas tienen por parte del desarrollador o de la comunidad de usuarios. Esta semana la gente de Vapor anunciaba el parche de una vulnerabilidad en el tratamiento de URIs. Las dos piezas clave del problema son por un lado el lenguaje C que delega en el programador muchas de las prácticas de seguridad que lenguajes más modernos implementan directamente y detección de datos dentro de cadenas de texto que han sido protagonistas de innumerables problemas de seguridad.
Los que no tiene ningún problema, ni tiempo para descansar, son los encargados de la librería Swift OpenAPI Generator. Si no te suena demasiado es una librería creada por la propia Apple (¿podríamos considerarla “de segundos”?) que permite crear el código Swift para el manejo de APIs HTTP definidas con el estándar OpenAPI o lo contrario, crear un fichero con las especificación estándar. No paran de incorporar cosas nuevas y esta vez han anunciado la versión 1.2.0 que incluye novedades como las secuencias asíncronas para acceder a la respuesta del servidor por lotes (como hace ChatGPT simulando que alguien escribe) usando secuencias asíncronas.
Un mapa para que nunca olvides el repositorio
Tanto si trabajas en proyectos de código sólo o en un equipo del tamaño que sea, es importante (diría incluso) que imprescindible utilizar una repositorio. A día de hoy el la tecnología por antonomasia es git pero existen diferentes proveedores a la hora de respaldar las copias en servidores remotos. El uso es sencillo cuando estás empezando y si no te sales del camino pero para determinadas operaciones la cosas se complica. Entender bien las bases te ayuda a poder realizar cosas más complicadas como resolver conflictos cuando aparecen tras un merge.
Lo que ya no son bases si no un desarrollo con muchas posibilidades es el estado actual de la API de Mapas (conocida como MapKit) en la última versión de SwiftUI. En iOS 17 se han puesto las pilas y tenemos disponible la capacidad de dibujar capas sobre los mapas. La interfaz es muy sencilla a la par que llena de posibilidades. Como detalle añadir que la propia API de MapKit, ya permitía desde que fue lanzada calcular la ruta entre dos puntos, y ahora también dibujarla en SwiftUI.
La interpretación hace al actor
Vamos cerrando con dos piezas para los más cafeteros. El tipo Actor vino de la mano del nuevo modelo de asincronía y concurrencia, alias async/await. Prometía nada más y nada menos que dos bloqueas de código no intenten acceder a los datos de un actor al mismo tiempo y creasen un estado inconsistente.
Si un solo tiene métodos sincrónicos, entonces todo el trabajo realizado en él se comporta como si estuviera en una cola en que se ejecuta en serie. Pero cuando tienes métodos asíncronos, los actores muestran un comportamiento menos intuitivo conocido como reentrada. Esto significa que mientras un bloque de código está ejecutando una función await, otro bloque puede entrar a ejecutar esa misma función antes de que la primera acabe. Esto es un problema si queremos encolar las llamadas de forma síncrona para que, por ejemplo, si es necesario una llamada de red, las siguientes ejecuciones esperen al resultado en lugar de realizar una nueva llamada.
Y para el sobresaliente aquí os dejamos una pieza con un caso esquina en el que el Actor pierde su capacidad se ser thread-safe cuando lo usamos con un protocolo. Es un artículo extenso pero muy detallado sobre este comportamiento y cómo mitigarlo.
Y poco más
Esperamos que esta primera entrega de nuestra newsletter de desarrollo Caffè Swift te haya gustado. Estamos siempre abiertos a sugerencias y si quieres contactar con nosotros, puedes hacerlo en caffeswift@gmail.com o a través de nuestra cuenta en X como @caffeswift.
Nos leemos pronto, si Jobs quiere, y hasta entonces: un saludo y Good Apple Coding.





