Ladran, señal de que cabalgamos
Aunque las Vision Pro siguen dando que hablar, también traemos herramientas de desarrollo con propuestas diferentes, os hablamos del presente, futuro y el papel de la IA en Swift
Bienvenidos una semana más a esta nuestra newsletter. Lo primero: la frase del título NO pertenece al Quijote. Y lo segundo: sí amigos, hoy también tenemos ración y media de Apple Vision Pro. Sin duda la noticia más destacada sobre el nuevo visor, o como queramos llamarle, de la marca de la manzana, ha venido de la mano de uno de sus competidores. El CEO de Meta, que además de Facebook e Instagram, tiene otros productos como el visor Meta Quest, ha publicado una rajada monumental en sus redes sobre el nuevo producto de Apple.
No estamos aquí para hablar si este tipo de declaraciones, en forma y modo, vertidas por el mismísimo CEO de una compañía es el nuevo modelo de relaciones públicas pero sí que nos interesa el calado que pueda tener en el mundo tecnológico. Sobre todo, porque a nuestros ojos, tiene unas cuantas incorrecciones como llamar plataforma abierta a Meta y cerrado a Vision Pro. Cuando precisamente su tienda es cerrada y de la Apple abierta. Es bastante irónico.

Uniendo este punto con el evento sobre Computación Espacial que compartimos con Spatial Voyagers me he dado cuenta del significado de la propuesta de las Vision Pro. Además de para confirmar que Edu, Edgar y Jota son una gente espectacular y que sabe un montón sobre realidad mixta, aumentada y virtual , ese día comprendí que es normal que Mark Zuckerberg tenga miedo. No se trata de un montón de fanboys de Apple flipados con un nuevo producto, si no que realmente es el producto que el sector lleva esperando más de 10 años.
Después de tomar unas cervezas y comernos una hamburguesa, bastante buena por cierto, hablamos no sólo del casco en sí, también de lo que supone dentro del ecosistema de desarrollo Apple. Muchos de nosotros, y yo el primero, nos vemos con ganas de entrar en el mundo 3D sin ese miedo a lo desconocido. No es sólo el producto, si no que con las herramientas que Apple ha puesto a nuestra disposición, nos hacen sentir como en casa. ¡Esto se pone emocionante amigos!
Si quieres ver la charla, donde también estuvo nuestro compañero Julio César Fernández, hablando sobre las posibilidades de desarrollo de Vision Pro, aquí tienes el enlace en Youtube. Y por cierto, si llegáis a tiempo, Julio dará un taller durante dos días en la Universidad Europea de Madrid sobre cómo construir una app en Swift para entornos Apple, incluyendo Apple Vision Pro. Podéis apuntaros aquí.
Nuevas herramientas para desarrolladores
Enlazando con la premisa de “sentirse como en casa”, también os traemos un nuevo editor de código llamado CodeEdit. No es uno más, si no que este trata de imitar a nuestro querido Xcode y servir de base para proyectos no destinados a plataformas de Apple. 100% nativo para macOS, integración con Git, una interfaz exquisita… al instalarlo me he quedado sin palabras. Y es aún una versión alpha. Esperemos que la iniciativa tenga tracción y llegue pronto a su versión estable. Si también te mueres de ganas por hacerlo tu editor de referencia puedes incluso ayudarles a lograrlo porque es open source.
Aunque este no ha sido el único lanzamiento innovador de esta semana. Os traemos otra propuesta, que pretende en este caso mejorar el anteriormente comentado sistema Git para repositorios de código. Su nombre es GitButler y aboga por crear ramas virtuales que cuando estemos trabajando en algo nuevo o aislado, pero detectamos un error o una pequeña mejora a incorporar en la rama principal, no tengamos que guardar los cambios, cambiar de rama, volver a la anterior… si no que lo hagamos en esta rama virtual. ¿Suena bien verdad? Pues no sólo eso, gracias a uso de IA, también escribe el mensaje de los commit automáticamente en base a los cambios que detecte. Disclaimer: de momento no se lleva muy bien con Xcode y puede destrozarte las ramas de tu proyecto, usar con cuidado.
Un vistazo al futuro y un paquete muy apañado
Ya en otras ocasiones que la futura versión mayor de Swift tendrá cambios de bastante calado. Uno de los principios básicos desde la creación del lenguaje, fue centrarse en la detección de errores en tiempo de compilación. O lo que es lo mismo, tratar de eliminar en el medida de lo posible la incertidumbre de que aparezcan errores que provoquen que la app se cierre repentinamente. Swift 6 quiere ir un paso más allá detectando no sólo errores de tipos, nulos y otros sospechosos habituales, si no también advirtiendo de problemas de concurrencia. Estos pueden crear las temidas condiciones de carrera. Existe un flag de configuración para poder activarlo y probar tu código en las versiones actuales, pero no siempre parece ser una buena idea.
Hablemos ahora de librerías. Normalmente somos reacios a la utilización de ellas sin una causa justificada. Añadir una dependencia para hacer lo mismo que otra API del sistema no me parece algo que aporte nada a nuestro proyecto, más allá de complejidad, tanto en el código como en su mantenimiento. Pero librerías buenas haylas. En esta pieza tenemos una introducción a Swift Algorithms, un paquete de la propia Apple que nos facilita enormemente el trabajo con secuencias y colecciones. Además puede ver todos los detalles de la misma en GitHub así como su amplia documentación. Si necesitas descomponer un array por una de sus propiedades, o crear agrupaciones de distinta naturaleza en base a sus componentes, estás a un import Algorithms de poder hacerlo.
Accesibilidad y logs
Una de las características que muchos desconocen de los sistemas de Apple, son las fuentes de tamaño dinámico. Me explico, hay una opción dentro de los Ajustes que permite configurar el tamaño de la fuente a través de todo el sistema y que, si hacemos bien las cosas, nuestra app puede detectar y adaptarse. En UIKit era necesario activarlo, pero con SwiftUI la activación viene por defecto. Esto hace que las fuentes se escalen de acuerdo con la configuración del usuario, y que personas con problemas visuales, sean capaces de leer textos utilizando una fuente de un tamaño mayor. Pero esto no acaba aquí, porque en SwiftUI existe el property wrapper @ScaledMetric que nos permite escalar también imágenes, márgenes y otros componentes, de formar proporcional a las fuentes.
No os voy a engañar: antes de iOS 14 el log de Apple era una auténtica pesadilla. Había varias APIs que no se hablaban entre ellas y el desarrollador acababa por utilizar prints y a correr. Hasta que apareció el logging unificado que utilizaba un sólo framework para unirlos a todos. Desde entonces es posible no sólo ver las anotaciones en la consola de Xcode, si no también en la consola de log del propio dispositivo. Posteriormente, en iOS 15 añadieron la posibilidad de consultarlo mediante código por lo que se puede filtrar por nuestro interés y generar un archivo que el usuario nos envíe como feedback o que mostremos en algún menú de depuración dentro de la app. También es posible formatear los datos, ocultarlos cuando sean privados… y por supuesto, con Xcode 15 el log da gloria verlo categorizado y con los metadatos pertinentes. Incluso podemos pulsarlo para que nos lleve al código que lo ha generado. ¡Ya estás tardando en incorporarlo a tu flujo de trabajo!
Dónde está esa IA que yo la vea
¡Paren las rotativas! Con la edición casi cerrada no podemos no hacernos eco de la nueva librería para Swift presentada por Apple. Se trata de una API para MLX. Si se te acaban de dar vuelta los ojos, tranquilo. MLX es un framework diseñado para trabajar el machine learning sobre los procesadores Apple Silicon. En esta entrada del blog de Swift, no sólo nos introducen esta nueva librería, si no que también nos hablan de los planes presentes y futuros, así como el porqué de usar Swift como lenguaje de investigación para machine learning. Spoiler: la facilidad de uso como lenguaje de alto nivel y el rendimiento al ser compilado es la dupla perfecta para este tipo de trabajos. Amigos, ahora si que tenemos el poder.
Y poco más
En esta edición nos hemos centrado más en el propio lenguaje y las herramientas de desarrollo que en las noticias (exceptuando la última sección claro). Esperamos que haya sido igualmente interesante. Nos lo puedes hacer saber escribiendo a nuestro correo 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.