11.Jul.24

Me he inscrito a una plataforma de varios cursos que te preparan para certificaciones de Cisco y Microsoft. El curso que me interesa ahora mismo es el de English for IT. Son dos módulos de 50 horas cada uno. He comenzado y creo que me servirá bastante. Sobre todo a mejorar la gramática.

He seguido haciendo cursos en outlier y alguna tarea que se me ha asignado.

También he preguntado en Telus sobre un comentario perfecto de ejemplo para el rating de los queries. Me han dicho que estoy dentro y que toca esperar instrucciones, aún no tengo tareas asignadas.

También he comenzado a prototipar la app de MiZaragoza con las farmacias. 

He preparado la escalera del episodio de mañana.

10.Jul.24

Publicado el post de Katas en LinkedIn. Por fin, me ha llevado más tiempo del que esperaba hacer las 5 Katas iniciales, con sus tests y las respuestas. Que no he publicado todavía.

He recibido 5 solicitudes de contacto después de publicar el post, lo que hasta ahora no me había pasado.

9.Jul.24

Tengo ya 5 katas para iniciar, ya están subidas al repositorio. Queda hacer el post en LinkedIn. 

La última ha sido sobre fechas, obtener la cantidad de días que hay en un mes de un determinado día de la semana. Es decir, cuantos lunes hay en Agosto del 2024 por ejemplo.

8.Jul.24

He por fin terminado la kata 4 el Dancing Contest. He terminado las instrucciones y los tests, me he ayudado de un numbers para asegurarme de los resultados. Aunque el numbers no me daba los resultados correctos, me ayudaba a asegurarme que estuvieran bien.

Solo me quedan hacer uno antes de publicar en LinkedIn

7.Jul.24

CoupleCare: 39 descargas totales

5.Jul.24

Hoy me han contestado de Hiberus, con un feedback rápido y positivo. Le ha gustado el verme de una manera más personal a través de la vídeo presentación. ¡Me ha alegrado el día el saber que tengo posibilidades!

4.Jul.24

He terminado de hacer la carta presentación para Hiberus. E incluso me he animado a hacer una vídeo presentación. La he hecho con el móvil, me ha costado unos 6 intentos completos más algunos fallos donde tenía que parar. Sin cortes, la edición fue solo hacerlo recortarlo a 1:1 y disminuir el tamaño del archivo. 

Espero esta nueva versión del CV, la carta de presentación hecha con cariño y el vídeo me hagan sobresalir y pasar al proceso de entrevistas. 

También estoy preparando la tercera Kata. Será sobre un método para convertir números romanos a decimales y viceversa. He avanzado con las instrucciones y hecho los test unitarios. Faltará afinar. 

3.Jul.24

He terminado de modificar mi CV, más colorido, más descriptivo, con más repositorios. Cada vez me va gustando más. 

He también preparado lo que diré en el lo que será mi vídeo carta de presentación. Quiero que dure unos 2 minutos, y sobre salga un poco de entre todos los desarrolladores que enviaremos nuestro CV. 

Lo único que tendré que enfrentarme a la edición y elegir un buen fondo y demás. Eso mañana. 

He pensado en añadir un widget a couple care, pero no estoy seguro que información mostrar: la racha, la estadística, o como mostrar el daily que toca hacer ese dia. 

2.Jul.24

Ayer recibí un correo de Telus, diciéndome que había pasado a la siguiente etapa. Tenía un par de días para verificar mi identidad. Hoy he verificado mi identidad para la oferta de evaluados de prompts en Telus. Escaneo del DNI y de la cara. 

Después he añadido el Readme a GitHub, una presentación sobre mi, mis proyectos y los repositorios que tengo subidos.

No he terminado, pero he cambiado mi currículum, es la versión 5. Lo quería mejorar para enviarlo a la gente de Hiberus, la consultora que se presentó ayer en la convocación que hubo del bootcamp. 

30.Jun.24

Aprovechando que estaba solo en casa. Me he puesto a añadir una nueva Kata en el repositorio. Ha quedado lista la de Tiendas. Con sus instrucciones, tests y todos.

Quería añadir una más de Buscaminas, aunque me ha parecido demasiado fácil. Podría añadirla. Crear unos buenos tests.

Otra que he pensado en añadir es la de convertir números romanos a números cardinales. Y viceversa, la tengo resuelta de los ejercicios del bootcamp. 

29.Jun.24

He añadido una segunda Kata al repositorio. La de horarios. Un struct que devuelva si la tienda está abierta en función a la fecha y hora. Hay que hacer los tests, las instrucciones y demás. 

He añadido también la bitácora hasta el día viernes. Lo he ordenado ya por año, para que no sea una retahíla desde el inicio. 

28.Jun.24

Episodio Alfa: Mi primer millón publicado!!

3.268 reproducciones en total

El último episodio lo publiqué el 5 de abril . Y 82 días después la tercera temporada, el primer episodio.
Casi una hora, deberia acortarlo, este por ser el primero he explicado alguna cosa, pero quiero hacerlos más cortos.

24.Jun.24

Hoy me he puesto con la app. Con la información que da es complicado calcular cuando una farmacia está abierta de una manera sencilla. El horario viene en cadena de texto tipo : “Lunes a viernes de 9:30 a 14:30, sábados 9:30 a 14:30, excepto agosto, 9:15 a 14:15”… y así.

¿Como sería la mejor manera de calcular si está abierta 9 no?

21.Jun.24

Hoy me animaré a grabar el primer episodio de la tercera temporada? Será al volver de entrenar, que entreno a las 4. Espero sentirme bien de ánimo para crear un buen episodio.

17.Jun.24

Tengo que empezar ya con la lógica de la app de farmacias. Para ello debo tener claro los alcances que tendrá la app y definir cuáles serán las bases para esta primera versión.
¿Quiero que los datos mostrados sean solo de la API o voy a almacenarlos en local? ¿Que datos almacenaré en local?¿Cada cuando se actualizarán?¿Que información provee la API?¿Que información tengo que calcular?¿Como se repartirán las responsabilidades? ¿Cuáles son las limitaciones de información a las que me encuentro? ¿Como voy a subsanarlas?

A ver si puedo tener algo que presentar para finales de este mes. Y en julio dedicarme de lleno a las actualizaciones de CoupleCare que siento que tengo abandonada.

11.Jun.24

He conseguido descargar de la API los datos de los equipamientos / servicios de la ciudad que me interesaban. Los he convertido al struct que los muestra en el mapa. Todo esto con test de la interfaz y del modelo.

He visto que consume demasiada memoria, asi que lo he modificado para que al hacer el init del viewModel se carguen todos los datos. Aún así consume más memoria de la que me gustaría.
Eso me hace plantear guardar todo en CoreData y hacer el modelo de los datos de los annotationItems más compacto. Y solo cuando el usuario haga tap en alguno de ellos pida el detalle.

También me hace replantear el alcance de la app. Quiero qu muestre solo farmacias? Centros de salud, hospitales, veterinarias? O más equipamientos / servicios que proporciona el ayuntamiento?

Eso influye en el nombre y las posteriores actualizaciones.

10.Jun.24

He comenzado a hacer el témplate de la escaleta de lo que será la tercera temporada. Me gustaría grabar y publicar este viernes 14.

Me gustaría hacer algo colaborativo, un repositorio en el que invitar a gente a hacerse un fork y hacer pull request. Crear algo. También podría crear ejercicios de algoritmos, tendría que tener tests para “validar” las respuestas.

También obligarme a publicar un post quincenal en LinkedIn y explicarlo en el episodio.

07..Jun.24

He seguido avanzando en la app. miZaragoza le he puesto al proyecto.

He conseguido mostrar en el mapa las farmacias y los centros de salud. Y que vayan mostrándose y ocultándose al pulsar el botón.
Persistiré los datos en local, así habrá menos conexiones a Internet.

Una vez tengo estos dos modelos de datos, añadir el resto debería ser más fácil.

Por otro lado, he sido seleccionado para entrenar un modelo de inteligencia artificial generativa. En outlier.ai, se me irán asignando “tareas” y tendré que evaluar bajo unos estándares y requerimientos establecidos las respuestas a ese prompt. La idea es que el modelo sea lo más exacto, seguro, conciso y tenga el formato, la profundidad el estilo y siga las instrucciones requeridas en el prompt.

El lunes quiero empezar y tendré que dedicarle cierto número de horas, aunque no especifica. Quiero incluirlo en mi rutina.

Es lo que he podido conseguir por ahora, para este verano quiero lanzar dos aplicaciones más, tener algunas horas como entrenador y esto. Mientras seguro buscando empleo de desarrollador con miras a

05.Jun.24

He comenzado con la que será mi próxima app publicada. Una app de muestra los servicios básicos de la ciudad que laAPI la proporciona el ayuntamiento. Farmacias, veterinarias, policía, bomberos, y lo que pueda obtener de esa API.

Estoy siguiendo TDD, desde la interfaz de red, los modelos, y el api provider.

04..Jun.24

¿Cuando debería volver a grabar? ¿Que será de diferente esta nueva temporada?

¿Que quiero aportar a los escuchas?
¿Que quiero obtener de grabar?
¿Sobre qué quiero reflexionar?

31.May.24

Couple Care. Descargas totales 36

30.May.24

Me han enviado un correo de la consultora en la que tenía mi apuesta más fuerte por entrar que han cubierto la vacante con otro candidato.

Deja muy tocado el saber que no va sido seleccionado donde tenías tanta esperanza. Al menos ahora lo sé. Mes y medio después de la entrevistas

23.May.24

Hoy me ha escrito a través de LinkedIn un reclutador de una consultora para pedirme mi CV. Es un mensaje genérico, buscan desarrolladores para trabajar en un proyecto de una app de banca. Te dicen que envíes tu CV y la banda salarial. Asi que es lo que he hecho.

Estoy dudando si continuar la refactorización del repositorio WhatVass, tocaría implementar el Keychain, y no estoy seguro si meterme con la parte del servidor. Lo haría en Vapor, ahora que toca repasar ese módulo. Lo digo por el trabajo que me supondría.

También estoy haciendo probatinas para lo que podría ser mi siguiente app. Una app en la que puedas poner fácilmente una leyenda de seguridad a tu DNI al compartirlo para trámites y que no sea posible utilizarlo para otro motivo.

21.May.24

Hoy he continuado repasando las clases de desarrollo seguro. Cifrado, Hash, acuerdo de claves, firma electrónica.

18.May.24

Couple Care: Total de descargas: 36

Como Nic está de viaje, me he puesto a ver el módulo de desarrollo seguro. Tomando algunas notas y afianzando algunos conceptos.

16.May.24

He conseguido cambiar Combine por Async Await, refactorizar los ViewControllers para inyectar la view y pasar el viewModel directamente a esa view.
Por un momento pensé en que no podría hacerlo, me encontré con algún problema y no sabía bien como resolverlo. No recuerdo que era, pero pasé ese bache y he conseguido seguir avanzando.

He visto la presentación de Apple Coding sobre el nuevo curso de visión pro. Lo haría sin duda, pero son 1,200€ que no tengo ahora mismo. Si de llamaran de Sngular para decirme que empiezo, quizá me aventure a hacerlo, pero no sé si eso sucederá.

14.May.24

He seguido refactorizando los viewContollers para pasarlos a Views con sus delegados. He estado con la pantalla de Crear Usuario.
Una vez que tenga todos deberé encontrar la manera de pasar de Combine a Async-await. Y finalmente pasar a SwiftUI.

13.May.24

Hoy he publicado un post en LinkedIn sobre una extensión de tests para crear un tests que evalúe si una función lanza el tipo esperado.

Luego me he puesto a refactorizar el repositorio de WhatVass, mi idea es cambiarlo todo a SwiftUI, y me gustaría aunque no se el tiempo y el trabajo que requiera hacer un proyecto en Vapor que alimente la app.

10.May.24

Hoy he terminado de re-leer el libro e Diseño Ágil con TDD. He Practicado con 3 katas aplicando lo aprendido, aún me queda terminar la tercera. Es bueno saber que con esta segunda leída he podido aprender un poco más de lo que aprendí la primera vez, y aún hay una parte que quizá tenga que volver a leer más adelante porque no le encontraba mucho sentido con los conocimientos que hasta ahora tengo.

08.May.24

Sigo con el refactor y añadiendo tests. Esta vez he terminado con todos los datamanagers pasándoles el apiclient con el lock de urlsession que carga los datos de local.
La siguiente capa es el viewModel al que quiero pasarle un mock de datamanager también para los tests. Eso significa que tengo que conformarlo con un protocolo y el mock tendrá que cargar los datos desde local.
Eso me servirá también para las previews de las vistas de SwiftUI.

07.May.24

Hoy me he puesto con el fork del repositorio WhatVass. He desecho los últimos cambios que realicé y he comenzado por todos los APIClient, que sirven al DataManager para cada uno de los módulos, sustituyendo la llamada a la API con URLSession en lugar de AlamoFire.

Antes de eso he tenido que sustituir los endpoints originales, por unos mock con la ayuda de mocky
, para lo que primero he tenido que obtener lo que devolvía originalmente la API, que al no tener un token dependía del que venía implementado en la app, y que no logré reutilizar con URLSession.

Primero he hecho los tests, para asegurarme que la devolución era la misma antes y después del refactoring. Luego añadido el método genérico con URLSession y Combine en la clase padre de ls que heredan todos los APIClients.

Conseguido lo anterior era hacer el refactoring y ejecutar los tests.

06.May.24

Hoy ha tocado actualizar la web del podcast, el apartado de mis repositorios con los forks y refactorizaciones de código en los que he estado trabajando las últimas 2 semanas.

También he publicado un post en LinkedIn sobre el UIHostingController que hice para uno de esos repositorios.

04.May.24

Le he comentado a 3 personas para que se descargaran CoupleCare y pusieran una reseña. A ver si ayuda a tener más visibilidad. Si no invierto en publi quizá venderla yo mismo ayude algo.

03.May.24

He terminado el refactor del fork de repositorio de películas hecho en UIkit y VIPER.
He añadido las funcionalidades de añadir a favoritos, eliminar de favoritos.
Añadido protocolos para conformar el databaseController y poder hacer un mock que me permita testear el favoriteModelLogic.
He conectado tanto el listado de catálogo como de los favoritos que he hecho en MVC al detalle de favoritos que he stabs hecho ya en VIPER. El cual incluye el botón de añadir y quitar de favoritos cual tiene que “avisar” al favoriteViewController que se actualice.

Me ha gustado el resultado.

02.May.24

Más que refactorizar VIPER casi hay que escribir otra vez el código relacionado con los viewControllers. Aunque he vuelto a conectar con la DataStore y al tabView. He querido hacer nuevas celdas personalizadas, y nuevas tablas, utilizando DiffableDataSource y modelLogic. Además he añadido algunos tests y hecho un mock de URLSession

01.May.24

He terminado de hacer refactor del repositorio de AppBackFront. Lo último que he hecho ha sido un UIHostingController que sustituya la pantalla de ProfileView hecha en UIkit por una hecha en SwiftUI.
Incluía el botón salir de la app, que se implementa con un patrón delegate.

Después he subido el repositorio a github y hecho un PullRequest al autor con el detalle de la refactorización.

Ahora toca ir al siguiente. Un catalogo de series con maestro detalle y favoritos en CoreData con arquitectura VIPER hecho en UIKit para refactorizar a MVC.

29.Abr.24

Hoy he aplicado a 3 ofertas para desarrollador Junior. No he hecho carta de presentación ni nada. Solo añadí en mi currículum el enlace a CopleCare. He puesto que tenía 2 años de experiencia. Ya veremos.

He terminado la refactorizacion del código del fork que me descargué que va sobre la app de Marvel. He incluido persistencia en los favoritos, que se puedan añadir al hacer un long tap gesture, además de persistirlos en local. Quitado los frameworks de AlamoFire y KingFisher.
He estado a punto de dejarlo porque la persistencia me estaba dando una serie de problemas, simples, pero que cuando no planificas como será el proceso mezclas varias implementaciones y lo vuelves más complicado.

He hecho otro fork de otro proyecto en UIKit, el cual tiene muy buena estética, esta vez va sobre NFT y criptomonedas. Lo mismo con varias librerías de terceros, incluyendo AlamoFire. Que se sustituye por unas pocas líneas más de código.

Al descargarlo e intentar ejecutarlo, me ha dado un montón de problemas, Xcode no permitía compilar. El problema era cocoPods. El cual conseguir quitar, e instalar AlamoFire por Swift Package Manager. Me gusta el que se me presenten esos errores porque me permite aprender, hacer cambios sobre un proyecto que puedo descartar sin problema. He aprendido mucho, con ayuda también de chatGPT.

Al principio no sabía muy bien que cambiar, pero conforme voy viendo el proyecto, como está estructurado y lo que presenta se me van ocurriendo cosas. Primero que nada AlamoFire, quiero esta vez implementar un mock de URLSession, añadir tests pero ya veremos.

26.Abr.24

Re-leyendo el libro de Clean Code ahora voy ent niñero más cosas. Quizá cuando lo compré no tenía la experiencia ni el conocimiento necesario para aprender esos conceptos abstractos de los que habla. Ahora estoy aprendiendo mucho más, y aún me quedan conceptos por asimilar. Así que siempre podré volver a leerlo.

También he podido refactorizar el fork que cloné ayer, quitando las librerías de AlamoFire y KingFisher y sustituyendo por URLSession.
Además añadí la funcionalidad que hacía falta de añadir a favoritos. Aún queda poderlos quitar y que se muestre automáticamente el listado al añadirlo. Pero eso será la siguiente sesión.

25.Abr.24

He hecho un fork de un repositorio un poco más complejo. Una app de mensajería que de una consultora. Mezcla UIKit y SwifUI, incluye Firebase, AlamoFire y otras librerías de terceros.

He intentado quitar AlamoFire, que lo tienen añadido en una capa del proyecto, y he querido refactorizar Combine que lo tienen incluido en la devolución de las llamadas.
No he conseguido hacerlo porque la llamada a su API me devuelve No autorizado. Incluido el token que genera la app, he probado con Postman y tampoco. Así que he tenido que dejarlo, por ahora.

He encontrado otro repositorio que clonar que tiene AlamoFire para cambiarlo por URLSession. Es el de la API de Marvel. Lo primero es poner mi APIKEY y asegurarme que la llamada se hace correctamente.
¡Conseguido!
Mañana toca comenzar.

He escrito a la consultora para ver cómo iba mi candidatura, me han contestado que al cliente le ha gustado mi perfil, que he hecho una buena entrevista pero que quieren evaluar otras opciones. Irá más lento de lo que creía. Al menos no me han descartado aún y tengo posibilidades.

23.Abr.24

La semana pasada me descargué un repositorio de una persona en el que utilizando Observable, SwiftData y SwiftUI una mini app de notas, con categorías, tags y demás.
Hoy decidí ponerme con el para hacer cambios y mejoras para probarme a ver si podia y sabía leer el código de alguien más.
Al principio ha sido un poco abrumador, organizado a su manera, bien estructurado y funcional, pensé pero ¿que puedo mejorar aqui?
Lo primero que m aventuré a cambiar fue la alerta por sistema que incluía por un popup personalizado.
Después vi que podía componentizar la vista principal. Así que eso hice.

Entendiendo un poco más la lógica he comenzado a hacer cambios en el ViewModel, quiero cambiar los dos estados posibles que tiene ahora (Pendiente y Completado) añadiendo En Proceso. Lo que implica cambiar tests también.
Al principio estaba frío, he necesitado un poco de calentamiento para comenzar a sentirme cómodo con los cambios.

22.Abr.24

Las 8:32, aún no sé nada del proceso de selección de Sngular. En el proceso de selección de Nic tardaron entre 10 y 14 días en darle alguna noticia. En mi caso hoy se cumple una semana. Semana en la que he tenido un sube y baja de emociones, ¿soy el candidato para el puesto?¿he contestado correctamente las preguntas?¿tienen algún otro candidato?

He terminado de volver a ver / escuchar los 4 primeros del bootcamp: Swift, concurrencia, UIKit y SwiftUI. Estoy con TTD, quiero volver a repasar todo. Estoy con el libro Clean Code, quiero hacer un mini-parón aprender y volver a retomar la app o bien que me llamen de las ofertas en las que estoy en proceso.

20.Abr.24

He soñado que recibía algunas reseñas de la app, y dos de ellas habían puesto 2 estrellas.

18.Abr.24

He publicado en LinkedIn el post de un logro conseguido, en el que agradezco y muestro mi primera app publicada: CoupleCare.
Etiquetando a Apple Coding Academy he recibido muestras de cariño y un re-post por su parte.

No es presunción, es más hacer incapie en todo el esfuezo que me ha llevado lograr este objetivo.

17.Abr.24

He publicado la actualización de Couple Care que añade las compras integradas y corrige el bug de la exportación a PDF. Las notas de la actualización las escribió Nic:

Ninguna relación es perfecta… ¡ni tampoco esta app! Pero lo importante es esforzarse continuamente.
Por eso en esta versión hemos corregido el error de exportación a pdf y otros menores de visualización.
Además, no hemos podido esperar a añadir una primera funcionalidad: ahora tienes la posibilidad de desmarcar tu daily completado.

Ahora si puedo compartir el enlace, ya tiene lo mínimo necesario para que pueda darla conocer al mundo.

16.Abr.24

He logrado solucionar el bug de exportar encuentros a PDF. El problema era que el
ViewModel lo estaba inicializando como un @StateObject. Refactorice el código y listo.
También corregí y mejore los comentarios que me hizo mi hermano. Algunos decidí no implementarlos porque me llevarían mucho más trabajo, como por ejemplo que fuese compatible con iOS 16, ahora está dísponible a partir de la 17. Y cambiarlo significaría quitar TipKit y un par de animaciones de los números. Así que de momento se queda así.

Mañana tocará incluir las compras integradas y enviarlo a revisión.

15.Abr.24

Hoy he tenido una entrevista con la empresa cliente de la consultora. Ha sido una entrevista con el Product Owner y con un desarrollador Senior que está en el proyecto.

Desde el viernes que vi el correo con la reunión estaba muy nervioso. Quizá es la entrevista en ka que más nervioso me he puesto hasta ahora. Quizá por todo lo que tenía en juego, quizá por el CV que vi de los participantes. Sabía que era la entrevista definitiva, el jefe-jefazo de un videojuego, Bowser, con lo que sería una entrevista crucial.
Querían conocerme y ponerme a prueba. Me esperaba alguna pregunta técnica, pero ha sido más de 1, más de 5 y quizá más de 10. Preguntas abiertas y directas sobre: Protocolos, Genéricos, clases vs estructuras, Weak self, closures, combine.
En general creo que he respondido bien, algún error sobre todo en genéricos, que pude haberme expresado mejor. Aunque creo que he respondido todo por los gestos que hacía al contestar.
Les he contado un poco como soy, espero haber contagiado algo de mi entusiasmo, mis motivos, mis razones. Ha durado una hora exactamente, de 13 a 14.

He terminado muy agotado, como si todo el estrés se hubiera liberado de momento. Me dolían los trapecios, mentalmente no podía pensar en nada, y con ganas de dormir.
He bajado a la Kelly, comido e intenté echarme una siesta pero no me he conseguido dormir.

La suerte está echada.

Hoy me tendrían que haber dicho algo de la otra entrevista que hice el jueves, pero no he recibido ningún correo ni llamada.
Podría decir que hasta mejor; así puedo daré prioridad a la consultora y tener esta opción de reserva.

13.Abr.24

Hoy he publicado mi app Couple Care a las 22:11:08 una hora que simboliza el día que me casé con Nic 22 Noviembre del 2008. Ella pulso el botón de Publicar mientras yo le cogía del dedo.

12.Abr.24

He trabajado en la app corrigiendo pequeños bugs, sobre todo en la parte de los filtros en las pantallas de encuentros. Y finalmente la he subido ha revisión. Esta será la primera versión publicada, sino hay un bug extremadamente grave que solucionar, cosa que es poco probable.
La he subido y está disponible para los testers. He cambiado alguna cosilla en la descripción y envido a revisión.
Cuando será, no lo sé. Espero antes del lunes, así puedo hacer el post en LinkedIn antes de mi entrevista.

¡Uf! Es LA entrevista. Me ha llegado la invitación y solo puedo ver curriculums sobresalientes, personas con personas con altos cargos y trayectorias profesionales que a mi me impresionan.

11.Abr.24

Hoy he dado otras 2 clases de crossfit, con un poco más de autonomía, esta vez con sus explicaciones y para sorpresa de algunos.

Con nervios pero a ratos un poco más relajado. He recibido buen feedback, comentarios bonitos y positivos.

De la app, he añadido 51 dailies más, para un total de 151. Corregido y redactado algunas actividades.

Como no me terminaba de convencer los iconos de San Francisco Symbols he obtenido de mis journey nuevas imágenes para los tags.

10.Abr.24

09.Abr.24

Creo que me han descartado del proceso de selección de Sngular. He recibido un correo con una encuesta de que había finalizado mi proceso de selección.

08.Abr.24

He terminado de corregir y añadir los comentarios que me han hecho hasta ahora mis testers. Entre los que estaban:

  • Errores de ortografía
  • Interactividad en los “widgets” que muestran información sobre el saldo, encuentros completados, pendientes, racha. O bien activan algún filtro o muestran alguna ventana.
  • Añadir el botón de volver al final en las instrucciones
  • Corregir el padding del texto en el botón del corazón.

⠀Y he encontrado un bug, en las instrucciones los botones estaban activos. Mostraban menús o alguna pantallazo así que los he desactivado.

07.Abr.24

He retomado el libro de Clean Code. He comenzado desde el principio. Dar nombre a las variables.
Dar nombre a las funciones y métodos, y hacerlos lo mas atómico posible.
El nombre de la variable es directamente proporcional al ámbito en el que se encuentra.

06.Abr.24

He comenzado a ver los vídeos que tiene el canal de CrossFit.com sobre el curso de entrenadores L1. Que son dados por el mismo Glen Classman y por Dave Castro allá por los años 2002 y 2008.

05.Abr.24

Episodio Z Zambullendo mi app publicado!
2.708 reproducciones en total

Fin de la segunda temporada del podcast. App aprobada, a punto de ser publicada y hasta parece que lo he dejado con ese punto de emoción de que sucederá para la siguiente.
Mi intención es volver en mayo. Una vez que tenga decidido que hacer los próximos 6 meses.
Puede que sea el episodio más largo que haya grabado hasta ahora.

Mis primeros testers están dando ya feedback. He comenzado a apuntarme aquello que debo cambiar para dejar la app a punto.

4.Abr.24

¡Hoy Apple me ha aprobado la app para su publicación!

Es una satisfacción tan grande, que provoca una alegría, un sentimiento de realización, de logro que genera felicidad. Porque creo que la felicidad no es un sentimiento es el producto de algo, y ese algo es ahora mismo el haberlo conseguido.

Se suma a que he por fin, por fin, por fin, conseguido solucionar el bug del daily del día. Estaba convencido de que el error era minúsculo, pero provocaba que la pantalla no se refrescara y por tanto no actualizaba el Daily que tocaba ese día.
Cuando la aplicación volvía de inactiva y llamaba a la función que creaba los dailies hasta el día actual, este leía una propiedad que llamada today que daba la fecha del día. Lo que no tenía en cuenta es que esa propiedad no se calculaba cada vez que era llamada, sino solo una vez, cuando se abría la aplicación y quedaba almacenada esa fecha. Al cambiar la propiedad de un closure a una calculada, todo ha funcionado.

Ha sido una alegría el haber descubierto la solución a ese bug que llevaba dándome vueltas la cabeza yo creo que dos semanas.

Primero me dieron la aprobación para publicarla y después para hacer el TestFlight a externos. Que fue ya por la tarde, tenía 2 correos dados de alta así que por la noche añadí los 3 restantes.

3.Abr.24

Hoy he recibido 2 llamadas de empresas Sngular y Innotest como primera toma de contacto de cara a 2 entrevistas que podré tener la próxima semana.

Algo ha hecho Jon de Apple Coding Academy, porque fue el quien me dio el aviso por la mañana de que estuviera atento al teléfono. Y antes de las 3 de la tarde ya me habían llamado.

Hoy es el día que he enviado mi app a revisión. Después de rellenar todos los formularios, hacer las previews y demás, por fin!! 👏🏼

2.Abr.24

He terminado de hacer las previews. He hecho tanto del iPhone 15 como del 11.

1.Abr.24

Ha sido un día de avances.
He añadido las descripciones de la app, palabras clave, las notas para la revisión. Y estoy ya haciendo los previews de las pantallas con su descripción para la App Store. Espero terminarlos mañana.

He tenido que meterle prisa porque para hacer el TestFlight externo tienen que revistarte la app. Para lo cual tiene que estar todo cumplimentado.

Eso me ha “presionado”, me ha hecho decidirme y dejar de dudar en pensar en la descripción “perfecta” para pensar en la “mejor” descripción que puedo hacer yo ahora en este momento.

También le he pedido a Nic tener una reunión 1 a 1, donde me haga de couch, de mentora, para abrirme un poco a todo lo que podría hacer en esta búsqueda y publicación en la que me encuentro un poco atascado.

Ha estado bien para ser la primera. Una relación un poco rara entre pareja y laboral. Me ha dado esa motivación, ese impulso para lanzarme sin detenerme demasiado a pensar.

30.Mar.24

Sigo sin poder solucionar el problema del refrendo del Daily cuando viene de inactivo.
He visto que no se añaden nuevos dailies. Se ha quedado con el de hace dos días. Y ni ayer ni hoy se ha refrescado o se han añadido a la base de datos.

28.Mar.24

Hoy he estado afinando detalles en mi cuenta de Developer en Apple. Formularios sobre cuestiones de impuestos básicamente. Al principio parecían demasiado imponentes, luego poco a poco leyendo detenidamente y con ayuda de los documentos de ayuda que los acompañan ha sido más fácil. También me ha tranquilizado hablar don Paco, que me ha dicho que él había tenido que hacer lo mismo. Así que me animé a rellenarlos y todo ha ido bien.

También me hacía falta el certificado de distribución. Que hay que generar desde el llavero del Mac para subirlo.
He rellenado las compras integradas de la app.
Y lo último que hice después de ver errores de compilación de los que no tenía muy claro como resolver. Porque eran únicamente al generar el archivo ipa. La compilación que hay que subir.
Limpié los derived data, reinicie. Era un error con las previews, con los viewContext de prueba que había generado y puesto en todas las Previews. Los tenía en la carpeta PreviewContent, luego los cambié fuera de ahí. Pero seguí dando el mismo error. Me di cuenta al final de que en las carpetas de Xcode estaba fuera, pero la ruta en el Finder seguía en la carpeta PreviewContent. Así que cambiando la ubicación del archivo se ha solucionado.

27.Mar.24

He dado a probar a dos personas la app, y debería cambiar una cosa:
Ocultar las categorías y los encuentros que no estén disponibles. Porque la imagen de la categoría invita a pulsar. O bien llevar a una pantalla en la que se filtren esos elementos.

He generado las imágenes faltantes. Voy a reemplazar las insignias que generé originalmente para el proyecto final con números, por otras tipo medalla y paisajes.

Añadidas al proyecto están las imágenes de las categorías y las insignias.

También he añadido a la que será la base de datos maestra los dailies, quotes, categorías, tags y actividades.

He terminado de categorizar y etiquetar las actividades, primero en el archivo de Numbers para poder exportar (como el resto) a un csv importable desde la bbdd.

No logro solucionar el problema de que se refresque la vista del daily al día siguiente, después de que se ha quedado en segundo plano.

26.Mar.24

He actualizado el iPhone a la versión 17.4.1 y ahora en Apple podcast están las transcripciones de los episodios del podcast. Me hubiera gustado poder copiado para conservarlo todo en archivos de texto, pero no deja. Los pega como una cita y no el texto completo. De todas maneras siempre estarán ahí.

Me da gusto ver que aparece en las primeras posiciones con las palabras Swift, Próxima y Parada.

He estado obteniendo las imágenes de las categorías. He conseguido tener 20, además de imágenes de placeholder. El logo me ha gustado mucho como ha quedado, como se ve respecto a las demás apps.

También he terminado de re-escribir las actividades. Ahora toca asignar categorías, precio, recompensa y tags. Que espero terminar mañana.

Sigo haciendo pruebas respecto al bug de que se actualice al volverse activa la app. Porque no refresca el daily del día.

Cambiaba la fecha del iPhone, pero eso me llevaba a otros errores con lo cual no se generaban más dailies, o se generaban con la misma fecha. Así que he decidido resolverlo o bien automáticamente o bien cuando el usuario pulse el botón de la pantalla de dailies. Esa sería mi última opción.

25.Mar.24

Hoy me he suscrito de nuevo a midjourney. Con la suerte de que el servidor entró en mantenimiento después de generar mi primera imagen.

Había hecho un listado con las imágenes que necesitaba. Sobre todo la del logo, que no genere la que finalmente quedará (el corazón) y no la tenía centrada ni en la resolución correcta.
Así que fue generarla, duplicar su resolución y hacer que estuviera centrada al recortarla.

Luego generar las imágenes de las categorías. Que aún que siendo el mismo prompt ya no las genera igual. Aún así he podido sacar unas 12 fotos.
También generar imágenes de placeholder para las previews.

He también probado una solución para el refresco del daily cuando se va a inactiva la pantalla.

22.Mar.24

He soñado con un posible bug en la app. Que pasa cuando añada otros idiomas? La descripción de los encuentros y dailies está guardada en bbdd, así que tendría que modificar los datos ya guardados. Cogiendo el archivo con el idioma seleccionado.
Nic ha encontrado un bug que al mandar la app en modo inactivo no se recarga el nuevo daily al día siguiente.

Episodio Y: Yuxtaponiendo Program
2.562 reproducciones en total

21.Mar.24

He hecho optimizaciones de código.

Primero componentizando vistas y rediseñando alguna que no me terminaba de convencer, porque no encajaba con el diseño global. Ahora parece que si. 

Me había dado cuenta de que la memoria y la CPU del simulador se incrementaban cuando iba a ciertas pantallas y no volvían a bajar. Eso significaba que algún clase de quedaba en memoria. 

Así que mire y tenía varios StateObject donde debería haber ObservedObject. Cambié todos. Los StateObject solo deben estar como environmentObjects. Después para el cálculo del saldo de puntos ejecutaba una función para calcularlo en cada vista. Así que lo he puesto como una variable @Published y que el saldo se actualizará al iniciar y con cada movimiento de puntos. 

Otra optimización fue la vista anual de los dailies. Al entrar en ma vista la CPU se ponía al 100%, para luego bajar, un pico muy alto de procesos. Porque la vista por cada día del año calculaba lo siguiente: Comenzaba con las fechas, del uno de enero al 31 de diciembre del año en curso. Después hacía una consulta a la bbdd para ver si el día solicitado estaba incluido en esa consulta, si estaba devolvía si se había hecho o no. 

Así que modifique lo siguiente:

Las fechas serían del 1 de enero al día actual, puesto que a partir de mañana y hasta final del año los dailies es imposible que estén completados. Luego almacenaba en la clase los días que si estaban completados. Por cada día que me devolviera el primero que coincidiera por fecha, luego comparaba con una función nativa de Swift las fechas y si coincidían devolvía que estaba hecho, sino falso. 

Eso bajo el trabajo de la CPU a menos del 40%. Lo que ya es un gran avance. Seguro que en un futuro podré optimizarla a un más.  

20.Mar.24

¡Hoy es el día que he alcanzado los 500 contactos en LinkedIn!

Toca ponerse con la parte de diseño y de copywriting. He buscado alguna app que me permita generar los screenshots que hay que subir. Entre 5 y 10. Quizá la app la pondré para 17+, tampoco me interesa menores, está más enfocado a  adultos, ese es mi nicho de mercado.

También tengo que concentrar en un solo sitio, una sola base de datos todos los ítems. Por ir añadiendo más y después poderlos exportar a la app de una manera fácil. 

Comencé por hacerme archivos csv y json. Pero creo que lo mejor será ponerlos en una base de datos. Quería hacerlo directamente, pero la exportación a json de las actividades que anida categoría y tags me iba a complicar todo el trabajo y no puedo hacerlo desde un Excel. 

Así que he tenido que recurrir al proyecto de Vapor en el que con postman podré visualizar el json con las demás datos anidadas y así copiar y pegar a la app cuando sea necesario.

19.Mar.24

Estoy ya afinando los puntos de la app.
He unificado los colores de fondo de las preferencias, que por alguna razón cada uno tenía alguno diferente. Asi que he refactorizado, sacado a un componente y reutilizado en todos.
También he añadido a la web del podcast los apartados de Condiciones de uso, descarga de responsabilidades y política de privacidad. Primero utilicé algún servicio gratuito web, pero con esa información se lo pedí después a ChatGPT y lo he puesto como post en WordPress, aunque no quisiera que se vea el encabezado. Cosa que arreglaré mañana.

He añadido también la opción de enviar sugerencias por correo electrónico. He tenido que implementar de UIKit UIViewControllerRepresentable para mostrar un Controller al pulsar el botón. Me ha llevado menos tiempo del que creí que te tomaría implementarlo. Me di lo que quedaba de la tarde y en una hora lo pude resolver, buscando en internet y viendo la clase del bootcamp en la que se implementó con un PhotosPicker

15.Mar.24

Hoy he avanzado poco, sigo refactorizando vistas y ajustes pequeños en el diseño.

14.Mar.24

Bueno, me han enviado un correo de la consultora con la que tenía el proceso de selección. Me han descartado. Parece una plantilla, aún así es de agradecer la respuesta. Me ha dado un bajón, porque creía que lo tenía.
Me ha recomendado añadir mi curriculum a la web circular.
No he querido contestar nada, hasta mañana.

He modificado algunas vistas, sobre todo quitar el gris que había puesto para algunos contenedores, el del daily, categorías y tags. Dejando el mismo color de fondo y añadiendo un efecto de sobra.

Le he instalado la app a Nic. Para que la pruebe estos días. De entrada me ha mostrado un error y la recomendación de poner las instrucciones en el onboarding.

He añadido 100 dailies que son los que incluirá la versión gratuita.
He pensado también en la posibilidad de comprar corazones (saldo) para que puedan descubrir los encuentros.

13.Mar.24

He terminado lo que son las instrucciones de la app. Una tabView con un título una vista del elemento que quiero resaltar y un texto explicativo.

Quería hacerlo genérico, y de la manera en que lo estaba enfocando no era la mejor. Así que hice individualmente las vistas. Ya tenía que refactorizar algunas para poder reutilizarlas aquí con datos ficticios. Era como hacer una preview pero en dispositivo real.

También tengo que lidiar al mismo tiempo que programo con el diseño. Ojalá me tuviera el bosquejo de cómo debe quedar, pero la verdad es que aún no soy capaz de prever cómo va a quedar. Va saliendo sobre la marcha.

He quitado la opción de la contraseña. Porque al tenerla debería tener la opción de poder recuperarla y no me decidía si con una palabra clave o con fechas. Con lo cual me iba a complicar más de lo necesario. Lo más fácil para esta primera versión es no tener contraseña.

12.Mar.24

He añadido un logger. Un log de registro de los errores que podría dar, lo he puesto en los catch. También cuando el usuario hace un daily o guarda un encuentro. Se guarda cuando la app se va a segundo plano, un archivo en la carpeta de caché. No es necesario conservarlo demasiado. Solo en caso de que en un futuro lo necesite.

He añadido mejoras a la navegación. Al completar un encuentro o hacer una compra además de mostrar una pantalla de feedback, se vaya a cierto tab.

He hecho algunas pruebas, como que se marque algún filtro, pero lo vi demasiado complicado y decidí no meterme en ese fregado.

Estoy ahora con la pantalla de instrucciones, quiero hacer un onboarding dentro de esa pantalla. Y que el usuario vea como “se juega”.

Quedan los textos y seguir pensando en actividades. Inicialmente pondré 4, para que pueda ganar una insignia, y luego un pack de 30 actividades. Aún no se el precio. 4,99€?

Quiero meterle turbo y tenerla lista este mes.

11.Mar.24

He completado las compras de la app. Solo con el primer archivo que se importará con 30 actividades. Además de haberla puesto en la vista de descubrir cuando se han canjeado todas las actividades.

Me gustaría refactorizar código. Organizar mejor los archivos y carpetas. Hacer los tests que faltan. Quizá eso cuando empiece a ver bugs cuando de la app a testear.

8.Mar.24

Episodio X: Xcodeando y Crsofiteando Publicado!
2.390 reproducciones totales
21 seguidores en Spotify

He avanzado poco en el proyecto. He puesto 2 actividades gratuitas que se añadirán en el onboarding. Añadido las frases célebres, un total de 180 más menos.

Tengo que definir los nombres de los paquetes. Me gustaría nombres poéticos: abrazo del corazón, ecos de almas entrelazadas. De momento solo tendría que pensar en uno realmente. Y me gusta el primero.

Debería incluir 4 para que consiga su primera insignia? O dos para sepa de que va?

Tengo que ponerme con el listado de actividades. Cuantas debe incluir? Por cuanto dinero?

Puede que la última semana del mes me suscriba al Apple developer program. Para comenzar a preparar la documentación de la publicación.

Quedan detalles que afinar, le tengo que instalar a mi mujer la app para que haga de tester.

————————

7.Mar.24

He publicado un post en LinkedIn, me ha llevado de nuevo más tiempo del que me gustaría. Ha quedado bien, después de añadir y quitar código hasta encontrar que estuviera satisfecho con lo que mostraba. Me gusta mostrar y explicar parte del código y otra que quede implícita. No demasiado, pero que demuestre que cierta parte la tengo más que asumida.

He implementado la nueva manera que tiene StoreKit para las compras integradas. La que explica Apple en uno de sus vídeos. La he dejado funcionando, falta que al comprar la aplicación dé al usuario lo que ha comprado en este caso Ideas de actividades por descubrir.
Eso será para mañana, que además toca grabar.

6.Mar.24

Me está dando muchos problemas Xcode. No sé muy bien porque. He tenido que desinstalar y volver a instarlo, desde la App Store. Puede que sea la versión 17.4.

Comencé una nueva rama del proyecto para realizar la feature de las compras integradas. Tengo dos versiones, la del curso de Udemy, que es una versión “anterior”, como se realizaban antes y una “nueva” de un vídeo y proyecto de Apple. Probaré hacer las dos, primero la anterior.

He definido cómo se hará. Agruparé los encuentros en packs. Los nombres tentativos son Aluminio, Encaje, Porcelana, Rubí, Zafiro. Y llevan cada uno un número cerrado de actividades.
Estarán en archivos json independientes que se irán llamando según la compra para importarse a la base de datos.

He recibido respuesta de la entrevistadora a través de LinkedIn. Le escribí el lunes diciéndole que había investigado y que podía hacer el esfuerzo de ir a Madrid durante el tiempo necesario para la formación. Me respondió que pasaría esa info al departamento correspondiente, y que agradecía mi interés por la oferta.

Me ha dado más fe en esta oportunidad.

5.Mar.24

Hoy he añadido con el framework TipKit. Una especie de onboarding para ciertos elementos: Daily y el encuentro. Lo he intentado añadir a más como elegir las vistas para categorías o filtros, pero hay algo que no funciona bien. Al final no estoy seguro si dejarlo o no.

4.Mar.24

Hoy he terminado de añadir la funcionalidad de exportar los encuentros completados a PDF. Era un “quiero tenerlo en mi app”. Que como usuario tenga la posibilidad de imprimir o guardar esos recuerdos.

Los he puesto en el apartado de Preferencias. Y está la posibilidad de exportar todos a un archivo, por categorías, por rating y una selección personalizada del listado.

He refactorizado código, porque veía como duplicaba para cada una de las opciones. Decidió esta vez tener todo y al final hacer le refactor . Ha quedado bien.

Me debatía ayer sobre añadir la funcionalidad de accesibilidad. Me gustaría mucho incluirla pero eso requiere bastante trabajo, es algo que no puedes hacer en una pantalla o dos. Es hacerlo para toda la app. Lo comenté con mi mujer y me dijo que ella lo pondría en una versión posterior. Con lo que tiene es momento de publicarla.

He decidido también que las compras integradas, serán por cantidad de encuentros. Quiero poner 2 encuentros incluidos, y un pack (inicialmente) con 50 actividades con coste, así podré añadir posteriormente más actividades como otro pack.

Eso me permite ser transparente en cuanto a lo que está comprando el usuario. Una suscripción me obligaría a sacar X número de actividades, y ¿cuántas deberían ser acordes al precio de la suscripción? Es ambiguo. Así que compras un pack con X actividades y es lo que obtienes.

1.Mar.24

He metido una oferta más, sin demasiado cariño. La página web de la consultora y sus redes sociales no decía mucho sobre ellos, ni sobre los proyectos. Con lo que es difícil encontrar algo que puedas decir que has visto en la carta de presentación.

Hoy he añadido la opción de compartir un encuentro a través de un PDF o imagen, para que el usuario pueda imprimirlo o guardarlo simplemente. Es lo que a mí me gustaría tener.

29.Feb.24

Ha sido la entrevista con una consultora tecnológica para el puesto de Beca iOS Developer para tvOS. He de decir que la entrevista ha ido bien. Quizá he tenido, que yo me he dado cuenta 2 o 3 fallos, en palabras, frases o algo que no quería decir.
De las preguntas que me preparé, solo me han hecho 3, una es mi presentación, lo que estoy haciendo en este cambio de profesión. Otra cuáles son mis hobbies, y la tercera como me veo desarrollándome profesionalmente. Éstas dos últimas me las han hecho en inglés, que fue más de sorpresa, aunque entre mis escenarios imaginarios previos a ésta entrevista fue que comenzara en inglés. No fui del todo fluido, pero creo que me he desenvuelto bien, un poco mejor que regular. Aunque me ha dado buen feedback.

Lo ideal es que viviera en Madrid, porque aunque no está muy bien definido (legalmente) debería hacer el 50% de las prácticas que duran 6 meses, a 40 horas, las tendría que hacer presencial. También me ha dicho que los temas que se han visto en el bootcamp son muchos más que algunos otros de los que ella sabe.

Todo va a depender de si puedo o no hacer las prácticas remotas o deben ser presenciales, podría incluso ir a Madrid, alquilar una habitación por 3 meses y volver los fines de semana casa. Con la remuneración de 1.200€ brutos podría hacerlo, pero dependerá de lo que diga la empresa.
Es una buena oportunidad y tengo la esperanza de que no se un motivo de descarte.

He añadido 4 certificaciones de los cursos de Udemy que hice de Julio César Fernández en 2021 y 2022. No sé porque no lo había puesto. Pero por recomendaciones de mis compañeros del bootcamp lo he hecho hoy.

28.Feb.24

He estado preparando la entrevista de mañana. Vi algunos vídeos sobre recomendaciones, preguntas que suelen hacer. Algunas me las he apuntado, otras se las he pedido a ChatGPT, incluso le he pedido que me diera alguna respuesta.
Pensando las respuestas a esas preguntas, que quiero que el entrevistador sepa de mi, que no debería decir, un poco imaginarme en el contexto.

Eso me debería tranquilizar, no estoy nervioso, en general las entrevistas anteriores creo que me ha ido bien. Y esta quiero que sea la mejor que he hecho hasta ahora.

27.Feb.24

He venido pensando si debo publicar un post en el que hable sobre el ultimo episodio del podcast. Me ha gustado y puede que de cara a la entrevista del jueves sea positivo. Al final he decidido que no, no estoy completamente seguro de que el podcast como tal lo quiero mostrar en mi perfil de LinkedIn. Está como proyecto, pero nada más.

He añadido a la base de datos las insignias ganadas. Para poder mostrarla cuando el usuario consiga 4 encuentros completados. Me ha costado menos de lo que hubiera pensado. Solo queda animar cuando se muestra la insignia.

26.Feb.24

Ayer recibí un correo de una oferta para Beca iOS para una entrevista. Me pedían que entrara al calendario y eligiera el día y hora de la entrevista. Ha sido un momento de alegría (y un poco pánico) y en seguida me puse a investigar más fondo sobre la empresa, en youtube, wikipedia, así como repasar un poco los requisitos técnicos que atañen al puesto. En este caso son contenidos multimedia para diversas plataformas.

23.Feb.24

Episodio W: Wishing, Waiting Sitting
Publicado!
2.310 reproducciones totales

22.Feb.24

He metido un par de ofertas. Una en la que buscaban a un desarrollador iOS Junior con un año de experiencia. He escrito la carta de recomendación y he contactado con la persona de RH de la empresa que publicó la oferta. Si no recuerdo mal éramos 22 inscritos.

La otra para otra consultora de la que nos ha pasado el contacto Apple Coding y a la que además de inscribirnos en su web, nos recomendó enviar un correo para decir que íbamos de parte de la academia.

He seguido mejorado la estética de la app y refactorizando código. Solucionando pequeños bugs, y asegurándome de que funcione. La ordenación ascendente y descendente y los filtros llevan bastante trabajo de lógica. Y juntos los dos en diferentes vistas lo complica más.
He llevado un “controlador” a una variable @EnvironmentObject en la que defino todas las propiedades de personalizaciones como ordenación y vistas seleccionadas con su persistencia. Así es más fácil acceder a ellas desde cualquier vista, en lugar de pasarla como dependencia como lo tenía.

21.Feb.24

Sigo mejorando la estética de alguna que otra pantalla de la app. Añadiendo detalles como:

Cuando estás en la pantalla del detalle del encuentro. Si previamente ya lo tienes completado, el botón de guardar que aparece en rojo normalmente, aparecerá en gris, con el texto Editar. Y no te permitirá cambiar ningún elemento. Lo pulsas y los elementos cambian a ser editables y el botón vuelve a ser rojo.

En la pantalla de Explorar, aparece una fila donde te muestra el conteo de los encuentros por rating. Si no tienes ningún encuentro hecho aparecen translucidos, si hay algún rating con el conteo a 0, el botón no aparece.

En la pantalla de recuento anual si quiero acceder a un mes en el que no se ha completado ningún encuentro al pulsar la pantalla se sacude, para dar a entender al usuario de que no hay nada ahí dentro.

Mejorar las apariencia y refactorizar el código. Son esos pequeños detalles en los que me estoy enfocando.

20.Feb.24

Hoy he mejorado mi CV, añadiendo una segunda página con mi experiencia laboral y un sobre mi. Tal como me recomendó Sergio. Unos pequeños arreglos en la tipografía y colores, y listo.

Después vi un post de una mujer que había conseguido su primer empleo como desarrolladora iOS. Le dí a conectar y le envié un mensaje pidiéndole alguna recomendación.
Busque la empresa que la había contratado, y después de leer un poco al respecto, les envié un correo electrónico con mi carta de presentación y currículum.

Metí otra oferta, a la consultora que en 2022 me había seleccionado para la formación de 2 semanas.

Publiqué un post en LinkedIn. Esta vez fue mucho más rápido que otros post, los que me lleva mucho más tiempo para preparar todo. Esta vez ha sido rápido. Intento que los post sean muy rápidos de leer y visuales.

También cambié, en la web del podcasts, los pantallazos de código de los posts que tenía publicados. Con el plugin de código creo que se ve mucho mejor.

En la app mejoré alguna su vista del apartado de explorar. Y refactorice algo de código.

Muy buen día hoy.

19.Feb.24

He terminado de modificar el apartado de explorar. La vista de las fotos con sus grids ha quedado como quiero. La de explorar con las estadísticas de la cantidad de encuentros realizados por mes la he puesto de un solo color.
Son detalles que mejoran la estética.
Aún me hace falta

  • mejorar la vista de los encuentros por rating
  • Debería dar acceso al encuentro, cuando el usuario seleccione alguno, y tener bloqueado a menos que el usuario quiera modificarlo.
  • Ya si se pudiera exportar a un PDF o de alguna manera estaría genial.
  • Tengo que generar una vista que muestre que el usuario ha ganado una insignia.
  • Corregir el bug de los encuentros completados en el listado, al volver. Que no se actualiza.
  • La función que actualiza los ítems que valide por el número de versión de la app.

15.Feb.24

He añadido más contactos en LinkedIn y a una persona le he pedido, que también hizo este cambio profesional, en su caso de psicóloga a desarrolladora iOS, un consejo.
Me ha dicho que gracias a una app que publicó en la App Store fue la que le ayudó a conseguir su primer empleo como desarrolladora.

He cambiado un poco mi CV. Los enlaces de los 6 repositorios que tengo los he enlazado a la web del podcasts. De la que he añadido una entrada por cada uno de ellos, dos las tenía ya.
Gracias a un plugin puedo mostrar código de una manera colorida y que resalte un poco más. Con lo que he añadido bloques de código, vistas previas de la pantalla y una descripción del proyecto.
Una mejora más.

Luego he seguido refscotizando el código.
He añadido la funcionalidad de actualizar los ítems de core data. Cuando genere una nueva versión, y agregue actividades, dailies y demás, se agregarán los ítems nuevos a la bbdd.

También me he decidido mejorar la vista de las fotos en Explorar, para que tengan la misma apariencia que el álbum de fotos, estén cortadas al recipiente que las contiene.

14.Feb.24

Hoy he puesto en práctica lo que me aconsejó Jon de Apple Coding. Poner en experiencia laboral el proyecto en el que estoy trabajando. CoupleCare. Así que he trabajado en los datos, para que muestre algo de información lo más parecido a la versión final, para obtener las capturas de pantallas. He añadido una descripción y he puesto aue llevo trabajando desde agosto del 2023. Lo cual es verdad.

También he recibido respuesta de una consultora a la que pedí hacer prácticas aquí en Zaragoza. Ha sido a la última que he escrito y la primera que me ha contestado. Muy amablemente y en el mismo tono que está descrita la web, desenfadada y amigable. No tienen un equipo de desarrollo especializado en iOS, lo hacen con Flutter, un framework multi plataforma. Pero que si estaba dispuesto a aprender algún otro lenguaje o desarrollo web aún les podría encajar un poco. Aún así he aceptado su invitación para ir a tomar un café (tal como lo ponen en su web), así que le he contestado que tengo total disponibilidad y que me diga cuando me puedo aparecer por sus oficinas.

13.Feb.24

He terminado el curso de iOS Structural Foundations.

El proyecto sobre el que va el curso es una app que recibe datos de la API de stack exchange una web de preguntas y respuestas, mismos de Stack Overflow que es especializada en desarrollo, esta es general.

Los usuarios postean preguntas y otros responden, mediante votos, se elige la mejor respuesta y se valora la pregunta.

He completado el proyecto, aunque la API no me devuelve los datos, con lo cual trabajo con datos en local, y por alguna razón los botones no funcionan. No he querido perder demasiado tiempo en ello.

Me ha parecido interesante:

La forma en que organiza el proyecto, como separa cada capa por vista y los alcances.
En el model incluye la lógica del modelo haciendo uso de funciones tipo mutating.

En las tabs pone los navigationStack para cada vista raíz.

Cada una vista raíz se encarga de los task, mostrar errores, y en la que incluye el modelo (un tipo de modelLogic) que proveerá a la vista de la información.
La vista raíz se extiende al Content, que es la vista principal. El content se extiende para cada subvista. Que recibe los datos, no del modelo, sino solo de las propiedades que necesita, gracias a un init personalizado.
El model de la vista es el que hace la llamada a la APi con los parámetros que se definen ahí mismo.

12.Feb.24

He enviado a dos consultoras mi propuesta para hacer prácticas. Ambas a través de la web. Quizá para las siguientes deba también enviarlas por correo electrónico.

Después he seguido con el módulo 7 del curso iOS Structural Foundations. Es interesante ver como adapta y como va hecho su patrón de arquitectura. Haciendo una vista base a partir de la cual controla la navegación y el contenido. Y un model (modelLogic) a través del cual inyecta los datos.

9.Feb.24

Episodio V : Valorando otras medidas publicado!
2.261 Reproducciones

8.Feb.24

He seguido con el curso de Swift Foundations. Estoy en el punto en el que el proyecto de app se está haciendo más complejo y a donde los tutoriales “normales” no llegan. Aunque sean 6 pantallas de proyecto, la versión final que se puede descargar de Xcode me dice que aún queda mucho por afinar, por decirlo de otra manera: el curso está comenzando.

Hay que tener el criterio de distinguir porque estructura su código de esa manera, las ventajas y desventajas. La claridad que tiene para mi y para otras personas. Claro que se puede hacer diferente, y llegar al mismo resultado, pero hago este curso para entender su punto de vista y obtener lo mejor para mi en este momento.

He metido un par de ofertas, aunque esta vez sin mucha esperanza. No confío demasiado en que difieran del resto: rechazado. Se que debo seguir este camino y por primera vez, tengo una buena corazonada sobre el futuro, pequeña, pero comienzo a tenerla.

7.Feb.24

He comenzado el curso de Swift Structural Foundations de Mateo Manderdini. Puedo decir que varios conceptos de SwiftUI los conocía, no profundiza mucho en el framework sino más bien su la lógica que sigue, el funcionamiento. Me está dando seguridad en cuanto a la organización de los archivos, donde poner el código que se va generando durante el avance del proyecto.
Es verdad que mucho lo había visto ya en el bootcamp, ayer llegué a completar el 48% del curso y aún me estoy preguntando si el precio del curso vale lo que me está aportando.

Hasta completarlo no podré responder a esa pregunta. Porque si bien en la descripción pone que no es para novatos, yo habiendo hecho ya el bootcamp me ha parecido que si, pero es precisamente por todo el conocimiento que he obtenido.

También he realizado una búsqueda y un listado de empresas consultoras de tecnología con sede o base en Zaragoza. A las que enviaré una carta y mi CV para ofrecerme como practicante. He enviado la primera a la que más me ha llamado la atención. Mañana a otra y así con cada una. Espero que con esta “campaña” tenga algo de suerte.

4.Feb.24

Estoy apunto de terminar el libro de Combine de Big Mountain Studio. La mayor parte del libro son los operadores que tuliza, funciones del orden más alto. Creo que me será muy útil para la app CoupleCare. Los ejemplos que pone van un poco más allá de la conexión a red. Puede que me sirvan para actualizar la pantalla sin el temido error de actualizarla desde el background.

2.Feb.24

He organizado los archivos del repositorio APIRest Demo, por carpetas. Que tal como los venía organizando, los folders que crea Xcode son internos, por lo que en GitHub se muestran todos en la carpeta base.

Mientras lo organizaba le di un repaso al código, componentizando aún más algunas clases. Luego tocaba actualizar el readme. A ponerlo más o menos bonito, obtener las capturas y escribir el texto.
Pensé en que sería buena idea publicarlo en GitHub, comencé por sacar lo más interesante, 4 cosillas. Después pensé que lo mejor era hacer un post como los que suelo hacer. Reduje a dos y los uní por sus similitudes.

El texto es bastante corto, porque va al grano, dos trozos de código y su descripción. Lo he programado para que se publique el lunes por la mañana.

Luego añadí el mismo contenido en la web del podcast, programado también.

Así que cumplido en tiempo y forma. El lunes me tomaré de fiesta porque mi mujer libra.

1.Feb.24

He aplicado a una oferta y aunque los requisitos eran tener 3 años de experiencia, me he propuesto por si llegan a tener algún lugar para un puesto de prácticas. No sé como irá. Es la primera oferta en la que me ofrezco como practicante. Una acción que debo probar a ver si se me permite con ello entrar al mercado laboral. La empresa tiene muy buena pinta y me he currado la carta de presentación. Espero al menos tener buen feedback.

31.Ene.24

He terminado lo que parecía, o en un momento determinado pensé en dejar no añadir más de lo necesario. Una pantalla con información de países, obtenido de una API, en la que una vez se seleccionaba uno de ellos aparecía detalle como: código corto, código de dominio, código telefónico, cogido de países con los que tiene frontera, usos horarios, área, población y capital(es).

A otra API pedía los iconos que van en cada celda y a una tercera la bandera en tamaño 128 x 96 píxeles.

Entrando al detalle, a de tercera API, esta vez con APIKEY que tengo guardada en un archivo JSON en los documentos de la app y a la que acceso cuando se hace la petición, obtenía las regiones (estados, comunidades u forma de organización del país) y seleccionando una región mostraba el listado de ciudades que incluía, y seleccionando la ciudad la mostraba en el mapa y se mostraba un letrero de a cuantos kilómetros de tu ubicación estaba.

Añadir el mapa no ha sido complicado, ni obtener la ubicación. Por suerte tenía un proyecto de hace tiempo en el que lo había hecho.

Las regiones y la ciudades lo complicado fue crear la URL a la que se llamaba, por los parámetros que debía incluir y como ocultar mi APIKEY para que no se mostrara en el repositorio público.

Luego tuve un memory leak, se estaban acumulando objetos y se n un principio creí que era por no desinicializar los viewControllers cuando cambiaba de país. Aunque después me di cuenta que eran los observadores del NotificationCenter que no los había marcado como [weak self]. Una vez añadido dejó de acumular datos en memoria.

Me siento satisfecho, no por el diseño, sino por no haber abandonado al enfrentarme a esos desafíos. Por un momento pensé en no añadir más funcionalidades, pero intentándolo lo suficiente lo he podido superar.

30.Ene.24

Trabajaré esta semana en el repositorio, y la próxima ya con CoupleCare. A ver si puedo terminar las apis que tengo planeado incluir, y si no alternaré la próxima semana UIKit y SwiftUI. Ya veremos. Por lo pronto me centraré en este repositorio.

He publicado un post en LinkedIn, y también en la web del podcasts. Hoy estaba más inspirado que ayer.

29.Ene.24

He publicado mi diploma del bootcamp en LinkedIn. Me lo había propuesto y hoy me he decidido.
He añadido más contactos y en la web del podcast he añadido los post que ya tenía publicados en LinkedIn. Así que ahora publicaré en dos sitios los posts.

26.Ene.24

Episodio U: Ufanando del diploma publicado!
2.230 reproducciones

25.Ene.24

Hoy he publicado el repositorio de API Rest Demo, lo he subido a GitHub, publicado en LinkedIn en el apartado de proyectos y en la web del podcast.
El trabajo y tiempo que toma hacer una descripción adecuada, legible y que transmita en lo que quiero hacer foco.

Aún quedan Apis que quiero integrar, esta vez las que llevan una apikey, aunque estoy pensando una forma para no exponerlas.

También he comprado el curso SwifUI Strucural Foundations de Matteo Manferdini. Un curso sobre cómo estructurar, sobre la arquitectura del proyecto de app. No es como un curso de Udemy, son 4 pagos de 104€, pero dado que un compañero del bootcamp me lo ha recomendado y visto el temario complementa al bootcamp, he decidido comprarlo y sobretodo hacerlo.

Está profesión es así, tienes que invertir en tu formación, buscar contenido de calidad y decidirte a hacerlos.

24.Ene.24

Hoy ha sido un muy buen día. Y la pregunta es ¿qué hace de un día un buen día? Primero he conseguido hacer mis dos prioridades:

  • Añadir contactos en LinkedIn
  • Aplicar para una oferta de empleo, con “cariño

⠀Después me puse con el repositorio de demo que estoy haciendo sobre API Rest, en UIKit y utilizando callbacks, Combine y Async-await. Está API de DiceBear, quizá era la más difícil de las 3 que llevo (MathNumbers, ChuckNorrisFacts, France Communes), por las posibilidades de configuración en la generación de un avatar. Al final de la tarde lo he conseguido, con una estructura adecuada, y lo más legible que he podido. Estoy satisfecho de como ha quedado.

Para rematar el buen día he recibido el diploma del Bootcamp Swift Full Stack de Apple Coding Academy, con una calificación Muy notable de 8. Por lo que me siento muy orgulloso de haberlo conseguido. Me ha dado un subidón de alegría y confianza, sumado a darle forma al repositorio. Todo fruto del esfuerzo y tiempo que le estoy dedicando a este cambio de profesión.

Además del diploma han incluido un informe de corrección del proyecto, puntos a mejorar y observaciones, nada grave y buenas críticas.

22.Ene.24

Hoy he solicitado conectar a más personas en LinkedIn. Esta vez a dos les he pedido libros o recursos que pudiera me pudieran recomendar y los dos me han dado vídeos y enlaces. Ya conocía los enlaces y algunos vídeos de Udemy. Aunque he podido ver que ellos no los había completado, al menos los tenían.

He encontrado a 2 personas que también están en el proceso de un cambio de profesión a desarrollador iOS, a quienes les he pedido consejo o recomendaciones. Por lo que pude ver no tenían aún puesto en LinkedIn su nuevo empleo o no lo habían conseguido todavía.
No es un proceso fácil ni rápido.

He visto que ha abierto las inscripciones el curso de Matteo Manferdini SwiftUI Structural Foundations, son 4 pagos de 104€. No me parece caro, eso si es online, a tu propio ritmo, vídeos y lecturas.
Es un curso de arquitectura, de cómo organizar la app, su navegación. Un compañero del bootcamp lo cursó anteriormente y su reseña está en la web del curso. Le pregunté hace tiempo y me dio buenas referencias.

21.Ene.24

He comenzado a hacer una serie de “cheat codes” en Pages. Documentos en los que pueda ir guardando para consulta código de Swift. Del bootcamp, de los libros que voy leyendo. Código que me permita recordar cómo se hacía tal o cual operación.

19.Ene.24

Me gustaría poder hacer un playground con todo lo aprendido del bootcamp, o al menos organizarlo, tener un sitio donde ir a buscar o consultar cuando lo necesite. Tengo varios playgrounds, ya carpeta con los prácticas / proyectos pero no están organizados.

18.Ene.24

Hoy me he puesto 2 objetivos. Hacer un post en LinkedIn y postularme a una oferta.

Hacer el post de LinkedIn me ha costado 3 veces más de lo que esperaba. Primero tener un buen ejemplo que mostrar. Segundo: una buena estética en la imagen y tercero una buena descripción.

Un ejemplo que de un solo vistazo sea claro de entender. Que estén bien distribuidas las imágenes y el texto y que en pocas palabras expreses la idea claramente.

Logrado el primer objetivo, he buscado una oferta y me he puesto con ella. Ahora en una nota en Bear voy tomando nota de la oferta. Información de la oferta, la empresa, los reclutadores, las preguntas. Buscar en la web de la empresa en sus redes sociales, algún punto que me llame la atención y que pueda escribir en la carta de presentación o en las preguntas que suelen hacer.
Esta vez llevo un registro de las ofertas y les estoy dedicando más tiempo, más cariño.

El tiempo que me quedo por la tarde lo dediqué a lo que será mi nuevo repositorio. APIRest Demo. Un proyecto en UIKit con peticiones a diferentes API Rest, en el que quiero utilizar Combine, patrón notificación, Callback, Async-await, y alguno más que pueda incluir.

La primera pantalla ya la tengo. Una API Rest que da el número día, información sobre un número en particular. Si binario, en número romano, si es primo, triangular, perfecto, etc.

16.Ene.24

He metido otra oferta con “cariño”. Además durante el proceso he leído un documento sobre las recomendaciones para mejorar la calidad de la candidatura: Descripciones, en que hacer énfasis, que evitar y demás.

Después he visto un tutorial de Realm y SwiftUI, tendré que decidirme en qué proyecto embarcarme para añadir a mis repositorios. Me gustaría uno con UIKit, Combine, Realm y Mapas. Lo cual dificulta el tema del proyecto, ¿Cuál abarcaría todo y sea interesante?

Por la tarde he repasado la segunda clase del módulo Asincronía y concurrencia. Los 3 patrones Callbacks, Combine y Async-await. Los veo ahora desde otra perspectiva, con bases de conocimiento más sólidas, lo cual me permite comprender un poco más. Creando mis propios ejemplos y hacer pruebas con ellos..Ene.24

15.Ene.24

He metido una oferta “con cariño” he dedicado un par de horas a buscar información sobre la empresa, a escribir la respuesta a lo que preguntaban ¿porque te interesa la oferta? y ¿que sabes de la empresa? Así que me he puesto a investigar en las redes sociales y la web de la empresa y he escrito lo que he encontrado tal cual.
Me lo he apuntado en mi nota de seguimiento.

Por la tarde he retomado el libro de Swift in depth, esta vez con el capítulo 9: Creación de estructuras de datos y que éstas se conformen con los protocolos Sequence y Collection, con lo cual hay que incluir la manera en que iteran sobre los elementos almacenados. Recuerdo haberlo visto hace tiempo en un vídeo de Hacking with Swift, pero lo veía muy abstracto, confuso y poco práctico para ese momento de mi saber. Ahora, aunque es poco habitual que sea necesario crear una estructura de datos propia, le veo más forma, más sentido.
El libro tiene buenos ejemplos y ejercicios, además de hablar con más amplitud al respecto.

12.Ene.24

Episodio T: Tejiendo los cimientos publicado!
2151 reproducciones en total

11.Ene.24

He terminado ya el repositorio que he llamado Dogminder, lo he subido. Así tengo ya 6 repositorios que puedo mostrar en GitHub. He visto que en LinkedIn también puedes poner proyectos, ya tenía 2 (el podcast y Purple Humingbird) así que he añadido los 4 que faltaban.

10.Ene.24

He terminado el repositorio de UnitTest, Coredata, y Mocks, bueno me falta darle un poco más de diseño a las 2 vistas que tiene. Para que no quede tan simple.

He intentado hacer una implementación con UserDefaults, pero no me ha gustado como quedaba así que lo he descartado, además de que me tomaría otro día. Quiero ya enfocarme ahora en pulirlo y documentarlo, poner el Readme y puede que un diagrama de cómo utilizo los UseCases. Con eso tendría los 6 repositorios que tiene mi CV y enlaces a GitHub.

09.Ene.24

Hoy ha sido un buen día. Estoy preparando un repositorio que añadir a GitHub con mocks, tests y coredata y va bastante bien. Comencé ayer y me está gustando como va quedando.

Tengo ya la nueva versión de mi CV, esta vez solo con repositorios y nada de trabajos anteriores. Espero que eso funcione un poco mejo. Nada de que estoy buscando mi primera oportunidad como desarrollador iOS.

04.Ene.24

Bueno, estoy refactorizando mi CV, esta vez puede que esté más colorido. He puesto básicamente los repositorios que tengo, y un par que me hacen falta publicar. He puesto la parte de conocimientos, más imágenes y descripciones cortas. Espero terminarlo mañana.
Los repositorios comenzaré a trabajar en ellos la próxima semana, para afinarlos y queden presentables.
El lunes retomaré la búsqueda e inscripción a ofertas.

Sigo con el libro Swift in depth, comprendiendo nuevos o quizá conocimientos que vi en el bootcamp pero en ese momento estaban fuera de mi total comprensión. Ahora con más ejemplos prácticos y ejercicios de el nivel de comprensión que tenía ha subido algunos puntos.

03.Ene.24

Hoy me he puesto a leer el libro Swift in Depth. Me ha dado gusto descubrir que sabía a qué se refería cuando leí el tema de Genéricos. He aprendido, ya lo que me aporta es afianzar la comprensión total del tema. Detalles sobre la implementación. Me da la seguridad de que lo sé.

He comprado el libro: Classic Computer Science Problems in Swift de David Kopecque son algoritmos básicamente. Me gustaría ahondar en ello. Es parte del pack en el que también está Swift in Depth, por eso fue que lo descubrí, lo revisé un poco por encima y me gustaría explorarlo.

02.Ene.24

Toca volver de estos días de descanso. Cuesta retomar la rutina. Lo que he hecho es definir que es lo que voy a hacer, que es lo que necesito hacer al menos durante los próximos dos meses. He definido 3 bloques: Empleo, Estudios, CoupleCare. Para con ellos establecerás tareas que debo hacer.

He comenzado con ello y después me he puesto a repasar las clases del bootcamp. Los puntos que me había marcado repasar.
Seguiré con los repositorios que quiero añadir, uno sobre testing y otro sobre base de datos de realm.

Mañana quiero enfocarme en rehacer mi CV, quitar todo de empleos anteriores y poner los repositorios que tengo y el bootcamp. Probar algo diferente.