
﻿WEBVTT
Kind: captions
Language: es

00:00:00.000 --> 00:00:08.680
Cuonda, la comunidad de podcast independientes en español.

00:00:08.680 --> 00:00:33.440
Bienvenidos a CAFÉ SWIFT, el podcast donde hablamos del lenguaje de programación SWIFT

00:00:33.440 --> 00:00:39.840
de Apple, solo no.

00:00:39.840 --> 00:00:45.240
Hablamos de programación, de herramientas para desarrolladores y de distintas experiencias,

00:00:45.240 --> 00:00:51.000
pero siempre desde el punto de vista de desarrolladores en entornos Apple y del lenguaje SWIFT.

00:00:51.000 --> 00:00:55.880
Y esos desarrolladores somos Arturo Rivas y Julio César Fernández.

00:00:55.880 --> 00:01:14.240
¡Comenzamos!

00:01:14.240 --> 00:01:21.380
Muy buenas y bienvenidos a un nuevo café, a un café de esos cargados especiales, un

00:01:21.380 --> 00:01:29.080
espresso en su punto, tomado en la cafetería favorita de todos los developers de SWIFT,

00:01:29.080 --> 00:01:31.080
el CAFÉ SWIFT.

00:01:31.080 --> 00:01:37.200
Y por supuesto aquí tenemos a nuestro compañero barista, a nuestro amigo Arturo Rivas.

00:01:37.200 --> 00:01:38.200
¿Qué tal Arturo?

00:01:38.200 --> 00:01:44.440
Bien, mira que me han llamado cosas Julio, pero creo que barista no estaba en la lista

00:01:44.440 --> 00:01:45.920
de cosas que me han llamado.

00:01:45.920 --> 00:01:52.000
Pues bien, como siempre Rivas en una semana, bueno un capítulo, un episodio más con muchísimas

00:01:52.000 --> 00:01:56.900
ganas porque es que este mundo de SWIFT no para y además es que parece que nos cuesta

00:01:56.900 --> 00:02:03.440
más que dar y van saliendo más cosas y más cosas y más cosas y no encontramos el momento,

00:02:03.440 --> 00:02:06.480
parece que están intentando, bueno que nos están forzando.

00:02:06.480 --> 00:02:10.080
De hecho Julio yo creo que ya me has mandado tres o cuatro mensajes diciendo que nos están

00:02:10.080 --> 00:02:12.440
obligando a grabar Arturo, nos están obligando.

00:02:12.440 --> 00:02:18.560
Sí, sí, están ahí, nos están forzando psicológicamente para que para que grabemos

00:02:18.560 --> 00:02:23.320
porque bueno, nada más que yo creo que es una de las cosas que obviamente hablaremos

00:02:23.320 --> 00:02:30.760
hoy que es con el tema del maravilloso Back Deployed, esta cosa que nos hemos encontrado

00:02:30.760 --> 00:02:36.560
de pronto y que es como, Dios mío, puede ser esto lo que creemos que puede ser, podría

00:02:36.560 --> 00:02:42.040
serlo, técnicamente lo es y todos los técnicos coinciden en que sí es así.

00:02:42.040 --> 00:02:48.560
Bueno, es una de las cosas y luego pues todas las novedades de SCOUT 14.3, de SWIFT 5.8

00:02:48.560 --> 00:02:53.840
que ya lo tenemos con nosotros y que todavía no se sabe si la versión de septiembre de

00:02:53.840 --> 00:03:00.080
este año será la 6 o la 5.9, ¿tú cuál crees que decidirá Apple finalmente?

00:03:00.080 --> 00:03:05.640
Pues la verdad que no lo sé porque me pilló de sorpresa porque estaban saliendo muchas

00:03:05.640 --> 00:03:09.240
cosas de las novedades de SCOUT y ahí fue cuando me di cuenta, vale, que es que SCOUT

00:03:09.240 --> 00:03:12.640
tiene una versión mayor, digamos, porque cuando empecé a ver que había muchas novedades

00:03:12.640 --> 00:03:17.720
dije espera, espera, espera, algo me estoy perdiendo y precisamente es que la nueva versión

00:03:17.720 --> 00:03:24.040
de SCOUT, la 14.3 si no me equivoco, ya viene con SWIFT 5.8 que es una de esas versiones

00:03:24.040 --> 00:03:29.880
que a priori no parecía que iba a tener muchas cosas pero que ha resultado sorprendente

00:03:29.880 --> 00:03:35.960
y ya os hablaremos, entonces la verdad es que no lo sé pero es posible que veamos una

00:03:35.960 --> 00:03:41.800
versión 6 de SWIFT, lo que pasa es que ya lo hemos comentado hace, diría, dos o tres

00:03:41.800 --> 00:03:47.340
episodios que iba a tener bastantes cosas del core, vale, de la propia librería bastantes

00:03:47.340 --> 00:03:52.600
cambios entonces quizás por esa parte a lo mejor esperen pues eso a una versión de primavera

00:03:52.600 --> 00:03:57.440
del año que viene o así para hacer esos cambios profundos, vale, que muchas veces

00:03:57.440 --> 00:04:03.400
no son tan, no impactan tanto a nivel de uso, o sea, de los programadores no notamos tanto

00:04:03.400 --> 00:04:07.360
porque no hay cambio de APIs ni muchas APIs nuevas pero por dentro la librería sí que

00:04:07.360 --> 00:04:12.400
pasa a tener muchas muchas funcionales nuevas y bueno en términos de rendimiento mejora.

00:04:12.400 --> 00:04:18.960
Claro y además una de las cosas que se supone que están puestas pero yo no sé cómo tendrán

00:04:18.960 --> 00:04:26.440
eso de adelantado es la inter operabilidad con C++ que era una de las partes que se pretendía

00:04:26.440 --> 00:04:33.960
llegar con SWIFT 6 y luego la parte de la programación diferencial, vale, la parte

00:04:33.960 --> 00:04:40.000
de que permitiría poder utilizar SWIFT como un lenguaje de cálculo computacional igual

00:04:40.000 --> 00:04:45.320
que se puede hacer ahora con Python. Claro yo no sé hasta qué punto tienen avanzadas

00:04:45.320 --> 00:04:52.240
esas dos implementaciones también había un tercer un digamos un tercer objetivo que

00:04:52.240 --> 00:04:59.000
era el de la implementación de un nuevo modelo de memoria basado en la ley de exclusividad

00:04:59.000 --> 00:05:03.320
que es por el que no lo sepa aunque lo hemos comentado creo por aquí básicamente es que

00:05:03.320 --> 00:05:09.560
nosotros sabemos que ahora mismo cuando una variable cuando una constante cuando hacemos

00:05:09.560 --> 00:05:15.040
un let o un var dentro de un ámbito cuando el ámbito muere el let o el var desaparecen

00:05:15.040 --> 00:05:21.720
desde lo que es la memoria, vale, los elementos viven en el ámbito que los crea en los sub

00:05:21.720 --> 00:05:25.840
ámbitos creados desde ese ámbito pero cuando el ámbito que los crea muere el elemento

00:05:25.840 --> 00:05:33.560
desaparece pero Apple se plantea la implementación de una ley de exclusividad por la que yo podría

00:05:33.560 --> 00:05:38.360
modificar el ciclo de vida de un elemento para que cuando yo cree algo dentro de un

00:05:38.360 --> 00:05:43.480
ámbito le pueda decir que subsista más allá del ámbito que lo creo. Sería algo así

00:05:43.480 --> 00:05:50.360
como una especie de guard pero entre ámbitos de nivel inferior al que yo estoy creando

00:05:50.360 --> 00:05:57.320
de esta manera yo podría crear por ejemplo pues lo típico no que no podemos hacer un

00:05:57.320 --> 00:06:02.600
if crear una variable y que luego esa variable exista fuera de ese if vale por ejemplo pues

00:06:02.600 --> 00:06:08.200
cosas así vale pero en fin no sé cómo lo implementarán porque ya sabemos que Swift

00:06:08.200 --> 00:06:13.240
lo prima la seguridad etcétera es el único lenguaje que implementa un modelo asyn await

00:06:13.240 --> 00:06:19.360
que requiere un contexto completamente distinto al contexto normal de desarrollo vale porque

00:06:19.360 --> 00:06:24.960
en C sharp etcétera si le haces un await al hilo principal pues se la repanfifla y

00:06:24.960 --> 00:06:30.040
te lo hace tal cual vale en Swift eso no es posible vale por la seguridad del propio sistema

00:06:30.040 --> 00:06:36.160
y la estabilidad del mismo pero bueno veremos a ver yo desde luego teniendo en cuenta que

00:06:36.160 --> 00:06:40.800
Apple parece que está hasta arriba con el tema de las lentes y que ha tenido que echar

00:06:40.800 --> 00:06:46.520
muchas cosas o parar muchas cosas yo ya realmente no sé qué esperar vale pero bueno está

00:06:46.520 --> 00:06:55.280
bien vamos vamos a la WWDC que por cierto debería de anunciarse en las próximas semanas

00:06:55.280 --> 00:07:01.800
no digo yo sí sí pero es que Apple y con lo que estás diciendo y a lo mejor se sale

00:07:01.800 --> 00:07:05.540
un poco del ámbito del podcast pero sí que es del mundo de la tecnología Apple este

00:07:05.540 --> 00:07:08.720
año se ha encontrado una encrucijada porque se supone que va a ser el año de las gafas

00:07:08.720 --> 00:07:14.600
de las gafas del beta verso la realidad aumentada o todo eso en general y de las gafas de Apple

00:07:14.600 --> 00:07:22.200
en particular pero parece que a principio de año lo que es este lo que se está hablando

00:07:22.200 --> 00:07:27.800
y de lo que toda la había un terremoto en la industria tecnológica perdón es de la

00:07:27.800 --> 00:07:34.040
inteligencia artificial de los modelos y demás entonces Apple sabemos que Apple ha hecho

00:07:34.040 --> 00:07:41.680
una conferencia interna no WWDC pero interna para ver el estado que se supone que ya la

00:07:41.680 --> 00:07:45.560
ha celebrado otros años pero bueno parece que se ha acelerado este año para ver en

00:07:45.560 --> 00:07:52.000
qué punto están porque creo que es lo que se va a llevar este este año entonces es

00:07:52.000 --> 00:07:58.080
que es muy complicado saber que qué va a hacer Apple con esto porque no pueden ignorar

00:07:58.080 --> 00:08:02.200
directamente y decir no nosotros estamos centrados en nuestras gafas lo que pasa que también

00:08:02.200 --> 00:08:08.120
es lo que decían porque esto es un poco como la oportunidad vale ha salido OpenAI con chat

00:08:08.120 --> 00:08:14.440
gpt de repente Microsoft ha cogido y ha metido ahí la mano y ha dicho oye hazme eso para

00:08:14.440 --> 00:08:21.400
mí y no he dicho bien para acá sino que que lo llevaba mucho tiempo ya probando exacto

00:08:21.400 --> 00:08:29.600
según Satya Nadella desde agosto del año pasado ya estaban probando bing con el modelo

00:08:29.600 --> 00:08:35.760
promisius vale que es entre comillas es una especie de gpt4 pero que no llega a ser gpt4

00:08:35.760 --> 00:08:39.400
y lo llevan probando insisto desde agosto del año pasado o sea nos vienen tomando el

00:08:39.400 --> 00:08:46.280
pelo desde entonces como a no yo no sé nada tal claro todo eso ha tenido que salir google

00:08:46.280 --> 00:08:53.560
corriendo a decir se ha tropezado y al tropezarse se le ha caído un 10% de sus acciones al

00:08:53.560 --> 00:09:04.920
suelo buena metáfora a que sí entonces google ha salido y precisamente se ha trastrabillado

00:09:04.920 --> 00:09:08.600
al tener que salir rápido diciendo oye espera que nosotros también tenemos algo incluso

00:09:08.600 --> 00:09:12.720
mejor lo que es que no lo hemos lanzado al público y aquí es donde viene apple que

00:09:12.720 --> 00:09:19.120
apple siempre se supone que las cosas hasta que no las tiene masticadas no no las saca

00:09:19.120 --> 00:09:26.060
pero hay muchísimas dudas sobre si apple tiene algo ya no mejor sino mínimamente igual

00:09:26.060 --> 00:09:31.760
o no tan o no muy retrasado a lo que están presentando en microsoft y google claro es

00:09:31.760 --> 00:09:36.720
que a ver por aunque sea un poco todavía no entrar en materia que estamos todavía

00:09:36.720 --> 00:09:41.880
con la intro pero esto es un tema que le importa a muchísima gente hay que tener en cuenta

00:09:41.880 --> 00:09:47.560
que a ver estas cosas como yo creo que cualquiera que nos escuche entenderá que esto no se

00:09:47.560 --> 00:09:52.160
hace de la noche a la mañana que hacer una inteligencia artificial como esta open y ahí

00:09:52.160 --> 00:09:58.180
lleva desde el año 2015 cuando fue cofundada por el o más que no podemos olvidar quién

00:09:58.180 --> 00:10:02.680
está ahí detrás vale aunque el propio lo más hace unos días ha salido a la palestra

00:10:02.680 --> 00:10:09.760
diciendo que desde que microsoft ha entrado ahí que se ha perdido un poquito el espíritu

00:10:09.760 --> 00:10:14.840
fundador de todo abierto y tal y que ahora hay muchas cosas cerradas y que a él no le

00:10:14.840 --> 00:10:19.560
parece tan bien etcétera etcétera dijo que él le puso el nombre de open precisamente

00:10:19.560 --> 00:10:24.920
para que fuera o para que fuera open ya no es open no no es open no no tiene ni uno solo

00:10:24.920 --> 00:10:31.000
de los modelos actuales son son bueno bueno creo que si whisper es abierto si no me equivoco

00:10:31.000 --> 00:10:35.600
que es el modelo de transcripción y te puedes descargar el código y tal lo digo porque

00:10:35.600 --> 00:10:43.120
yo lo estoy utilizando y arturo no te lo puedes creer es magia negra o sea es una absoluta

00:10:43.120 --> 00:10:48.960
magia negra o sea tú sabes lo que es darle un vídeo como el que estamos hablando tú

00:10:48.960 --> 00:10:57.120
y yo ahora mismo de acuerdo y que te saque los subtítulos en web vtt o en srt directamente

00:10:57.120 --> 00:11:03.000
perfectamente sincronizados y entendiendo cada palabra en tu idioma cada palabra en

00:11:03.000 --> 00:11:09.320
inglés cada marca que hablas de iphone ipad y te los escribe perfectamente dentro del

00:11:09.320 --> 00:11:16.920
subtítulo que entiende perfectamente cualquier tipo de palabra que no te pone las dudas

00:11:16.920 --> 00:11:21.920
si tú en un momento determinado cuando estás hablando pone tú coges y estás hablando

00:11:21.920 --> 00:11:27.160
no y dices pues la la cosa está de la que estamos hablando y ha repetido dos veces en

00:11:27.160 --> 00:11:36.440
la pues eso te lo obvia del subtítulo y sólo se pone en la pero que cosa de verdad es increíble

00:11:36.440 --> 00:11:44.480
los signos de admiración los signos de interrogación los puntos las comas o sea de verdad es absolutamente

00:11:44.480 --> 00:11:50.120
alucinante vale y esto se lo puede bajar cualquiera de acuerdo o sea está en github es un programa

00:11:50.120 --> 00:11:56.960
que se puede descargar os invito a que miréis el programa que es whisper cpp que está es

00:11:56.960 --> 00:12:02.520
una versión de whisper y hay en c++ que se puede descargar y lo puedes compilar con su

00:12:02.520 --> 00:12:07.320
make maravilloso en cualquier mac con apple silicon y que funciona por línea de comando

00:12:07.320 --> 00:12:12.320
la única pega que tiene entre comillas es que el audio del vídeo tiene que estar a

00:12:12.320 --> 00:12:19.440
16 bits y 16 mil hercios para que y en mono para que el modelo sea capaz de escucharlo

00:12:19.440 --> 00:12:27.240
convenientemente pero o sea es magia esa es que no sea para cualquier tipo de persona

00:12:27.240 --> 00:12:34.280
que trabaje en el mundo del subtitulado esto es y bueno y en fin nosotros obviamente todos

00:12:34.280 --> 00:12:38.280
los vídeos que estamos haciendo ahora los estamos pasando por ahí para sacar subtítulos

00:12:38.280 --> 00:12:43.440
y es que nos está facilitando la vida pero unos niveles estratosféricos no sé volviendo

00:12:43.440 --> 00:12:47.560
un poco al tema no o sea efectivamente la inteligencia artificial está ahí y no podemos

00:12:47.560 --> 00:12:52.780
olvidar que ya se rumoreaba que apple decían que estaba creando o se estaba planteando

00:12:52.780 --> 00:12:57.700
crear un buscador si te estás planteando crear un buscador y hoy día sacas un buscador

00:12:57.700 --> 00:13:04.240
y no tiene algo como bing esa de donna rival o sea está muerto antes de llegar o en el

00:13:04.240 --> 00:13:09.680
momento en el que llegas entonces y luego también se hablaba de que apel estaría haciendo

00:13:09.680 --> 00:13:16.240
una nueva siri mejor que comprendiera mejor que tuviera algo más de inteligencia artificial

00:13:16.240 --> 00:13:21.960
porque si no tiene inteligencia artificial más allá de el modelo nlp del natural language

00:13:21.960 --> 00:13:29.720
processing no tiene mucho más vale luego a la hora de lanzar son ifs de acuerdo pero

00:13:29.720 --> 00:13:35.000
esto no es cuestión de que no es que lo diga yo es que lo he visto el código vale pues

00:13:35.000 --> 00:13:39.960
porque siri kit funciona así funciona por if a través de intención de intenciones

00:13:39.960 --> 00:13:44.400
de siri o sea eso ni es inteligencia artificial ni es nada y alguno dirá más que apple no

00:13:44.400 --> 00:13:49.680
no es que alexa y google assistant funcionan igual o sea que esa es la gran ironía de

00:13:49.680 --> 00:13:56.320
que google sea pionera en el mundo de la inteligencia artificial pero ni una sola de las de los

00:13:56.320 --> 00:14:02.040
modelos que han lanzado los han aplicado en sus productos todo han sido como investigaciones

00:14:02.040 --> 00:14:06.800
que eso es lo que yo creo que va a dar lugar a que google tarde mucho más de tiempo en

00:14:06.800 --> 00:14:13.160
hacer que sus prototipos se conviertan en un producto final entonces está la cosa complicada

00:14:13.160 --> 00:14:18.080
así pues si además en el caso de apple ya te digo no sé si es que tienen cosas ahí

00:14:18.080 --> 00:14:23.200
en la red cámara y no y aunque sean cambios por debajo o sea por ejemplo yo te pongo un

00:14:23.200 --> 00:14:28.720
ejemplo que ahora voy cada vez que salgo a la calle o voy con un perro voy con un carrito

00:14:28.720 --> 00:14:36.080
normalmente entonces estoy disfrutando mucho con un perro vas oyendo a pelcón y no normalmente

00:14:36.080 --> 00:14:41.520
voy voy a utilizar mucho la función del dictado y sí que ha mejorado vale y todo esto del

00:14:41.520 --> 00:14:44.880
dictado que puedas ir cambiando es alguna palabra no te la reconoce que puedas cambiar

00:14:44.880 --> 00:14:50.720
sólo esa palabra y tal está muy bien pero sí que tiene muchos fallos entonces me cuesta

00:14:50.720 --> 00:14:57.040
creer que apple aunque sea muy una compañía muy secreta que hasta el último momento no

00:14:57.040 --> 00:15:02.320
desvela sus cartas pero me cuesta creer que de un salto tan grande entonces no lo sé

00:15:02.320 --> 00:15:07.040
y sobre todo porque se supone que están centrados y están quitando un mogollón de gente de

00:15:07.040 --> 00:15:14.080
otros proyectos para las gafas de la red aumentada no para la ya que vale lo que decimos siempre

00:15:14.080 --> 00:15:19.760
no por meter a 200.000 tíos vas a hacer algo más rápido vale requiere pues una organización

00:15:19.760 --> 00:15:24.640
y muchas cosas más pero bueno yo entiendo que si por un lado tendrás a la gente que

00:15:24.640 --> 00:15:29.280
estará haciendo modelos entrenando demás pero por otro lado tendrás que tener a gente

00:15:29.280 --> 00:15:33.280
pues haciendo la parte de programación para enganchar digamos esos modelos con las aplicaciones

00:15:33.280 --> 00:15:36.920
porque al final es lo que yo pienso que va a hacer apple porque lo que va a hacer apple

00:15:36.920 --> 00:15:42.600
a lo mejor es precisamente darse prisa en mejorar la interrelación de su y con librerías

00:15:42.600 --> 00:15:47.760
de python de c++ y tal para hacer de puente vale que tú tengas los modelos que no los

00:15:47.760 --> 00:15:50.720
haga apple que los haga otro pero que los puedas integrar fácilmente como hice en su

00:15:50.720 --> 00:15:56.320
día que ya lo comentaste que puedes importar fácilmente en core ml los modelos no sé

00:15:56.320 --> 00:16:01.520
si sea stable diffusion. De hecho he estado yo trabajando también haciendo pruebas de

00:16:01.520 --> 00:16:08.680
coger los modelos de stable diffusion 1.4 1.5 e incluso el 2.0 y a través de un script

00:16:08.680 --> 00:16:14.680
de python que tiene publicada la propia apple como el código abierto transformarlo a un

00:16:14.680 --> 00:16:21.400
modelo de core ml y poder utilizarlo directamente en una en una aplicación y usando la aceleración

00:16:21.400 --> 00:16:25.880
del motor neural que es lo importante que yo creo que ya es una parte que apple va a

00:16:25.880 --> 00:16:31.680
optar por eso vale en plan integrarlo vosotros yo os voy a dar las herramientas vale buscar

00:16:31.680 --> 00:16:36.080
vuestros modelos o tal buscaros esa parte vosotros e integrarlo en las aplicaciones

00:16:36.080 --> 00:16:42.080
que hagáis para para mi plataforma pero mucha gracia de esto es que la propia apple lo utilice

00:16:42.080 --> 00:16:47.720
dentro del sistema o sea para mí lo que tiene que presentar apple pues que ya te digo porque

00:16:47.720 --> 00:16:52.880
algo para meter inteligencia artificial en modelos de machine learning mejor dicho en

00:16:52.880 --> 00:16:57.420
las aplicaciones es lo que ya tiene, tiene una librería core ml que puede hacer interoperable

00:16:57.420 --> 00:17:01.840
con otros modelos pero la gracia está desde mi punto de vista en que lo integre dentro

00:17:01.840 --> 00:17:07.080
de sus sistemas en lo que en qué pues eso en spotlight en todos los lados vale que cuando

00:17:07.080 --> 00:17:12.840
vayas a hacer algo pues haya unos modelos que rápidamente te sugieran hacer las cosas

00:17:12.840 --> 00:17:17.240
ya vemos cómo funcionan los modelos que hay ahora que yo siempre que voy a spotlight a

00:17:17.240 --> 00:17:20.960
buscar una aplicación o sea a intentar a ver si he adivinado qué aplicación puedo

00:17:20.960 --> 00:17:26.340
querer en el momento nunca la encuentro en 3 a 8 que te ofrece porque al final la implementación

00:17:26.340 --> 00:17:32.800
de las intenciones de Siri es totalmente arcaica y fuera de todo vamos a mí que me

00:17:32.800 --> 00:17:38.440
digan que ahí no hay ya ni hay nada o sea y hay un montón de hips cutres mal hechos

00:17:38.440 --> 00:17:42.760
y eso te va a decir es que es como un log un histórico y ya está y le va a ir dando

00:17:42.760 --> 00:17:47.400
puntos a lo que más tenga pero no es algo eso que es un modelo que precisamente prediga

00:17:47.400 --> 00:17:51.840
a ver yo lo que siempre he dicho siempre que hablo de diseño de apps de cómo debe ser

00:17:51.840 --> 00:17:57.000
una app y demás pues una app y un sistema operativo para mí y vamos a centrarnos en

00:17:57.000 --> 00:18:01.480
el iphone para mí un buen sistema operativo un nios bueno sería el que yo desbloqueo

00:18:01.480 --> 00:18:06.800
o incluso no desbloqueo miro mi iphone y veo lo que quiero o sea precisamente que adivine

00:18:06.800 --> 00:18:13.600
lo que quiero exacto y eso es algo que precisamente estos modelos pueden hacer claro es un poco

00:18:13.600 --> 00:18:19.860
a ver yo por ejemplo ahora momento spam yo todas las semanas publico al menos una o dos

00:18:19.860 --> 00:18:23.800
veces dependiendo del tiempo que tenga estoy publicando en el canal de youtube de apple

00:18:23.800 --> 00:18:31.560
coding en youtube.com barra arroba apple coding vale entonces estoy sacando los apple coding

00:18:31.560 --> 00:18:36.400
dailies tanto en podcast como en vídeo y en muchas ocasiones pues obviamente para el

00:18:36.400 --> 00:18:41.440
propio podcast hago investigaciones el otro día hablé sobre videojuegos hablé sobre

00:18:41.440 --> 00:18:45.880
la librería gráficas y hay determinados datos pues que no tienes claros vale yo no

00:18:45.880 --> 00:18:53.760
recordaba de memoria con si realmente direct x 1.0 salió con windows 95 o no o no recordaba

00:18:53.760 --> 00:19:00.200
el año en el que se creó open gl o el año en el que se fundó la la el cronos group

00:19:00.200 --> 00:19:06.200
no es lo que es el consorcio de empresas que llevan el tema de open gl del ya extinto open

00:19:06.200 --> 00:19:14.360
cl de vulcan etcétera entonces como no no me acordaba de esos datos pues fui a google

00:19:14.360 --> 00:19:20.560
a buscarlos y tal nada que no había manera de encontrar el dato o sea ni siquiera porque

00:19:20.560 --> 00:19:25.400
ya ni siquiera te sale la wikipedia como primer resultado en el momento que buscas y pones

00:19:25.400 --> 00:19:31.160
la pregunta no hay manera o sea google es un auténtico desastre o sea google es lo

00:19:31.160 --> 00:19:38.760
peor del mundo vale de la humanidad inmediatamente dije y qué haces eres tonto o sea abre bien

00:19:38.760 --> 00:19:47.040
vale abri bien plum en qué año salió direct x 1.0 según los resultados direct x 1.0 salió

00:19:47.040 --> 00:19:54.880
el año 1995 junto a windows en t4 y windows 95 estupendo en qué año apareció open gl

00:19:54.880 --> 00:19:59.880
open gl fue lanzado por esta persona y esta persona en el año vino en el día no sé

00:19:59.880 --> 00:20:06.080
qué no sé cuántas de 1992 como estándar de nada hasta acá está hostia es que sea

00:20:06.080 --> 00:20:13.720
capaz de darte la respuesta que tú estás pidiendo de manera real y no una basura en

00:20:13.720 --> 00:20:22.880
base a lo que son palabras claro en base a resultados de palabras clave es que yo fíjate

00:20:22.880 --> 00:20:28.360
que llevo tiempo probándolo y tal pero en ese momento de comparación el tiempo que

00:20:28.360 --> 00:20:33.360
yo me ahorré en tener que y como ese varios datos que estuve buscando para porque era

00:20:33.360 --> 00:20:41.160
un recorrido histórico vale es que es un mundo es que yo ya insisto para qué para

00:20:41.160 --> 00:20:47.360
qué quiero usar google de hecho tú mismo publicaste que me hizo una gracia terrible

00:20:47.360 --> 00:20:54.600
que google ha comprado la palabra clave bing en las búsquedas de apple porque si tú ahora

00:20:54.600 --> 00:21:00.800
en el app store buscas bing para bajarte la app de bing que ya tiene bing copilot metido

00:21:00.800 --> 00:21:08.000
en la app de ios te sale como como búsqueda comprada la app de google y es como de verdad

00:21:08.000 --> 00:21:14.840
que tristeza más enorme de verdad de mi vida es que a ver ya te digo bueno no nos vamos

00:21:14.840 --> 00:21:19.120
a liar pero a ver ahí pues google está en una posición complicada porque le están

00:21:19.120 --> 00:21:25.120
echando abajo el modelo que tiene porque precisamente si empezamos a dar resultados de esta manera

00:21:25.120 --> 00:21:32.680
pues ya lo de pagar por salir ahí pues ya se complica un poco un poco el modelo y para

00:21:32.680 --> 00:21:39.240
no liarnos más julio después de esta introducción toca la primera pregunta que hacemos en todos

00:21:39.240 --> 00:21:55.000
los episodios y es que hemos estado haciendo exacto así que allá vamos

00:21:55.000 --> 00:22:00.760
y cuéntanos arturo que has estado haciendo porque yo no he apuntado nada tendré que

00:22:00.760 --> 00:22:06.680
improvisar pero no he tenido tiempo para apuntar lo que he estado haciendo

00:22:06.680 --> 00:22:13.760
claro tú tienes más tablas y puedes improvisarlo yo me tengo que hacer un poco un poco de guión

00:22:13.760 --> 00:22:20.000
y aparte la verdad es que he hecho muy pocas cosas vale porque he tenido bastante poco

00:22:20.000 --> 00:22:26.720
tiempo he estado revisando apps que tenía antiguas y remozando las un poco poniéndolas

00:22:26.720 --> 00:22:31.480
a punto cambiando cosillas y nada dos cosillas que me he encontrado yo creo que lo puse en

00:22:31.480 --> 00:22:39.680
el grupo que tenemos en telegram de café o de café suiz perdón de suiz porque bueno

00:22:39.680 --> 00:22:47.080
hay un problema en su UI que los el wrapper el property wrapper arroba fetch request cuando

00:22:47.080 --> 00:22:53.560
haces ya lo hemos hablado una operación en batch y actualizas actualizas muchos muchos

00:22:53.560 --> 00:22:58.840
registros y luego se los metes actualizas el contexto si tienes un predicate se fuma

00:22:58.840 --> 00:23:03.880
el predicate y no te aparece absolutamente nada he hecho una guardadilla que es cambiar

00:23:03.880 --> 00:23:08.680
el predicate a que no haya y luego volver a hacer mi predicate cuando detecto el cambio

00:23:08.680 --> 00:23:15.160
de el cambio en un contexto y me funciona pues bueno esas cosillas he puesto un radar

00:23:15.160 --> 00:23:23.400
de estos de apple para que lo mejoren y a lo mejor en 4 o 5 años lo ven porque bien

00:23:23.400 --> 00:23:26.720
en los foros vi dos personas que lo había puesto en los foros de desarrollo de apple

00:23:26.720 --> 00:23:32.360
y nadie le había le había contestado y luego otra cosa me encontré quería migrar ya tenía

00:23:32.360 --> 00:23:37.440
dos mapas digamos y uno de ellos estaba ya en su UI y el otro no estaba con la librería

00:23:37.440 --> 00:23:43.200
de UIKit y me he encontrado que la librería de su UI de mapas le faltan un montón de

00:23:43.200 --> 00:23:48.000
cosas de personalización y aparte el rendimiento es fatal cuando metes muchos registros y un

00:23:48.000 --> 00:23:54.320
first request vale entonces lo que me he hecho es un contenedor y controlo muchas muchos

00:23:54.320 --> 00:24:00.280
controles los controlo desde su UI vale con un ZStack muy sencillito y luego le voy pasando

00:24:00.280 --> 00:24:07.840
a un MapView que es un UIView representable vale ahí le voy pasando las interacciones

00:24:07.840 --> 00:24:13.000
pero toda la parte de que va con delegados del mapa de pintar los pines de cuando le

00:24:13.000 --> 00:24:17.720
das al pin que te aparezca un pequeño pop up y todo eso eso lo manejo desde UIKit porque

00:24:17.720 --> 00:24:23.600
aparte la API de su UI de mapas todavía está un poco verde que como siempre hasta que apple

00:24:23.600 --> 00:24:28.720
alguna de las aplicaciones nativas que necesite o sea con su UI y necesite los mapas pues

00:24:28.720 --> 00:24:36.320
no incluir en la API como ya hemos hablado muchas veces y no es que el tema es al final

00:24:36.320 --> 00:24:43.320
siempre no sé cómo lo hacemos que siempre damos cariño a CoreData y creo que hay una

00:24:43.320 --> 00:24:50.600
cosa muy interesante a ver desde aquí aprovecho para mandar un saludo a Asier García Morato

00:24:50.600 --> 00:24:56.680
que es CEO de Cori que es una aplicación para la diabetes con inteligencia artificial

00:24:56.680 --> 00:25:02.000
y que además ha tenido el apoyo de Apple vale una persona que bueno pues si Jobs quiere

00:25:02.000 --> 00:25:06.800
estará pronto en Apple Coding porque vamos a hablar con él de cómo ha sido su proyecto

00:25:06.800 --> 00:25:14.840
etcétera etcétera y el otro día Mastodon vale que estamos en Mastodon también es un

00:25:14.840 --> 00:25:23.520
nivel absoluto vale compartía el hecho de que había quitado CoreData y lo había pasado

00:25:23.520 --> 00:25:31.040
todo a real con la aplicación y le decía a uno uy verás tú cuando Julio se entere

00:25:31.040 --> 00:25:37.720
que te comulga y claro yo no tuve más remedio que decirle y leo literalmente CoreData y

00:25:37.720 --> 00:25:44.440
CloudKey es una solución desfasada e ineficiente con comportamientos aleatorios sobre todo

00:25:44.440 --> 00:25:49.480
en la parte Shared que es la última que pusieron porque esto lo sé por ti que has tenido problemas

00:25:49.480 --> 00:25:55.440
con la parte compartida de CloudKey porque tenemos la parte pública la parte privada

00:25:55.440 --> 00:26:00.320
y la parte compartida que es pues como cuando compartimos unas notas o lo que sea y de hecho

00:26:00.320 --> 00:26:05.160
el otro día que me invitaron los amigos de manzanas enfrentadas a los que mando un saludo

00:26:05.160 --> 00:26:12.840
desde aquí me decía uno de ellos que claro yo le dije pues la app de Freeform es una

00:26:12.840 --> 00:26:18.880
maravilla es estupenda es increíble tal yo la verdad que estoy encantado pero claro yo

00:26:18.880 --> 00:26:25.160
trabajo yo solo y él me dijo sí sí trabajando tú solo es maravillosa como se te ocurra

00:26:25.160 --> 00:26:32.480
compartir la pizarra que ya sabemos que usa también CloudKey resulta que no se refresca

00:26:32.480 --> 00:26:37.200
lo que uno ha pintado el otro no le llega hay versiones distintas luego vas tú a pintar

00:26:37.200 --> 00:26:41.000
y de pronto te aparecen las versiones que se habían atascado hace cinco minutos o sea

00:26:41.000 --> 00:26:47.160
es un auténtico desastre vale lo cual demuestra pues que efectivamente Apple ahí ha perdido

00:26:47.160 --> 00:26:51.800
el tren o sea de hecho le continúo diciendo así es digo entiendo perfectamente que se

00:26:51.800 --> 00:26:57.560
hayan ido contestándole no a la persona que comentó pues eso que hay que ver cómo se

00:26:57.560 --> 00:27:02.000
entere julio no entiendo perfectamente que se haya ido a realm siendo algo más moderno

00:27:02.000 --> 00:27:07.520
y eficaz aunque sea un framework de terceros vale muy importante la diferencia entre un

00:27:07.520 --> 00:27:14.200
framework de terceros y una librería de terceros no es lo mismo vale yo de las poquitas poquitas

00:27:14.200 --> 00:27:22.320
poquitas cosas que puedo llegar a recomendar de terceros una de ellas es real vale entonces

00:27:22.320 --> 00:27:30.600
y añado Apple tiene que sacar ya SwiftDB y un nuevo CloudKey en vapor o sea vamos más

00:27:30.600 --> 00:27:39.280
allá ya no sólo SwiftDB señores de Apple no sólo necesitamos core data en Swift necesitamos

00:27:39.280 --> 00:27:44.320
que todo CloudKey vaya a la basurita que es donde había tenido que estar siempre y tengamos

00:27:44.320 --> 00:27:49.560
un nuevo CloudKey que tendréis ahí claro un php de cuando franco era corneta que lo

00:27:49.560 --> 00:27:56.280
mismo está todavía en php 5 pues no sabes y que se haga un CloudKey en vapor tío pero

00:27:56.280 --> 00:28:02.120
pero de verdad si tenéis las herramientas que reinvente el servicio que está totalmente

00:28:02.120 --> 00:28:06.640
obsoleto es que de verdad da mucha penita que cada vez que hablemos de la nube con Apple

00:28:06.640 --> 00:28:15.440
es que tío es que pierde y repito y tiene las herramientas porque imagínate cómo sería

00:28:15.440 --> 00:28:22.660
un core data reactivo declarativo en a base de funciones filter etcétera de programación

00:28:22.660 --> 00:28:29.400
funcional que es como está en vapor básicamente lo que es fluent vale en ese plan con los

00:28:29.400 --> 00:28:36.720
tray await etcétera etcétera bueno bueno bueno eso sería un placer orgásmico absoluto

00:28:36.720 --> 00:28:42.280
pasar de core data que es un infierno en la tierra y eso que repito con la parte de los

00:28:42.280 --> 00:28:48.680
arroba ferry que es que tú has comentado y tal está medio bonito vale pero y luego

00:28:48.680 --> 00:28:54.160
lo de cloud key de verdad es que además tiene la misma interfaz de hace cuánto desde hace

00:28:54.160 --> 00:29:03.080
siete años 8 como es una el problema es que es una solución en un parche a otro parche

00:29:03.080 --> 00:29:07.520
otro parche exacto es claro hereda todo lo anterior nunca han hecho borrón y cuenta

00:29:07.520 --> 00:29:12.320
nueva porque sobre está todo toda la parte de sincronización de cloud key bueno de hecho

00:29:12.320 --> 00:29:18.240
cloud key nace como base de datos en la nube a partir de core data luego cuando han hecho

00:29:18.240 --> 00:29:23.760
que se comparta y la sincronización media automática también estás partiendo de todas

00:29:23.760 --> 00:29:28.560
las abstracciones y la manera de funcionar de cordata entonces claro se les ha creado

00:29:28.560 --> 00:29:34.680
un monstruo horrible y yo todas las wc sueño con esas dos cosas que has dicho por un lado

00:29:34.680 --> 00:29:39.720
una base o sea un motor de base de datos o digamos un framework de base de datos nuevo

00:29:39.720 --> 00:29:46.480
para suite y también eso que la parte de back end de apple de cloud key por la modernizen

00:29:46.480 --> 00:29:52.560
y quiten ese código que tendrán pero algún día nos tendremos razón algún día si esto

00:29:52.560 --> 00:29:59.600
es como decir no pues apel no sé que sacará un nuevo mapuguer no pues al final algún

00:29:59.600 --> 00:30:04.640
momento acierta el ser un poco michiguanos en ese sentido

00:30:04.640 --> 00:30:13.720
y nada y la otra cosilla que he estado esta estas semanas es me he leído un libro sobre

00:30:13.720 --> 00:30:20.560
desarrollo software vale llamado a philosophy of software design del autor es john oster

00:30:20.560 --> 00:30:25.600
hood de él es un profesor de la universidad de stanford que está muy bien vale porque

00:30:25.600 --> 00:30:30.160
te habla como de cosas primeras trazas pero luego te da muchos ejemplos además eso como

00:30:30.160 --> 00:30:33.800
es profesor pues dice pues les pusimos este problema a los alumnos y muchos tiraron por

00:30:33.800 --> 00:30:39.040
aquí que es esta manera de diseñar la verdad es que me ha gustado muchísimo y me quedaría

00:30:39.040 --> 00:30:44.000
sólo con una idea a la hora que dice a la hora de hacer clases de hacer funciones vale

00:30:44.000 --> 00:30:48.680
él ve como dos partes la interfaz es decir lo que van a usar otros o lo que vas a usar

00:30:48.680 --> 00:30:53.240
tú mismo de esa clase vale la interfaz le podemos llamar las funciones públicas las

00:30:53.240 --> 00:30:59.480
variables globales que declares como públicas bueno o que no declares como privadas vale

00:30:59.480 --> 00:31:04.040
y luego la implementación que es el código que está dentro que no se va a ver vale y

00:31:04.040 --> 00:31:11.280
hay como un principio que propugna la publicación que dice que mantengas la interfaz sencilla

00:31:11.280 --> 00:31:16.160
y luego la implementación lo que no se ve ahí ya puedes complicarte y también dice

00:31:16.160 --> 00:31:21.200
que dentro o sea en la interfaz que hagas interfaces sencillas pero luego que dentro

00:31:21.200 --> 00:31:26.000
de la implementación no hagas muchas interfaces dentro sino que ahí en la implementación

00:31:26.000 --> 00:31:30.460
ya puedes hacer funciones más grandes no hagas ocho funciones para de cuatro líneas

00:31:30.460 --> 00:31:35.000
para no hacer una función de 20 y cosas así vale te dice como que mantenga siempre la

00:31:35.000 --> 00:31:41.480
interfaz de que va a usar la gente sencilla vale ya de entender y utilizar y luego ya

00:31:41.480 --> 00:31:48.720
la implementación por dentro que la hagas que no te preocupe complicarla aún así explícala

00:31:48.720 --> 00:31:53.120
muy bien vale luego te habla que en la interfaz comenta las funciones de la interfaz muy bien

00:31:53.120 --> 00:31:59.120
cómo se interactúa y por qué le pasas esos parámetros y un pelín como por qué vale

00:31:59.120 --> 00:32:05.320
porque se llama esa función y cómo funciona a nivel abstracción y luego en la implementación

00:32:05.320 --> 00:32:10.680
pon comentarios pero encima de ciertas líneas o encima de bucles o encima de digamos de

00:32:10.680 --> 00:32:15.680
módulos para explicar cómo funciona ya nivel implementación de por dentro de ese módulo

00:32:15.680 --> 00:32:22.680
y la verdad es que está bastante bastante chulo sobre todo te habla de cómo diseñar

00:32:22.680 --> 00:32:26.920
de manera intermedia vale para cosas que pueden o no crecer que es el problema de muchas veces

00:32:26.920 --> 00:32:30.960
que a veces te pones a hacer algo dices voy a hacerlo sencillo porque esto no va a resolver

00:32:30.960 --> 00:32:36.600
este problema y ya nadie lo va a cambiar y si hay que cambiarlo es un cristo porque al

00:32:36.600 --> 00:32:40.640
final hay que borrarlo y volverlo a hacer y otras veces que es al revés haces una aplicación

00:32:40.640 --> 00:32:47.280
creyendo que va a tener un montón de recorrido con muchísimas clases súper organizado diferentes

00:32:47.280 --> 00:32:52.640
niveles de abstracción y luego lo utilizas una vez iba siquiera vale entonces la verdad

00:32:52.640 --> 00:32:57.920
que lo recomiendo mucho pues está muy bien un libro que se llama a filosofía software

00:32:57.920 --> 00:33:05.680
design que es en inglés entiendo no vale y es de la universidad de stanford por lo

00:33:05.680 --> 00:33:13.600
que veo de john auster hout pues la verdad que puede ser muy muy interesante así que

00:33:13.600 --> 00:33:21.080
dejaremos el luego me pasas a el enlace lo dejamos en las notas del episodio tanto en

00:33:21.080 --> 00:33:27.000
youtube como porque ya sabéis que esto aparte de estar bueno pues lo que es la parte de

00:33:27.000 --> 00:33:32.040
podcast que podéis estar oyendo en cuonda pues también queda subido a youtube al canal

00:33:32.040 --> 00:33:38.000
de apelco de inacademy que es la bueno pues quien hace posible no que se pueda hacer esta

00:33:38.000 --> 00:33:48.720
esta producción y que estemos aquí tanto arturo como yo pues yo he estado dando clase

00:33:48.720 --> 00:33:58.080
pero mucha mucha y mucho mucha clase y mucho mucho clase

00:33:58.080 --> 00:34:07.440
básicamente fíjate yo a ver puedo sé que puedo sonar muy repetitivo vale pero

00:34:07.440 --> 00:34:18.960
normalmente cuando vuelvo a dar swift a gente que se supone que sabe swift me sigo sorprendiendo

00:34:18.960 --> 00:34:26.280
y ellos se siguen sorprendiendo porque claro siempre te dicen no bueno swift yo ya sé

00:34:26.280 --> 00:34:32.600
swift claro entonces cuando tal pero cuando coges y le explicas lo que por debajo y swift

00:34:32.600 --> 00:34:37.000
es así y esto se hace así por esto y esto funciona de tal manera y esto no sé cuál

00:34:37.000 --> 00:34:43.440
y esto no sé qué y sobre todo lo que nunca falla el momento cliffhanger de las formaciones

00:34:43.440 --> 00:34:50.540
es el patrón delegate cuando ven cómo funciona el patrón delegate por dentro se quedan como

00:34:50.540 --> 00:34:58.200
oh dios mío y de hecho se crea un silencio absoluto que es como y se oye ahí de vez

00:34:58.200 --> 00:35:07.540
en cuando se oye como un ventilador de intel hay aumentando revoluciones y el momento del

00:35:07.540 --> 00:35:17.840
arroba escaping esos son los momentos de dios mío de mi vida y claro todo lo que es en

00:35:17.840 --> 00:35:22.580
general no cuando ves el lenguaje de forma ordenada que acabamos de terminar lo hace

00:35:22.580 --> 00:35:28.460
nada con él con el bootcamp pues realmente la gente se queda muy sorprendida no decir

00:35:28.460 --> 00:35:33.700
uf es que yo no sabía que esto se podía llevar hasta este nivel no y gente que empieza

00:35:33.700 --> 00:35:39.420
el bootcamp pensando que bueno pues que la parte de swift va a ser algo más liviano menos

00:35:39.420 --> 00:35:45.420
tal y cuando de pronto terminan la parte suice pues yo no esperaba que estuviera aprendiendo

00:35:45.420 --> 00:35:49.620
cosas nuevas desde el momento cero prácticamente o sea es que la gente está aprendiendo cosas

00:35:49.620 --> 00:35:55.060
nuevas en la lección en la que enseño lo que es un led y un bar o sea que imagínate

00:35:55.060 --> 00:36:01.380
el nivel a ese respecto entonces la verdad que para mí como formador pues como diría

00:36:01.380 --> 00:36:08.700
aquel no me llenó de orgullo y satisfacción que pues que eso sea así no que que los alumnos

00:36:08.700 --> 00:36:14.700
valoren no esa esa parte y que sobre todo valoren lo que yo intento dentro de mi filosofía

00:36:14.700 --> 00:36:23.180
como formador que es no decirte esto es así porque patata y esto es así porque boniato

00:36:23.180 --> 00:36:29.900
y ya está no no esto es así porque papá papá papá papá papá papá entonces claro

00:36:29.900 --> 00:36:37.520
el entender las cosas desde la base pues es que es un cambio radical yo muchas les digo

00:36:37.520 --> 00:36:44.220
y todavía les cuesta un poco a algunos el entenderlo porque lógicamente en la educación

00:36:44.220 --> 00:36:48.380
actual nos tiene formateada la cabeza de esa manera pero yo cuando les digo que lo que

00:36:48.380 --> 00:36:53.860
pretendo es hackear su mente se me quedan como diciendo este se ha aprendido aquí alguna

00:36:53.860 --> 00:36:58.820
cosa así en plan marketing que queda muy bonita y pero que está vendiendo la moto

00:36:58.820 --> 00:37:05.300
no no o sea realmente yo en mis formaciones lo que intento es hackear la mente de la gente

00:37:05.300 --> 00:37:12.980
para que entienda que tú no tienes que empezar a programar en cuanto te dicen cómo se programa

00:37:12.980 --> 00:37:21.900
porque yo lo que hago primero es enseñarte qué es programar y las bases de esa programación

00:37:21.900 --> 00:37:27.100
pues si yo te acabo de explicar cómo funciona un genérico tú no vas a ser capaz de crear

00:37:27.100 --> 00:37:33.700
un genérico por ti mismo porque te he explicado la teoría de que es un genérico cómo funciona

00:37:33.700 --> 00:37:39.580
y cómo se hace pero tú no puedes porque la gente está esperando que la educación

00:37:39.580 --> 00:37:44.020
funcione como la lista de los reyes codos o los ríos de españa yo me aprendo los ríos

00:37:44.020 --> 00:37:50.740
de españa ya me lo sé y ahora va a hacer el examen sale del examen y ya se te ha olvidado

00:37:50.740 --> 00:37:55.840
y se ha suelto acuerda del libro del tajo y del guadalquivir a tomar por saco vale entonces

00:37:55.840 --> 00:38:01.860
y como mucho del niño porque te hizo gracia el nombre entonces no vamos a ver en mi caso

00:38:01.860 --> 00:38:08.500
no es así si tú aprendes conmigo lo que es un genérico perfecto vas a entender lo

00:38:08.500 --> 00:38:12.880
que es un genérico pero no pretendas ponerte desde el primer momento a hacer un genérico

00:38:12.880 --> 00:38:17.860
porque no estás preparado porque para que entiendas no para que entiendas para que veas

00:38:17.860 --> 00:38:23.940
la practicidad y la aplicación práctica de la teoría que yo te acabo de enseñar

00:38:23.940 --> 00:38:30.340
para que se cumplan las dos partes y se fusionen como goku y vegeta entonces lo que tienes

00:38:30.340 --> 00:38:36.060
que hacer es ir a la parte práctica ir a la parte de aplicación donde vas a ver la

00:38:36.060 --> 00:38:42.420
aplicación práctica de la teoría y ese es el momento en el que dice ya sé kung fu

00:38:42.420 --> 00:38:50.420
vale entonces les sigue sorprendiendo esta forma distinta no de enseñar y la verdad

00:38:50.420 --> 00:38:55.500
pues que es para mí pues es siempre un orgullo el ver que los alumnos pues responden bien

00:38:55.500 --> 00:39:00.980
y lo agradecen y lo valoran y bueno pues una cosa así curiosa así que eso me estoy dedicando

00:39:00.980 --> 00:39:10.740
últimamente te voy a poner un ejemplo hay en internet hay que habrá 10.000 artículos

00:39:10.740 --> 00:39:18.100
sobre cómo hacer añadir entradas son en cordata y mostrarlas en un listado con su

00:39:18.100 --> 00:39:27.420
juay 10.000 habrá unas 10 o 15 que te expliquen cómo es un protocolo y cómo aplicar el protocolo

00:39:27.420 --> 00:39:32.980
y habrá unos dos o tres artículos que te digan que es un valor por referencia y un

00:39:32.980 --> 00:39:41.500
valor y una variable por valor o sea me refiero que es que del de al fin de recetas hay muchísimo

00:39:41.500 --> 00:39:49.660
contenido de un poco de teoría de algo como genéricos protocolos o así hay un poquitín

00:39:49.660 --> 00:39:56.260
pero de las bases hay muy muy poco o sea muy muy poco y ahí es uno de los que les mola

00:39:56.260 --> 00:40:03.300
mucho la base hay gente que lleva trabajando dos o tres años desarrollando ya aplicaciones

00:40:03.300 --> 00:40:09.180
y que está que estamos usando día a día y no sabe no sabe por qué pongo led o bar

00:40:09.180 --> 00:40:15.140
yo pongo todas led y cuando me dice oye que cuando me dice el warning es como le pongo

00:40:15.140 --> 00:40:21.020
bar es que hay gente así que lleva dos y tres años trabajando en esto y eso es un

00:40:21.020 --> 00:40:28.460
problema a mí no saben luego luego así hay las aplicaciones que hay por ahí de grandes

00:40:28.460 --> 00:40:33.380
compañías están como están precisamente por eso no hay más es precisamente por eso

00:40:33.380 --> 00:40:37.060
por falta de formación de la gente que lo está desarrollando es que tú imagínate

00:40:37.060 --> 00:40:43.220
la gente que me dice esto es literal y muchísima gente me lo ha repetido pues yo pensé que

00:40:43.220 --> 00:40:48.580
la roba sea para mí vale el arroba escaping es lo que hay que poner para que te compile

00:40:48.580 --> 00:40:58.020
y ya lo ponen ahí para pillar efectivamente pero como la propia ayuda del código es un

00:40:58.020 --> 00:41:03.860
poco que por fortuna ya empiezo hace ya unos años que no veo un código así pero en los

00:41:03.860 --> 00:41:11.100
primeros años de swift 1 2 y 3 o sea proyectos que llegaban a mis manos para mantenimiento

00:41:11.100 --> 00:41:16.620
para puesta al día etcétera de encontrarme decir pero pero pero pero pero pero ni un

00:41:16.620 --> 00:41:23.980
solo if let por supuesto lo guard es que no sabían qué era y todo admiraciones admiraciones

00:41:23.980 --> 00:41:28.580
admiraciones admiraciones que es un opcional lo que hay que ponerle una admiración para

00:41:28.580 --> 00:41:35.220
que compile insisto por suerte ya hace años que no me encuentro nada de eso y está claro

00:41:35.220 --> 00:41:42.140
que la gente ya lo tiene claro no pero pero bueno hay otras bases que son más complicadas

00:41:42.140 --> 00:41:47.660
en ese sentido entonces la curva julio la curva de los opcionales porque tú primero

00:41:47.660 --> 00:41:51.620
empiezas cuando aprendes a programar todo el rato poniendo admiraciones luego cuando

00:41:51.620 --> 00:41:57.660
descubres el if let y el guard empiezas a hacerlo todo con if let pasas al otro lado

00:41:57.660 --> 00:42:03.820
y luego ya se suaviza la curva y ya muy poquitas veces pones la admiración y ya normalmente

00:42:03.820 --> 00:42:07.260
lo desencasulas pero lo que decían muchas veces la admiración no está mal yo creo

00:42:07.260 --> 00:42:12.660
que lo hablábamos con marc alguna vez que a ver que hay muchas veces que tu programa

00:42:12.660 --> 00:42:17.380
tiene que petar si esa variable es opción se os hace en ese momento ser variables opcional

00:42:17.380 --> 00:42:22.980
tiene que petar porque algo no está funcionando por ejemplo yo uso las admiraciones para el

00:42:22.980 --> 00:42:31.820
tema de la creación de urls porque al final la determinadas a la admiración al final

00:42:31.820 --> 00:42:38.300
es la forma en la que tú garantizas que eso va a funcionar y que es un dato correcto es

00:42:38.300 --> 00:42:43.340
como cuando en determinadas ocasiones por ejemplo si quieres poner un timer como propiedad

00:42:43.340 --> 00:42:50.820
dentro de una clase para poder hacer referencia en el bloque de código a self tienes que

00:42:50.820 --> 00:42:57.000
declarar el timer con admiración para garantizarle al compilador que el timer existirá cuando

00:42:57.000 --> 00:43:02.660
vayas a usarlo y entonces te deje usar el self dentro del closure que añades al propio

00:43:02.660 --> 00:43:09.100
timer sino no te deja te dice que estás usando self antes de que self exista y no puedes

00:43:09.100 --> 00:43:15.020
hacerlo cuando estás inicializando el timer en el init de acuerdo entonces es un caso

00:43:15.020 --> 00:43:19.540
concreto donde tú le estás garantizando al sistema que efectivamente el timer va a

00:43:19.540 --> 00:43:23.580
existir y de hecho es que lo estás creando en el init en la primera línea o sea que

00:43:23.580 --> 00:43:27.780
eso es imposible que pete por lo tanto hay determinadas ocasiones donde sí puedes usar

00:43:27.780 --> 00:43:35.380
la admiración para que tú como desarrollador que sabes lo que hace

00:43:35.380 --> 00:43:40.140
entiende que suponiendo que sepa lo que haces pero en mi caso pues el tuyo por ejemplo o

00:43:40.140 --> 00:43:45.340
en el de mark pues también pues sabemos lo que hacemos pues podamos decirle al sistema

00:43:45.340 --> 00:43:49.460
no no mira a ver fíate de mí que yo esto lo voy a hacer bien entonces es un poco ese

00:43:49.460 --> 00:44:09.060
tema efectivamente pues yo creo que vamos más y vamos con las noticias

00:44:09.060 --> 00:44:16.900
y vamos a empezar con una cortita corta pero no por ello menos menos importante y es que

00:44:16.900 --> 00:44:23.980
el archiconocido libro de Swift Programming Language que digamos que es el libro oficial

00:44:23.980 --> 00:44:29.980
de la documentación de Swift va a ser empezando con la versión 5.8 que hemos comentado antes

00:44:29.980 --> 00:44:37.380
que saldrá en breve junto con Scope 14.3 va a ser publicado con la herramienta que

00:44:37.380 --> 00:44:42.580
quizá ya tendrá un par de años vale de generar documentación automáticamente en

00:44:42.580 --> 00:44:46.600
base a los comentarios del código vale a las funciones que has definido en el código

00:44:46.600 --> 00:44:51.020
de Doxy con lo cual pues ya no digamos ya no tendrán que escribir un libro aparte e

00:44:51.020 --> 00:44:56.980
ir actualizando ambas partes la base de código más o sea reflejando los cambios de la base

00:44:56.980 --> 00:45:01.860
de código en el libro sino que directamente al cambiar los comentarios al definir nuevas

00:45:01.860 --> 00:45:06.700
funciones en el código serán autodocumentando y directamente pues lo tendrán que exportar

00:45:06.700 --> 00:45:11.900
algo harán por ahí en medio pero bueno lo tendrán que exportar con lo que de esta manera

00:45:11.900 --> 00:45:17.940
hacen pues por un lado evitarse ese flujo y ese cambio donde bueno nos podemos olvidar

00:45:17.940 --> 00:45:23.180
de actualizar ciertas partes y demás pero además de esta manera meten esa parte también

00:45:23.180 --> 00:45:30.300
en la parte pública es decir si tú contribuyes al proyecto Swift pues también estarás contribuyendo

00:45:30.300 --> 00:45:36.900
a que lo que documentes en ese código quede reflejado en este libro gordo de petete para

00:45:36.900 --> 00:45:44.180
su hijo pues si de hecho es una lectura que deberíais de tener como referencia vale muchas

00:45:44.180 --> 00:45:51.740
ocasiones buscamos cosas en internet y nos sale nuestro amigo Paul Hudson que tiene una

00:45:51.740 --> 00:45:59.500
un posicionamiento maravilloso pero en muchas ocasiones es más fácil acudir a la fuente

00:45:59.500 --> 00:46:04.760
y bueno el hecho de que ahora hayan puesto el libro en formato Doxy vale podemos recordar

00:46:04.760 --> 00:46:14.680
que bueno pues que a ver la noticia es esa no que salió es code 14.3 beta que salió

00:46:14.680 --> 00:46:20.140
la parte de Swift 5.8 como hemos comentado y bueno pues esta es una de las cosas y Swift

00:46:20.140 --> 00:46:27.520
5.8 y Scope 14.3 con IOS 16.4 vale porque vamos una versión menor como has dicho ante

00:46:27.520 --> 00:46:35.300
Arturo por detrás con Scope saldrán probablemente para finales de marzo primeros de abril es

00:46:35.300 --> 00:46:40.660
lo que se denomina la versión de primavera y que todos los años tiene algo más la verdad

00:46:40.660 --> 00:46:47.460
que me parece muy bien de hecho volvemos a repetir si no conoce si no conocéis Doxy

00:46:47.460 --> 00:46:52.820
echarle un ojo porque merece mucho la pena vale es muy fácil simplemente cualquier función

00:46:52.820 --> 00:46:58.700
cualquier clase cualquier lo que sea que ya tengáis hecho comando clic encima del nombre

00:46:58.700 --> 00:47:03.000
y veréis que aparece una opción que pone app documentation vale y él ya sólo rellena

00:47:03.000 --> 00:47:09.220
la plantilla para que automáticamente pongáis la información de qué es la función o qué

00:47:09.220 --> 00:47:13.780
es la clase qué es lo que hace te cogerá también los parámetros etcétera por lo

00:47:13.780 --> 00:47:18.820
tanto y te permite crear una ayuda que luego puedes generar desde el menú de editor dándole

00:47:18.820 --> 00:47:26.220
a build documentation porque al final Doxy significa documentation compiler porque es

00:47:26.220 --> 00:47:33.260
un compilador de documentación entonces cuando hacemos un build lo que hacemos es generar

00:47:33.260 --> 00:47:37.920
esa documentación que se incorpora dentro de nuestro scope y que permite pues incluso

00:47:37.920 --> 00:47:42.700
luego exportar esa documentación incluso a una página web que es lo que va a hacer

00:47:42.700 --> 00:47:48.860
apple para poder tener toda esa información ahí disponible desde luego si no estáis

00:47:48.860 --> 00:47:59.460
utilizando Doxy es algo bastante muy muy muy recomendable y a ver aquí hay unas cuantas

00:47:59.460 --> 00:48:09.860
cositas que son un poco mosqueables de acuerdo me explico el cambio de los result builders

00:48:09.860 --> 00:48:19.020
en Swift 5.8 sumado a lo del arroba back deploy que es otro cambio que también nos ha traído

00:48:19.020 --> 00:48:27.780
Swift 5.8 vale y que hablaremos en el bloque principal a mí me tiene mosca porque esto

00:48:27.780 --> 00:48:34.260
tiene pinta de que van a ser cambios importantes en Swift UI no te parece si quieres empezamos

00:48:34.260 --> 00:48:41.540
por la implementación el cambio de hecho lo llaman mejora porque realmente es una mejora

00:48:41.540 --> 00:48:50.740
de los result builders en Swift 5.8 bueno aquí pues comenta o sea la fuente no me acuerdo

00:48:50.740 --> 00:48:56.340
de dónde lo vimos pero bueno aquí lo podéis ver tanto en la parte de cómo se hizo la

00:48:56.340 --> 00:49:01.820
propuesta o también en los foros han comentado cómo lo han implementado por si queréis

00:49:01.820 --> 00:49:06.940
pues meteros un poco más de lleno en cómo está hecho vale pero nosotros vamos a comentar

00:49:06.940 --> 00:49:16.380
un poco los resultados pues muchas veces precisamente en Swift UI que es todo basado en result builder

00:49:16.380 --> 00:49:21.540
pues teníamos bastantes problemas con los el diagnóstico de errores vale sobre todo

00:49:21.540 --> 00:49:28.100
en tipos contextuales le llaman vale en tipos de el tipo de entrada que tiene que ser inferido

00:49:28.100 --> 00:49:34.260
en el result builder vale que muchas veces hacía que cuando tienes un error en una parte

00:49:34.260 --> 00:49:41.020
te la pusieran otro vale o que se soltara el famoso la expresión es demasiado grande

00:49:41.020 --> 00:49:46.060
para ser evaluada por favor cortarlo en trozos y tenías que estar comentando código para

00:49:46.060 --> 00:49:52.220
que al final te sacara el error principal porque se bloqueaba el propio el propio analizador

00:49:52.220 --> 00:49:58.660
de hecho precisamente una de las cosas que hace es que mejora el tiempo de resolución

00:49:58.660 --> 00:50:02.580
vale es decir baja ese tiempo para que no salga lo que acaba de decir Julio que muchas

00:50:02.580 --> 00:50:07.140
veces no tenías nada mal pero simplemente tenía que hacer tantas comprobaciones que

00:50:07.140 --> 00:50:11.500
no le daba tiempo es un parámetro que se puede cambiar en el scope vale está muy escondido

00:50:11.500 --> 00:50:15.900
vale pero se puede se puede cambiar en un sitio para que no te dé este error es decir

00:50:15.900 --> 00:50:19.340
tú le pones una especie de timeout que si no yo que sé vamos a imaginar que eso no

00:50:19.340 --> 00:50:23.020
me acuerdo cuánto es exactamente por defecto son dos segundos vale pues si en dos segundos

00:50:23.020 --> 00:50:27.500
no es capaz suelta el error y para de compilar entonces tú se lo puedes poner más grande

00:50:27.500 --> 00:50:35.220
y eso es y eso ya no serán errores vale pero bueno la gracia es que esté para mí lo apunto

00:50:35.220 --> 00:50:40.260
lo es que lo vi una vez que me pasó lo vi pues buscando por internet a ver cómo arreglarlo

00:50:40.260 --> 00:50:44.660
y lo vi que uno decía no yo se lo he subido a esto y suyo hay para mí es como otro mundo

00:50:44.660 --> 00:50:51.340
decía madre mía es que tela porque claro cuando ya empiezas a meter tenemos que tener

00:50:51.340 --> 00:50:58.300
en cuenta que los result builders son algo parecido parecido entre muchísimas comillas

00:50:58.300 --> 00:51:04.660
a funciones que llaman a funciones con parámetros de funciones que devuelven otras funciones

00:51:04.660 --> 00:51:10.860
o sea es totalmente programación funcional al 100% son funciones que llaman a funciones

00:51:10.860 --> 00:51:20.620
que reciben funciones como parámetros de entrada para devolver otras funciones

00:51:20.620 --> 00:51:28.060
y el buen funcionario es de comer aquello y el buen funcionalizador será no entonces

00:51:28.060 --> 00:51:33.860
al final si yo tengo un montón de parámetros funcionales que encima son genéricos dentro

00:51:33.860 --> 00:51:39.140
de una función para ir agregando distintos niveles llega un momento en el que cuando

00:51:39.140 --> 00:51:45.420
ya estás en un nivel de quinto o sexto nivel de agrupación dentro de un scrollview que

00:51:45.420 --> 00:51:50.380
está en un vstack que dentro tiene un hstack que dentro tiene otro scrollview que luego

00:51:50.380 --> 00:51:56.720
tiene un hlazy hstack o lo que sea pues al final llega un momento en el que se pierde

00:51:56.720 --> 00:52:03.140
en el limbo y ya no es capaz de llegar a validar el conjunto y es un poco lo que pretenden

00:52:03.140 --> 00:52:09.460
arreglar con esto aparte de la el otro cambio que está también no sé si lo han aprobado

00:52:09.460 --> 00:52:17.060
ya o están a punto de aprobarlo de cambiar la forma de las funciones a parámetros variadicos

00:52:17.060 --> 00:52:24.660
en vez de parámetros fijos para que así podamos poner más de 10 elementos en una

00:52:24.660 --> 00:52:29.340
misma agrupación yo creo que es una de las cosas que dejaban para swift 6.0 creo que

00:52:29.340 --> 00:52:33.900
leí la última vez pero no estoy seguro por eso que están todavía es otra de las cosas

00:52:33.900 --> 00:52:38.220
que están ahí trabajando en ello pues es que habla aquí por ejemplo no sé si a vosotros

00:52:38.220 --> 00:52:43.940
habéis tenido algún problema porque yo bastantes con la API de table vale de SwiftUI que de

00:52:43.940 --> 00:52:50.140
hecho primero era sólo para mac ahora lo pasaron también para bueno para mac os ahora

00:52:50.140 --> 00:52:55.820
para ios vale que ni os sólo te muestra la primera columna y esto tiene bueno tiene

00:52:55.820 --> 00:53:03.260
varios tipos de inicializador pero muchos tienen que ver precisamente con inferencia

00:53:03.260 --> 00:53:08.060
de tipos vale entonces tú a lo mejor le defines la tabla en la tabla defines cada columna

00:53:08.060 --> 00:53:13.380
y en esa columna puedes haberle pasado un digamos un array vale y vas cogiendo de ese

00:53:13.380 --> 00:53:19.940
array una propiedad vale y luego de un o bien si la propiedad de un keypad que es lo que

00:53:19.940 --> 00:53:26.260
va eso es si la propiedad que le das con ese keypad es ya representable pues un número

00:53:26.260 --> 00:53:31.600
un string directamente lo puedes no tienes que darle un closer con cómo quieres representarlo

00:53:31.600 --> 00:53:35.260
pero si no le tienes que dar un closer y ahí es donde hay el problema cuando tú le das

00:53:35.260 --> 00:53:39.860
un closer de cómo representar esa propiedad pues la mayoría de las veces no funcionaba

00:53:39.860 --> 00:53:46.180
y muchas veces veíamos ese error de que no era capaz de resolverlo en un tiempo antes

00:53:46.180 --> 00:53:52.660
del timeout vale entonces aquí habla de que de un ejemplo de código de una tabla muy

00:53:52.660 --> 00:53:59.240
simple o sea tiene tres columnas y una de ellas está con esa inferencia dice esto antes

00:53:59.240 --> 00:54:04.780
se tardaba en resolverse cuatro segundos por el compilador y ahora ha pasado a 0,6 segundos

00:54:04.780 --> 00:54:12.620
vale con una tabla súper pequeña y que pues olvídate de hecho yo la mayoría de las veces

00:54:12.620 --> 00:54:19.100
lo que siempre tenía es una estructura una view de su UI solo con la tabla porque eso

00:54:19.100 --> 00:54:23.920
ya para empezar te quita un montón de problemas porque como ya lo metieses con otro poco con

00:54:23.920 --> 00:54:31.220
algún elemento más olvídate claro y esto viene... perdón perdón no no por completar

00:54:31.220 --> 00:54:39.380
esto por lo que estoy leyendo viene de la inferencia de los closers extendida a través

00:54:39.380 --> 00:54:47.540
de multi instrucciones vale es decir anteriormente en un closure cuando devolvías cosas distintas

00:54:47.540 --> 00:54:55.080
en distintos en distintas salidas había que indicar qué era lo que estabas devolviendo

00:54:55.080 --> 00:55:01.320
para que hubiera una salida única de acuerdo ahora ya no con el cambio de lo que apple

00:55:01.320 --> 00:55:09.780
llama el extended multi statement closure parámetro que es la inferencia del tipo de resultado

00:55:09.780 --> 00:55:15.780
al final lo que consigues es que no tengas que poner el tipo de salida en muchas de las

00:55:15.780 --> 00:55:22.440
ocasiones porque directamente él lo infiere igual que infiere el tipo de entrada vale

00:55:22.440 --> 00:55:28.160
porque por ejemplo el ejemplo más típico era que si tú ponías en una devolución

00:55:28.160 --> 00:55:34.720
a partir de un if dentro de un closure que devolvía un dato y devolvía en otro en otra

00:55:34.720 --> 00:55:40.500
parte de if un nil el sistema no era capaz de inferir el tipo de dato y tenías tú que

00:55:40.500 --> 00:55:46.880
indicarle que para lo mejor era un int opcional vale pues eso a partir de su 5.7 cambió y

00:55:46.880 --> 00:55:52.320
el sistema ya es capaz de inferir las múltiples salidas que puede tener el closure para que

00:55:52.320 --> 00:55:59.000
no tengas que indicarlo y esto es lo que han aprovechado para reestructurar en los resul

00:55:59.000 --> 00:56:04.720
builders y que sean más prácticos con todo lo que hemos estado comentando pues si esto

00:56:04.720 --> 00:56:10.000
es uno de esos cambios que decíamos que al final para los que usamos la api nos da nos

00:56:10.000 --> 00:56:13.520
da un poco igual pero el caso que ha dicho julio por ejemplo pues mira pues a veces que

00:56:13.520 --> 00:56:17.840
tenías que definir los tipos pues no se los vas a tener que definir porque bueno yo creo

00:56:17.840 --> 00:56:22.560
que ya lo hemos dicho alguna vez pero una mientras pueda ser los tipos mientras puedan

00:56:22.560 --> 00:56:25.840
ser inferidos por el compilador siempre es mejor vale porque si el compilador funcionará

00:56:25.840 --> 00:56:30.880
mejor y podrá hacer sus propias adaptaciones vale si lo tenemos que especificar digamos

00:56:30.880 --> 00:56:35.200
que le cuesta más al compilador porque ya le ponemos una restricción vale todas las

00:56:35.200 --> 00:56:38.600
cosas que hace por detrás por nosotros pues eso le pones una restricción más con lo

00:56:38.600 --> 00:56:43.360
cual se lo complicas y eso no pues lo que acabamos de comentar es uno de esos cambios

00:56:43.360 --> 00:56:48.840
de dentro que a nosotros no nos va a cambiar la api con la que interactuamos vale la interfaz

00:56:48.840 --> 00:56:52.680
con la que interactuamos con el lenguaje pero por detrás pues estamos viendo que resuelve

00:56:52.680 --> 00:56:59.080
un montón de problemas que no son errores per se sino problemas derivados de la implementación

00:56:59.080 --> 00:57:07.600
que había en ese momento y la siguiente noticia julio la vas a decir tú porque creo que es

00:57:07.600 --> 00:57:12.080
de las cosas que más te ha gustado de esas cosas que muchos mortales no nos enteramos

00:57:12.080 --> 00:57:18.360
bueno pero que a otros nos emociona

00:57:18.360 --> 00:57:26.640
pues sí básicamente la parte te refieres a la parte de él lo de poder ejecutar no

00:57:26.640 --> 00:57:34.080
no no de esas cosas de la noticia de hombrio a ver cómo te puedes olvidar vale vale vale

00:57:34.080 --> 00:57:40.000
vale vale vale vale es que como tenemos aquí un millón de cosas efectivamente se llama

00:57:40.000 --> 00:57:43.800
si ésta te la pase yo si es que anda que yo también la cabeza ves tú como estoy todo

00:57:43.800 --> 00:57:50.120
el día y con clase y tal pues no me da la cabeza efectivamente uno de esos pequeños

00:57:50.120 --> 00:57:57.040
cambios que bueno pueden pasar un poco desapercibidos pero realmente bueno pues ahí está y es

00:57:57.040 --> 00:58:05.320
que para todos los amantes del desarrollo por línea de comando el pasado 16 de febrero

00:58:05.320 --> 00:58:14.880
se lanzó homebrew 4.0.0 y entonces alguno dirá y si lo decís que no soy programadores

00:58:14.880 --> 00:58:24.720
de verdad qué es eso de homebrew pues homebrew es literalmente el missing package manager

00:58:24.720 --> 00:58:33.560
de mac os vale él lo que sería pues él el gestor de paquetes que no incluye mac os

00:58:33.560 --> 00:58:39.360
y que pues bueno se puede incluir directamente y la verdad pues bueno que es una opción

00:58:39.360 --> 00:58:45.440
que es una versión que ha mejorado bastante el funcionamiento de la propia librería es

00:58:45.440 --> 00:58:52.000
una función una un cambio importante que lo que ha hecho ha sido si podríamos clasificarlo

00:58:52.000 --> 00:58:59.520
efectivamente como el apt del del mac vale y bueno ha hecho un cambio significativo en

00:58:59.520 --> 00:59:06.200
el uso de las propias fórmulas ha pasado a llevarlo todo por control de jasons ha incorporado

00:59:06.200 --> 00:59:11.200
mejoras a nivel de velocidad ahora es mucho más ligero mucho más rápido a la hora de

00:59:11.200 --> 00:59:15.720
actualizar a la hora de mantener los paquetes etcétera y es una parte pues que bueno es

00:59:15.720 --> 00:59:21.560
bastante bastante interesante y de hecho pues yo ahora que llevo una temporada probando

00:59:21.560 --> 00:59:27.820
bastante todo el tema de la inteligencia artificial pues es una herramienta imprescindible para

00:59:27.820 --> 00:59:37.000
instalar python para instalar bueno pues conda que es el virtualizador de entornos de python

00:59:37.000 --> 00:59:43.040
que permite crear un entorno para una cosa concreta es como una especie de a ver no lo

00:59:43.040 --> 00:59:49.400
podemos llamar docker vale porque no es así pero es como una especie de parte en la que

00:59:49.400 --> 00:59:56.040
tú creas tus propias como una especie de virtualización del propio terminal con unos

00:59:56.040 --> 01:00:00.920
elementos que sólo van a funcionar para esa sesión que estás cogiendo y que puede tener

01:00:00.920 --> 01:00:06.760
incluso sus propias dependencias sus propios paquetes instalados entonces es como un submundo

01:00:06.760 --> 01:00:11.840
no bastante interesante y que bueno pues tiene todo ese funcionamiento de python etcétera

01:00:11.840 --> 01:00:18.640
y con el que he estado probando todo esto que he comentado de bueno pues el de usar

01:00:18.640 --> 01:00:29.240
whisper y hay en el mac con m1 max en el mac studio probar stable diffusion 2.1 en la función

01:00:29.240 --> 01:00:34.960
de web pues todas esas cosas vale entonces la verdad que es algo bastante interesante

01:00:34.960 --> 01:00:47.320
vale y bueno pues ahora ya con esta versión nueva de lo que sería homebrew 4.0 pues la

01:00:47.320 --> 01:00:52.040
verdad que es bastante recomendable si no sabéis cómo funciona sólo tenéis que entrar

01:00:52.040 --> 01:00:58.880
en brew.sh y desde ahí pues tenéis la línea de comando para instalar el paquete y desde

01:00:58.880 --> 01:01:06.320
ahí pues podéis instalar pues eso insisto jenkins podéis instalar python podéis instalar

01:01:06.320 --> 01:01:14.680
en fin todo lo que sea y de hecho la propia open AI en su propia documentación tiene

01:01:14.680 --> 01:01:18.880
instalaciones basadas en homebrew vale o sea que ese es el nivel que hay

01:01:20.840 --> 01:01:26.880
pues sí pues una herramienta sin duda para hacer cosas ya un poquitín avanzadas que además justo

01:01:26.880 --> 01:01:32.640
me lo pasó julio dijo hace que no utilizo yo esto pero madre mía el tiempo que hace que no hago yo

01:01:32.640 --> 01:01:38.880
no lo hago yo estas cosas a mi ordenador pues si quieres poner fastlane por ejemplo pues es la

01:01:38.880 --> 01:01:45.120
forma de de poner si yo creo que la anterior vez fue eso pero es que esta semana lo utilicé porque

01:01:45.120 --> 01:01:52.400
ya os contaré algún próximamente porque estoy haciendo un curso de python y lo he tenido que lo

01:01:52.400 --> 01:01:57.960
he tenido que utilizar pero bueno eso es ya ya para más adelante porque seguimos con swift porque

01:01:57.960 --> 01:02:05.220
swift no para y seguimos de hecho en la línea de comandos porque porque con la versión 5.8 de

01:02:05.220 --> 01:02:12.800
swift tenemos un nuevo argumento a la hora de lanzar un programa por comandos y es pues barra

01:02:12.800 --> 01:02:19.920
e que este argumento es algo como ejecución no estoy seguro ahora de porque le han puesto esa

01:02:19.920 --> 01:02:24.720
e pero lo que hace directamente es ejecutar código es decir nosotros podemos decir swift

01:02:24.720 --> 01:02:32.640
barra e y luego entre comillas definir una variable poner código en swift y directamente lo va a

01:02:32.640 --> 01:02:41.200
ejecutar una especie de script vale al final puede ser algo algo parecido pues bueno que nos permite

01:02:42.200 --> 01:02:47.240
pues todas las cosas que podemos hacer con la terminal es decir ejecutar un programa y bueno

01:02:47.240 --> 01:02:51.840
un programa no porque con swift directamente bueno pero programa sin main se podría yo que

01:02:51.840 --> 01:02:59.840
sé escribes código swift en un documento vale en un fichero y luego con este swift e se lo pasas

01:02:59.840 --> 01:03:04.880
como como argumento el contenido de ese fichero vale ejecutaría ese script si no quieres hacer un

01:03:04.880 --> 01:03:09.520
programa entero con el main y compilarlo y demás vale porque bueno una de las cosas que tenemos de

01:03:09.520 --> 01:03:13.880
esta manera de ejecutarlo es que no tienes que compilarlo porque tú si tienes un pro digamos

01:03:13.880 --> 01:03:18.440
tú no puedes tener un fichero un programa en swift y directamente ejecutar el código sino que tienes

01:03:18.440 --> 01:03:23.760
que compilarlo y ejecutar ese código compilado vale pues de esta manera con este comando de

01:03:23.760 --> 01:03:29.960
ejecución pues directamente puedes ejecutarlo o poniendo en los literales es decir poniendo el el

01:03:29.960 --> 01:03:36.760
código swift directamente con argumento o pasándole un fichero y con esto pues en línea de comando

01:03:36.760 --> 01:03:41.680
los que los que tengáis callo con esto pues eso pues la salida de ese fichero programa la puedes

01:03:41.680 --> 01:03:47.600
le puedes pasar como argumento a otro fichero y bueno pues hacer ya y todos los hechizos que

01:03:47.600 --> 01:03:55.560
quieras y bueno resumiendo que lo bueno de esto es que nos permite usar swift como un lenguaje

01:03:55.560 --> 01:04:03.800
de script como puede ser pues javascript o muchos otros o hacer un pequeño script de bash vale que

01:04:03.800 --> 01:04:09.160
yo eso sí que sí que he tenido que hacer alguna vez es como vale me tengo que ver cómo funciona

01:04:09.160 --> 01:04:14.160
cómo se hacen los if aquí como tal pues no porque con esta de esta manera si sabes swift pues ya

01:04:14.160 --> 01:04:19.920
puedes ejecutar el código de forma sencilla sin tener que compilar eso sin tener un programa

01:04:19.920 --> 01:04:26.040
consume y todo lo que lo que conllevaría un programa en su y yo de hecho una de las últimas

01:04:26.040 --> 01:04:33.200
veces que más he disfrutado el desarrollo de algo ha sido cuando hice mi última aplicación

01:04:33.200 --> 01:04:44.960
en swift de línea de comando con él con la librería parsable command es que es que es muy heavy es que

01:04:44.960 --> 01:04:50.560
es muy heavy es que te puedes hacer pero es que no sólo eso es que tú puedes coger directamente

01:04:50.560 --> 01:04:55.720
con file manager y hacerte un recorrido de todos los archivos de una carpeta y procesarlos uno

01:04:55.720 --> 01:05:03.840
por uno en batch con dos instrucciones directamente con él con él con una instrucción de file

01:05:03.840 --> 01:05:11.800
manager recuperas todas las rutas en como si fuera como una radio url es vale y se lo pasas a un for

01:05:11.800 --> 01:05:19.720
vas abriendo fichero la cata cata cata cata cata cata y además es que va volando o sea tiene una

01:05:19.720 --> 01:05:31.480
velocidad suite de línea de comando increíble y la última que hice fue una conversor de csv

01:05:31.480 --> 01:05:40.920
a jason vale que dice así como un testeo mío manual y qué gustito más bueno a ver lo que

01:05:40.920 --> 01:05:46.760
es bueno porque es muy potente además en nuestro caso que sabe que los dominamos es muy rápido hacer

01:05:46.760 --> 01:05:52.800
cosas así sencillas parseadores y demás pues al final es un parseador es cosas que conviertan

01:05:52.800 --> 01:05:57.880
formatos de un formato a otro formato pero el engorro era si lo tienes que compil que hay

01:05:57.880 --> 01:06:02.680
que generar un proyecto compilar y demás pues ya es un poco rollo yo a veces lo hacía con playground

01:06:02.680 --> 01:06:08.520
vale porque en playground digamos que te encapsula tu código y tú le das a play y ya te funciona el

01:06:08.520 --> 01:06:12.920
código según según lo vas escribiendo pero mira de esta manera pues te puedes hacer un parseado

01:06:12.920 --> 01:06:17.480
rápido sin tener lo que digo pues que hacer un proyecto o sea un paquete de su y ese general

01:06:17.480 --> 01:06:21.760
ejecutable y todo eso pues hacer pues como una especie de escribir lo que yo creo que es en

01:06:21.760 --> 01:06:28.920
nuestro caso que es gente que controlamos su y pues al final es muy potente pues sí pues

01:06:30.600 --> 01:06:39.400
quién lee las predicciones de los w porque pusimos también aquí porque de vez en cuando

01:06:39.400 --> 01:06:48.960
es interesante vale y arturo nos ha puesto aquí un tweet de un desarrollador vale de sindre sor

01:06:48.960 --> 01:06:56.200
husch que es un desarrollador independiente de mac y de swift vale que hace aplicaciones

01:06:56.200 --> 01:07:02.840
para mac os y que también hace cositas en no de js eso le hace perder punto

01:07:02.840 --> 01:07:10.560
pero resulta muy interesante porque hace en un tweet que publicó hace unos días

01:07:11.640 --> 01:07:21.840
unas predicciones sobre la wwc que no son predicciones o lo que porque con esto pero

01:07:21.840 --> 01:07:31.200
exacto porque el primero de ellos es swift debe una un reemplazo moderno de core data y añade

01:07:31.200 --> 01:07:39.120
it's about time sabes como ya es hora hostia y decimos disclaimer que no no le conocemos y no

01:07:39.120 --> 01:07:44.720
le conocemos que no escuchas de podcast palabrita del niño jobs yo creo que todos los que tenemos

01:07:44.720 --> 01:07:52.000
que sufrir cordata tenemos muy claro que eso tiene que pasar ya y luego bueno pues tiene

01:07:52.000 --> 01:07:58.440
cositas curiosas por ejemplo nos comenta que a él le gustaría pues de nuevo sin haber oído el

01:07:58.440 --> 01:08:04.280
programa nos habla de vr y ar con su if you hay que efectivamente todos coincidimos con ello nos

01:08:04.280 --> 01:08:14.880
habla de una de un cambio con los app intents en la configuración de widget kit se lo compro vale

01:08:14.880 --> 01:08:22.840
o sea a ver si yo hago un widget hoy y es un widget estático un widget en el que yo decido

01:08:22.840 --> 01:08:29.600
qué es lo que quiero mostrar en ese widget y ese widget puede ser sobre datos de usuario vale pero

01:08:29.600 --> 01:08:34.400
datos de usuario que el usuario haya el usuario haya elegido dentro de la propia aplicación vale

01:08:34.400 --> 01:08:40.320
por ejemplo yo creo un widget para mostrar películas y utilizo el criterio de las películas

01:08:40.320 --> 01:08:48.280
que mi usuario dentro de mi app ha marcado como favoritas perfecto y entonces muestro esas

01:08:48.280 --> 01:08:55.520
películas ahora si yo hago una configuración no estática sino una configuración de intenciones

01:08:55.520 --> 01:09:05.280
que está basada en que yo pueda dejar marcado vale yo puedo pulsar el widget y vosotros veréis

01:09:05.280 --> 01:09:13.520
que al pulsar en un widget en ocasiones aparece un edit que lo que haces cuando tú le das te

01:09:13.520 --> 01:09:20.480
muestra una tabla o te muestra un desplegable donde te permite cambiar sin abrir la app lo

01:09:20.480 --> 01:09:31.240
que quieres mostrar en ese widget para hacer eso hace falta un city kit intent y un target distinto

01:09:32.800 --> 01:09:40.360
como extensión de intent al del propio widget algo que no tiene sentido alguno y además tienes

01:09:40.360 --> 01:09:47.680
que poner una extensión que extiende el tipo del propio intent con un constructor por defecto y con

01:09:47.680 --> 01:09:53.800
unos cambios en los datos para coger esos valores es decir cada vez que yo cuento esto en una

01:09:53.800 --> 01:10:02.760
formación la gente se desmonta como un señor patata caído desde diez pisos o sea es lo más

01:10:02.760 --> 01:10:13.240
absurdo complejo lo remato es lo más absurdamente complejo en el sentido de que está puesto tan

01:10:13.240 --> 01:10:18.560
complejo de una manera que no tiene sentido sabrían mil formas de hacer esto de una manera mucho más

01:10:18.560 --> 01:10:24.520
inteligente y mejor que a través de las app intents porque lo notas que es algo que es como

01:10:24.520 --> 01:10:29.800
que oye y esto no lo hacemos a yo que sé pues ponle esto y ya iremos tirando otro y esto encima

01:10:29.800 --> 01:10:36.800
y esto y tres años después sigue es como no tío sámelo bien entonces en ese sentido también o por

01:10:36.800 --> 01:10:47.760
ejemplo nos dice un control de una forma más moderna de manejo de imágenes reemplazando el

01:10:47.760 --> 01:10:56.280
esto me hace gracia replacing del lower level ancient image io no es como el nivel de cuando

01:10:56.280 --> 01:11:02.360
franco era corneta de control de imágenes no es que de hecho yo mucha gente no lo sabe y de hecho

01:11:02.360 --> 01:11:08.600
mucha gente recurre a librerías de terceros yo creo que hace poco lo compartí tú lo puedes

01:11:08.600 --> 01:11:16.080
aplicar blur aplicar bastantes con los con los filtros con la propia core image con el concor

01:11:16.080 --> 01:11:23.400
image filtros y la gente no lo sabe pero porque no lo sabe por una buena razón porque es que

01:11:23.400 --> 01:11:30.440
es horrible lo tienes que transformar de la lluvia image lo tienes que transformar en una c

01:11:30.440 --> 01:11:39.200
y image o sea no un tipo del core image depende porque hay hay algunos filtros que requieren un

01:11:39.200 --> 01:11:46.680
cg image pero luego te devuelven un c y image que es un core image image que además le tienes que

01:11:46.680 --> 01:11:54.680
dar el lo que es el rectángulo vale de la propia imagen para que se renderice ahí dentro o sea es

01:11:54.680 --> 01:12:00.880
como de verdad esta es la manera a pis con unos palabros julio de los tiempos de hoy esticero de

01:12:00.880 --> 01:12:06.400
las funciones a ver hay una hay una forma de mejorar eso vale si tú importas core image punto

01:12:07.360 --> 01:12:13.080
creo que se llama building filters o algo así vale dentro de core image tú pones import core

01:12:13.080 --> 01:12:20.240
image y luego pones justo después pone punto building filters o algo así y eso te da un

01:12:20.240 --> 01:12:27.240
pequeño paso en el que todos los filtros de core image te los devuelve como una enumeración y

01:12:27.240 --> 01:12:35.200
entonces eso facilita algo el problema es que core image incluso con esta implementación que lo

01:12:35.200 --> 01:12:42.400
facilita no tiene una implementación de no tiene un método de aplica el filtro no no no no tú

01:12:42.400 --> 01:12:51.440
creas un filtro de blur por ejemplo conviertes tu imagen en una imagen cg image o en una imagen c

01:12:51.440 --> 01:12:56.960
y image que por supuesto son opcionales por lo tanto tienes que hacerlo a partir de UI image

01:12:56.960 --> 01:13:03.320
y cuando ya lo tienes hecho y lo has puesto sobre la propiedad del input ya puedes ir al output a

01:13:03.320 --> 01:13:14.200
recoger la salida y encima resulta que es asíncrono síncrono es decir que el blur puede llegar a tardar

01:13:14.200 --> 01:13:20.320
a lo mejor depende del tamaño de la imagen medio segundo o 0,2 segundos porque depende un poco de

01:13:20.320 --> 01:13:26.360
lo grande que sea la imagen vale y el efecto de blur gaussiano pues es un efecto que requiere

01:13:26.360 --> 01:13:34.280
un poco de uso aunque en este caso hacer uso de estos fitos de core image es muy bueno porque utilizan

01:13:34.280 --> 01:13:40.360
la aceleración del ISP de los propios apple silicon del image signal process del proceso

01:13:40.360 --> 01:13:47.560
del procesador señales de imagen pero independientemente cuando tú pones la imagen que

01:13:47.560 --> 01:13:54.720
quieres aplicar del blur sobre el input automáticamente se lanza la transformación por

01:13:54.720 --> 01:14:01.520
lo que ya en la siguiente línea tienes que ir al output que te saca un c image del cual tienes que

01:14:01.520 --> 01:14:07.200
sacar el propio rectángulo que ahora mismo no recuerdo el nombre que tiene pero es también

01:14:07.200 --> 01:14:14.320
un nombre que no te da a entender para nada es el si es el extent vale del propio de la propia c

01:14:14.320 --> 01:14:20.920
image para remontar desde una c image una cg image y de la cg image de volver a una UI image que es

01:14:20.920 --> 01:14:29.000
como de verdad incluso para hacer un propio resize ya sabemos que apple el año pasado nos metió el

01:14:29.000 --> 01:14:35.520
preparing thumbnail vale no yo en una UI image puedo llamar a punto preparing thumbnail y ahí

01:14:35.520 --> 01:14:41.680
tengo dos funciones una asíncrona y otra no asíncrona que me permiten rescalar una imagen

01:14:41.680 --> 01:14:49.640
de manera directa de una forma muy simple como un método que extiende UI image pues genial porque

01:14:49.640 --> 01:14:57.280
hasta ese momento la única manera de rescalar una imagen era o directamente utilizando UI graphics

01:14:57.280 --> 01:15:08.280
con un contexto de UI graphics que es programación en c de begin render context no se que es esto

01:15:08.280 --> 01:15:15.320
dios mío o sea programación en c de cuando franco era corneta y luego la otra opción que había que

01:15:15.320 --> 01:15:21.200
es con los filtros de core image podías usar el filtro del lanczos resizing que es un filtro

01:15:21.200 --> 01:15:28.040
bastante bueno pero igual volvemos a lo mismo o sea incluso fijaros estos filtros de core image

01:15:28.040 --> 01:15:36.520
son capaces de generar QR yo directamente pongo un QR generator le doy el nombre sale perdón le doy

01:15:36.520 --> 01:15:42.200
el contenido que es un data en bruto de lo que quiero mostrar en ese QR incluso puedo darle una

01:15:42.200 --> 01:15:47.880
imagen de fondo para personalizar el QR con un logo y una cosa así o sea se puede hacer también

01:15:47.880 --> 01:15:58.000
pero cuando tú le pides el core image a el QR te devuelve un QR de 16 por 16 píxeles y dice pero

01:15:58.000 --> 01:16:05.280
qué es esto y tienes que ampliarlo con el tamaño vectorial bueno bueno bueno bueno sea un desastre

01:16:05.280 --> 01:16:11.240
o sea es algo totalmente arcaico que de verdad es como decirle a apple mira de verdad si aquí

01:16:11.240 --> 01:16:14.920
alguien te usa una librería tercero es que te lo merece de verdad porque es que menuda

01:16:14.920 --> 01:16:20.080
yo creo que esto julio será porque como ataca directamente al isp tendrá unas dependencias

01:16:20.080 --> 01:16:25.480
de la leche y por eso nadie se quiere meter en ese jardín supongo que irá por ahí porque fijaros

01:16:25.480 --> 01:16:30.160
en este caso ha dicho julio que lo hace el isp y aún así muchas veces te recomiendan hacerlo

01:16:30.160 --> 01:16:35.520
en segundo plano porque muchas veces según qué imágenes puede tardar un tiempo y por supuesto

01:16:35.520 --> 01:16:40.640
bloquear la interfaz pero es que no me acuerdo hace cuánto tuve yo este problema hace bueno

01:16:40.640 --> 01:16:46.480
tuve yo que hacer esto no era más de dos años y el problema era que también lo estábamos

01:16:46.480 --> 01:16:52.080
haciendo una aplicación también para android y es que en android aplicar un blur era no es que

01:16:52.080 --> 01:16:56.920
fuera difícil sino que lo estábamos probando en varios terminales y necesitaba es un terminal muy

01:16:56.920 --> 01:17:02.080
moderno para aplicar un blur y calculo porque en ese momento sería porque android lo haría pues

01:17:02.080 --> 01:17:08.200
a huevo con la con la cpu entonces por eso a mí se me ocurre que en este caso apple al tirar de

01:17:08.200 --> 01:17:14.360
isp y demás irá muy rap muy rápido entre cosas más rápido pero tenemos ese problema que estará

01:17:14.360 --> 01:17:19.760
utilizando pues algunas apis y algún tendrán algunas dependencias que a lo mejor no es sólo

01:17:19.760 --> 01:17:24.520
migrar la parte de arriba sino que habría que migrar muchas capas por no hacer un grupo que

01:17:24.520 --> 01:17:29.320
sería la última solución pues te saco un grupo que haga todo esto por debajo y me pones una llamada

01:17:29.320 --> 01:17:38.360
en suici y pista yo de hecho juraría que el preparing thumbnail de los ua-image el que permite

01:17:38.360 --> 01:17:45.960
hacer un reescalado yo juraría que es un rapper del cifilter seguramente o sea en ese sentido es

01:17:45.960 --> 01:17:50.960
que le haría falta apel julio entonces cogería uno la implementaría diría mira pues enchúfalo a la

01:17:50.960 --> 01:18:00.280
pide sí pero es un poco por ejemplo como trabajar con él con él con él con el kitchen vale con él

01:18:00.280 --> 01:18:07.760
la cartera de certificados de verdad o sea hay que crear un diccionario con claves de objetice

01:18:08.720 --> 01:18:17.640
que ni siquiera son enumeradas porque son constantes de casa no sé qué tal su muerto a caballo y luego

01:18:17.640 --> 01:18:23.640
poner no sé qué y luego envías el diccionario y es como really de verdad no hay una forma más

01:18:23.640 --> 01:18:31.760
bonita hacer esto que no estamos en 2008 apel de verdad no sé yo si quieren tengo uno que es

01:18:31.760 --> 01:18:37.640
el que utilizo pero si empiezo a mirar a tirar para atrás tengo varias varias estructuras que

01:18:37.640 --> 01:18:44.360
me he creado para hacer esto amigable yo tengo mis propios rappers para hacer esto directamente

01:18:44.360 --> 01:18:49.840
todo el mundo saque que tú que de hecho la próxima la gente que vaya a entrar este trabajo que diga

01:18:49.840 --> 01:19:00.120
mira yo estos mis bienes son dejó en herencia un rapper que me echó de totalmente en fin un desastre

01:19:00.120 --> 01:19:07.120
yo creo que porque voy un poco tengo que terminar en menos de media hora o media hora más o menos

01:19:07.120 --> 01:19:15.040
así que si te parece pasamos al bloque final y las cosas estas que yo creo que lo que nos

01:19:15.040 --> 01:19:23.920
queda va a dar bastante discusión pues lo dejamos para la próxima vale si te parece así que pues

01:19:23.920 --> 01:19:31.200
pasamos al bloque principal donde os vamos a contar las novedades que tiene scout 14.3 y

01:19:31.200 --> 01:19:56.840
las nuevas versiones de swift pues empezamos tema central novedades de scout 14.3 el pasado día no

01:19:56.840 --> 01:20:04.760
me acuerdo hace unos días de las semanas de enero pues no fue después fue después porque primero

01:20:04.760 --> 01:20:12.720
sacaron la versión 14.2 y la versión perdón es que a ver es que la verdad que tenéis que entender

01:20:12.720 --> 01:20:20.240
bueno a ver sois developers por lo tanto lo entendéis de verdad apple me da y aunque no

01:20:20.240 --> 01:20:31.600
tenga novedades me da igual pero pero ponme las mismas versiones valesa es un lío que se a ver

01:20:31.600 --> 01:20:40.840
es que de verdad me vuelve loco vale el hecho de que sea ios 16.4 pero es que sea la 14.3 porque

01:20:40.840 --> 01:20:50.840
también van una por detrás yo creo 2 en mac yo creo que van también por la.3 van por la.3 si efectivamente mac os

01:20:50.840 --> 01:21:00.680
va por la 13 no no perdón peor va por la 13.2 menos directamente si si no es un lío de verdad

01:21:00.680 --> 01:21:09.480
es un lío absoluto y es que apple no sacó scout 14.3 con ios 16.3 sino que mantuvo la versión

01:21:09.480 --> 01:21:19.960
14.2 y ahora con la beta de ios 16.4 tenemos la beta de scout 14.3 donde tenemos distintas

01:21:19.960 --> 01:21:27.840
novedades y que a ver antes de nada la gente dice uy cuántas cosas ha sacado apple para ser una

01:21:27.840 --> 01:21:36.000
versión así no no no vamos a ver desde hace ya bastantes años la versión de primavera tiene cositas

01:21:36.000 --> 01:21:45.400
es algo más algún cambio más muchas julio de las cosas que no les dio tiempo en su momento a

01:21:45.400 --> 01:21:55.120
sacar en octubre exacto y entre ellas pues varias novedades de su UI de scout de swift etcétera así

01:21:55.120 --> 01:22:02.280
que pues la verdad que es bastante interesante entonces bueno coméntanos por ejemplo arturo

01:22:02.280 --> 01:22:09.800
alguna de estas novedades sobre todo para lo que es empezamos con swift 5.8 empiezan a contar

01:22:09.800 --> 01:22:17.640
una de las primeras novedades que nos dimos es que venía con una nueva versión de swift no solo no

01:22:17.640 --> 01:22:23.360
sólo teníamos versión de scout sino que por detrás también venía con una con una versión de swift

01:22:23.360 --> 01:22:34.240
pues voy a dejar la mejor para el final verdad julio una de ellas es que antes cuando de hecho

01:22:34.240 --> 01:22:43.080
yo creo que estoy ahora comentado cuando tengo un clóset que escapa vale pues tengo si quiero

01:22:43.080 --> 01:22:53.200
hacerlo digamos seguro vale o asegurarme de que y luego utilizar el self vale dentro pues tengo

01:22:53.200 --> 01:22:58.600
que capturarlo lo puedo capturar normal digamos con self pero entonces claro si no encuentra

01:22:58.600 --> 01:23:06.880
el set petaría o puedo capturar el self de manera débil no sé cómo traducirlo de week

01:23:06.880 --> 01:23:14.440
el week sería una captura leve sería una captura leve o floja también siempre con lo que estábamos

01:23:14.440 --> 01:23:20.200
comentando que no aumenta el contador de referencia vale con exacto menos hablaba julio al principio

01:23:20.200 --> 01:23:25.560
no aumenta el control de referencia es decir que aunque se quede esa referencia volando por ahí

01:23:25.560 --> 01:23:31.000
se va a destruir igual no va a impedir que se destruya esa variable de memoria por culpa de

01:23:31.000 --> 01:23:36.000
esta referencia que queda ahí colgada vale entonces si no existe esa pues bueno se borra porque no ha

01:23:36.000 --> 01:23:42.840
sumado una entonces si una vez que hemos hecho eso le hemos capturado week podemos desempaquetarla

01:23:42.840 --> 01:23:51.160
es decir hacer un if self igual a self vale igual al self que he capturado con week self y entonces

01:23:51.160 --> 01:23:58.000
ya si existe puedo seguir la ejecución y si no existe pues no ejecuto pues de esta manera el

01:23:58.000 --> 01:24:04.280
self va a ser implícito es decir ya no tengo que desempaquetarlo puedo utilizarlo dentro y si es

01:24:05.520 --> 01:24:12.400
si como no opcional y si no era y si realmente no es opcional no me cascaría vale si no es

01:24:12.400 --> 01:24:17.400
opcional directamente no lo ejecutaría pero no cascaría vale si no lo desempaquetó también lo

01:24:17.400 --> 01:24:22.880
puedo utilizar con interrogación vale ya hemos visto al final de lo que hablábamos tirando de

01:24:22.880 --> 01:24:32.640
para atrás de los opcionales pues el podemos utilizar los opcionales no desempaquetarlos

01:24:32.640 --> 01:24:39.280
a lo burro con una admiración sino con una interrogación que eso significaría que si existe

01:24:39.280 --> 01:24:46.560
que ejecute bueno al final la función o que lea de la barra o que guarde la variable o lo que sea

01:24:46.560 --> 01:24:55.960
después del punto vale pero si no existe no pete el programa si es un es técnicamente es lo que se

01:24:55.960 --> 01:25:03.120
conoce como un opción al chaining es un es un encadenamiento opcional que lo que hacemos es

01:25:03.120 --> 01:25:08.720
pasar a través de la interrogación entonces si el elemento que tiene la interrogación es nil pues

01:25:08.720 --> 01:25:13.400
entonces no llega a ver la propiedad o no llega a ver la función correspondiente

01:25:15.560 --> 01:25:21.280
efectivamente entonces bueno pues de esta manera digamos que nos ahorramos lo que hacíamos muchos

01:25:21.280 --> 01:25:26.760
yo muchas veces pues lo capturó como week por si acaso no existe y me peta pero luego lo desempaquetó

01:25:26.760 --> 01:25:32.920
para poder utilizar el self tranquilamente y en este caso pues no lo no necesitaría

01:25:32.920 --> 01:25:41.240
y bueno si quieres ya por no por no alargarnos mucho vamos con una de las joyas de la corona

01:25:41.240 --> 01:25:49.480
vale que nos ha sorprendido a todos yo creo que no lo esperaba y que si te parece explícalo

01:25:49.480 --> 01:25:54.760
tú julio y luego ya comentamos más las implicaciones que puede o no puede tener

01:25:54.760 --> 01:26:05.120
pues a ver básicamente todo se basa en algo muy sencillo pero no tan sencillo

01:26:06.200 --> 01:26:15.960
nosotros sabemos que ahora mismo cuando yo utilizo a los 16 como target de mi aplicación

01:26:15.960 --> 01:26:24.920
puedo usar todo lo que swift ha incluido todo lo que suyo hay ha incluido el último año perfecto

01:26:24.920 --> 01:26:32.720
pues es genial el problema es cuando mi jefe me dice hay es que hay que soportar 15 y entonces

01:26:32.720 --> 01:26:38.120
estoy obligado a poner el target de ellos 15 en el momento en el que pongo el target de ellos 15

01:26:38.120 --> 01:26:45.880
el navigation stack por citar el ejemplo más sangrante al respecto deja de existir y ya no

01:26:45.880 --> 01:26:53.720
puedes usarlo y si quieres seguir usándolo estás obligado a usar un arroba viable de decir si está

01:26:53.720 --> 01:27:01.520
disponible la versión ayos 16 entonces este código si lo vas a meter y si no tal entonces yo lo que

01:27:01.520 --> 01:27:07.760
estoy haciendo ahora porque como ellos 15 se deja fuera varios dispositivos como el iphone 7 o los

01:27:07.760 --> 01:27:17.960
iphone 6s el problema que tengo es que bueno pues tengo que poner la parte de ayos 16 aislada con

01:27:17.960 --> 01:27:25.600
un arroba viable para usar el navigation stack en swift ui pero luego hacer una retro una

01:27:25.600 --> 01:27:32.600
implementación retrocompatible que funcione desde adios 15 como target para que esté implementado

01:27:32.600 --> 01:27:38.880
a través de navigation view para que en ayos 16 se utilice los navigation links basados en datos

01:27:38.880 --> 01:27:48.120
y en ayos 15 los navigation links basados en vistas de acuerdo entonces bueno pues y si por

01:27:48.120 --> 01:27:56.000
lo que sea mi jefe es un poco retard vale y no sabe que todo el que tiene ayos 14 también puede

01:27:56.000 --> 01:28:01.800
actualizar a ellos 15 y por lo tanto todos los usuarios que no quieren pasar de ayos 14 a 15

01:28:01.800 --> 01:28:08.920
no merecen ser respetados vale porque no actualizan porque no les da la gana no porque no puedan pues

01:28:08.920 --> 01:28:15.200
si me obliga a irme a la 14 pues me genera un problema bastante serio porque me quedo sin otros

01:28:15.200 --> 01:28:20.600
tantos componentes de swift ui que me son necesarios de hecho esto lo has sufrido tú en tus propias

01:28:20.600 --> 01:28:27.120
cámaras no arturo? a mí una cosa del ejemplo que lo que me molesta es que tú estás imagínate pues

01:28:27.120 --> 01:28:35.360
has tenido la suerte o tu jefe tu jefe piensa poco vale se informa y dice que vale que ayos 15

01:28:35.360 --> 01:28:41.280
pero tú vas a utilizar navigation view y te dice deprecado y dices ah bueno vale está deprecado

01:28:41.280 --> 01:28:47.240
es que voy a ser un buen señor hay un navigation view que no está deprecado que es solo uno de

01:28:47.240 --> 01:28:52.840
los constructores vale pero aún así es como perdona dices voy a ser un niño bueno y voy

01:28:52.840 --> 01:28:59.760
a buscar la función nueva oye voy a hacer las cosas bien pero claro no es compatible con ios 15

01:28:59.760 --> 01:29:04.080
y ahí eso me molesta un poco porque nosotros sabemos lo que vale pues sí pues está deprecado

01:29:04.080 --> 01:29:08.960
y esto no es pero imagínate que eres nuevo y tú buscas una función y a ti te han enseñado que

01:29:08.960 --> 01:29:15.080
deprecado no intenta buscar la nueva buscar la nueva dice no es compatible con la versión no

01:29:15.080 --> 01:29:22.600
sé si está bien que me diga o sea que me marques como deprecada una función que no tiene equivalente

01:29:22.600 --> 01:29:27.400
en la mínima plataforma que estoy soportando eso está muy mal hecho a nivel de ingeniería de software

01:29:27.400 --> 01:29:36.240
está hecho fatal básicamente calculó que el compilador tiene como target el ios 16 entonces

01:29:36.240 --> 01:29:41.400
claro te va a decir en ios 16 está deprecado pero debería no sé si el propio scout o el compilador

01:29:41.400 --> 01:29:47.960
por su parte debería saber que estás utilizando aunque estés sobre el sdk de ellos 16 estás

01:29:47.960 --> 01:29:56.200
soportando ios 15 exacto y entonces al final pues te quedas sin usarlo encima estás usando algo que

01:29:56.200 --> 01:30:01.880
efectivamente te puede lanzar un warning de ojo que esto ya está deprecado y de esas hay unas

01:30:01.880 --> 01:30:07.320
cuantas como ya nos hicieron por ejemplo con las alertas que las alertas en ios 14 se hacían de

01:30:07.320 --> 01:30:14.200
una manera y en ios 15 cambiaron a otro constructor distinto entonces pues dices vale apel guay

01:30:14.200 --> 01:30:21.520
estupendo pues bien todo esto vienes a todo este problema de la retrocompatibilidad viene por dos

01:30:21.520 --> 01:30:32.200
cosas muy concretas la primera de ellas es que en versiones a toda la base es que SwiftUI es una

01:30:32.200 --> 01:30:37.640
librería que viene cargada en el sistema operativo por lo tanto si la versión que viene cargada en

01:30:37.640 --> 01:30:44.480
el sistema operativo ios 14 es SwiftUI de ios 14 obviamente no va a tener las nuevas alertas no va

01:30:44.480 --> 01:30:49.760
a tener el navigation stack no va a tener todas las no va a tener el searchable no va a tener el

01:30:49.760 --> 01:30:57.360
el refreshable no va a tener los elementos que pertenecen a la sdk de ios 15 porque la librería

01:30:57.360 --> 01:31:03.280
de SwiftUI está cargada en el sistema operativo y ya está cerrada es un producto que ya está compilado

01:31:03.280 --> 01:31:09.000
por lo que no incluye las cosas que están en versiones posteriores de acuerdo cuando yo me

01:31:09.000 --> 01:31:14.440
voy a ios 15 tres cuartas de lo mismo en ios 15 la librería de SwiftUI está como componente del

01:31:14.440 --> 01:31:19.720
sistema operativo por lo que no tiene el navigation stack porque es algo que apel ha incluido después

01:31:19.720 --> 01:31:28.360
entonces cuando un elemento no existe vale y esta es la primera parte que tiene que quedar muy clara

01:31:28.360 --> 01:31:38.880
cuando un elemento no existe yo puedo añadirlo como una dependencia externa dentro de mi código

01:31:38.880 --> 01:31:48.360
en Swift es decir qué es lo que no existía en ios 13 y ios 14 pero si en ios 15 cuando fue lanzado

01:31:48.360 --> 01:31:57.560
async await porque es un módulo es una implementación independiente que no forma parte de

01:31:57.560 --> 01:32:05.160
la librería estándar del lenguaje swift en las versiones 13 y 14 desde la versión 12.2 en adelante

01:32:05.160 --> 01:32:14.680
entonces si partimos de esa base lo que hizo apple fue meter dentro de las aplicaciones que yo haga

01:32:14.680 --> 01:32:22.720
utilizando async await mete una pequeña dynamic library un dylib que es como un pequeño ejecutable

01:32:22.720 --> 01:32:29.160
que va dentro de tu propia aplicación pequeñito y que se añade como dependencia a librerías que

01:32:29.160 --> 01:32:35.040
pertenecen al sistema por lo que es capaz de ampliar lo que unas librerías de sistemas son

01:32:35.040 --> 01:32:39.960
capaces de hacer a partir de pequeñas dependencias dentro del ejecutable que nosotros estamos

01:32:39.960 --> 01:32:46.880
trabajando por lo que si yo trabajo con ios 13 o 14 el sistema mete esa dependencia de la librería

01:32:46.880 --> 01:32:54.120
async await que es apenas unos cas vale no es mucho lo que ocupa y con eso me permite usar

01:32:54.120 --> 01:33:03.600
async await en ios 13 y ios 14 perfecto eso permitiría que todo lo que no existe en swift

01:33:03.600 --> 01:33:12.200
ui en ios 15 14 o 13 y que si existe en la 16 pudiera ser incorporado de forma que apple

01:33:12.200 --> 01:33:19.720
podría meter el navigation stack podría meter cosas nuevas que no existan y lo más importante

01:33:19.720 --> 01:33:29.040
que no dependan de ningún tipo de dependencia que también se haya actualizado y ahí es donde está

01:33:29.040 --> 01:33:36.840
el gran problema vale porque las dependencias de las que depende valga la redundancia un

01:33:36.840 --> 01:33:46.320
navigation stack o lo que sea son elementos que sí pertenecen a las versiones anteriores pero no con

01:33:46.320 --> 01:33:53.480
la implementación exacta que yo necesite sino con una implementación distinta si yo necesito

01:33:53.480 --> 01:34:00.400
una actualización de la dependencia de las yo que sé del elemento que dibuja las listas que recibe dos

01:34:00.400 --> 01:34:05.480
parámetros pero con el navigation stack ahora recibe tres la función que recibe tres no existe

01:34:05.480 --> 01:34:13.760
en la versión 15 o 14 y es un tipo que insisto ya está en la librería que está cargada en el

01:34:13.760 --> 01:34:22.320
sistema operativo entonces con toda esta base técnica llega a roba black back deploy back

01:34:22.320 --> 01:34:31.720
deploy sería decirle al sistema esta función está disponible a partir de ios 16 por ejemplo

01:34:31.720 --> 01:34:42.000
el navigation stack pero va a ser back deploy desde la 13 y qué es lo que hace eso pues por ejemplo

01:34:42.000 --> 01:34:47.080
no serviría con navigation stack para que nos hagamos una idea una de las cosas más bonitas

01:34:47.080 --> 01:34:54.400
que tiene swift son las extensiones yo puedo extender un tipo del sistema o un tipo propio

01:34:54.400 --> 01:35:04.440
y añadirle variables calculadas variable funciones subscripts vale puedo añadirse las no puedo

01:35:04.440 --> 01:35:09.880
sobrecargar funciones que ya existan no puedo poner variable propiedades almacenadas pero sí

01:35:09.880 --> 01:35:16.840
puedo meter subscripts propiedades calculadas y puedo meter nuevas funciones y eso lo que está

01:35:16.840 --> 01:35:21.400
haciendo es ampliar el tipo original yo puedo meter mis propias funciones en el tipo string

01:35:21.400 --> 01:35:30.880
mis propias funciones en el tipo int o lo que sea vale bien pues esto este arroba back deploy

01:35:30.880 --> 01:35:40.160
es lo mismo pero a nivel binario para un compilado que ya esté en capa binaria vale esa estos son

01:35:40.160 --> 01:35:48.840
extensiones a nivel binario para componentes de swift de forma que si a la dependencia que ya

01:35:48.840 --> 01:35:56.080
existe de la clase o el strut que ya existe en versiones anteriores de ios 15 14 13 pero no

01:35:56.080 --> 01:36:01.240
tienen la función o la propiedad exacta que yo necesito para que el navigation stack funcione

01:36:01.240 --> 01:36:09.000
yo le hago un back deploy y eso funciona como una extensión binaria que añade las funciones

01:36:09.000 --> 01:36:15.880
subscript y propiedades calculadas que necesite al tipo que ya está compilado que ya es binario

01:36:15.880 --> 01:36:21.400
de forma que el sistema sabe si tiene que coger la implementación porque esto es otra cosa que

01:36:21.400 --> 01:36:26.280
han metido si tiene que coger la implementación nueva o la implementación clásica vale porque

01:36:26.280 --> 01:36:31.480
el sistema es lo suficientemente inteligente como para ir a buscar primero la implementación que

01:36:31.480 --> 01:36:36.920
hay en la librería binaria compilada y si no existe coger la que viene como dependencia en

01:36:36.920 --> 01:36:45.480
el ejecutable por lo que si yo meto una propiedad que no existía en ios 14 pero si en 15 y lo meto

01:36:45.480 --> 01:36:52.640
desde la 17 lo que va a hacer es que el de la 15 lo va a leer de la librería directa del ejecutable

01:36:52.640 --> 01:37:00.000
pero la de la 14 la va a sacar de esa extensión que extiende el tipo binario de esa manera que

01:37:00.000 --> 01:37:08.360
conseguiríamos uniendo la parte binaria de inclusión de módulos no existentes más el poder

01:37:08.360 --> 01:37:15.400
y el poder complementar todas las funciones es tipos etcétera que sean necesarios en los tipos

01:37:15.400 --> 01:37:23.360
binarios que ya existen todo eso daría lugar a que a partir de ios 17 si apple hace todo ese trabajo

01:37:23.360 --> 01:37:34.640
que tiene que ser la hostia para hacerlo vale conseguiría que toda la API de SwiftUI funcionara

01:37:34.640 --> 01:37:48.160
con una única implementación de ios 13 a ios 17 ojo así de simple y así de sencillo lo único julio

01:37:48.160 --> 01:37:54.560
que ahí claro cuando cuando lo estamos hablando me surgen mis dudas porque una de las cosas que

01:37:54.560 --> 01:38:01.360
has dicho es que es no tienes que tener dependencias porque si no habría que hacer algo similar en

01:38:01.360 --> 01:38:08.520
toda la cadena claro de dependencias eso no los eso puede ser o cargar esas dependencias como

01:38:08.520 --> 01:38:14.320
dependencia en todas las versiones del sistema de y no sé no sé cómo se hace esto es un paso pero

01:38:14.320 --> 01:38:20.480
claro a mí me da son dependencias querían dentro del ejecutable es decir técnicamente podría

01:38:20.480 --> 01:38:29.120
conseguirse todo esto quiere eso decir que lo van a hacer ya no es que el trabajo que hay ahora con

01:38:29.120 --> 01:38:35.960
esto es brutal o sea a mí no me gustaría estar ahí metido porque ahora tiene que empezar a dar

01:38:35.960 --> 01:38:42.000
un show de dependencias de tal de no sé qué esto esto tiene que ser como el típico código que coge

01:38:42.000 --> 01:38:51.040
de suif 1 y lo abres en escudo 14 y empieza a tocar en sitios que jamás habías tocado para

01:38:51.040 --> 01:38:55.600
que aquello te compile y tienes que ir parcheando línea a línea pues esto tiene que ser algo parecido

01:38:55.600 --> 01:39:03.760
sí sí ahora que sí entonces abre la puerta a la esperanza exacto creo que lo has definido

01:39:03.760 --> 01:39:10.480
perfectamente abre la puerta a la esperanza por un lado pero luego por otro vemos sabemos que

01:39:10.480 --> 01:39:14.320
es es complicado lo que pasa es que una vez teniendo esto pues a lo mejor en las próximas

01:39:14.320 --> 01:39:19.920
implementaciones a ver todas las cosas que sólo dependan digamos que imaginaros una nueva api

01:39:19.920 --> 01:39:26.280
una modificar lo que sea que sólo esté implementado por dentro la implementación de la que hablábamos

01:39:26.280 --> 01:39:32.640
antes en el propio en suif o suif u o en la librería suyo y si saliese de ahí sin ninguna dependencia

01:39:32.640 --> 01:39:38.000
pues es inmediato hacer esto vale y lo que hará pues como decía julio o lo buscará o en la nueva

01:39:38.000 --> 01:39:44.200
compilación o si no lo meterá como dependencia en el propio paquete y lo cargará y lo cargará

01:39:44.200 --> 01:39:50.920
de ahí el código entonces esto sería muy fácil el problema vendría como decíamos en las

01:39:50.920 --> 01:39:55.720
dependencias que tuviera a su vez ese paquete pero nos viene bien incluso imaginaros librerías

01:39:55.720 --> 01:40:01.960
de terceros o librerías vuestras imaginaos que tenéis una librería y tenéis una

01:40:01.960 --> 01:40:08.680
versión de la aplicación que corre con x versión vale pues podrías hacer versiones nuevas y que

01:40:08.680 --> 01:40:15.960
utilizasen la anterior o sea es que de esta manera te ahorras pues eso pues tener que poner los if

01:40:15.960 --> 01:40:20.920
available que tenemos por todos lados en todos los en todos los proyectos y que nos generan pues

01:40:20.920 --> 01:40:25.440
muchos muchos los dolores de cabeza porque hay veces yo me ha pasado julio seguramente a ti

01:40:25.440 --> 01:40:30.440
también que es que hay veces que es que es como programar dos aplicaciones distintas o sea de

01:40:30.440 --> 01:40:35.520
hecho yo y muchas veces opto por no usar lo nuevo de hecho el ejemplo este que pones yo cuando estoy

01:40:35.520 --> 01:40:42.360
con iOS 15 y iOS 16 sigo con las navigation view porque si no estoy haciendo el trabajo dos veces

01:40:45.560 --> 01:40:54.120
yo estoy empezando a hacer la doble implementación vale pero entiendo perfectamente que no todo el

01:40:54.120 --> 01:41:01.080
mundo quiere hacerlo y es una pena porque navigation stack es maravilloso pero claro

01:41:01.080 --> 01:41:06.720
es que como tú dices es hacer dos veces el trabajo lo miro como como el gato de

01:41:06.720 --> 01:41:15.040
shrek miro a la implementación de si yo lo miro como el meme este del niño como diciendo de verdad

01:41:15.040 --> 01:41:24.160
pues como se nos está pillando el tiempo nada comentar tres cosillas de descodo muy rápidas

01:41:24.160 --> 01:41:31.520
tenemos por fin por fin print podemos ver los prints en la consola en las previews de su yubai

01:41:31.520 --> 01:41:35.280
vale que lleva mucho tiempo pidiéndose y que era un rollo y muchas veces tienes que ejecutar el

01:41:35.280 --> 01:41:40.640
proyecto solo para ver un print que leches estaba pasando ahí dentro también hay mejoras en la

01:41:40.640 --> 01:41:45.800
resolución de paquetes de suite package manager por fin también vale porque era súper lento bueno

01:41:45.800 --> 01:41:51.080
pues han cambiado un montón de cosas si queréis indagar más sobre ello pues nos decís y podemos

01:41:51.080 --> 01:41:56.520
mirarlo con detenimiento en otro en otro episodio y bueno y también nos iremos diciendo si es verdad

01:41:56.520 --> 01:42:01.640
esto que que prometen y luego también que podemos tener una localización del proyecto por defecto

01:42:01.640 --> 01:42:08.200
vale antes por defecto estaba en inglés y tenías que ir a abrir en texto el fichero de configuración

01:42:08.200 --> 01:42:13.320
del proyecto descode que es un lío tremendo y ponerlo a mano si querías cambiarlo de inglés

01:42:13.320 --> 01:42:18.680
por lo que sea pues a lo mejor necesitas cambiarlo pues ahora nos da la opción de tener un selector

01:42:18.680 --> 01:42:25.400
vale y directamente lo cambias y luego bueno tenemos nuevos modificadores de su yo hay para

01:42:25.400 --> 01:42:32.400
las y que esto da también a julio fue una de las cosas que nos escribimos si es maravilloso de

01:42:32.400 --> 01:42:42.120
verdad que así muy rápido pues te permite fijar el background del propio del propio sí y luego

01:42:42.120 --> 01:42:48.240
también poder o no interactuar con la parte digamos que queda debajo del sí cuando pones

01:42:48.240 --> 01:42:53.920
un sitio a media pantalla vale con los de tents que ya vienen de implementaciones anteriores y

01:42:53.920 --> 01:42:57.640
dices que se pare el sitio a media pantalla pues puedes elegir si puedes interactuar o no con la

01:42:57.640 --> 01:43:04.080
parte de atrás si el scroll lo manejas completo y se pisa el de arriba y todo eso vale nos da

01:43:04.080 --> 01:43:09.720
más opciones y no si tienes alguna cosa así julio que te llamó la atención que tenemos por aquí

01:43:09.720 --> 01:43:15.880
no básicamente simplemente fíjate que es curioso que justo hace muy muy pocas semanas en una

01:43:15.880 --> 01:43:23.120
formación pues los alumnos se me quejaban de decir es que esto de los deten es maravilloso pero claro

01:43:23.120 --> 01:43:28.680
es que si tú tocas si tú tienes la pantalla y tienes el deten hasta aquí cuando tocas en la

01:43:28.680 --> 01:43:35.240
parte del scroll que hay detrás el deten se quita porque actúa de manera modal entonces ahora gracias

01:43:35.240 --> 01:43:41.520
a esto ya no ya puedes hacer que las dos partes sean pulsables entonces puedes hacer la típica

01:43:41.520 --> 01:43:47.120
aplicación tipo apple music donde puedes tocar en el deten y puedes tocar arriba o el de mapas

01:43:47.120 --> 01:43:53.560
donde puedes tocar abajo y arriba o de mensajes tener dos focos distintos que además puedes fijar

01:43:53.560 --> 01:43:59.560
cuál es el límite de uno u otro ver los distintos scrolls y tal y eso pues la verdad que nos va a

01:43:59.560 --> 01:44:06.160
permitir crear nuevas apps pues bastante chulas y de una manera muy muy muy sencilla entonces

01:44:06.160 --> 01:44:12.920
pues la verdad que esto es bastante bien bienvenido pues cerramos aquí nuestro tema central como veis

01:44:12.920 --> 01:44:20.720
esto evoluciona cada día más rápido tenemos muchas promesas de metaversos y realidades aumentadas y

01:44:20.720 --> 01:44:25.520
demás pero bueno aquí os hemos traído las novedades en la tierra que están en beta y pronto

01:44:25.520 --> 01:44:41.960
estarán disponibles para todos así que vamos con la despedida y poco más

01:44:45.600 --> 01:44:52.160
ella saque si no decimos no no es lo mismo y pues eso espero que os haya gustado la verdad

01:44:52.160 --> 01:44:58.280
que bueno hoy hemos tachado unas cuantas cosas del del guión por lo tanto podemos sentirnos

01:44:58.280 --> 01:45:06.160
satisfecho y bueno pues nos quedan unas cuantas cositas para los próximos programas y seguro

01:45:06.160 --> 01:45:13.680
que sacarán alguna más porque está todo on fire y nada ya sabéis que podéis escucharnos tanto en

01:45:13.680 --> 01:45:22.160
cuonda.com barra café con dos efes guión swift o también y ahí tenéis el acceso a todas las

01:45:22.160 --> 01:45:29.800
plataformas apple podcast spotify samsung podcast google podcast todo lo que tenga algo de podcast

01:45:29.800 --> 01:45:37.560
ahí estamos también podéis buscarnos en vuestro podcast el favorito con café swift y también

01:45:37.560 --> 01:45:44.240
pues podéis escribirnos a café swift arroba con dos efes arroba gmil.com o seguirnos en twitter

01:45:44.240 --> 01:45:50.240
por cierto habría que crearse un mastodón de esos también no lo queramos en lo mismo no podéis

01:45:50.240 --> 01:45:57.240
seguirnos también en twitter de momento por eso como arroba café con dos efes swift vale y ahí

01:45:57.240 --> 01:46:03.600
estamos para bueno pues para todo lo que se amanecer y también podéis vernos directamente

01:46:03.600 --> 01:46:10.320
pues en el canal de youtube de apple coding academy en youtube.com barra arroba apple

01:46:10.320 --> 01:46:18.080
coding academy todo seguido y de hecho el propio vídeo está colgado también de cuonda por si

01:46:18.080 --> 01:46:24.240
queréis vernos directamente en cuonda.com barra café swift con dos efes café guión swift tenéis

01:46:24.240 --> 01:46:32.080
también el programa en vídeo de acuerdo y pues eso y dónde puede encontrarte a ti la gente por ahí

01:46:32.080 --> 01:46:37.360
cuéntanos arturo. Pues a mí si queréis escucharme tenéis el otro podcast en el que participo que

01:46:37.360 --> 01:46:45.680
es vidas digitales luego en twitter como arturo arroba arturo ribas a en mastodón como arroba

01:46:45.680 --> 01:46:52.040
arturo ribas a arroba mastodón punto cloud y bueno tenéis toda esta información en mi página

01:46:52.040 --> 01:46:59.880
web www.arturoribas.com y a mí pues si queréis seguirme podéis encontrarme como jcfmunoz en

01:46:59.880 --> 01:47:07.440
todos lados arroba jcfmunoz en twitter arroba jcfmunoz arroba mastodón punto social también

01:47:07.440 --> 01:47:15.840
en linkedin linkedin.com barra barra jcfmunoz estamos también en instagram en tiktok estamos

01:47:15.840 --> 01:47:23.720
como apple coding aquí en twitch lo digo porque estamos emitiendo en twitch en directo pues twitch.tv

01:47:23.720 --> 01:47:30.200
barra apple coding y bueno pues todo lo que sea o apple coding o jcfmunoz podéis encontrarme ahí

01:47:30.200 --> 01:47:36.800
para lo que sea menester y nada pues arturo como siempre muchísimas gracias que hoy además estás

01:47:36.800 --> 01:47:43.720
desplazado desde tus estudios centrales no hoy estás de estudio itinerante. Corresponsal en

01:47:43.720 --> 01:47:48.560
santander como no te hemos itinerado para corresponsal soy yo también. Exacto efectivamente

01:47:48.560 --> 01:47:54.480
conectamos directo con nuestro corresponsal en santander arturo qué tal muy buenas le mandamos

01:47:54.480 --> 01:48:01.600
un saludo al corresponsal de madrid arturo se llama también igual que tú en fin pues pues lo

01:48:01.600 --> 01:48:09.680
dicho muchísimas gracias a todos por estar ahí y nos oímos pronto si jobs quiere y hasta entonces

01:48:09.680 --> 01:48:19.840
pues no olvidéis que hay que hacer que jugar con el código ahí está hasta pronto chao chao

01:49:09.680 --> 01:49:36.480
puedes escuchar más episodios en cuonda.com la comunidad de podcast independientes en español