Muy buenas noches, siempre se está en un episodio de anécdotas jordánicas de Sí, no tengo por idea la introducción de anécdotas yordónicas, pero sean bienvenidos esta noche a un nuevo episodio de MOS a aprender un poco más de anécdotas y cosas que me pasaron en la vida y que espero que le sirvan a usted en su vida de la programación.
Lo cual creo que no está muy bien armado gramaticalmente, pero ustedes entenderán, sepan, disculpar, son las once de la noche de un lunes, después de haber trabajado de forma interesante.
y luego de bastante ausencia de no hacer podcast, así que esa es otra disculpa que he hecho se pasó más de un mes sin hacer podcast creo que ya vamos y se nota, uno se oxida y de hecho tenía la duda de hacer este tema o hacer otro episodio más de Code Time, pero dije esto lo tengo un poco más a mano Pongámosle que lo tenga un poco más fresco en memoria y que vamos a aprovechar a hacer esto, así hacemos un arranque un poco más distendido.
No voy a negar que parte de los planes eran hacerlo antes de irme de vacaciones. Pero bueno, pasaron cosas. Me movió un poquitito el. el cronograma para las vacaciones y dije buah está bien, vamos a aprovechar, voy a tomarme las vacaciones bien y este así que me tomé unas muy buenas y merecidas vacaciones, las necesitaba después de tanto trabajo es sano se lo dice alguien que en otro tiempo hubiese pensado bueno
De última uno las puede dilatar un poquitito más y decir, bueno, me las tomo después. Lo digo hoy en día y es no. Tómense las vacaciones cuando tienen la oportunidad. No saben lo valioso que es eso para su salud mental y física. Aprovechenlo. A lo cual, dicho sea de paso, se preguntarán por qué no hubo Code Time, si escuchan esto en orden cronológico y ustedes esperan los episodios a medida que van viniendo. Taler lindo casi sea. Y la respuesta es muy simple, me tomé vaca.
Como ya habrán podido adivinar, en base a lo que vengo diciendo, me tomé unas vacaciones y eso hace que claramente no iba a ser podcast ni nada, porque de hecho aproveché, viajé un poquitito, nada una locura, casa de familiares, la pasé lindo. Me tocaron agradables días relativamente frescos, considerando que estoy en Argentina y es verano y vivo en Rosario, una ciudad caracterizada por ciertas cosas como calor, humedad, en verano al menos.
Y últimamente con noticias no muy agradables al que sepa de lo que estoy hablando, no voy a entrar mucho más en detalle porque Plataforma no le gusta. Así que digamos que la situación en Rosario está complicada. No voy a responder demasiadas cosas al respecto, si alguno llega a hacer alguna pregunta de esto, pero bueno.
eh justo aproveché y me fui a una zona un poco más seca y donde tuve la fortuna de que fueron días más frescos relativamente hablando, hubo un temporal increíble de hecho Y se la pasó muy bien, desconectado un poquitito de lo que es la tecnología, cosa que recomiendo encarecidamente, cada tanto hagan el ejercicio, sobre todo si ustedes están todo el día pegadito con el teléfono y ese tipo de cosas.
Todo mención descanso del teléfono. Eso igual se lo recomiendo fuera de incluso el contexto de vacaciones. Gracioso que se lo diga un desarrollador de mobile. Pero bueno, detalle. eh, que uno haga aplicaciones mobile y haga cosas que sirvan, no significa que uno tiene que estar todo el día pegado a la pantallita del derecho. Son dos cosas muy diferentes.
Pero bueno, habiendo dicho eso, aproveché, descansé, desconecté un poquitito de toda la vorágina en la que venía, justo en donde estoy trabajando en un proceso de cambio un poco de rol. En base a unas cuestiones internas de la empresa, alguna u que otra promoción dando vuelta, lo cual implica un cambio de responsabilidad. Estamos cambiando algunas implementaciones, están medio pesadas la la carga laboral y dije bueno voy a aprovecharme, tomo unas vacaciones y relajo un poco con él.
Y se me viene un semestre muy divertido y jugoso. Con el condimento de bueno estar en Argentina, lo cual es otra cosa que complica un poco más la cuestión. Pero acá no estamos para hablar de mi vida personal en ese aspecto, sino para hablar un poquitito del tema de la programación. A lo cual, antes de continuar, voy a saludar acá a JMR que dice Hi.¿Viene que te de vacaciones?
nada, así como mucha anécdota es, hubo un temporal, casi se arruinó toda la cosecha, cayó mucho granizo, estuvo agradable el resto de los días, salvo un día en donde si me decís en humedad y calor. que tuve la idea de salir al centro para hacer unos trámites porque confié en una aplicación de un servicio el cual tengo y la aplicación junto con Google Maps decidieron mentir. Pero bueno, detalles, aprendí que ya no puedo confiar en lo que una entidad dice tener.
Ay, qué bonito. Yo no me esperaba nada, pero bueno, así lograron decepcionar. Bueno sí, bueno, estuvo lindo, se comió bien, eso estuvo muy agradable y no mucho más. O sea, la verdad que a nivel de De vacaciones no tengo mucho que comentar. Disfruto de momentos de tranquilidad. Y esos fueron momentos de bastante tranquilidad. Así que puedo decir que fueron un rotundo excepto.
Lástima que se terminaron. Esa era la única cosita que bueno, lamentablemente no se dio. Espero JMR que estés bien y que estés. Habiendo dicho eso, si hay alguien en el chat que quiera hacer alguna pregunta, aproveche su oportunidad. Si no, bueno, voy a ir arrancando un poco con el tema dando contexto de qué es lo que tengo ganas de hablar en este episodio.
Y remarco, tengo ganas de hablar porque anécdotas jordánicas, al que no lo sepa, es una sección de CodeTime que se caracteriza en mí hablando exclusivamente de anécdotas o experiencias que he tenido. A diferencia de Script Time, lo que es hoy en día, donde comento un poco más el lado soft, por así decirlo, o sea, más bien recomendaciones.
Un poco basado en cuestiones teóricas y un poco basado en mi experiencia personal. O Coutain, donde hoy en día la temática es más específicamente técnica. En el detalle Jordánicas es 100%. Experiencias mías y anécdotas mías. Si ustedes están esperando acá objetividad absoluta, en lugar de equivocar. Pero yo creo que puedo aportar un poquitito, muchas veces en base a errores que he cometido.
Y yo creo que esa sección puede ser algo divertido para al que le interesa meterse en este mundillo y ver cómo muchas cosas no son tan glamorosas como se las presentan. Sobre tutto in un'idea che siamo abondati in questioni di intelligenza artificiale e il futuro. Qué loco que hace dos o tres a no quizás tres o quatro años. El tiempo pasó muy rápido. El temita era la blockchain, era el futuro, y así, lo cual no niego que el blockchain como tecnología sea algo útil, eh, es algo muy útil.
Pero nos olvidamos muy rápido porque ahora estamos en el nuevo tren de hype de la inteligencia artificial otra vez. Lo cual no significa que no sea útil, simplemente hay todo un hype y mucho vende humo dando vuelta. Lamentablemente. Pero bueno, esto es así. Hoy en día es inteligencia artificial y mañana quién sabe. De momento parece que se va a quedar por un ratito. Veremos cuál es la siguiente tendencia loca.
Y bueno, a nivel de experiencias,¿qué es lo que pienso comentar en este episodio? Un poquitito mis experiencias y anécdotas haciendo herramientas. Porque en un episodio de Script Time hace ya un buen tiempo, probablemente entre medio año, un año o más. Digo eso porque el único anécdota jordánica yo en mi imaginación lo tenía bastante cerca, y me di cuenta de que mi servidorcito que me armé probablemente ya tenga un año.
Wow, cómo pasó el tiempo, cómo sé eso, porque el único anécdota jordánica fue explicando el cómo me arruinó hicieron distinto y cosas que aprendí en el proceso. El servidorcito no se iteró mucho. Estoy pensando en darle algunas mejoras. De hecho ya compré algunas piezas de hardware. Ninguna locura es mejorar un poco como almaceno la cosa. Pero ya veremos. cuando me siente hacerlo porque no hay mucho tiempo libre
Pero bueno, ya pasó al menos un año eso. Y bueno, volviendo al tema del script time, lo que había hablado en ese episodio era la importancia de aprender a hacer herramientas, de aprender a hacer librerías propias. Tiene un montón de beneficios, no voy a entrar mucho en detalle, pero a grosso modo uno puede aprovecharlo para aprender cosas.
Puede aprovecharlo para practicar, lo cual suena bastante obvio, puede aprovecharlo para resolver problemas que está teniendo en su día a día, ya sea en su vida personal como en su vida laboral. Y algunos comentarios que hubieron en esos episodios, o en ese episodio más en particular, eran. Ah, yo pensé que me ibas a explicar cómo hacer herramientas.
y es um ajá en un podcast donde estoy contando la importancia entiéndase que cuando hablo de importancia habla justamente de la importancia no del cómo sino del por qué. Pero bueno, sabemos que la comprensión lectora no es algo que esté muy de moda últimamente y algo que nos repetimos en el trabajo, el usuario no sabe leer. ¿Por qué digo esto? Bueno, básicamente parte de lo que estamos haciendo ahora en donde trabajo.
Trabajo manteniendo una aplicación relativamente grande, la cual se caracteriza porque tiene un enfoque también a lo que es la experiencia de usuario. Mejor o peor, se intenta siempre mejorar eso. Y bueno, algo que aprendemos y tenemos que tener mucho cuidado es justamente sobre la experiencia de usuario y cómo el usuario tiene la mala costumbre de no leer.
Ahora, es gracioso porque decimos eso un poquitito con enojo, ya que nos complica un poco la existencia de ese tipo de cuestiones, y después cometemos un error porque nosotros mismos, los que desarrollamos, no leemos. Entonces, el usuario no sabe leer. El usuario no solamente es el consumidor de una aplicación, sino nosotros mismos, como programadores, muchas veces.
Es una burla interna que nos hacemos entre nosotros y es una autoburla directamente del usuario no saber leer, como diciendo, ay qué tonto, tendría que haber, si hubiese leído la línea que tengo inmediatamente acá arriba en este texto, hubiese entendido para qué servía este botón. Pero bueno, el usuario no sabe leer. Aprendan eso. Si no saben nada más de experiencia de usuario, sepan que el usuario no sabe leer.
Y aunque sepa leer, no lo va a hacer. En YouTube lo he aprendido en sobremanera. La gente no sabe leer. Y bueno, dependiendo en qué países estemos, como en Argentina, eso cada vez más es una realidad literal. Así que bueno, acá dice, Aleal, buenas, ya llegué,¿cómo Ale?¿Todo bien? Esperate todo bien por allá. Sentite libre de hacer preguntas o comentar al respecto de lo que estamos dando en el podcast. Y bueno, continúo.
Eh, este podcast va a tener un poquitito de improvisación como se podrá notar un poco para romper el hielo de tanto tiempo de no hacer episodios aka un mes también conocemos aka acrónimo en inglés de también conocido como also no gas AKA suena más bonito, y mi pronunciación de inglés la tengo bastante oxidada.
Pero bueno, este episodio va a ser un rejunte de un montón de comentarios sobre herramientas que he desarrollado. Ya en un episodio, en un script time, hablé sobre por qué considero que es importante, y en este episodio más bien voy a contar algunas anécdotas. ¿Significa que voy a contarlas todas? No, disclaimer, este episodio no tiene todas las anécdotas de lo que he trabajado, porque claramente mi memoria no es tan buena y no llevo un registro tan exacto como muchos piensan que lo hago.
Probablemente, si me siento a hurgar un poquitito en los discos rígidos, Voy a llegar a unas conclusiones un poco más precisas de lo que voy a tener en este episodio. Pero la idea es que el episodio dure menos de 10 horas.
no porque haya hecho grandes cosas sino porque puedo irme por las ramas entonces la idea es no llegar a ese punto de hecho yo en lo que veo en mi script de lo que voy a hablar o libreta como lo quieran llamar script suena más bonito Parece poco, pero conociéndome cuando veo 20 líneas escritas en un script, probablemente eso implique en unas dos o tres horas. La idea tampoco abusar del tiempo y la idea es irme a dormir antes las tres de la mañana de ser posible, porque mañana me toca trabajar.
Cosa bonita. Así que bueno. Ahí al ehm. JMR saluda a Leal. Bien, excelente, me da un montón. De hecho he visto que al que no lo sepa, existe un grupo de Cow Time, siempre confundo la palabra del canal. Y el grupo de Cow Time estuvo activo lindo cuando no estuve. Me voy y hablan de cosas interesantes y se pone picante la cosa. Tengo que irme más seguido.
No, intenté no meterme en el grupo porque quise medio desconectar un poco de todo, contestar alguna que otra cosa, pero no, no me metí mucho en En muchos chats, de hecho cuando terminé las vacaciones tuve que sentarme y ponerme al día, y de hecho creo que todavía me quedará alguna cosa de ponerme al día que me colgué, pero bueno, eso. En estos días. Han sido días movidos en múltiples aspectos, en cuestiones personales y en cuestiones laborales.
Habiendo dicho eso y todo, mucho bla bla bla, muy bonito y qué sé yo qué sé cuánto, ya sabiendo de lo que se va a tratar el episodio, hablemos de lo que se trata el episodio. Para los que están escuchando este episodio y están en en vivo, pueden hacer preguntas. Si hay algo que no se entiende, siéntanse libre de preguntar. Si tienen curiosidad sobre algún asunto, siéntanse libres de preguntar. Y hay información que obviamente no puedo dar porque existe algo llamado contrato de confidencialidad.
O revela ciertos detalles sobre cosas en las que voy a estar trabajando. Y prefiero no hablar mucho al respecto. En algunos casos porque no puedo, en otros casos porque no debo. Y en otros casos porque no quiero. Qué bonito, todas las combinaciones. Habiendo dicho eso, yo creo que voy a poder hablar bastante bien de lo que quiero hablar en el episodio. Pero bueno, esto puede irse por las ramas, como un uno de los últimos Code Times donde era algo de clean code.
Y terminé yéndome por las ramas explicando el cómo implementé un sistema graficador para electrocardiógrafos y Parece que gustó, algunas personas por lo menos que están escuchando, les gustó. Y a mí también me gustó comentarlo. Y bueno, en parte de ahí viene la idea de hacer este episodio. Comentando cosas quizás un poco más sencillas, no tan locas como hacer un graficador o generador de informes para el electrocardiógrafo para ser más preciso. El graficador era una pequeña parte nomás.
Pero bueno, un poco una recolección de múltiples cosas en las que he estado trabajando, muchos fracasos de por medio, que de hecho, si alguno se remonta a viejos tiempos de anécdotas jordánicas. Hay uno en donde comento algunos de mis primeros proyectos y muchos de los cuales terminaron un fracaso. Seré quizás redundante en algunos, pero no voy a entrar mucho en detalle, aunque sí voy a comentar varios que quedaron a mitad de camino o que nunca los terminé.
Soy una máquina de generar proyectos que quedan a mitad de camino. Solo revisar el canal de YouTube. Pero bueno, lo hago por cuestiones de que tengo otras prioridades o porque he logrado resolver el problema de otra manera. Así de simple, no es por mala onda ni nada, no es que no no lo quiero terminar, sino que bueno, o tengo otras prioridades y bueno, tengo que priorizar cosas, cosa que al argentino parece que no se le da, a mi tampoco del todo, pero intento hacerlo lo mejor posible.
Bueno, también tenemos la cuestión de que una vez se dice che sabe, ya no tengo este problema, encontré una herramienta que resuelve mi problema como para que voy a reimplementar, para que voy a reinventar la rueda. si existe algo que funciona mucho mejor de lo que yo tenía imaginado hacer Pero bueno, hay veces en donde uno dice: Quizás yo pueda hacer algo que me sirva. Y de hecho, cuanto más
principiante sea uno, es más probable que uno tenga esta idea de no, yo voy a hacer todas mis herramientas y todos los programas que voy a hacer en mi vida los voy a hacer yo. Con el tiempo uno aprende un poquitito de humildad, se da cuenta que lo que acaba de decir es bastante arrogante. Y que en realidad las cosas son mucho más complejas, y de hecho, todo lo que nosotros nos imaginamos al principio de que era una idea muy sencillita, puede escalar y lejos, como vamos a ver en este episodio.
Así como yéndome muy a los principios de las primeras cosas en las que trabajé y que puedo decir, bueno, estas fueron realmente herramientas, yo creo que fueron popurrí de cosas. O sea, sucedieron muchas cosas en los principios. hubieron muchos intentos de herramientas En sí, ya intenté hacer un montón de herramientas, muchas salieron mal. Desde mis primeros primeros proyectos en programación, allá cuando tenía yo alrededor de 18, 19 años, en donde ah, contexto, tengo 29.
in my 18-19 years when I was young and innocent. Y pensaba, oh, voy a ser un asistente y que me resuelva un montón de problemas. Un poquitito, siempre uno con la idea de lo que se ve en el cine, de quisiera algo que me automatice tareas. Sin escribir comandos feos. O sea, no es que tenía una versión a los comandos. No me desagradaban. Pero es como, qué lindo sería que parezca más humano. Hoy en día eso ya lo tenemos.
Hasta cierto punto chat GPT y herramientas similares cumplen con buena parte de las funciones que uno podría pretender de este tipo de herramientas. Pero bueno, yo no sabía absolutamente nada de Machine Learning, ni inteligencia artificial, ni nada, ni me interesaba porque sabía que era mucho más complejo de lo que yo en aquella época podía manejar. Es increíble que al menos en ese aspecto haya manejado un nivel de realismo.
porque bueno uno piensa bueno es más fácil hoy en día y qué sé yo sí pero hay un grado de complejidad Entonces bueno, quería hacer así una especie de asistente, o una herramienta, o un multiherramienta en realidad, tipo navaja suiza de quiero que tenga veinte mil cosas que me resuelvan un montón de problemas en una sola utilidad.
que curiosamente en mis bases de inspiración esto se parece más a una aplicación al estilo de una tablet o de lo que hoy en día conoceríamos como un totem de alguna entidad como ser un banco o o alguna otra institución que tiene un totem para atención al cliente o algo parecido o para facilitar la derivación bueno algo parecido con una mezcla de tablet de algo raro era
Significa que tenía un totem, no, significa que tenía una tablet. Técnicamente sí, pero no podía programar para eso en aquella época. Pero yo me orientaba mucho en lo que era desktop. O sea, usaba mucho la computadora, entonces, listo. Ese proyecto tuvo un montón de intentos y creo que he gastado muchísimo tiempo intentando hacer que esa cosa funcione.
se abandonó completamente, tuvo un montón de formas de encararlo y todo, y nada, finalmente lo terminé abandonando porque tenía otras prioridades, básicamente, y eso fueron de los primeros intentos. Otros intentos que fueron un poco mejor, algunos más pulidos que otros, fueron herramientas que hice para ayudarme a manejar contenido. Y esto va más relacionado cuando ya existía CodeTime o Script Time.
en en Spreaker cuánto tiempo pasó de eso que al principio cuando empezamos a transmitir con GoTime era por Spreaker y al tiempo tipo un año y pico después creo que fue se pasó a Al formato en YouTube por el hecho de que Argentina estaba teniendo problemas cambiarios. Parece que nunca aprendimos. Y era muy caro para alguien que no trabajaba pagar en aquella época cuarenta dólares. Hoy en día pagar cuarenta dólares es otra cuestión, pero el almacenamiento no era lo más convincente.
Y la verdad que no valía la pena y fue cuando migré a YouTube. Ahora, en el medio de todo eso, en realidad la migración fue a EVOX. Y los EV en vivo se hacen en YouTube. El problemita es que. Migrar contenido de Spreaker a evox y modificar la información, porque había un problema, las descripciones tenían enlaces al propio Spreaker y cosas por el estilo.
Y si lo migraba a iVox, iba a hacer referencia a algo que iba a dejar de existir. Entonces yo tenía la opción de agarrar y a mano editar las descripciones de todos los episodios, yo queriendo que cumplan con un cierto formato. Lo cual iba a tomar bastante tiempo y me daba una fiaca importante. Y hay algo que tengo un pequeño problemita. Hay tareas repetitivas que me dan muy pocas ganas de hacer y prefiero a veces gastar tiempo en hacer una herramienta.
Que me puede llegar a tomar mucho más tiempo desarrollarla, pero que en el proceso del desarrollo yo aprenda algo. Mientras que haciendo una tarea repetitiva, no aprendí nada. Si me hago ágil haciendo una tarea repetitiva que probablemente no la haga en un buen tiempo, o que si la tengan que hacer en en el tiempo, de hecho me pasaba cuando en su tiempo tenía que descargar contenido.
ir a copiar un enlace, pegarlo, copiar, pegarlo, copiar, ir acá, extraer tal, copiar, y era un robot que cada tanto metía la pata y tenía que ver en dónde me había quedado en esta automatización mental del proceso. Bueno, cuando estaba haciendo las migraciones de Spreaker a Abox, también pasaba que la migración no siempre sucedía de la forma correcta.
O las descripciones no siempre se importaban bien, o solamente se importaba una parte, había muchas cosas que podían salir mal. Entonces, en aquella época lo que desarrollé. En principio, esa sí fue una herramienta visual. De hecho, me acuerdo que fueron los tiempos donde aprendí a usar el Java Effect. Y lo que había hecho era algo que me permitía, utilizando algunas APIs, explorar el contenido disponible.
Por ejemplo, de alguna de las plataformas, y de hecho, durante la migración de Spreaker y Vox dije: A ver,¿puedo hacer algo que me muestre todos los episodios y algunos datos de los mismos? Y exportarlo y genere un feed RCS y cosas por el estilo? Sí, y me hizo una herramienta en Java.
Que hacía eso básicamente, y de hecho tenía un problemita yo, sobre todo porque algo que tenía que hacer era descargarme una cosa que quería tener una copia de los episodios bacapeados con sus correspondientes descripciones. Eso era algo complicado. Ahora, en su tiempo, lo que hice fue esta herramienta visual que me permitía explorar el contenido de iVoox. Ahora, Evox tiene un pequeño problema: no tiene APIs públicas. Splicker sí tenía, nunca la llegué a usar porque nunca tramité el token.
Que tampoco sabían en aquella época muy bien lo que era un token. Eran joven inocente. Y dije, bueno, a ver,¿cómo lo puedo resolver? Y algo que estaba viendo en aquella época era el tema del scrapping. Algo que descubrí en aquella época era el tema del scrapping. Scrapping básicamente es el proceso de agarrar y extraer información de explorar contenido, por ejemplo, web.
Es decir, yo puedo tener una API a la cual yo le hago una consulta, o sea la página está habilitada a responderme si yo le hago una pregunta, en un formato preestablecido que es fácil de leer, para una computadora por lo menos. Bueno, o puedo agarrar y tener que interactuar con la página para hacer todo, pero como me daba fiaca hacerlo uno a uno, los episodios y para editarlos lo mismo era una fiaca.
Lo que termine haciendo Fue una herramienta que no solamente me permitía descargar todos los episodios en una carpeta, sino que también me permitía editar todas las descripciones de todos los episodios para que todas las descripciones de todos los episodios tuviesen un formato en particular. Eso también lo tuve que replicar con el caso de YouTube. En el caso de Evox. Lo que hacía la herramienta era literalmente levantar un navegador. Creo que en aquella época usaba Firefox para esto.
E ir navegando una por una los o sea primero escanear todos los episodios ahí va recorriendo página por página la lista de episodios yo tenía que agarrar Abrir la herramienta y decirle que quería empezar el proceso. El proceso levantaba una página web como en la home de iVoox. Yo tenía que iniciar sesión y darle a continuar. Cuando le daba a continuar. ya sabía de que podía contar con que uno estaba autenticado. Entonces cuando uno estaba autenticado iba a la página de todos los episodios.
Iba a la página 1, y luego a la 2, y luego a la 3, y luego a la 4, y luego la 5, así hasta llegar a la última.¿Cuál era la última? No lo sabía. Simplemente cuando no encontraba ninguna cosa extraíble, consideraba que terminó. Sí, eso puede fallar. O sea, si tengo un pequeño problema de conexión, perdí un pedazo importante de la descarga. Pero bueno, era lo suficientemente bueno. Y funcionaba bien porque pueden fijar que estuviesen todo y ya está. Era bastante fácil.
Después de eso lo que tenía que hacer era, bueno, ya tengo la lista, de eso extraigo por ejemplo el enlace del episodio, el título del episodio, la fecha de De publicación del episodio, algunos datos básicos, y con el enlace del episodio yo podía meterme al episodio uno por uno y extraer información un poco más detallada.
Entonces ahí es donde yo podía agarrar y ya llegada a esta altura, después dije: No, la aplicación visual es lindo para visualizar, es lindo para descargar, pero es horrible para editar. Entonces, para editar, empecé a usar escrito. Y ahí es donde hice los primeros scripts que agarraban y tenían un archivo de formato. Entonces lo que hacían era descargar el episodio de evox.
Sacarle un pedacito de la descripción. Sacar la descripción entera. Reemplazarla al principio. Los reemplazaba entero. Y cuando quise hacerlo más inteligente, ahí empecé a usar script. Y ahí dije, no, en vez de reemplazar la descripción entera, reemplazo la descripción entera preservando la mitad de la información, pero cambiando, por ejemplo, la información de contacto por algo que me interese. o sea por nueva información de contacto actualizado porque la mitad de los enlaces estaban rojos
Por ejemplo, entonces todo ese proceso. Esto lo que hacía: primero indexaba todo, o sea, creaba un índice de bueno, estos son todos los episodios. Luego entraba a editar el primero, en lo cual extraía primero la descripción. La modificaba, la volvía a insertar y la guardaba. Y era lindo porque uno le daba correr a la navegada. O sea, corría a la aplicación, se logueaba.
Y lo dejaba más o menos una media hora, 40 minutos, y la máquina rapidísima hubo una página cargada. O sea, uno podía ver todo el proceso. Yo no podía tocar esa ventana en el navegador. Esa era la única condición del funcionamiento. Porque, bueno, la ventana tiene que ser interactiva, porque la carga del contenido de Evox era dinámica, no era estática. Eh, evox tiene, en aquella época al menos tenía, ya nunca más lo volví a intentar, esto estoy hablando del año dos mil.
16, calculo. No me acuerdo exactamente. Puedo datarlo, pero no tiene mucho sentido lo que va del episodio. No era una página muy bonita y de hecho la parte de reproducción sigue siendo bastante fea en múltiples aspectos. O sea, el diseño en general era lindo. Ahora la la parte para podcast, la verdad que la mejoraron bastante. O sea, para los que producen podcast me gusta la interfaz, pero para el escuchar, la página deja mucho.
Sí, bueno, eso lo aprendí en aquella época y le di un uso interno nomás. Pero bueno, fue una semillita de... Creo que le estoy agarrando el gusto a este tipo de cuestiones. Eh hubieron un montón de otras cosas, además de lo que estoy comentando. Está el mítico script destructor de todo, que el que me borró dos telas de información porque puse mal un if, literalmente.
Recomiendo escuchar el episodio de Anécdotas Jordánicas. Donde habló de eso. De cómo perdí dos teras de información y la recuperé. Hubieron otros scripts variados. Hubieron de todo un poco. No, no voy a entrar en detalle porque ni me lo acuerdo todo, hice un montón de scripts, algunos mejores, algunos peores, muchos de automatización de cosas, o sea, me automaticé muchas cosas.
Yo aprendí un montón en el proceso. Incluso empecé a desarrollar algunas que otras bibliotecas, o librerías, o libraries en inglés, o sea, library y biblioteca, pero es muy común que uno translitere mal y diga librería. A los puristas eso no les gusta, sepa usted disculpar. Somos gente de habla hispana y a veces cometemos errores, y cuando uno se le pega la expresión, es difícil de pegar.
Entonces bueno, he hecho algunas bibliotecas para cosas que consideraba útiles. Hoy en día veo esas bibliotecas y las veo con suma vergüenza. Pero bueno, es el clásico ah síntoma que tiene uno como desarrollador de que uno ve su código pasado y dice que porquería que es esta y uno puede haber pasado un mes y decir que porquería es esta, y si usted no se hace esos cuestionamientos después de un buen tiempo
Probablemente usted está estancado. No necesariamente, pero es muy probable. Pero bueno, con eso fui aprendiendo y todavía no me metí en lo que es la parte laboral, que creo que es la parte jugosa de. lo que empecé a hacer después de eso yo a mi una costumbre que tengo ya hace tiempo es tratar de tener copias offline y en algunos casos tener cosas impresas de material público pero que las páginas no lo dejan un formato lindo para
imprimir por ejemplo porque uno se imprime de un navegador primero tiene que ir página por página e imprimir uno a uno implica un desperdicio de papel y hay veces que uno lo quiere formatear por ejemplo hubo en su tiempo unas cosas que las quise imprimir en tamaño a 5 Y si lo ponía como lo imprime un navegador, era un desastre en desperdiciar media página, un header, footer y un montón de cosas que ponía la propia página como contenido en el imprimible.
Entonces lo que empecé a hacer es extraer la información de las páginas, para lo cual tenía que tener un índice, pero estas páginas, en vez de tener APIs o cosas lindas, no tenían nada, eras como, bueno, si lo ves, perfecto, pero si no, que las O sea, no tenía, no te he dado ninguna herramienta, no estaba pensada para desarrollar ni nada. Es texto simplemente. Entonces,¿cómo me la arreglé? Bueno.
Empecé a investigar un poco. Y dije, bueno, en su tiempo hice scrapping. Vamos a hacer scrapping de nuevo. Entonces scrapeaba la información, primero me descargaba un índice en base a la información que extraía y con el índice recorría cada uno de los elementos. después también tenía que tener en consideración de que algunas de estas páginas tenían protección para evitar el abuso de
¿Cómo se llama? de bots o cosas por el estilo. Hay trucos para saltarse eso. Entre ellas implican poner demoras en las consultas, o hay veces que directamente existe un conteo de Una cantidad máxima de consultas que puedes hacer en un periodo de tiempo. Punto. O sea, no importa lo que hagas, es como bueno, sos vos, hoy viniste más de cierta cantidad de veces y te pasaste de la cuota que podés acceder.
Cortamos ahí. De hecho, eso fue algo que aprendí por las malas y eso implicaba que la descarga se cortaba a la mitad y se perdía la mitad del trabajo. Pero bueno, aprendí a formatear contenido, aprendí a hacer un montón de cosas, aprendí por ejemplo que el formato ODT o el formato de Open Office, básicamente, o de LibreOffice hoy en día, es open source, y que hay una de las formas que se guarda en binario y otra de las formas que se guarda en una especie de XML medio raro.
Y bueno, dije, a ver,¿existe alguna forma de que esté en texto plano? Sí, la que se guarda una especie de XML medio raro, en vez de en binario. Ok. Y aprendí ahí a generar PDFs directamente con. En el formato exacto que yo lo quería. Porque el contenido era texto semiplano. Por así decirlo, eran pedazos de HTML. Pero lo que los quería era formatear de maneras muy particulares.
Para que tengas ciertas cosas bien tituladas, ciertas cosas más en negrita, ciertas cosas más en fuente común y que esté con una fuente en particular todo. Y así. O sea, quería un formateo lindo. Y lo terminé logrando.¿Qué aprendí en todo este proceso? Que está bueno hacer el proceso por etapas, y de hecho es el mismo concepto que tiene Linux: Linux, las herramientas.
Que existen, son herramientas relativamente sencillas, pero que hacen una tarea bien. El problema de mis scripts al principio es que eran scripts masivos, eran muy grandes y hacían muchas cosas.¿Qué es lo que aprendí de eso? Bueno, en vez de hacer un script gigante. Porque van a hacer scripts más pequeños que guarden resultados temporales y con esos resultados temporales yo si se me rompe algo a mitad de camino puedo reanudar desde un punto medio.
Entonces si tiene 5 etapas la cosa, script 1, script 2, script 3, script 4 y script 5, si se rompen el script 3, puedo volver a correr el script 3. Y no pierdo todo el trabajo realizado. Eso es algo que parece tonto, pero es una lección muy valiosa.
Todo lo que les estoy contando son medio en el orden en que lo fui aprendiendo y recomiendo que presten atención a esas cosas. Si la tarea que van a realizar es muy grande, sepárenla en partes. Va a ser más fácil de hacer, es menos confuso, menos carga mental. E incluso algunas de estas partes las pueden reciclar. Que de hecho, esto no creo que llegue a comentar eso, pero hay una herramienta que quiere implementar todavía. Que es como de todo lo que aprendí, es el resultado.
Así que vamos a ver cómo sale eso. Pero más adelante no. Pero bueno, eso ya fue algo importante que aprendí en aquella época. Y la idea es que fui creando distintos scripts para extraer contenido de distintos lugares y que me fuese mucho más sencillo. En algunos casos, que yo, podcasts que no estaban en un Feeder CS, por ejemplo.
Ejemplo, lo que pasa en iVoox. Pero no eran, en este caso en Evox, eran otras plataformas y era gente que subía contenido en su propia página, pero no te habilitaba de forma cómoda descargarlo cuando estaba la opción de descargarlo. Pero bueno, no había forma cómoda y no había una API, no había nada, no había un feed, nada estandarizado. Entonces, bueno, había que hacer algo más custom.
Y así, bueno, como uno tenía que ir jugando o descargar transcripts porque el contenido estaba en inglés, pero que tenía la dicha de que el contenido también tenía el transcript, o sea la transcripción en inglés.
Y eso era un golazo, y quería las dos cosas y acomodar el contenido y todo eso. Y bueno, fueron múltiples scripts de los cuales de cada uno fui aprendiendo algo más de lo anterior. Por ejemplo, después le agregué un poquitito de entre comillas más inteligencia, que a la hora de descargar sea incremental.
¿Qué significa eso? Que si ya está descargado, no lo vuelvo a descargar. Entonces yo puedo ir, tenía las cosas al día. Corro el script hoy, escrapea, hace todo lo que tiene que hacer y descarga el contenido. Y lo vuelvo a correr dentro de no sé, dos o tres meses. Y hay más contenido, solamente descarga lo nuevo.
Y eso fue un avance en la capacidad del desarrollo de la herramienta. Uno de los ejemplos de eso era la OpenFIN, creo que se llamaba la página, que es la un proyecto de la facultad de ingeniería de Uruguay. Quiero ver.
que bueno eh OpenFin que es una un proyecto en donde los alumnos mismos graban las clases y los suben todos de distintos temas de una facultad de ingeniería y y hacer las cosas a mano de un dolor de cabeza y descargar tener una copia offline de contenido potencial que se puede perder es algo muy
Entonces, en su tiempo, de hecho, lo he publicado en CodeTime, un script que hace eso. Después lo he mejorado, pero nunca más lo he publicado. Y no sé si la página sigue manteniendo en el mismo formato, si sigue existiendo. No lo he revisto. Pero bueno, todo esto es medio fuera de lo que es el ámbito laboral y más amateur. Habiendo dicho eso.
Yo creo que la parte más interesante es la parte más bien laboral. Donde empecé a aplicar esto de una forma más profesional a un punto en donde aquellas herramientas que estoy comentando me parecen algo bastante rústico. O sea, yo mismo viendo el resultado en el momento, diciendo ah, esto funciona, pero se ve medio feo. a hoy en día haber hecho herramientas de las cuales puedo decir que estoy orgulloso. Herramientas de las cuales las veo y digo, wow, se ve lindo y funciona bien.
¿Qué mejor?¿Son perfectas? No, en absoluto. Pero ya son cosas más decentes. Y nuevamente el proceso fue iterativo, o sea, fue mejorando de a poco. Al principio, muchas cosas eran más o menos lo que venía haciendo, como scripts para automatizar compilación. Por ejemplo, me acuerdo que en su tiempo me tocó un proyecto en Ionic.
Que tenía una versión muy vieja de las librerías y todo. Y compilarlo no era trivial, no era como al principio. O sea, Ionic es una tecnología para desarrollar aplicaciones híbridas. En donde el contenido prácticamente es web, o sea, es un Angular. Donde uno corre webs, por así decirlo, pero bueno, embebido en aplicaciones, su tiempo corría con Apache y Córdoba y todo ese tipo de cuestiones, sigue existiendo.
personalmente nunca me gustó del todo pero he tenido que trabajar con eso y pude trabajar Y para un proyecto el problema que había era que me dieron el proyecto sin explicar cómo se compilaba, cómo se comp, me dieron un código fuente en un punto zip, no, en un punto rar. Era en un punto rar. Y no sé, necesitamos una nueva feature. Así yo no sabía Ioni, lo aprendí. No necesité aprender demasiado a ese respecto. Permiso, voy a tomar un poco de agua.
Qué lindo que toma la weón. Cuando hace calor me estoy cantando, claro. Pero bueno. El problema del proyecto es que no es como al principio, que uno corre dos comandos locos que utilizan node y funcionan. Sino que el proyecto tenas particularidades que no estaban documentadas en ningún lugar y tuve que bueno divertirme leyendo documentación y haciendo prueba y error hasta que logré compilar.
Y una vez que logré compilar tuve que poder correrlo, lo cual tampoco fue trivial. Y después de que logré correrlo, tuve que aprender a debugar algunas cosas. Luego que aprendí a debuguear, tuve que aprender a cómo generar una versión de la aplicación y firmar. Y ese último paso me costó mucho. Al punto, ya creo que me habrá tomado por lo menos más de un día darle la. encontrar la vuelta para ver cómo se hacía. Que decidí y dije, no, yo no quiero volver a hacer este proceso nunca más.
O sea, hacer el proceso manual era un dolor de cabeza, así que me hice un script que me lo automaticé. Y así, muchos de los scripts que hice fueron de ese estilo de existe esta tarea repetitiva que me tiene cansado y no lo quiero volver a hacer porque es complejo, voy a hacer una. Y así escripty a un montón de cosas.
Pero bueno, eso no es todo porque esa no es la parte interesante. Después un proyecto que se vio frustrado por falta de tiempo y falta de incentivo, era cuando, conectando con la anécdota de que estuve haciendo un generador de informes para un electrocardiógrafo en particular un modelo electrocardiógrafo que tenían en una empresa en la que trabajaba y los utilizaban para una aplicación médica
Y una de las cosas que hacía era conectarse a un electrocardiógrafo, y el electrocardiógrafo, bueno, uno tenía el electrocardiograma ahí, la idea era transferir el electrocardiograma al teléfono y poder generar un informe, cosa que en realidad el fabricante anterior ya hacía. Pero bueno, como cambiaron de proveedor de electrocardiógrafo, el nuevo proveedor lo único que hacía era electrocardiogramas. A lo sumo te lo transfería por Bluetooth.
En uno de los últimos episodios de COVID comenté toda esta anécdota. Y bueno, lo que lleva a eso es que algo que se me ocurrió en un momento para facilitar un montón de pruebas era crear un electrocardiógrafo virtual.
por así decirlo, o sea un electrodiógrafo falso, un simulador de electrocardiógrafo porque Porque no nos podían dar a todos los empleados un electrocardiógrafo, habían dos, y uno se lo daban a un médico para probar, y otro me lo dieron a mí mientras estaba desarrollando la herramienta.
El tema es que si uno necesita hacer pruebas más a futuro, muchas cosas las puede uno simular con otro teléfono. Si uno tiene dos teléfonos, uno para desarrollar y el otro para correr en el simulador, uno podría agarrar y conectarse de uno al otro y listo. De hecho, hay una parte de todo ese proceso que no sabría exactamente cómo se hace. Pero fuera de eso, tengo la forma de resolverlo porque implementé toda la.
la interconexión entre un teléfono y directo caderaf solamente es ahora generar contenido con el mismo formato y Entonces podría ser una prueba end to end virtualizada, por así decirlo. Obviamente, esto que estoy comentando no es perfecto, está sujeto a asumir que el simulador funciona de forma similar. A un electrocalígrafo normal, pero para hacer algunas pruebas rápidas sirve.
Bueno,¿por qué no la desarrollé? Porque estaba saliendo de ese proyecto, no tenía el tiempo para desarrollarlo y habían otras prioridades. Entonces Fue como una de esas cositas que me quedó a mí de me hubiese encantado hacerla porque era un lindo desafío, pero siendo honesto, tengo otras prioridades, entonces la propia empresa no estaba muy interesada en eso, aunque hoy en día veo que les vendría bien, lo sé porque todavía tengo contacto con gente que trabaja en ese proyecto y
Sé que les vendría bien esa herramienta. Pero bueno, al final nunca se llegó a implementar. Después, en otro trabajo en el que tuve, no teníamos una muy mala idea, no teníamos entorno de prueba. todas las pruebas se hacían en una en realidad si había entorno de pruebas, o sea, había un entorno productivo que es lo que usan los clientes y un entorno de pruebas, pero que estaba la mitad del tiempo roto.
Y corrompido, o sea, con información mal que no nos facilitaba hacer prueba, y cuando teníamos que hacer alguna prueba sencilla, era un dolor de cabeza. Mira, momento, entonces se soluciona con testing y un montón de cosas. Sí, sí, de hecho. Pero bueno, dada la realidad y la situación, no teníamos chance de hacer eso. Entonces ahí desarrollé lo que yo considero el principio de las herramientas más interesantes.
Las cuales sí vieron la luz y fueron de gran ayuda. Porque hasta ahora eran cosas amateur que uno hacía porque sí. Porque le daba fiaca hacer otras cosas. En este caso, ya estas herramientas empezaron a aportar valor. No voy a dar los nombres oficiales que le dimos a esta herramienta porque también algo que hace uno, no sé cómo sean los demás, pero personalmente me gusta darle nombres a las herramientas.
No es que vaya a llamar Larry a una herramienta, pero si revisan, por ejemplo, unas herramientas más conocidas para automatización de tarea, se llama Jenkins. sea como el nombre de un mayordomo Bueno, justamente, al que no la conozca o busque en su motor de búsqueda favorito que es Jenkins o a los fanáticos de la inteligencia artificial busquen ahí pregunten a chat GPT o a quien corresponda y te va a responder quién es Jenkins
Y bueno, básicamente aún le pusieron ese nombre y así cada herramienta uno le suele poner un nombre, es algo lindo. Sucede de la misma manera con muchas bibliotecas, tienen nombres. Y es una forma fácil para hacer referencia y de hecho uno le agarra cariño a ese tipo de cuestiones. No voy a dar los nombres oficiales porque algunos revelan cierta naturaleza de dónde estarían implementadas. Y tampoco vienen al caso.
Pero bueno, lo primero que hice fue un moqueador de pantallas, por así decirlo. Una de las aplicaciones en las que trabajé justamente, que no teníamos mucha forma de probar. Lo que hace es descargar un JSON que contiene toda la información con la cual uno es capaz de renderizar una pantalla entera. Ya, no es que descarga uno un HTML. Uno descarga un JSON que dice, bueno, a ver, en esta pantalla.
En el header tenemos tal y tal y tal opción. En el contenido tenemos una lista que tiene primero, por ejemplo, el listado.¿Cómo decirlo sin que? Se revele la naturaleza del contenido.
eh, tenemos un listado de textos, después tenemos un múltiple choice, por así decirlo, después tenemos los datos de un una promoción por decir cualquier cosa algunos botones para accionar y todo esto era se estructuraba o sea como si fuese un formulario Desde Baken, o sea Baken mandaba un JSON Nosotros decíamos, che, la pantalla tal con estos parámetros.
Y como si fuese una especie de HTML, pero era en formato.json, la aplicación lo interpretaba, renderizaba algo a medida de lo que se necesitaba. Y la aplicación funcionaba más o menos bien. Yo considero que tenía mejoras la interacción. Pero teníamos el problema de que, si queríamos probar a ver qué pasa, si hay cierto contenido. cómo se vería cierto contenido en pantalla.
Era un dolor de cabeza porque una de dos. O íbamos al entorno de test y le decíamos, che, quiero que me camen esta información por esto. Y era un dolor de cabeza hacer eso. Era muy demorado, muy burocrático. Y ralentizaba el trabajo de todos. O bueno, uno se las arreglaba como podía. Yo dije, a ver, momento, no puede ser que nos tome tanto tiempo esto. Entonces lo que dije, voy a ser un interventor de pantallas.
Entonces, yo le llamé así, por así decirlo. Que en realidad lo que hace es moquear. O sea, en vez de que se ejecute el request al backend. El interventor se encargaba de justamente ponerse en el medio. Era una especie de proxy. Literalmente. Sin ser un proxy, oficialmente. Era algo interno dentro de la propia aplicación. Que para cuando hacemos pruebas.
Si uno configura unos archivos dentro del proyecto, o sea, me encargué de crear unos archivos para hacer este tipo de pruebas. Y me aseguré que solamente funcione cuando estamos haciendo pruebas. O sea, en producción no podía funcionar eso. Como las pantallas, la forma de hacer referencia era mediante una especie de pseudo-dirección, yo decía: bueno, si hay una dirección así, en vez de hacer la consulta, quiero que respondas el siguiente llorado. O sea, una especie de proxy que moquea respuesta.
¿Cómo funcionaba esto? Un bonito archivo de texto plano dentro del propio proyecto que solamente se leía si estábamos en entorno de pruebas, si estábamos en entorno productivo, no se leía el archivo. Y bueno, básicamente lo que se hacía era leer el contenido del archivo cuando arrancaba la aplicación. Y estaba en el entorno correcto.
Y en base a eso, cuando uno hacía una consulta o cuando uno quería hacer una consulta, previamente se fijaba:¿puedo evitar hacer la consulta en base a responder algo harcodeado? Sí. Bueno, respondo la respuesta harcodeada. Si no se podía, ejecutaba el request como se hacía normalmente. Eso que parece una tontería y lo hice para mí mismo para poder hacer algunas pruebas sencillas, terminó escalando en que literalmente todos los que desarrollábamos en iOS lo empezamos a usar.
Porque era mucho más cómodo para hacer pruebas. Y no dependíamos de que Baken nos dé la respuesta necesariamente ya. Entonces podíamos diferir de que bueno. Aunque Bakén todavía no tenga la solución hecha, nosotros podemos hacer algunas pruebas básicas. ¿Es la mejor manera de trabajar? No es la mejor manera de trabajar. Pero servía.¿Qué desventajas tenía? El formato del archivo era medio raro. O sea, cómo se estructuró la información y muchos compañeros no llegaron a entender cómo.
Como bueno, o sea, les parecía raro, pero bueno, no lo quería hacer en un JSON. Porque se hacía un poco más difícil la manipulación de ciertas cosas. Era un archivo que admitía multirrespuestas. Tenía un par de especialidades. Pero bueno. Fue un primer paso y la verdad que nos simplificó la vida. La desventaja que tenía era que cada vez que uno quería cambiar un JSON tenía que recompilar la aplicación. lo cual tomaba un poco de tiempo
Pero bueno, era una solución bastante razonable, dado nuestro problema. O sea, pasamos de no poder hacer nada y demorar días innecesariamente a que ciertas pruebas las podíamos hacer directamente. O sea, bastantes pruebas en un día si uno se pone todo el día con todas las Porque tomaba recompilar, no sé, tres. Minutos más o menos, igual cuando ya cacheaba, era mucho más rápido. A veces al minuto ya estaba. Entonces, hacer de una prueba a otra podía demorar dos minutos.
Y era mucho más rápido que hacer todo un cambio de configuración en el backend para hacer una prueba y después tener que volver y así. Era un dolor de cabeza. Con esta herramienta se resolvió. O sea, no es tanto una herramienta, es algo incorporado en la propia aplicación. No me gustaba eso que estuviese dentro de la propia aplicación, pero bueno, era una solución rápida.
Lo cual me lleva a pasar a la última etapa, que es donde estoy hoy en día, y acá es donde las herramientas se empiezan a poner interesantes y donde el ritmo de creación de herramientas se incrementa muchísimo. Esto sucedió principalmente en mi trabajo actual.
Y ahí es donde desarrollé varias herramientas, descubrí mi gusto más por hacer herramientas, es divertido, es desafiante, no es fácil, y ahí es donde creo que podemos sacar el jugo a nivel de contenido de cosas que me gustaría que aprendan, lo que escuchan esto. de que le den una oportunidad a esto y a qué hago referencia
Vamos, no necesariamente en orden cronológico, pero en distintas herramientas que fue implementando. Una de las cosas que se hacen en la empresa es a nivel de iOS, aunque sea, para testear. Tenemos unit testing, tenemos algunos test de integración, tenemos un montón de cosas. Pero también tenemos algo llamado snapshot testing. Que es una especie de testing. De unit testing especial. Que consiste en, como nosotros trabajamos en aplicaciones para teléfonos.
O sea, desarrollamos una aplicación para teléfonos. Algo que podemos hacer para saber de que las cosas se están comportando más o menos bien. Es yo ejecuto algo. como es algo visual le saco una captura o sea un snapshot en inglés snapshot o sea una captura Y tomo eso como referencia. Entonces el test lo que hace es, cuando yo quiero probar un código, ejecuto el código, eso genera un resultado visual, le saco un snapshot y lo comparo con la captura anterior que tiene que estar guardada.
La biblioteca que se encarga de hacer el snapshot testing se encarga justamente la primera vez que uno ejecuta el test. Saca un snapshot y lo guarda. A partir de ahí se toma eso como referencia. Cuestión de que si uno cambia algo visualmente Los snapshots no van a coincidir. Y como no coinciden, el test falla. Se considera que el test falló. Alguno mirá, momento, quizás uno realmente quiere ese cambio visual. Bueno, lo que tiene que hacer es dar la instrucción de pisar.
El snapshot anterior por el nuevo snapshot y el nuevo snapshot es considerado la nueva fuente de verdad. O sea, es este es el snapshot que. ¿Cuál era el problema que teníamos con esto? O sea, esto funcionaba bien, y de hecho lo seguimos usando hasta el día de hoy con algunas mejoras.
El problema es que cuando falla un test, Escupe un error largo que tiene dos rutas de archivo gigante, y para uno ver, porque también está esto: a ver, yo acabo de tocar algo de código, o creo no haber roto nada, ejecuto los test, se rompió un snapshot. Ok, entonces algo de lo que toqué cambió el cómo se comportaba la aplicación hasta ahora. Y yo no quería cambiar eso. Hay veces que uno quiere, pero hay veces que no. Entonces uno tiene que ver a ver qué fue lo que cambió.
Entonces se da la ruta del archivo referencia y la ruta del archivo de la foto actual. O sea, del snapshot que se sacó que no coincidió con la referencia. El problema es que eso se mostraba en un mensaje de error largo, horrible, y uno tenía que agarrar, copiar una ruta, pegarla, terminar, ejecutarla, copiar la otra ruta, pegarla a terminar, ejecutarla, para abrir los dos archivos, y uno terminaba teniendo veinte aplicaciones.
o veinte ventanas de capturas de pantalla y uno se empezaba a perder Y nuevamente a mí me da una fiaca tener que agarrar el texto que a veces que se te truncaba, que a veces que no, que seleccionabas y se seleccionó mal, le puso un carácter de más, eso no ha variado como una ruta, tengo que volver a agarrar, pegar, modificar. Me da una fiaca bárbara.
Y dije, bueno, voy a hacer una utilidad de línea de comando, porque algo que aprendí con el tiempo, las utilidades visuales son muy lindas, pero toman mucho más tiempo de hacer. Pero después dije, momento, estos son snapshots, son algo visual. Voy a hacer una aplicación la cual me permite visualizar esto. Y de hecho, esa aplicación la estamos usando hasta el día de hoy.
No voy a dar el nombre de la aplicación, porque da una pita. Importante varias cosas. Es un nombre interno que tenemos. Pero bueno, lo que permite esta aplicación es básicamente. Si yo copio ese mensaje de error. Y lo pego en la aplicación, se muestran en paralelo las dos capturas. Y uno puede decir, ah, cambió esto. Con el tiempo le fui mejorando. O sea, le di la capacidad de directamente explorar un proyecto y buscar todos los snapshots que tiene el proyecto.
Después le fui dando más poder.¿Qué es esto? Bueno, puedo hacerle suma a las imágenes. Después le fui dando más poder. Puede analizar. Cuando algún snapshot, por ejemplo, quedó huérfano.¿Qué significa esto? Que existe el snapshot, pero no existe el test.
Entonces un snapshot que lo estamos guardando innecesariamente. Porque podemos borrar el test, pero el snapshot sigue ahí. La ID no se encarga de limpiar ese tipo de cosas. Porque, bueno, los snapshots en realidad se generan por un efecto secundario de una biblioteca. Y eso nos lleva a que ok, era un engorro eso, porque encima eso ocupa mucho espacio, hace más lento el clonado de repositorio. Entonces, bueno, dijimos, listo, hay que encontrar una solución y le fui agregando más y más y más.
Y uno se preguntará, pará, y cuál es la gracia de esto? Hiciste una aplicación, qué onda? Bueno, fue mi primera aplicación en Swift VUI para macOS, porque como desarrollamos para iOS, trabajamos en Macs, entonces dije, bueno, a ver. Yo sé cosas de Swift UI, nunca lo apliqué en una aplicación demasiado grande. Y quiero aprender Swift VI en macOS porque algo que Apple prometió fue bueno con Swift VI vos podés programar en iOS, macOS, TVOS, WHOS y ahora en Vision OS creo que es.
Con el mismo lenguaje, con prácticamente la misma sintaxis, con casi las mismas bibliotecas, y funciona todo interoperable. Es decir, si yo hago una aplicación para iPhone, el código para la aplicación para Mac es prácticamente el mismo. Y yo dije: A ver,¿qué tan cierto es esto? Porque yo había probado en hacer aplicaciones para iPhone, pero dije,¿cómo hacer hacer aplicaciones para Mac? Tenía curiosidad. Dije, bueno, dos por uno.
Me interesa hacer esta herramienta y me interesa hacerlo en Swift UI y me interesa aprender a hacer aplicaciones para Mac nativas. porque lo fue algo que tuve frustrado hace mucho tiempo de querer hacerlo de la forma habitual y era un dolor de cabeza y con Swiss V ahí tengo que admitir que se hace mucho más Pero también quería aprender a hacer TDD en un proyecto, honestamente, porque TDD es algo muy lindo que se habla en la teoría.
Pero que uno no lo aplica del todo en la práctica. Y dije: A ver, me voy a forzar en este proyecto a hacer TD puro. TDD es una técnica de desarrollo que consiste en primero escribir un test. No escribir nada de código ejecutable productivo, entonces el test va a fallar. Uno tiene que escribir el mínimo código que sirva para que el test no falle. Después uno vuelve a correr los test. Los test pasan.
Y ahí uno puede refactorizar si es necesario y repite este ciclo. Entonces uno va escribiendo primero el test y luego el código. Primero el test, luego el código, primero el test, luego el código. Y uno dice, che, no es antiintuitivo, es muy antiintuitivo. Pero técnicamente funciona. Yo mismo he criticado esta modalidad hace años atrás y he aprendido esta modalidad.¿Significa que lo aplico todos los días en mi vida laboral? No. Claramente no.
Pero en esta herramienta me forcé a hacer TD. O sea dije, quiero obligarme a hacer TD, quiero obligarme a algo que me cuesta mucho. Porque me es antiintuitivo. ¿Y qué es lo que dice? Bueno. Me obligué a hacer un proyecto en una tecnología que no dominaba, para hacer una utilidad que no tenía de todo claro cómo hacerla, usando una técnica que no me sale muy bien. O sea, tenía todas las de perder.
Me costó un buen tiempo, pero la herramienta salió. Aprendí a hacer TD, aprendí a hacer aplicaciones en Swift UI. Y aprendí a hacer aplicaciones para Mac 3x1. Y encima hice una herramienta que resolvía un problema real que teníamos. De hecho, después lo compartí de forma interna.
Y mis compañeros con los que trabajaban en el equipo estaban felices de la vida, y el resto de los compañeros que tenemos que trabajamos en iOS también lo utilizan. Hoy en día es una herramienta disponible oficialmente para que podamos
ayudarnos en el testing y nos acelera mucho cuando se rompe un snapshot uno va al error, copia el código, abre la aplicación, lo pega y a ver ah, le rompí el campo de texto que se movió un poco, listo Así de sencillo, o sea, nos aceleró mucho y es visualmente agradable. Acá saludamos a Pablo Kilkal, no sé cómo leerlo.
Te voy a decir Pablo. Dice,¿qué tal David? Todo bien, che, acá contando anécdotas sobre programas y scripts que fui implementando. Sentite libre de hacer preguntas. Y saludamos acá el gran. Dame Antis Cornea, que es muy buena.¿Qué hace Dami?¿Todo bien? Gracias por pasarte, che. Un abrazo grande y espero que esté todo bien por allá. Mando un abrazo enorme. Pásense por el canal de Damián y Cornelia Si quieren reseñas variadas y con un formato muy. no sé si decirlo familiar, pero muy.
mucho más humano honestamente, o sea más cercano se los recomiendo ampliamente Pretenden que lo traten con cariño y no funciona así, pero es muy gracioso como se pone la cosa. Así que pásense por el de Amende. El canal de Amenis Corneo, muy bueno, tiene reseña de todo un poco. Fantástico el canal. ¿En qué me había quedado? Ah, sí, en hacer esta herramienta para ayudarme en el tema de los snapshots. Esta herramienta no fue lo último que hice. Con eso le agarré el gustito a esa herramienta.
El desarrollar esta herramienta creo que me habrá tomado un mes. approssimamente Porque tenía falta de conocimiento y falta de tiempo. Lo fui intercalando un poquitito con tiempo laboral que tenía disponible y un poco con tiempo personal. Porque consideré que invertir en conocimiento nuevo.
Era una forma de usar el tiempo correcta. Obviamente, no tiene todos los beneficios que uno podría esperar, pero era algo que estaba dispuesto a hacer en pos de aprender a hacer algo. Y al mismo tiempo empecé a simplificar la vida de mi trabajo. Y llegué a un punto donde dije que la herramienta es lo suficientemente buena, la puedo dejar vivir. No era la cosa más bella sobre la faz de la tierra, pero era mi primera aplicación visual que hacía que la verdad es que estoy satisfecho de decir.
Et bonit. O sea, parece una herramienta en serio y no los juguetes que hacía antes. O sea, en comparación a lo anterior eran juguetitos, por así decirlo. Lo cual llevó a la siguiente herramienta. Porque otro problema que teníamos era lo mismo que nos pasaba en el otro trabajo donde estaba, que no podíamos moquear request.
Y dada la naturaleza del equipo en el que estaba, nosotros teníamos el problema de que para hacer ciertas pruebas era engorroso porque dependíamos de un entorno de pruebas que fallaba. De vez en cuando bastante seguido. eh, o que la gente de Baken estaba toqueteando, o sea, era un entorno inestable porque estaban manipulando el contenido
Y no nos devolvía lo que necesitábamos. Entonces, para hacer pruebas, si bien teníamos unit testing y todo eso, hay veces que uno quería decir, hey,¿qué pasa si ejecuto este request? Y no quiero escribir un test que lo. O sea, quiero ver simplemente qué pasa, ver cómo responde. Después si corresponde, escribo el texto que corresponde, etc. Pero bueno, teníamos parte de Cobase medio vieja. Y entonces nos complicaba de que no había formas lindas de inyectar este tipo de cuestiones.
Y dije, bueno, a ver,¿cómo lo podemos arreglar? E inspirándome en otra biblioteca previamente existente, porque en lo que es a nivel de la compañía existen distintos equipos. Y uno de los equipos se encarga de hacer bibliotecas para los demás.
El tema es que había una biblioteca que tenían en mente hacer, va, una que hicieron que es para moquear cierto tipo de contenido, no request para moquear otro tipo de contenido, que me gustó y dije, uy, esto me ha, me ayuda a hacer un montón de pruebas, o sea, son herramientas de divying.
Está fantástico. Ahora el problema es que la que yo necesito a ellos les va a tomar mucho tiempo. Y veía que estaba medio trancado esa idea. Entonces dije: A ver, voy a hacer mi propia versión de lo que yo necesito. Y así nació, empezó a nacer, mejor dicho, la siguiente herramienta, que en realidad era una biblioteca que se iba a integra en la aplicación y que se puede utilizar cuando uno está debugueando. En producción no funciona.
O sea, literalmente ni entra en la compilación de producción, pero si entra en la compilación para hacer. Ahora,¿qué es lo que hace esta herramienta? Bueno, lo primero que hace es registrar los requests que hace la aplicación. O sea, cada request que ejecuta la aplicación la registra temporalmente. No almacenan ningún almacenamiento persistente, simplemente la mantiene en memoria. Matamos la application, se pierde todo eso. Pero no necesitamos mucho más almacenamiento.
Después dije, a ver, yo quiero ver los requests, pero para lo que vine yo es para moquear request. Justamente necesitaba uno para hacer otro. O sea, yo inspeccionaba los requisitos que se hacían y digo: A ver, de este a esta ruta con este método, quiero moquear esta respuesta, por ejemplo, este JSON. Y así arrancó la primera capacidad de moquear. Después dije, estaría bueno.
De que yo pueda moquear varios requests, lo cual ya lo venía logrando, pero también quiero poder exportar los mocks. Porque también, y acá es donde cambió mucho la forma. En la primera aplicación donde hice esto. Los mocks eran mediante código.
Acá los MOCs los quería hacer mediante la propia aplicación, o sea que sea interactivo.¿Por qué? Porque la idea de esto no era solamente que lo hacemos nosotros desarrolladores, sino gente de producto que quiere hacer una prueba, le pasás un archivito, le decís. Poné lo que dice el archivito en ese campo de texto. Y listo. Automáticamente vienen cargados todos los mocks y pueden hacer pruebas. Entonces esa era la idea. Entonces le di la capacidad de exportar e importar un archivo.
O sea, uno agarra y lo que tiene lo exporta un archivo y se lo puede mandar a alguien, y viceversa, uno puede agarrar e importar un archivo, y cuando importa el archivo, se cargan todos los mocks automáticamente sin que uno entienda qué es lo que está pasando después. Entonces para hacer pruebas era fantástico. Después le mejoré un par de cuestiones visuales y lo mostré a la gente que se encarga de hacer estas bibliotecas Core.
Y de hecho me dieron una reseña diciendo che esto la verdad que estaría bueno mejorarlo, o sea a nivel de calidad de código, es como esto le falta un poco mejora por acá, un poco mejora por allá Fue un feedback muy bueno. Ya me dieron un montón de correcciones a hacer. Mientras tanto, la utilidad que estaban implementando de forma interna se estaba demorando.
Y dijeron, che,¿no? Podemos tomar prestado un poco de ese código. Total, eso anda bien. Y yo tengo.¿Eso implica que oficialmente lo vamos a poder usar de la forma en la que necesito que se use? Sí. Todo tuyo. De hecho eso es una. no puedo decir que es una política, pero es una práctica que tenemos a nivel de empresa de hacer una contribución entre todos. Eso es algo que yo aprecio. Hay gente que contribuye con, por ejemplo, documentar cosas.
eh no no son tareas obligatorias pero muchas veces hay equipos que implementan algo y uno le encuentra una mejora y uno puede agarrar meterse y hacer la mejor Y eso es algo que se aprecia un montón. Obviamente el equipo evaluará si esa mejora le sirve o no. Pero uno puede hacer ese tipo de aportes. Y eso ayuda mucho porque hay veces que a uno se le escapan cosas y uno dice: No, no, no, para, eso te va a causar problemas. Tengo la solución a ese problema.
y ahorra mucho tiempo y uno aprende un montón en ese proceso Entonces, siguiendo la misma práctica, dije sí, llévenselo porque ganábamos tanto ellos, porque les facilitaba hacer la herramienta, y yo, porque para las cosas que necesitaba trabajar, me facilitaba mucho el trabajo. O sea, para trabajo oficialmente me facilitaba la vida. O sea, un montón de pruebas que no podíamos hacer, gracias a eso sí las podríamos empezar.
a nivel de testing, a nivel de un montón de Y de forma sencilla, el problema era que bueno, se estaban demorando en integrarlo, y finalmente, después, la persona que se iba a encargar de hacer la integración renunció, o sea, cambió de trabajo. Y eso por cierto que no esté enterado el sector tiene una tasa rotacional
Si alguien dura más de dos años en una empresa, es mucho tiempo. Generalmente uno va cambiando al año, más o menos entre año y dos años es el tiempo estándar de rotación. O sea, es muy común que uno pasando uno o dos años se vaya de una empresa, vaya. por aburrimiento, por salario, por lo que se Es muy común. A diferencia de otros sectores donde uno se queda siete, ocho, diez, veinte años, en el sector de software hay veces que en dos años uno rota dos o tres veces.
Dependiendo del caso, pero bueno, acá estábamos en la cuestión de que esta persona se fue y como che la herramienta quedó huérfana. Y yo mientras tanto dije, a ver, voy a como feedback que me dieron, yo dije bueno, voy a mejorar la aplicación para cumplir con eso, y porque también estaba muy interesante la gente que se encarga de hacer este tipo de bibliotecas.
Tiene un nivel de manejo de código y un nivel de manejo de calidad muy alto y un nivel de exigencia muy alto. Entonces, el feedback que me da esta gente es muy valioso. perdón, es muy valioso. Ya a mi me sirvió mucho para aprender a como hacer las cosas de una mejor manera. Habían ciertas prácticas de las cuales no estaba acostumbrado.
Que me las remarcaba diciendo: Che, cuidado con esto, cuidado con esto, esto hacerlo así, fíjate que esto no está tan bueno por tal y tal cosa. Yo apliqué todas las mejoras y los volví a presentar. Le dije, a ver. decime qué te parece, o sea sin intenciones de que se use ese código era como quiero que me den su opinión honesta de qué les parece esto y están como
mucho mejor cumple con todo lo que necesitamos y la persona renunció¿no te gustaría que esta herramienta sea la que se termine integrando? Yo estaba como ¿Eso implica que yo la puedo empezar a usar oficialmente sin que me digan nada? Sí. Toda tuya. Hicimos un acuerdo de bueno, me necesito unos permisos temporalmente para mejorar algunas cosas que. O sea, le empecé a meter features que yo necesitaba. para mi trabajo diario, pero que también iban a beneficiar a los demás.
Y así uno le va metiendo más y más y más características. Uno puede exportar, importar. De repente los requests ante el mock era por una ruta. Ahora después los mocks uno puede hacerlo por tipo de request, si era un get se moquea una cosa, si era un post se moquea otra. Después se le agregó la capacidad de tiempo de demora en la respuesta para simular situaciones más realistas. Porque cuando uno hace un request, hay una demora en la respuesta. Entonces dije, bueno.
Vamos a simular eso. También quiero tener multirrespuesta. O sea, quiero que cuando yo ejecuto el request, una vez me responda una cosa, otra vez me responda otra y otra vez me responda otra. O sea, quiero tener distintas respuestas. Para simular a ver qué pasa si la primera vez sale bien, la segunda sale mal y la tercera sale bien. A nivel de request.¿Cómo reacciona? O si hay un timeout. Entonces puedo probar todas las casuísticas en el mismo mock.
O sea, no tengo que agarrar, moquear una cosa, desmoquearla, activar, desactivar. Alguno me dirá, pero no existen herramientas externas que ya hacen esto, o sea, tipo proxy. De hecho, en macOS existe una aplicación llamada Proximan que cumple con esa función. Eh, Mario Che acá voy a leer primero un comentario y después sigo. Joaco dice hola, que tal recién estoy comenzando a estudiar informática y me crucé con tus videos de Haskell que son muy prácticos. Excelente, muchas gracias.
Sorry por cambiar el hilo de la conversación, pero quería preguntarte si estudiaste en algún lugar o fuiste fuera autodidacta. Respuesta rápida a tu pregunta, Juaco. Eh, yo empecé estudiando licenciatura en ciencia de la computación en la Facultad de Ciencias de Ingeniería de Agriensura, que pertenece a la Universidad Nacional de Rosario, también conocida como la UN.
Si lo dije muy rápido, estudié LCC en la FC, ya que pertenece a la UNR. Sí, empecé a estudiar ciencia de la computación. Digo, empecé porque no terminé la carrera. Ya llegado a una buena altura de la carrera, tuve que dejar por prioridades. De ahí es donde saquen parte del conocimiento, entre otras cosas, para hacerlo de Haskell, que sí sé que está medio dando.
Pero no hay problema en responder a la pregunta. Si tienes alguna otra duda o lo mismo relacionado al tema que estoy hablando, sentite libre de hacer preguntas. Esa es la gracia de la dinámica del en vivo. Muchas gracias por pasar y espero te esté gustando el contenido. Bien, siguiendo. La herramienta, bueno, le fui haciendo un montón de mejoras.
Y fue creciendo, y creciendo, y creciendo. Y eso es un problema con las herramientas. Sepan cuándo parar. Porque siempre hay mejora. De hecho, siguen ocurriendo mejoras. Después empecé a migrar algunas cosas a Swift UI. Y algunas cosas que todavía no voy a comentar, pues lo voy a comentar más adelante. Pero bueno, llegó un punto donde dije, eh, estoy contento con este resultado. Después,¿qué más hice? Ah, después hice una herramienta que permite, justamente, mientras uno usa una aplicación.
tener un widget flotante porque la aplicación tiene varias herramientas de debugging o sea funcionan en entornos de prueba no más que permiten debuguear o sea ver los requests ver las consultas de otro tipo que se hacen probar distintas casuísticas ver los logs de la aplicación o sea desde la propia aplicación por eso lo hice así yo quería ah y estaban diciendo lo de Proximan¿por qué no hice eso? porque configurar Proximan es una fiaca
Es un dolor de cabeza hacer un montón de configuraciones. Yo quiero algo sencillo. Que yo agarro, hago un par de cosas en la aplicación. Donde están todas las herramientas de BAC se muestra esto. Yo agarro, accedo, puedo tocar algo. Eh, user friendly, algo que yo pueda dar ser a una persona que no programa y lo puedo usar. O sea, yo le digo importar, o sea, toca este botón de importar.
Ponele este archivo ahí y después quiero que actives. O sea, si querés activar, por ejemplo, la prueba de que pasa si compras con tal cosa, tilda una cosa. Si querés hacer otra prueba, tilda otra. Simple. Y espero que no se me corte internet porque está lloviendo.
Argentina. Avisen si se corta. Pero bueno, o sea yo quería ese tipo de cuestiones y y lo logré hice una aplicación bastante user o sea a nivel usuario era relativamente bonita fácil de usar cumplía con todo lo que necesitaba y le fui agregando features hasta que me sentí satisfecho
Aunque ustedes digan que no existe el límite, y yo mismo digo lo mismo. Llega un punto y dije, a ver, sé que le puedo agregar más cosas, pero sé que con esto estoy bien. Se me ocurren muchas mejoras, vamos a parar acá. Y ahí pasé a la siguiente herramienta tiempo después, porque empezamos a tener problemas que en los simuladores con ciertas versiones de iOS, por un bug que había en Xcode, el portapapeles no funcionaba.
Y para usar justamente esta utilidad para moquear el portapapeles, o sea el lugar donde uno copia y pega, era importante. Entonces de repente dije esto es un problema Necesito una herramienta que resuelva este problema porque no podemos copiar y pegar del simulador, cosa que en Mac OS la integración con el simulador es muy buena. Y yo puedo agarrar copiar texto del simulador, pegarlo en la Mac, copiar texto en la Mac y pegarlo en el simulador.
Para hacer pruebas es fantástico eso. El problema es que no funcionaba. O sea, siempre funcionó, pero a partir de una actualización que hicimos de la ID y que teníamos que hacer, dejó de funcionar. Y ahí teníamos un problema y eso produjo dolor de cabeza para todos y busqué soluciones por todos lados, busqué soluciones en los foros oficiales, y nadie tenía una respuesta, la única solución era actualizar a la última versión de la ID. Pero por cuestiones de compatibilidad no lo podíamos hacer.
Porque si ustedes piensan que siempre van a tener la última versión de todo software usted es muy inocente, no funciona así cuando uno desarrolla muchas veces uno desarrolla con una versión anterior del software porque no puede garantizar compatibilidad y muchas otras cuestiones No es tan fácil hacer las actualizaciones. Y de hecho actualizar a lo tonto lleva a involucrar muchos errores. Eso lo aprendí de macOS y de cualquier sistema en general. La primera versión es un desastre.
El Mac OS es un patrón, sale versión nueva de Mac, está llena de vaca. Si uno espera más o menos unos 3 a 6 meses, todos los entusiastas se metieron y se comieron todos los bugs, y uno llega tiempo después cuando los bugs ya fueron corregidos por las actualizaciones. En Android pasa lo mismo, en iOS pasa lo mismo, en Windows pasa lo mismo. La primera versión está llena de bugs. Uno tiene que esperar a una versión un poco más de.
Como no podíamos actualizar a la versión que corregía todos estos problemas, dije voy a hacer una herramienta que permita comunicarme. Entre la Mac y el simulador, e intente usar los canales habituales que tiene el simulador para comunicarse. Problema: el bug afectaba los canales de comunicación que tiene el simulador para comunicarse. Y otra cuestión, por cuestiones de seguridad no podemos.
ir porque uno dice bueno fácil te conectás a un servicio externo por ejemplo una página subimos todo a google drive y ya está por cuestiones de seguridad información sensible no la podemos poner ahí A la gente que utiliza mucho esa, creo que se llama ShareMe, entre otras herramientas, que permite compartir, es muy lindo para uso amateur.
A mi me preocupa mucho que a esa gente que pone piezas de información sensibles, de información delicada Ahí, hay gente que tiene los datos de la tarjeta con todos los detalles y la copia y se la comparte alguien por esos medios común. Te estás regalando. Porque el día que alguien uno nadie sabe si uno guarda o no esa información. Si las cosas están bien hechas y de buena fe, no guardan nada. No hay garantía.
Entonces tenemos ese problema. Muchas empresas viven de dar servicios gratis, donde todo lo que vos pongas acá voluntariamente es nuestro. Y el problema no es ese, sino que uno dirá, bueno, pero si no, no pudiéramos usar nada en la vida. Ajá, después les recuerdo, creo que era LastPass, que se llama, el servicio para almacenar contraseñas online. Si tienen un gestor de contraseñas, eso está bien. Si tienen un gestor de contraseñas online, eso no está bien.
Los gestores de contraseña online son muy peligrosos. Pregúntenle LastPass, que la gente, oh, es muy cómodo, es fantástico, les vulneraron las contraseñas. Entonces, de repente, ahora un random podía tener acceso a nuestras credenciales. En realidad nuestras no, porque yo nunca lo usé el servicio. Yo uso gestores de contraseña, pero offline. Y de hecho hay un par de medidas de seguridad extra que uno toma.
Pero es muy lindo lo online, pero tengan cuidado. Como yo dije que tengo la costumbre de hacer copias offline cuando es posible. Cuidado con lo online, lo online puede o desaparecer o puede ser vulnerado. Lo que está online significa que alguien probablemente pueda accederlo eventualmente. Tengan eso en mente siempre. Por eso lo online háganlo con mucho cuidado. Y hoy en día la gente se acostumbra a bacapear cosas en Google Drive.
OneDrive o servicios parecidos. Y OneDrive, por ejemplo, tiene la costumbre de cada tanto borrar los archivos porque lo consideran software malintencionado. Y eso significa pérdida de información para nosotros. Es parte de sus políticas, sin mencionar de que los propios servicios nos dan garantía y si desaparecen archivos, desaparecen archivos. No se hacen cargo.
Tengan cuidado. Alguno mirá, bueno, pero si yo lo guardo en mi disco rígido, mi pendrive o unidad de estado sólido, también corro el riesgo de que se pierda. Sí, pero yo soy libre de tener backup. y de ser razonable, buscar información, informarme y saber cómo hacer backups correctamente y cómo restaurarlos correctamente, cosa que los otros servicios no necesariamente hagan. Si no preguntenle a la gente que ha hosteado información en la redundancia, hostings.
su o sea parte de su carrera profesional no ha hecho backup porque el hosting les promete tener backup y perdieron ocho años de trabajo Porque no tenían una bendita copia de seguridad. Y confiaron que el servicio tenía copia de seguridad como lo habían prometido. Cuando van y dicen quiero que recuperes mi backup, dicen, no, el backup no existe más tampoco. Se perdió. No voy a dar detalles, pero en Argentina hubo un caso muy famoso por eso.
Conozco algunos detalles del caso, no trabajé ahí, pero hubo mucha gente que perdió un montón con eso. Y son cosas que pasan. Lo online es muy lindo, es muy cómodo, pero hay que tener cuidado. Entonces tengamos cuidado con esas cuestiones. Entonces yo no me podía dar el lujo de usar servicios externos para ese tipo de cuestiones, sobre todo cuando manejamos información sencilla. ¿Qué es lo que hacemos? Bueno, tenía que encontrar una forma de comunicar entre el simulador y la.
y la computadora y dije bueno a ver yo ya sé hacer aplicaciones para iOS sé hacer aplicaciones para mac porque no aprovecho eso que me prometió Apple de que si yo desarrollo una aplicación puedo hacerlo multiplataforma O sea, el mismo desarrollo funciona para los dos casos. Y lo logré, reneguí. Muchísimo, estuve al menos dos o tres días durante bastante tiempo hasta encontrar la vuelta de cómo comunicar una computadora con el teléfono y viceversa, y lo terminé logrando mediante.
eh¿cómo se llama? una unas conexiones http Después se las puede securizar con HTTPS. Pero básicamente cada aplicación es su propio servidor que funciona solamente en la computadora por cuestiones de seguridad. Entonces, yo instalo la aplicación en el simulador, instalo la aplicación en la computadora.
Las comunico mutuamente, que de hecho todavía tengo pendiente una mejora a esa herramienta. Esa herramienta le di mucho cariño porque me facilitó la vida en muchos aspectos. Me la complicó en el desarrollo, pero me la facilitó en la vida de la hora. Y básicamente lo que hacen esas aplicaciones es que al principio le di la capacidad de que se puedan comunicar, o sea, yo puedo chatear, por así decirlo, con la contraparte.
que está en la otra plataforma, entonces yo estoy en la aplicación de Mac y le puedo mandar un mensajito a la que está en iOS, y en iOS puedo mandar un mensajito a la que está en la Mac, o sea pueden intercambiar información, entonces yo puedo copiar información. Dentro del propio simulador, lo pego dentro de la aplicación y lo mando a la Mac y viceversa. Entonces, si bien el bug no estaba resuelto, encontramos una forma de saltarnos el bug.
Y eso es lo que empezó a facilitarnos el trabajo. Ahora comento cómo lo mejoré mucho más. Acá Joaco pregunta¿Qué ocurre con los gestores de contraseñas que te salen en los navegadores? Yo tengo la solución más suicida de tener todas mis cuentas y contraseñas en una hoja de cálculo en el drive. Eso es suicida en serio, eh. Nombre uno, yo no diría esa información públicamente.
Número dos,¿qué es lo que tienen malos los gestores de contraseña online? Igual acabo, contraseñas que salen en los navegadores. Es otra cosa. O sea, los online lo que tenés es el problema es que vos tenés con fe de que ellos lo almacenan bien y que está todo seguro. Y nunca está del todo seguro. Así que eso es un peligro. Los gestores de contraseña de los navegadores.
Pueden ser vulnerados también. De la misma forma. En que en realidad lo más preocupante no es eso. Sino lo más preocupante. es que muchas veces no sabemos cómo funcionan. Y en otros casos tenemos el problema, por ejemplo, de que no sé. la mitad más de la mitad de los navegadores son Chrome de fondo y se sincronizan con Google y Google dice si deja que yo guarde las contraseñas porque vos no sabes guardar tus contraseñas vos sos
A vos te cuesta. Entonces yo las voy a guardar por vos. Dame todas tus credenciales, sí. Ay, es cómodo porque todo se autentica automáticamente. Y es como. Ajá.¿Estamos seguros que le queremos dar a Google ese grado de control? eso es lo más preocupante porque por defecto todo se sincroniza con google google sabe todo lo que vemos cuando lo vemos cuando tenemos los teléfonos que tenemos android Bien,¿sabe nuestra ubicación?
Tenemos un micrófono ahí, tenemos una cámara, alguno me dirá, bueno, pero yo, pero entonces ya está, no hay nada que hacer. No, vos podés elegir no tener el teléfono, vos podés elegir tener el teléfono alejado de vos, vos podés elegir meterlo en una jaula de Faraday. No estás obligado.
En lo otro tenés que prestar mucha atención porque es muy fácil que por defecto dejes todo y se vaya. O sea, vos podés elegir cuando hacer las cosas. Y bueno, con las contraseñas uno tendría que hacer lo mismo. El temita de lo que guardan los navegadores. es que están sincronizados con tu cuenta y recordemos, hoy en día está todo tan centralizado nuestra cuenta de Gmail o de Hotmail o de lo que sea que el día en que nos borran la cuenta de Hotmail o Gmail no tenemos acceso a nada.
A nada. Perdemos todo. Perdemos los contactos porque ya nadie tiene agendas. Yo entiendo la practicidad de tener cosas electrónicas, eh. Ojo, no niego eso. Pero si algo que no, si no lo sabían, Google en los contactos incluso tiene una funcionalidad para hacer copias de seguridad.
lo mismo pasa con el correo electrónico puede desaparecer y hay cosas que no las queremos perder, entonces por eso hay que tener copias offline de las cuestiones y cuanto más control tengamos mejor porque cuanto más nos acostumbramos a acceder el control lo cual no digo que yo no lo haga ya todos nos acostumbramos en alguna u otra utilidad a ceder el control. El tema es que hoy en día le cedemos todo el control a todos.
le cemos el control a Netflix, le hacemos el control a Spotify o plataformas similares, o sea lo que vemos y lo que escuchamos YouTube tres cuartos de lo mismo O TikTok puede ser lo mismo. El navegador sabe todo lo que hacemos. Terminamos delegando todo. Y el problema es que con una sola cuenta que nos vulneren. Por ejemplo, en el caso de Google, nos vulneran la cuenta de Google y perdemos todo.
Perdemos las contraseñas, perdemos acceso al correo, perdemos acceso a nuestra agenda, o sea, a nuestro calendario, perdemos acceso a los contactos, perdemos acceso a todo. Acceso a otros servicios. Hay que tener mucho cuidado. Uno no se da cuenta de todo lo que está regalándose hasta que pasa algo y lo pierde todo. Al principio no pasaba nada, era mero correo electrónico.
Pero ahora está todo vinculado a nuestra cuenta de Google. Vulneran nuestra cuenta de Google o nuestra cuenta de Outlook o nuestra cuenta de lo que sea. Y vulneran la mitad de lo que tenemos. Como mínimo. Ese es el peligro. Y que nuevamente no sabemos qué tan seguros son esos gestores. Eh. Yo, mi recomendación es usar alguna herramienta que permita almacenar contraseña. Personalmente uso, creo que era Kipass XC, creo que se llamaba. Que es como el sucesor de.
Ay, ¿cómo se llama este que lo vulneraron? Yeah. Era aquí paz, creo que era equipaz, de hecho, que ese si lo llegaron a vulnerar, que pas X es un poco más interesante, y si uno es más inteligente todavía, no solamente lo hace eso, sino que lo mete en un volumen encriptado. Entonces tenemos doble beneficio. Y funciona bastante bien, es open source, entonces lo van trabajando.
Y con eso uno se regala mucho menos que dejando en un servicio de tercero que cada tanto lo vulnera. Y lo mucho importante de esto es que los servicios de tercero nunca se hacen carga. And says eh además de que si uno se acostumbra a usar estas herramientas incluso Kipass lo que tiene de lindo vale Kipas XM para ser más precisos pues no son lo mismo uno es muy viejo y el otro sigue o sea tiene actualizaciones todo el tiempo
es que tiene integraciones interesantes con el navegador, tiene integraciones interesantes con el teléfono y uno puede tener su copia offline. O sea, si uno se queda sin internet, no pierde contenido, tiene sus contraseñas. Y si uno pierde su cuenta de Google aún así tengo el resto de las contraseñas. Y cerramos acá a Ale Ale que dice.¿Qué onda?¿Qué hace Ale?¿No había entrado más temprano vos? Todo bien, che. Pero ahora respondió Juaco a tus preguntas y sigo con la Ana.
Bien, siguiendo. A esta herramienta que permitía mandar y recibir mensajitos que no parece algo muy interesante, dije, qué bueno estaría poder. Interactuar con la aplicación, no solamente mandar mensajitos, sino hacer que la aplicación responda a ciertos formatos que tenemos de mandar información a la aplicación. Y le implementé esa nueva feature. Y después dije,¡qué lindo sería poder!
Eso es algo que me molestaba bastante. Qué lindo sería poder ver los requests que se están ejecutando en la aplicación desde esta herramienta. Ya que había hecho la otra biblioteca que se incorpora con la aplicación que permitía ver los requests y moquear, qué lindo sería poder verlos también acá, porque verlos en un simulador es una cosa y verlos en la computadora es otra.
E implemente esa capacidad. Voy a ver todos los request que se ejecutaban con mucho detalle. Qué lindo sería poder guardar estos requests. Para poder verlos más tarde. Y le implemente esa feature.¡Qué lindo sería poder crear mocks! Sin usar la aplicación, o sea, porque si no tengo que agarrar, entrar a la otra aplicación, escribir la ruta que quiero moquear, o ejecutar el request que me interese, y darle moquear a ese request.
personalizarlo, pegar un JSON en la aplicación era un problema, ah, y a esta altura del partido ya se había actualizado la idea del trabajo y el bug de mandar o recibir cosas se solucionaba Pero bueno, ya le había agregado la capacidad, por ejemplo, de ver los requests, que es algo que no podíamos hacer antes cómodamente desde la Mac. Y así pasaba, y era como che, quiero quiero armar mi set de mock. Sin tener que hacer una aplicación de forma incómoda.
Entonces hice un generador de básicamente mocks, los cuales no se moquean automáticamente. Pero puedo generar un JSON y mandarlo a la aplicación. E importarlo en la aplicación y listo. O viceversa. Yo puedo agarrar y editar los mocks. Que eso es algo que me interesaba mucho. Entonces yo lo que hacía desde la aplicación exportaba todos los mocks que había de request.
Los importaba en esta herramienta que estoy comentando. Y yo ahí podía editarlo. Entonces decir, ah, no, quiero cambiar este JSON por este otro JSON. Quiero cambiar acá esto por esta otra cosa. Yo podía hacer pequeñas modificaciones. Generar el archivo e importarlo en el simulador, y así. Entonces, yo si quería hacer pequeños cambios, podía hacerlo fácilmente, y así le fui agregando más y más cariño a la cuestión. Y la aplicación hace de todo. Lo más lindo, se ve lindo, tiene buscador, filtro.
filtra cierto tipo de respuesta, es bastante potente. De hecho, pasó de que esta utilidad empezó a ser más potente que la que permitía ver los riques y moquear desde la propia aplicación. Con la ventaja de que esta que la hice para la Mac, la hice en Swift VI, mientras que la que había hecho en la aplicación la tenía que hacer con los estándares que tiene la empresa.
Pero después se nos desbloqueó el desarrollo en Swiss VI y dije: Bueno, vamos a ver si todo lo que aprendí podemos empezar a aplicarlo. Entonces usé justamente ese módulo. Que solamente funciona en contexto de debugging para hacerlo de conejillo de indias y ver qué tan factible era usar esta tecnología de forma productiva en la aplicación sin el riesgo de romper algo en producción.
Y así es donde empecé a migrar cosas de la propia biblioteca que estaban usando el framework viejo a usar su iPhone. La prueba fue excitada. De hecho, se migraron la mitad de las pantallas. O sea, migré la mitad del módulo Swift UI. El código es mucho más legible. Aprendí de un montón de los errores que cometí desarrollando esta biblioteca. O sea, esa biblioteca se habrá rehecho al menos unas dos veces.
Y la calidad mejoró muchísimo. Era mucho más claro, visualmente más agradable, era más rápida. O sea, mejoró en todo aspecto positivo. Y sirvió como prueba de concepto de bien, vemos que esta tecnología es factible en el resto de la aplicación. No solo eso, sino que después cree un widget que puede flotar en la aplicación, o sea como un botóncito flotante, que si lo presiono se despliega como una pseudo pantalla.
Casi a pantalla completa donde tengo un montón de herramientas que las tuve que implementar yo. Pero la hice de forma tal de que si alguien más quiere implementar más herramientas sea muy fácil. O sea, para interactuar con eso tiene que agregar literalmente dos líneas de código y puede agregar una herramienta más. Obviamente hay que implementar la herramienta y agregar dos líneas de código en un lugar y se agrega este gestor de widget.
es automático y hermoso entonces de repente de los widget yo puedo tener un widget para ver los requests, un widget para ver los mocks, un widget para moquear otras cosas, un widget para ver los logs, un widget para ver el tracking y y hacer los widgets se hizo mucho más fácil que hacer módulos enteros. Entonces,¿qué aprendí de todo lo anterior? Ey, hacer widget es más fácil. Solamente tuvo que haber un framework en donde va a armar toda la estructura en donde se iba a montar.
El sistema de widget, pero de repente, cuando tenía el sistema de widget, simplemente tenía que registrarlo. O sea, tengo que implementar el widget que es una vista y decir, bueno, quiero registrar la vista tal con este nombre. Y el gestor de widgets automáticamente lo incorpora. Entonces, cuando uno despliega los widgets que están sobre la pantalla, puede usarlos.¿Cuál es el beneficio que nos dan los widgets?
Que no necesito ir a otra pantalla. O sea, está flotando sobre el resto del contenido. Entonces, yo no afecto el contenido. O sea, vive como si fuese parte de la aplicación, pero es parte de la aplicación. Eso es lo lindo. Y así fuimos mejorando las herramientas. Digo, fuimos porque algunas cositas las hice, la mayoría de las cosas la hice yo, pero algunas cositas también me contribuyeron.
y las hice también así porque quería iterar y descubrir cómo hacerlo, porque también un gran desafío y esto es algo que es importante aprender cuando uno hace herramientas es Pensar en soluciones lo suficientemente potentes pero que tomen la menor cantidad de tiempo de trabajo.
Eso lleva a que muchas veces se tienen que dar cuenta de que hacer herramientas visuales, o sea con interfaz gráfica de usuario, muchas veces no es necesario. De hecho, hacer herramientas visuales es mucho más difícil, hacer herramientas por línea de comando es más fácil. Para cierto tipo de cosas No es conveniente la línea de comandos. Por ejemplo, cuando queremos hacer algo bien user-friendly, algo que el usuario lo puede usar facilito tocando botoncitos. Bueno, línea de comandos no es lo.
El usuario suele ser malo leyendo. Entonces tenemos que dejar todo práctico a la vista. Para ese tipo de cosas, interfaz gráfica de usuario es más conveniente. Ahora, desarrollar estas herramientas toma mucho tiempo. Entonces, algo que me puse como objetivo mientras sea estas herramientas, porque para cada herramienta me puse un objetivo. cuando empecé en esta última etapa desde los mocks en adelante
Para cada herramienta tiene un objetivo. Por ejemplo, para los snapshots, el objetivo era aprender a usar TDD de una forma real, o sea realista en un proyecto, aprender a usar Swift VI y aprender a usar aplicaciones Mac. para la que me permitía mandar recibir mensajes, gestionar los mocks y ver los requests Eh, no, perdón, eh, después tuvo la de Ver los request y moquear. esa mi objetivo era hacer un una biblioteca robusta
Bien testeada, ese era el objetivo. Que tenga la mayor cantidad de testing posible, o sea que esté cubierta por todos los lados habido y por haber. cuanto, de hecho a ver el cobrage no es la mejor unidad de medida pero parte de lo que dije bueno vamos a procurar un cobrage mayor al noventa y cinco por ciento cosa que logro mantener en un agradable noventa y nueve coma 5,99,6% de cobras no garantiza un perfecto funcionamiento ese porcentaje de cobra.
Pero era parte de lo que me puse como objetivo. Quiero testear todo de esto. Quiero que esté bien testeadito. Y quiero hacer una herramienta robusta que cumpla todos los estándares que tenemos para trabajar y más. Objetivo cumplido. O sea, esos son objetivos extras al inicial. O sea, quiero... Bueno, ya que estamos haciendo de todo por uno.
Después la otra utilidad a la que sí podía mandar, recibir mensajes, ver los request, guardarlos y recuperarlos después para verlos, analizarlos, editar mocks y todo eso. Mi objetivo era aprender a hacer aplicaciones multiplataformas. En macOS, lo cual parece fácil, pero tiene su truco. Y también en cómo lograr todo esto y la comunicación entre un teléfono y una computadora de forma relativamente segura, sin depender del servicio de tercero. Ese era el objetivo de lo que quería aprender.
misión cumplida. Siguiente herramienta, miren ya, para cuántas cosas hiciste. Todo esto es en el proceso de aproximadamente dos años y tres meses. eh aunque los primeros tres meses de trabajo tampoco los tendría que contar. A partir de ahí fue cuando empecé a ver algunas oportunidades de mejora y descubrí mi gusto por hacer este tipo de cuestiones.
Mejoras siguientes. Bueno, la aplicación que dije que servía para comparar snapshots. Me di cuenta que tenía algún que otro bug. Y que habían cosas que, si bien funcionaban bastante decente. Se podía mejorar porque la aplicación fue mi primera aplicación para Mac y dije bueno, vamos a aprovechar la oportunidad. Y cada tanto me hago una prueba de estrés, que es una prueba en la cual básicamente me pongo a trabajar a toda marcha durante un periodo corto de tiempo para ver. ¿Qué tan bien estoy?
Ya es una prueba de vamos a sobreforzarnos a propósito en un periodo muy corto de tiempo. Es muy importante la parte de muy corto tiempo. No es sostenible por mucho tiempo. Y tiene efectos secundarios muy desagradables. Que puede tender al burnout si se lo extiende en el tiempo. O sea, tengo que aprovechar un periodo de relativa paz para decir, bueno.
En este periodo que voy a tener más tranquilidad de lo normal, me voy a forzar extra para hacer la prueba nomás y después sí, relajar. Es muy importante esa última. Y básicamente dije: Bueno, esa aplicación que sirve para comprar snapshots la voy a rehacer de cero con todo lo que aprendí hasta ahora. Todo lo que aprendí de hacer aplicaciones para Mac. Todo lo que aprendí de cómo integrarme de forma mejor al sistema operativo.
Todo lo que aprendí de manejo de archivos, todo lo que aprendí en forma de comunicación, todo lo que aprendí de forma de interacción, todo lo que aprendí en estos últimos dos años, lo voy a hacer de cero. Y en aproximadamente tres días lo rehice, dándole mucho más poder que a la aplicación original, inclusive. Tiene truco para esta reinvención de la aplicación. No lo testeé, no le puse testing.
Que ya mi objetivo no era practicar TD, mi objetivo era acá ver en cuánto tiempo puede hacer todo eso y lograr una mejor integración que la anterior. Y funciona muy bien. Tiene muchas más configuraciones que la antes. Performa mejor que la de antes. Visualmente es mucho más agradable. Y se integra con muchas más APIs del sistema operativo. de forma sencilla La verdad que es como me di cuenta que en la primer versión me la compliqué innecesariamente y en esta nueva versión la mejoré.
¿Es perfecta? No, como todo tiene su detallito. Pero tengo que decir que visualmente es mucho más bonita. Parece una aplicación profesional a riesgo de sonar. Pretencioso. Eh. es una de las aplicaciones, junto con la anterior que dije que permite comunicarse entre teléfono y ehm.
la computadora y hacer un montón de cosas, son la de son dos aplicaciones las cuales estoy bastante contento del resultado, puedo decir que bastante orgulloso del resultado, obviamente si lo veo esto más adelante voy a decir ay que horrible que está esto hay mucha mejora que hacer pero puedo decir de que están en un estadio razonable eh ya han crecido muchísimo y y eso me ha permitido aprender muchísimo
De hecho, hoy en día a la hora de pensar una herramienta la piensa de una forma más sencilla, más estructurada. Y eso es lo que les recomiendo. Practiquen con cosas pequeñas, aprenden a identificar oportunidades, desarrollen herramientas. Si son scripts, simples scripts.
alcanza de hecho por ejemplo ahora una cuestión que tenemos que quiero automatizar un poco el proceso de actualización de dependencia de unos módulos esto es parte de mi vida laboral ya tengo que hacerlo y el proceso manual es lento No es nada difícil, pero es lento. Entonces me estoy haciendo una herramienta muy sencillita que lo hace automáticamente.
O sea simplemente le doy a correr el script Me pregunta una cosa, se la respondo, le doy enter y automáticamente arranca y me actualiza a dependencia de los módulos que sean necesarios. Guardando los cambios si es necesario, moviendo la rama donde corresponda, actualizando como corresponde todas las dependencias, subiendo todo, comiteando los cambios y pusheándolos. Así de fantástico. El proceso entero automatizado.
O sea, todo ese proceso que normalmente toma unos cuantos minutos hacerlo a mano. Hacer un script, que de hecho lo tengo casi todo cocinado y me habrá salido en. 20 minutes, 30 minutes, me faltable termination mañana. Hoy corté un rato y dije, bueno, ya está suficiente for hoy, sigo mañana. Y tan simple como eso. La interacción es developer friendly.
Sencillo, el script es muy legible. O sea, procure eso también. O sea, me tomó tiempo porque acomodó. Después reacomodé el código. O sea, lo refactorie para que quede lindo. Por si algún día quiero incorporarle algo más. Me dirán.¿Qué más le quiero incorporar? Le puedo meter otro comandito más. Porque hacer utilidades de línea de comando es mucho más fácil que hacer utilidades gráficas. Pero prueben con las dos cosas.
Ahora estoy trabajando en esto ya es una herramienta para uso personal, nada de lo laboral. O sea, todo esto aproveché justamente lo laboral para beneficiarme a nivel de conocimiento personal y crecer un montón. Pero también tengo algunas herramientas. Justamente con todo esto que aprendí, tengo planeado hacer algunas herramientas para facilitarme un montón de operaciones.
Y hacer una herramienta muy flexible, y de hecho me iba a complicar la vida innecesariamente hasta que se me ocurrió una solución. Quizás cuando tenga la herramienta desarrollada, comento el cómo funciona. ¿La implementación va a ser la mejor? No. Pero es lo suficientemente buena, y en todo este proceso aprendí un montón de cosas sobre, por ejemplo, cómo testear, cómo hacer un módulo robusto.
cómo trabajar con Swift UI, cómo trabajar con en aplicaciones de iOS, cómo trabajar en aplicaciones de Mac, cómo trabajar en cosas más multiplataformas mediante scripting, cómo se seccionar un trabajo, cómo encarar y dividir los procesos en partes eso me costó muchísimo
Tuve que cometer muchos errores para darme cuenta de que hacer un programa gigante que hace veinte mil cosas no es tan bueno como hacer programas pequeños que hacen pequeñas cosas bien hechas y con la ventaja que puedo reciclarlos más adelante. El aprender un montón de otros compañeros, aprender a hacer Td, aprendí como integrarme mejor a funcionalidad del sistema operativo, cómo ser lo suficientemente inteligente para decir, a ver, paso de no tener una herramienta.
a sé cómo resolver el problema. De hecho para Esta utilidad de snapshots tengo un compañero que es una máquina de sugerir mejoras. Cosa que yo mismo le pedí, si ven alguna mejora, díganme porque me interesa. Porque también otro objetivo que me pongo es, quiero desarrollar herramientas que nos ayuden a trabajar mejor. Y que sea difícil que me den una sugerencia. O sea, no quiero que le falte algo muy básico.
Quiero que si me sugieren algo es como sea más rebuscado, es, mira, te falta algo pero es si me pongo que esquillo. Es un. podríamos decir una cuestión, no sé si de orgullo, pero una cuestión de decir. A ver, quiero hacer algo lo suficientemente bueno. Como para que lo que me tenga que sugerir tenga que ser algo medio extremo. Y bueno, este compañero es una máquina que se le ocurran mejoras. Y de hecho, un problema que tengo la dicha de tener hoy en día es el problema, no es tener ideas.
El problema es saber cuál usar. Porque si tengo que decir de cosas que me encantaría implementar o hacer, tengo un sinfín, por eso tengo un sinfín de cosas que las termino descartando y diciendo bueno, esto no lo voy a hacer porque no, literalmente no me da el tiempo.
Hace años que tengo ese problema de se me ocurren un montón de cosas que me encantaría poder hacer, y es el problema contrario al que tiene muchas veces el principiante. El principiante comienza y dice: Yo no sé qué hacer. A mi me pasaba al principio, como no sé qué desarrollar, no se me ocurre.
Y hoy en día el problema es el inverso, es wow Tengo que elegir cuál de todo hacer porque no se puede con todo Por ejemplo en el trabajo otra herramienta que quería empezar a hacer, porque también no sabía cómo hacerlo y me interesaba, era un lindo desafío. Eh, una herramienta de automatización de tareas para el trabajo en los proyectos, o sea, para trabajar, para manipular módulos, dependencias y un montón de cosas sencillitas, o sea que a nivel de usuario uno toca un par de botones y
pasen miles de cosas de fondo. Bueno, miles de cosas es una exageración. Pero que automatice buena parte de los procesos. eh porque sale no es fácil hacerlo y que sea robusto nuevamente Y se me ocurrieron algunas soluciones, pero finalmente tuve que decir no bueno. Debido a cambios de roles, debido a cambios en los cronogramas, debido a los tiempos que manejo y debido a que tengo otras prioridades, voy a tener que prescindir de hacer esto.
Lo cual no significa que no pueda ayudar a las personas que quieran contribuir con eso. Entonces lo que hice fue hablar con la gente que se encarga de este tipo de cuestiones y decirle, a ver,¿ustedes querían hacer una herramienta? Bueno, tengo una idea de por dónde pueden ir. ¿Significa que van a tomar mi consejo? No. Pero es una contribución que puede ayudar.
Entonces esa creo que es parte de la gracia de lo que uno va obteniendo con el tiempo. O sea, es algo que uno va aprendiendo y yo lo considero muy valioso. Ahí te respondo, Ale. Dame un segundito. Quiero cerrar un poco con esta parte y ahí paso a responder las cuestiones y seguimos con esto. Pero bueno, o sea el tenía esta idea y de hecho tomé, o sea también uno se convierte en un artista de tomar ideas prestadas. Yo por ejemplo el año pasado fui a un evento, fue la segunda vez que voy.
Eh al evento, un evento ya que se hizo en la ciudad de Buenos Aires, se llama Swiftabo. Yo no soy de Buenos Aires, soy de Rosario, pero viajé hasta allá, estuvo muy lindo, se comió rico y Y se aprendió mucho que es un evento donde se presentan cosas relacionadas a iOS principalmente. Y Swift. Por eso Swift. Es un lindo evento donde todas las charlas están en inglés, fantástico, se presentan un montón de cosas, distintas empresas. El año pasado, por ejemplo, estuvieron una empresa como
Pedido allá, Rapi, Uber, entre otros. Este año hubieron, va, este año que pasó hubieron más bien referentes dentro de lo que es iOS. Tuvo Swiftly, entre otras cosas. eh muy interesante la las charlas y al y algunos eran los desarrolladores de herramientas super potentes como Fastlane Y no me acuerdo de otras dos o tres más que habían que no las uso tanto. Pero me gustaron las ideas. Porque automatizan un montón de cosas. Fastlane es un gestor fantástico para automatizar todo lo que son deploy.
Es increíblemente bueno y sencillo. Y muy potente. Y de repente uno conoce a los que desarrolló las herramientas que uno usa todos los días. Es como, wow,¿fuiste vos que la hizo? Sí. Pero esto lo uso todos los días. Ajá. Que buena que está tu herramienta. Sonó muy mal para algunos, pero bueno es
Hay herramientas que dan gusto, están demasiado bien hechas. Es como, por decir cualquier cosa, conocer al que hizo. Yo sé que hay gente que odia JavaScript. Personalmente no es un lenguaje que me gusta, pero como conocer al que hizo NPM. Uno puede enojarse todo lo que quiera con JavaScript. Pero no puede negar que el gestor de dependencia, como eché esas cosas, es bastante potente. Funciona bien. Bueno, lo mismo.
Y ahí tomé algunas ideas prestadas y con algunas herramientas que ya existen en el trabajo y dije ¿Qué pasa si fusiono estas dos cosas? Se me ocurre una solución que resuelve muchos de nuestros problemas y que bueno, ahora por cuestiones de tiempo no voy a poder hacerlas. Básicamente. Entonces decidí ayudar a los que van a darles ideas a los que van a tener que hacerla, porque en eso nos beneficiamos yo y ellos y todos.
o sea todos porque obtenemos una herramienta ellos porque les facilito el trabajo y yo porque voy a obtener una herramienta que va a facilitar el trabajo Es algo en lo cual ganamos todos y es algo que considero muy valioso. No solamente empezar en lo propio. Si pienso en cuestiones monetarias, obviamente no reditúa.
Pero si pienso un poco en la parte de satisfacción y un poco en la parte de aprendizaje, porque también es un detalle, todo este conocimiento que obtuve al hacer estas herramientas, los que usan la herramienta no lo obtienen. Y ese conocimiento es invaluable. Es tiempo bien invertido, porque ahora, si yo tengo que desarrollar algo de cero, tengo la cabeza mucho más preparada para enfrentarme a eso porque me obligué a enfrentarme a este tipo de situaciones.
Entonces de repente cuando tengo que empezar un proyecto desde cero, la forma de estructurarlo es mucho más rápida que si lo hiciera hace dos años atrás. En respuesta un poco a igual respondar un poco mejor a tu pregunta, Ale. Eh Yo hace dueño atrás no sabía hacer esto. Yo sabía Swift UI básico. Nunca había aplicado TDD en un proyecto a gran escala. Nunca había hecho una aplicación para Mac. Nunca avevo fatto una interazione tra una applicazione di Mac e una applicazione di iOS.
nunca había hecho un un gestor de requests nunca había hecho nada de eso Lo que hice fue tomar algunas ideas prestadas y decir, ah, mira, me gusta como. Por ejemplo, para ver los riques dije. Che, me gusta como algunas cosas de la UAI de Postman. Y dije. Bueno, a ver,¿puedo estructurar algo parecido? Postman sirve para hacer request. Yo no quiero hacer postman, quiero hacer lo contrario. Algo que me permite haber request. Pero como a ver,¿qué datos tiene Postman? Esto, esto, esto y esto.
Y uno se pone a investigar y así es como lo va iterando. Y de hecho ahora paso a responder tu pregunta, Ale, y con eso vamos al tema libre. Al le dice,¿cómo puedo aprender todo lo que implica una aplicación real? Quiero hacer un punto de venta, pero se me hace inmensamente grande hacer algo así. Si, porque es inmensamente grande. Es lo último que me queda. No funcioné en la industria y recién me corrieron de puesto de profesor. Uh, che. Antes que nada. Me apena mucho escuchar esto.
suena como un comentario neutro pero en serio es es algo feo a nadie le gusta eso Habiendo estado, tengo la hecha que de momento todavía no me echaron de ningún lugar. Pero echaron a gente con la que trabajaba y la cual le tenía mucho precio, y no es nada lindo. Yeah. No se crean que tuve la dicha también de estar en lugares donde la gente con la que se trabaja es agradable, e incluso gente con la cual se tenía una relación de amistad previa, y duele un montón.
No, no es no es nada, no es nada bello. De lo contrario creo que tendré que estudiar otra carrera acá decir Bien, primero te mando un abrazo grande, Che, y espero que encuentres algo mejor pronto. Segundo Yo creo que habías comentado en episodios anteriores el tema de que trabajabas como profesor y te pedían cosas locas. hay cosas ridículas.
Yo a ver, no tengo conocimiento de tu contexto, no hay muchas cosas que no sé. O sea, no sé cómo eran realmente. También otra cosa que tomo como precaución. No importa lo que me cuenten. Salvo raras excepciones. Acá Furia dice:¿Está en vivo? Sí, estoy en vivo. Salvo raras excepciones.
tomo igual con cuidado lo que me dicen porque uno tiene sesgos a favor de uno mismo o sea uno siempre se va a defender a uno mismo va a decir no yo no soy un desastre no estoy diciendo que ese es un desastre Em primero, o sea eso tomo la precaución de asumiendo creo que me habías comentado antes
De cómo era la cuestión del trabajo, es la típica de que queremos deshacernos de alguien y estás trabajando en un lugar que pide cosas y espera cosas ridículas. Lamentablemente existen muchos lugares así. Y lamentablemente el rubro de la educación está lleno de cosas muy mal pagas y muy Así que no te sientas tan mal. Por. Sé que la situación es mala. Pero no te sientas tan mal por eso. Porque. Lamentablemente. Muchas cosas se conducen así.
Es medio un desastre eso. Es una lástima. Espero que consigas a lo mejor pronto.
🔇 Silence
Perdón, tenía que tomar voz. Estoy deshaciendo el calor. Tarde o temprano me compraré un aire acondicionado. Y pagaré la factura de la luz y hice la cara. Pero bueno, el cómo hacer una aplicación completa. Es complejo. A ver, yo la forma en la que lo hice fue ir escalando.
que dice Ale trabajé como profesor la mayoría de los estudiantes detestaban la materia y me funaron al punto que no pude hacer nada y después me terminaron de correr y me avisar, ah tá eh sí, sí, eso es un problema la educación, yo lamentablemente, con lo que me personalmente me gusta explicar, si no no haría code pero si hay algo en lo cual probablemente no me dedicaría al área sobre todo de la academia Porque creo que es muy ingrato. Es una lástima.
Porque también de ahí aprendí un montón de cosas, es algo muy valioso y creo que es algo de lo cual se puede aprender mucho, pero lamentablemente la academia está rota. Punto. No confundir academia con hacer cursos, no hacer lo mismo, aunque pueden ir bastante de la mano. Pero el mundo académico es muy ingrato.
No, repito, no te sorprendas. Lamentablemente pasa eso. La academia es muy ingrata, paga muy mal y te trata muy mal. Prefiero una industria que de última, si te trata mal, puede llegar a conseguir lugar donde te pagan mejor. Acá hice Furia, me ofrecieron volver a mi antiguo trabajo y lo hice, no sé si fue la mejor decisión. Eh tengo gente con la que trabajo que ha pasado que ha renunciado, por ejemplo, trabajar en una empresa, esa empresa fue absorbida por otra.
Y se fueron y al tiempo trabajaron en otro lugar y después volvieron a la empresa la cual absorbió a la primera. Depende do caso. O sea la una clásica que sucede muchas veces es bueno Trabajo en un lugar, estoy descontento, me cambio a otro, y el anterior trabajo me dice, no, pero volvé, esta vez cambiamos, somos diferentes y te pagamos un poco mejor. Y uno vuelve.
Es complejo eso, porque ahí uno está en un poco en la cuestión de a ver qué es lo que valoramos acá. Hay que uno tiene que ver, che, tiene sentido ponerme en modo orgulloso de no, yo no voy a volver a este lugar, sobre todo cuando uno no tiene nada. Cuando uno está en una situación complicada es mucho más difícil que cuando uno tiene capacidad de negociar.
Cuando uno está desesperado, bueno, medidas desesperadas. Cuando uno tiene, por ejemplo, un buen ahorro, puede darse el lujo de decir: Bueno, no voy a buscar algo que realmente me. también pasa que en muchos lugares el trato es malo Y aunque uno trabaja bien y no es recompensado, y uno se quiere ir, y recién ahí dice, no, bueno, te damos el aumento, pero y en los últimos dos años que te lo vengo pidiendo,¿qué pasó? Y es complicado.
Porque ahí uno está en la disyuntiva de chévere: acepto o no acepto, y bueno, acá en este caso volver o no volver. Conozco gente que ha pasado trabajo uno, trabajo dos, trabajo tres, trabajo dos, trabajo tres, trabajo dos, trabajo tres, trabajo uno, trabajo tres cuando uno, dos y tres son empresas diferentes, o sea, literalmente van pimponeando entre el mismo grupo de empresas. Va al mejor postor, básicamente, por ejemplo.
La industria fue peor, me deshumanizaron por completo, me trataron peor que un animal y yo nunca trataré de un animal. No, no, guarda. Sin querer offender. me estoy metiendo en un lugar complejo. Ale, vos eras de México,¿no? Este.¿A qué viene esto? Un patrón que vengo notando, y de momento no tengo demostración de lo contrario. Pero es un problema que también existe acá. Acá en Argentina no existe tanto ese problema, porque hacerse un emprendimiento es para.
ir a la quiebra muy rápido tenemos un sistema impositivo que te destro pero México tenés el una cuestión de que hay mucha gente, de hecho es un problema medio, o sea medio latino Latino, no hispánico, porque también afecta a otros lugares de habla hispa, eh, de habla No hispánica, pero sí lenguas romanas. que hay como un poco esa actitud que también existe en otros contextos pero es mm muy común del soy el jefe porque estudié tal cosa o porque soy el hijo de tal
Y voy a tomar las decisiones que a mí me parecen bien y te tratan como basura humana, si no sos ellos o de su familia. Es una lástima. Son los lugares de los cuales huyo. He recibido ofertas de esos lugares, las he recibido. Salvo de estar en una situación desesperada, de literalmente es no como o no accedo a ciertos servicios de concierto esenciales. No es algo lo cual esté dispuesto a a meterme. Y no sé en cuántas empresas estuviste, vos creo que habías estado.
Sí, tengo un problema con la memoria, pero creo que había estado en una startup, si mal no recuerdo. Hay un problema. Una startup no es una vara de medir. Justamente, las startups tienen un problema muy serio, su estúpida inestabilidad y su mala gestión.
Acá hay nepotismo y compadrazgo. No tenía el término compadrasgo. Sé lo que hace referencia, pero no nunca se me ocurrió usar la palabra así. Gracias, aprendí a. eh sí a acá sucede igual, el problema es que en Argentina las empresas se funden porque el sistema impositivo y la vorágina en la que uno vive es muy difícil prosperar y tener empleados es suicida en Argentina Tener empleados es comprarse un hijo, literalmente, porque no lo podés despedir sin tener problemas muy graves.
Uno de mis jefes era un completo ignorante y no sabía nada de programa. Ah, eso es común. a ver he trabajado en lugares donde literalmente el manager no tenía la más mínima idea de la aplicación De qué es lo que hacía y cómo funcionara la aplicación. No digo a nivel técnico, sino qué es lo que se puede hacer y cómo se interactúa, cómo se entra.
Eso es común, lamentablemente sucede eso en muchas estructuras burocráticas. Ahora, repito, vos tu experiencia, y vuelvo a la pregunta inicial que hiciste, era en una startup. Creo. Una startup no es una vara de medir. Ese es el problema. Una startup. es algo muy loco porque es muy inestable. Hay startups que pueden ir bien, pero en general muchas startups surgen como la idea de yo tengo la idea revolucionaria que va a revolucionar el mundo revolucionado.
Porque soy un genio y estudié administración de empresas. Y a mí me dijeron que si estudio administración de empresas voy a ser millonario y ese tipo de estupideces. Y en base a la ignorancia tomaron un montón de decisiones. A ver, nunca tomaría lo que opine un ignorante sobre un tema como algo valioso. Sí, porque si no, vamos a hacer de que un ignorante que no sabe nada
Diga un cirujano, bueno, no, no, usted doctor no tiene que hacer lo que usted dice, usted para operar tiene que hacer tal y tal cosa. Porque yo vi en un lugar que decían eso. El cirujano tiene que amablemente ignorar el consejo, porque tiene que decir, che, lo que me acabas de decir no funciona.
entonces eh eso es importante a tener en cuenta y uno tiene que tener la piel un poco gruesa y aprender con el tiempo de que se va a encontrar con mucha gente ignorante no en el más sentido del término, no quiero que se tome como insulto, o sea, gente que va a ignorar del área técnica y es normal, es nuestro trabajo ser los expertos en el área técnica, porque si no el trabajo lo podrían hacer ellos.
ehh así que ah ta ta bien bueno te metiste en la parte bancaria El otro sector que es muy problemático, la parte bancaria y las startups son un... lo digo con conocimiento de causa, trabajé en en bancos y tiene una estructura burocrática muy compleja Y el área técnica está ahí en el quinto subsuelo de lo menos importante para Y las startups son muy inestables. Justo no elegiste ninguno de los mejores ejemplos, lamentablemente. Lo digo porque trabajé para una startup y trabajé para un banco.
Y traje para varios lugares. no tanto como me gustaría probablemente pero trabajé para varios trabajé para un banco y trabajé para una startup y la mitad de mis compañeros con los que trabajo trabajaron en distintos bancos y algunos trabajan en bancos hoy en día Entonces tengo información relativamente actualizada de cómo funciona. O sea, eso es lo lindo conocer gente que uno se entera de cómo funcionan muchas cosas. Y justo no son los mejores ejemplos.
Yo solo quiero programar porque amo eso, amo la programación, me encanta y sabes lo último, eh sabés lo último que ponían a hacer es eso, sí, sí los conozco bien eso en el último trabajo no reconocieron estaba generando una aplicación que iba a adaptar el sistema ya creado y se iba a acoplar para no reescribir lo ya establecido si Nuevamente, estás hablando con gente ignorante y pretendiendo de que tomen decisiones razonables sobre lo mismo. Si buscas reconocimiento no va por ahí.
O sea, no, no, no, eso último no en contra tuya, por la duda. O sea, no, nunca esperes que te digan, oh, muy bien hecho, porque para esa gente son insaciables y nunca te van a decir que está bien lo que haces. No importa que tu trabajo haya sido el mejor. Son gente que trata muy mala. Volviendo a tu pregunta original. A ver, ojo, con todo lo que estoy diciendo, no quiero que se interprete de que nada bueno, así lo que estás diciendo. No, o sea, no estoy desmereciendo lo que estás diciendo.
lo que está diciendo es real Está lleno de gente inexperta y desorganización. los bancos son estructuras burocráticas gigantes cuya prioridad en lo técnico es nulo o sea para ellos que no funcione lo técnico no es un problema aunque se caen a pedazos si eso sucede Y está lleno de administradores, contadores y gente que se deca cualquier otra cosa. Si parte de nuestro trabajo es trabajar con un montón de gente que no sabe nada de lo nuestro y considera que nuestro trabajo no sirve para nada.
y que nos importe un comino y que digan que lo que hacemos no sirve para nada y uno dice sí sí lo que vos digas yo voy a hacer el trabajo Eh ahora, trabajar en empresas grandes para tener un grado de libertad increíble no pasa. O sea, una estructura corporativa para quiero programar y sentirme libre programando, eso no va a suceder. En una corporación no va a suceder. Va a suceder más en proyectos open source quizás.
En empresas que tienen otro tipo de desarrollo o desarrollan sus propias herramientas. No que utilizan otras herramientas, que desarrollan sus propias herramientas. Ahí puede ser un poco más importante. Es lo mismo que yo descubrí en este trabajo que estoy haciendo ahora que me gusta mucho el desarrollo de herramientas, cosa que no sabía. O sea, sí, lo disfrutaba, pero no nunca había hecho tantas herramientas en tan poco tiempo.
No es mi trabajo principal, mi trabajo principal es otro, pero son cosas que fui aprendiendo sobre la marcha. el último trabajo no reconocer nada justo con un sistema de transferencia FTP móvil para levantar infracciones para hacer eso me costó un y la mitad de la sí, sí bienvenido al mundo de todo te va a costar mucho y cuando lo veas en retrospectiva de decir ah no era tan complejo pero como me costó
O sea, te das cuenta cómo te complicaste la vida innecesariamente. O sea, se te ocurrieron formas retorcidas de hacer complejo un problema que no lograrás. Pero bueno, respondiendo ahora sí a tu pregunta de che,¿cómo aprendo a hacer una aplicación completa? Vos te estás proponiendo hacer un punto de ventas completo. Es un sistema gigante un punto de venta. Vos mismo lo dijiste. No es algo que se aprende en dos días, no es algo que se aprende en dos meses.
todo el listado de herramientas, va la, las últimas herramientas que comenté me tomaron dos años Y que yo era la última que rehice, la que rehice en tres días, fue porque llevaba dos años de experiencia haciendo herramientas con visual para iOS y macOS y eso, y varios años previos.
Pero si no, no me hubiese salido venir a martillazos. También me inspiré en ver código ajeno en proyectos pequeños que fui viendo y un montón de tutoriales abundantes que encontré en internet. Internet es una fuente inagotable de conocimiento fantástico. Es la misma forma que, por ejemplo, ahora yo estoy aprendiendo a hacer un poco de diseño 3D para impresión 3D. Porque me interesa imprimir algunos repuestos y unas cosas que necesito.
Entonces estoy aprendiendo cosas de diseño 3D. Puedo ver tutoriales de cómo usar las herramientas. Pero me gusta ver mucho cómo la gente desarrolla los diseños en este caso. Entonces miro como alguien diseña una taza. A ver, cómo lo hubiese pensado yo y cómo... O sea, no lo hago yo. Lo veo como lo hacen. Digo, a ver, este diseño,¿cómo lo haría yo?
Me dedico cinco minutos a pensarlo, eso un poco menos, decía por acá y me fijo cómo le resuelve la persona, para darme cuenta que la persona encontró una forma mucho mejor de resolver el. Bueno, lo mismo hago también a nivel de código. De hecho tengo una lista de bibliotecas que me interesan aprender cómo funcionan y ya está. Y las tengo ahí en lista para ver y aprender de ellas.
Lo mismo que por ejemplo para una de estas herramientas de automatización que empecé a implementar pero que nunca terminé y que terminé donando el código para que lo continúen, yo no sabía cómo hacerlo. Entonces agarré y busqué repos de git que cumplan con eso y me llevé el código lo mínimo necesario, lo recorté por todos los lados que no necesitaba y dejé lo más compacto posible para que cumpla con lo que yo necesitaba, hice un par de pruebas y funcionó. Tuve que ajustar alguna.
Pero bueno,¿cómo se hace una aplicación completa? Por ejemplo, yo en su tiempo empecé a trabajar en aplicaciones relativamente grandes sin saber en lo que me estaba metiendo. Y todo me costaba un montón. Hoy en día, después de haber entrado a una empresa grande donde hacen una aplicación grande, aprendí muchas cosas. Con dolor incluido, porque ese es un detalle: si uno pretende enfrentarse a situaciones complejas sin dolor, lo siento, es muy difícil.
Y es lento. Si uno quiere algo rápido, es doloroso muchas veces. La mayoría. En mi caso, mis experiencias para aprender son a base de dolor.¿Qué es dolor? No sé nada, y bueno, todo me cuesta un montón. Tengo que investigar un montón. Y el tema es que, otra cosa que es importante mencionar: hay dos conocimientos muy importantes que uno tiene que tener a la hora de desarrollar una herramienta. Número uno, uno tiene que saber desarrollar. Obviamente, o sea, tiene que saber hacer cosas.
Número dos, tiene que saber la lógica de negocio. ¿Qué es esto? Por ejemplo, en una aplicación para compra online. La lógica de negocio significa entender cómo se autentica un usuario por allí, o sea, cómo se identifica un usuario, cómo se categorizan los productos, cómo se buscan los productos. Cómo funciona la idea de un carrito, qué información debe tener, por ejemplo, para un carrito de compras, cómo se procesan pagos con distintos procesadores de pago.
Cómo registrar las compras que se van haciendo, cómo llevar el seguimiento de un paquete y cómo registrar todo eso. Parece fácil. É difícil. O una aplicación de de para pedir comida, lo mismo. tengo que conocer qué cosas necesita o sea como identificarme ¿Qué tiene un restaurante?¿Cómo funciona un menú? O sea, un menú de un restaurante. Que el menú no es simplemente elijo una cosa u otra, puedo combinarlas, puedo modificarlas, puedo ponerle notas. eh después uno em
Tiene que aprender a armar un carrito. Tienes que aprender de que existen también los datos de la dirección a donde me tienen que mandar el pedido. O no, porque yo puedo ir a buscar el pedido. Entonces también tengo que tener los datos del restaurante para saber dónde queda. También tengo que saber, por ejemplo, cómo facturar. Tengo que saber cómo funciona el sistema de impuestos.
Estos ejemplos los digo por conocimiento de cosas en las que he trabajado. Parecen fáciles a primera instancia como, bueno, sí, quiero hacer una aplicación para hacer unas compras de comida.¿Qué tan difícil puede ser? No se imaginan lo gigante que es, o lo mismo aplicaciones como Uber o como Leaf. ¿Se piensan que la aplicación está hecha por tres desarrolladores? Está hecha por cientos de desarrolladores o mercado libre y mercado pago. Tienen literalmente cientos de desarrolladores.
La idea nació en algo sencillo, pero creció a un punto donde necesitas cientos de desarrolladores. Es una locura la escala que se maneja para mantener eso. Entonces un sistema de, un punto de venta, depende de lo que uno quiera, puede ser registro ítems y los pago y ya está, o me tengo que encargar también de la facturación. Ya depende de lo que llames point of sale o post o punto evento.
¿Qué es lo que se espera que haga?¿Tiene integración con etiquetadora?¿Tiene integración con sistema de facturación?¿Tiene integración con sistema de stock? Porque la facturación funciona de una manera, el sistema de stock funciona de otra.¿Qué otra cosa más? Stock, etiquetadora. Si quisiéramos integrar, sistema de facturación, teníamos que actualizar el stock. Tiene que performar decentemente y así, o sea, eso es lo básico que se me ocurre de un point of sale.
Gestión de stock, gestión de facturación, una forma de ingresar esa información de forma cómoda, por ejemplo, un escáner de código e generar comprobantes y facturar. Por ejemplo, lo que se me ocurre, yo nunca hice un punto de venta. Pero en base a cosas que voy viendo, trato generalmente de prestar atención. Probablemente estoy omitiendo algo más. Pero facturar, solamente facturar, a ver, algo que aprendí de trabajar en una aplicación internacional.
Qué dolor de cabeza que son los sistemas impositivos de cada país, por favor. Me alegran no tener que encargarme de todos los datos legales, pero ese conocimiento de cómo se factura, o ese conocimiento de cómo se gestiona el stock, Si es más lejos, pensemos que trabajamos en una tienda de venta de electrodomésticos. Bueno,¿qué tan difícil puede ser? Tengo un catálogo de productos entre los cuales, qué sé yo, están televisores, microondas, heladeras.
Hornitos, fredoras de aire, secadores de cabello, planchas, etc. Electrodomésticos. Agora... Cuando alguien va a retirar un producto,¿qué tan complejo puede ser? Y bueno, los productos tendrían que estar categorizados, ordenados de cierta manera y siendo fáciles de encontrar. Y uno tiene que llevar seguimiento del stock disponible. Si se compraron 5 heladeras y 4 personas compraron, tengo que saber que existe la última unidad.
Y tengo que saber dónde buscarlo. No puede ser que tenga un depósito gigante y me dedica a buscar uno por uno de los artículos.¿Dónde está la ladera? si más hay de distintas marcas pero este usuario com este cliente compró este modelo particular a la dónde era que teníamos esa heladera que es el problema que tiene amazon por ejemplo
Amazon tiene una escala gigante. En una tienda de electrodoméstico es más sencillo. Pero aún así uno tiene que saber dónde están las cosas. Y tiene que a cada artículo tenerlo registrado de alguna manera. Entonces bueno el sistema tiene que ser capaz de obtener toda esa información y algo que ignora uno al trabajar muchas veces pensando no el software es escribir código, programas y eso.
Es que parte de la dificultad, además de tratar con seres humanos, que eso es bastante difícil, parte de la dificultad está en justamente entender cómo funciona el negocio.
o sea es justamente la razón por la cual la mayoría de la gente que estudia administración de empresa es un fracaso piensan de que tener una empresa es tan fácil como he tener el título de administración de empresa entonces ahora voy a ser un genio de las finanzas y voy a tener el mejor negocio sobre la faz de la tierra y me voy a ser millonario en tres días. No, justamente es el pensamiento mediocre. No funciona así.
Para tener un negocio exitoso, uno tiene que saber ofrecer bien las cosas. Y podemos tener dos lugares que ofrecen exactamente el mismo producto. Pero uno lo sabe vender bien, el otro no, y el que lo sabe vender bien lo va a vender, y el que no lo sabe vender bien no lo va a vender, y es el mismo producto, e incluso el que lo sabe vender bien lo puede vender más caro. Porque lo sabe vender bien. Estamos bajo la misma cosa, pero uno es más habilidoso.
Bueno, en esto pasa tres cuartos lo mismo. Algo, por ejemplo, muy valioso. Si trabajo en. Por ejemplo, por decir cualquier cosa. En Amazon, o vamos a hacer la realidad porque es más creíble. Trabajo en mercado libre y llegué a hacer cosas muy interesantes. Y quiero buscar trabajo en Amazon para cierto tipo de sectores, y es mucho más fácil entrar estando en mercado libre a Amazon, por ejemplo, a esa parte de gestión, no a la parte de Amazon Web Services.
sino a la parte de, por ejemplo, gestión de stock y todo eso. que alguien que tiene sí, o sea, yo por ejemplo, que nunca trabajé en un sistema de control de stock, es mucho más probable que elijan al otro.¿Por qué? Porque el otro tiene un montón de conocimiento sobre cómo funciona. no del código, sino de cómo es el negocio, entiende el negocio. Bueno, el conocimiento del negocio es algo muy valioso, vale mucho
Y en muchos casos es muy bien valorado. Porque entrenar a alguien por seis meses para que entienda cómo funciona el negocio de una cosa. Y que alguien, por ejemplo, que ya haya trabajado en una aplicación parecida, viene como, ah, los conceptos son los mismos. Y nos pasa con incorporaciones que vienen de otras empresas y
Y en la mitad del conocimiento no hay que explicárselo porque entiende cómo funciona un sistema de facturación. Entiende cómo funciona más o menos una cuestión de stock, cómo funciona una selección de un menú, cómo funciona un checkout. Ya lo hicieron para cosas parecidas para otras cuestiones. Bueno, listo. Eso significa una explicación menos que hacer, y eso es muy valioso.
¿Cómo hacer que trabaje en real time?¿Usarías un patrón observador? No solamente eso, el tema es la infraestructura que tengas. Porque vos estás pensando desde el punto de vista de que tengo una computadora sola en un supermercado, en una tiendita. O sea, tengo un almacén y tengo. O sea, yo lo que estoy planteándote ahora con esta complejidad es más a nivel escala. O sea,¿qué escala querés que tenga?¿Querés que sea para un almacencito, para una tiendita?
Es una cosa. Si es para un supermercado es diferente, porque de repente un supermercado tiene muchas cajas. Porque todo es fácil cuando tenés una caja, ahora que pasa cuando tenés muchas. Yo mismo veo, por ejemplo, para la empresa en la que trabajo, tiene que manejar varios miles y millones de transacciones al mes. Al mes son millones de transacciones, al día varios miles.
La infraestructura que hay detrás para que eso funcione es algo que uno no se dimensiona, sobre todo cuando uno ve el presupuesto y dice,¿Qué?¿Cuánta plata sale por mes?¿Cuántos miles de euros? Con eso yo vivo bien por un año, o mucho más que un año, en lo que se gastan o en un mes de infraestructura. O sea, en mantener la infraestructura, no en comprar, en mantener.
Yo vivo muy bien viviendo holgadamente durante mucho tiempo en lo que se gasta infraestructura. Uno no dimensiona, de hecho, yo tampoco lo dimensionaba hasta que lo vi y dije, ah,¿en serio gastan todo esto?¡Wow! Ya, sé que por ejemplo en Google Maps se van más de 40.000 euros así. O por lo menos en su tiempo se iban más de 40.000 euros en Google Maps. No mencionemos todo lo demás, Google Maps es una muy muy pequeña parte de todo.
Entonces depende de la estructura, la escala que le quieras dar. También pasa que muchos sistemas nacen en algo pequeño y después uno dice, ay, qué tal si lo pongo en un lo pongo en un comercio que tiene una sola computadora, listo. Y si tiene 2? Ok, es más complejo. Y si tiene. Ok, esto de repente ya no está escalando. Y si es un supermercado, tiene 10. Y si tiene múltiples sucursales, o sea, la cosa puede crecer lo que vos quieras.
Es depende del nivel que le quieras dar. Puedes hacer una solución que funcione para algo más limitado. Es más fácil. Si quieres algo que funcione bien en una tiendita, a un hipermercado, a una cadena de supermercado.
es muy diferente necesita una sola persona no lo va a hacer garantizado si es para un supermercado gigante con o una cadena de supermercados salvo que seas una persona muy muy muy competente y una excepción a la regla no pasa Una sola persona no lo hace Ahora sí es para una tendita, algo más sencillito, sí, eso es así. Si tuvieras que asociarte con un vendedor y esa persona te encargara solo las ventas de tu producto,¿qué porcentaje de a ver cómo hace trabajo?
Primero lo de patrón observador. Patrón observador es un patrón de diseño a nivel de código. Depende, a ver. ¿Cómo funcionan muchos sistemas? Fácil. Tenés una base de datos en algún lugar. Vas a consultar. La forma más sencilla. Cuando querés comprar algo, vas a consultar la base de datos.¿Hay stock? Sí. Ok. Resto el stock.
le agrego el genero una compra agrego ese monto mismo del stock con esos datos y ya está Y con eso genero, obviamente te van a generar la facturación, todo lo que corresponda, y almacenar los datos, no, no hay ningún patrón raro. Eh después si querés puedes tener algo más, o sea, si quieres visualizar los resultados de alguien que tenga el panel de control y esté contando a ver cuántas ventas se están haciendo.
Puedes hacer que cada venta reporte en algún lugar y con eso vas vas armando un reporte en semi-tiempo real. Porque la palabra tiempo real suena muy bien, pero siendo honesto, en la industria el tiempo real generalmente no existe. Lo que haces es algo que parece tiempo real.
Porque si vos te pensás de que la cantidad de likes que ves en Facebook es tiempo real, mentira. O la cantidad de likes que ves en X, Twitter, como lo quieras llamar, o en YouTube, es en tiempo real, eso no está en tiempo real, eh. Se actualiza con frecuencia y hay un montón de mecanismos por los cuales eso funciona. Pero en realidad, el número no es tan exacto. Las estadísticas de un canal de YouTube no suelen ser tiempo real.
Y hay formas, hay infraestructuras que te permiten simular algo muy parecido a tiempo real. Pero ahí tenés base de datos en RAM, tenés varios servidores corriendo, tenés muchas cosas. Hay veces que uno tiene que aprender a hacer algo lo suficientemente bueno para la necesidad. Y eso significa, por ejemplo, que el tiempo real sea como, bueno, tiene demoras de un minuto. O sea, si yo jefe y quiero ver cuántas ventas hay, yo no sé en este momento exacto, pero sé cómo estaban hace un minuto.
Para el jefe lo suficientemente bueno, sobre todo si no se lo decís. O sea, es como si un minuto no le hace la diferencia. ahora para otras cosas son minutos muchos Ahora para... un supermercado que ver cuántas ventas tenés ahora o hace un minuto no le cambia Uno tiene que saber identificar a cuándo es valioso ese dato, cuándo no. Yo sé que el jefe así, no, tiene que ser tiempo real. Y vos estás como. Mirá que el tiempo real te sale varios miles de dólares y el tiempo casi real te sale cien.
¿Cuál querés? Si querés, te doy tiempo real. Acá decís, si tuvieras que asociarte con un vendedor y esa persona se encarga solo de las ventas de tu producto,¿qué porcentaje le darías? Eso se puede arreglar. Depende de qué favor me esté haciendo, o sea, depende de qué también trabaje, depende de qué tanto lo conozca. Cincuenta para abajo.
De hecho, una cosa que funciona más o menos bien es algo por comisión. Bueno, por cada venta que haces, te ganas un porcentaje. Y el dinero lo sacás de la propia venta. Hubo una vez donde casi tuvo un emprendimiento donde hacíamos algo por el estilo. Y siempre tenemos la idea con un grupo de amigos de che, podríamos tener un mini emprendimiento para hacer esto. Después nos acordamos que nos da fiaca o nunca nos coordinamos y se.
Pero depende. No hay una fórmula, es el problema. Y de hecho uno puede tomar buenas o malas decisiones al respecto. Yo no sé si daría un porcentaje fijo, yo acordaría por un tiempo y vería qué tal performa. Podés darle, si querés, un 10%. Ahora depende qué tanto aporte, depende de qué tanto hayas desarrollado. Puede que tu desarrollo haya sido mínimo y el trabajo duro en realidad es vender el producto.
vender el producto es un trabajo duro Pero a ver si tu solución es sencilla y después tenés que agarrar y vendérsela a todo el mundo, bueno, ahí es otra cuestión, también uno tiene que poner la balanza decir qué es lo que yo prefiero, ganar en la cantidad. eh o ganar en la unidad y son dos formas diferentes no es tan fácil tampoco repito vos dabas el ejemplo de un punto evento
¿Qué tanto quiero que llegue el punto de venta?¿Solamente que funcionen pequeños comercios?¿O quiero que funcionen grandes comercios? Porque el costo es muy diferente. Y tenés que convencerlo. Yo me acuerdo, un compañero de trabajo, cuando trabajó una vez, me contaba la anécdota que había trabajado en una de las empresas grandes que están en Argentina.
eh que se encarga de vender partes de computadoras y vender computadoras ensambladas especialmente enfocado al público gaming Hay una página muy conocida, hay varias en realidad, pero hay una que es muy conocida, que es en que justamente uno elige los componentes hardware y va armando su computadora personalizada y se la mandan a uno a domicilio, todo muy completito el servidor.
Bueno, él trabajó haciendo uno de esos sistemas. Subestimó completamente la complejidad de hacer un sistema así, como suele pasar. cuando uno no sabe cómo funcionan las cosas y dice sí debe ser fácil y se dieron cuenta que no fue nada fácil Y por ejemplo el sistema era carísimo. Para la época por lo menos, era carísimo. Ahora.
¿Por qué pudieron hacer eso? Porque bueno, la empresa está dispuesta a pagar eso, pero no sucede con todo. De hecho, un problema que tengo es que muchos dicen, oh, yo quisiera tener una aplicación, un software. Si yo te paso el presupuesto, no me lo compras. Salvo que lo venda en cantidad. O sea que yo puedo vender una aplicación por decir cualquier cosa, puedo decir, bueno, la aplicación te sale la suscripción 100 dólares al año.
También no hay que abusarse porque después no te compra nadie. Ahora tengo que encargarme de vender un montón de copias para tener un ingreso decente. Recordar que hay que pagar impuestos. Entonces no es lo mismo. Otra cosa cuando vendo algo específico a una persona o a dos personas y te vendo la solución y punto. O sea, no es algo que voy vendiendo por todos lados.
Son esquemas diferentes. Entonces, muy dependiendo de eso. Si tuviera que ganar, nada. Le ofrecí a alguien 25%. Dijo que era muy poco. sí, ajá también a ver yo yo eso lo veo y yo no lo entiendo por ejemplo no tiene que ver con software pero vamos al caso de cuando uno publica algo en mercado libre o marketplace ¿Qué es lo que está garantizado que suceda?¿Va a venir alguien, por ejemplo, por decir alguna cosa? Estoy queriendo vender algo a 100 pesos.
Por la duda, 100 pesos argentino no te compras ni un dulce, ni un caramelo. Es nada 100 pesos. Son 10 centavos dólares o menos. No, no creo que son 10 centavos dólares. Más o menos. No te compras nada. No te alcanza para nada. Es cambio chico. Qué irónico, 100 pesos eran 100 dólares, pero bueno, fuera de la cuestión económica, yo quiero vender un producto a 100 pesos. Es inevitable que me vengan 553 personas, sobre todo si es Marketplace. Si lo vendés a 50, tengo el dinero, te lo compro ya.
Es inevitable. Mercado Libre es menos probable, pero pasa también.¿Cuándo vendés cosas usadas sobre todo? En Marketplace, cuando vendés cosas nuevas no hay vuelta, pero cuando vendés cosas usadas o en Marketplace, y yo lo he visto con vecinos y todo, que me contaban la anécdota de que estaban queriendo, estaban vendiendo unas cosas que tenían, y me sorprende cómo la gente cede.
Y me pasó yo en su tiempo, estoy hablando hace varios años, vendí algunas cosas, unas piezas de hardware que tenía que no necesitaba, las vendí. Me sirvió para pagar varias cuotas de algunas cosas que tenía. Y todo el tiempo me aparecían preguntas de.¿No me haces un descuento? Yo te pago tanto y te lo compro ya, sin vueltas. Estás queriendo estafar, me estás queriendo robar, no regateo, este es el precio de venta. Punto. Obviamente yo pude haber abusado en el precio.
Y bueno, pasa, son cosas que pasan. Pero si uno vende a un precio competente e inmediatamente te quieren bajar el precio, esa gente sabe que hay gente que cede. Y me preocupa la cantidad de gente que cede con facilidad. Es decir, no, es muy caro, mira, si me hace un 10% de cuento te lo compro ya. Y es, no, el precio del producto está, ya está. Si sé que no te estoy cobrando caro y no estoy urgido, lo siento, funciona así. Es así de siempre.
El tema que la gente tiene increíble, o sea de momento no encuentro evidencia de otra cosa de que ceden con mucha facilidad, no, no bueno está bien te lo En este caso creo que una persona estaba vendiendo unos peces y los podía vender por 50.000 pesos o más y los terminó pagando. Los terminó vendiendo a 30.000 pesos con 4.000 pesos falsos.
Y la persona dice: Me vuelven loco pidiendo eso, y bueno, tuve que vendérselo a ese precio. Y yo estoy como, no, no tenías que vendérselo a ese precio, vos cediste. Bueno, acá es lo mismo. Obviamente, hay momentos donde uno está bastante complicado y tiene que hacer algo. Pero. Veinticinco por ciento es poco de qué.
De qué monto estamos hablando? Si vos estás queriendo vender algo a 100 dólares y 25%, me parece que le está dando mucho. O de última, depende, porque también vos podés decir, yo no tengo un vendedor, tengo varios. ¿Quiere le va a dar 25% a cada uno?¿Si tenés cuatro vendedores te quedas sin nada? Y tenés que ver cómo vendes la cosa. Si la cuenta que hice recién estaba medio mal. Pero depende de lo malo que seas administrándote, puede quedar sin nada, literalmente.
Y en ahí es donde tenés que saber administrarlo. Lo mismo que hay un detalle del software y eso que uno lo aprende por las manos, generalmente, es que no solamente lo tenés que desarrollar, sino que lo tenés que mantener. O sea, no es que te puedas digar, bueno, voy a hacer ahora otra cosa. Eso lo tenés que seguir manteniendo vivo. Y si es un punto de venta, tenés que estar listo a que te llamen por teléfono y te digan, che, se rompió. Arreglámelo.
Eso pasa, eh. Eso es lo que uno tiene que tener cuidado cuando uno vende un servicio. Que también tiene que tener atención al cliente. Y ahí uno tiene que dejar bien claras las cosas y en un contrato. Ahora, en un punto de venta es cuando son esos lugares en donde no puedes darte el lujo de fallar mucho.¿Por qué? Porque para un negocio no poder vender es grave.
Lo digo por conocimiento de causa. O sea, trabajo en una parte muy crítica que si se rompe no vienen a buscar porque no se vende nada. No, no trabajo en un punto de venta. Pero sé muy bien lo que es esto, no se rompe. Punto. No se discute. Y si se rompe, se arregla lo antes posible, porque implica pérdida de mucho dinero. Y es todo un tema eso. Entonces, son un montón de cosas que uno en la ignorancia muchas veces no las considera. Y después dice, ah, qué bonito.
¿Significa eso que uno no puede vender? No, claro que puede vender, pero uno tiene que tener en claro todas estas cosas para dejarlas bien claritas en un contrato y saber tener el cuero grueso de bueno cuando te ataquen con de todo vos saber defenderte Porque hay mucha gente aprovechada, lamentablemente. Estaría bueno uno poder trabajar de buena fe. No se puede.
🔇 Silence
Uno tiene que tener los recaudos legales, ante todo. Y hay mucha gente que siempre quiere aprovecharse y obtener un beneficio muy grande. Y no está bueno. En el tema de vender pasa mucho. Lo mismo, es un 25% voesía, por ejemplo. Es un 25% muy bien. Sobre cada venta, más vale,¿no? Y también tiene que pagar impuestos, porque también una buena costumbre latinoamericana es no pagar impuestos.
Y esa parte de los impuestos le corresponde a la persona, vos le, vos le sedés, su por decir cualquier cosa, si un veinticinco por ciento O sea, cuando sale el 25%, el 25% es bruto. El resto paga impuestos. O sea, la persona va a recibir menos del 25%. Y tenés que también tener la asesoría legal para que eso no sea un problema y que no te venga a buscar el fisco. O, bueno, podés hacerlo de la forma que no corresponde y cada uno se hará cargo de las consecuencias de hacer algo ilegal.
Lo digo porque en Argentina eso lamentablemente es bastante común. También, lamentablemente, el sistema fiscal ilegal es una locura. Es una lástima. Pero bueno, es Son un montón de cosas que uno tiene que tener cuidado y no hay fórmulas, no hay secretos. ¿Y tú por dónde empezarías? Por algo más sencillo. O sea, primero, un punto de venta es muy complejo y uno solo es muy difícil administrarlo.
Pensá que te vas a dedicar a tiempo completo a eso. Cuando lo termines de desarrollar, vas a tener que seguir manteniéndolo. un punto de partida es, no sé, hacer trabajo en web. Si tuviera que hacer un punto de venta, entender cómo cuerno funciona un punto de venta.¿Qué es lo que tiene que tener un punto de venta? Yo dije, básico que tiene que tener un punto de venta. Control de stock.
Muy importante tener control de stock. Tenés que tener facturación, tenés que tener forma de generar comprobantes. Lugar donde registrar todo, bien, control de stock. Tengo que almacenar un montón de información de un montón de productos. Tengo que aprender qué información tienen los productos, porque existen, por ejemplo, eso lo aprendí de trabajar en un supermercado. Existen productos que los medís por unidad.
que suele ser lo común, por ejemplo una botella de alcohol etílico, tenés un shampoo, tenés una maquinita de afeitar, tenés una toalla Tenés de por unidad. Ahora después tenés otros productos que son pesables. Por ejemplo, frutas y verduras. Compras medio kilo de tomate, dos kilos de banana, un kilo de cebolla. esto que suena tonto nos costó muy caro en un supermercado por no tenerlo en contemplación o sea ignoramos el concepto de pesable y que de hecho es el error común
Y que lo mismo que pasa en un e-commerce. En un e-commerce de eh por ejemplo al estilo mercado libre o amazon bueno uno compra un libro un llavero una lámpara Pero nunca considero cosas que van por peso. Porque es normal en ese contexto comprar por unidad. Ahora, cuando uno trabaja, por ejemplo, en un supermercado, el stock también puede ser pesado. Entonces, de repente tengo dos categorías.
También tengo que saber cómo registrar los productos y los productos suelen tener un código, muchas ca muchas veces el código está codificado en EAN trece. Otras veces el código puede estar en un código QR, otro es en un EAN 8. Son distintos estándares para codificar información. Eso lo aprendí nuevamente tras que en un supermercado implementando la funcionalidad de SelfChickup.
Yo no sabía todo eso, nunca se me había ocurrido. Yo pensé que había un solo tipo de código de barra, algunos más largos y otros más cortos, y después me di cuenta de que funcionan diferente. De hecho el EAN trece, si mal no recuerdo, tiene el último dígito verificador para ver que toda la información anterior tenga un formato razonable y no esté corrompido la información.
Lo aprendí porque dije, che,¿qué es esto de EAN? Lo busqué y como, ah, ni me acuerdo lo que significa la sigla. Y ahí me di cuenta que existen 20.000 tipos de código. Y después, eso solamente de referente a productos. Muy bien. Medios de pago, tenés que tener pasarelas de pago para que funcionen. e interactuar por ejemplo un comercio puede usar mercado pago otro puede usar pay you Otro puedo usar y así tenés un montón y tenés que ser compatible con eso de alguna manera.
A su vez tenés que tener en cuenta que, por ejemplo, si usan Mercado Pago o cualquiera de esas pasarelas de pago tienen comisiones. O si no, tenés que tener una asociación con Visa, Mastercard, etc. Eso es un dolor de cabeza, entonces generalmente pagás la comisión que te cobre Mercado Pago o quien sea, o sea, vas a tener una pérdida ahí.
¿Cómo hacen los supermercados para que eso no les simbolice tanto? Hacen acuerdo con las empresas diciendo, a ver, yo soy una empresa muy grande, voy a traerte mucho dinero, así que cobrame menos comisión.¿Cómo hace el pequeño empresario? Paga la comisión completa. que puede ser del uno dos tres cinco por ciento que vas a perder de la venta por ejemplo y tenés que convencer al comercio de que eso le conviene Tenés que facturar. Bueno, facturar implica tener conocimientos de contabilidad.
Tenés que registrar las cosas de alguna manera. Podés tener un sistema más sencillo. pero después tenés la cuestión de que tenés que cómo haces para pasar todas esas cosas a algo más útil y si vos querés venderlo a un mayor público tenés que vender algo más potente o sea cuanto más potente sea más probable que lo venda si es como si esto es como un blog de notas pero digital Como la libreta del almacenero.
sí tenéis listadas las personas que me deben y ya está pero no no cumple con ningún requisito después esa persona si tiene que registrar la venta es un dolor de cabeza y de repente va a venir alguien que dice hey el mío factura, el del otro no Entonces de repente tenés que tener un sistema de facturación. Y para facturar tenés que conocer el sistema contable del país. No lo hagas con el argentino, nadie lo entiende. Ni los propios contadores lo entienden.
tenés que integrarte si es si es un supermercadito, una tienita chica, un lector de código de barra. Bueno,¿cómo funciona un electro de código barra?¿Cómo lo conectás al software para que lo identifique? Si vos me preguntás, no tengo ni idea. A lo mejor es súper sencillo. No lo sé. O sea, si quieres hacer algo flexible, si quieres hacer algo súper específico, no lo vas a poder vender en muchos lugares. Es el problema. En un tiempo así pagos y considerar la merma preso
Pero eso es imposible a que hagas referencia con eso. O sea, un punto de venta no es particularmente sencillo. En un hubo un tiempo donde casi implementamos un gateway de pago que en realidad era un gateway de otros gateways. para un punto de venta pero no implementábamos el punto de venta El punto de ventas ya existía y el punto de ventas se comunicaba con este gateway. Y de repente, por ejemplo, a ver yo lo veo por ejemplo en el supermercado donde voy, uno puede pagar en efectivo.
Puede pagar con tarjeta. Perfecto. Puede pagar con Mercado Pago. Oh oh, hay que integrarse con Mercado Pago. Y eso implica tener aparatito de mercado pago o integrarse con la API de mercado pago. Entonces el punto de venta también tiene que estar integrado a la API de Mercado de Pago y mantenerse al día porque la API de Mercado de Pago puede cambiar. Por eso un punto de venta es un software muy complejo. O sea, un software de venta no es algo. O sea, cosas que no son sencillas. Un e-commerce.
Punto de venta.¿Qué otra cosa no es sencilla? Sistema de facturación. No es nada sencillo. Una aplicación de. De delivery, nada sencillo. Una aplicación de.¿Cómo se llama esto? Al estilo web. De. De taxi. Es súper complejo. Son software más complejo de lo que parecen. Yo en otro tiempo hubiese empezado, bueno, Uber serán unas a lo sumo cien personas, qué sé yo. 10, ojalá. Súper complejo. Y cada país es una realidad, entonces más complejo.
🔇 Silence
En tu caso no aspirarías a tanto. A ver, aplicaciones más sencillas, ideas que se me ocurrieron a mí y que nunca las implementé. Una muy sencilla. No sé cómo funciona la cosa en México, pero acá hago que conozco a alguien que se lleva. Va, no lo conozco, pero conozco a alguien que lo conoce y se está llenando de plata. Con una idea muy sencilla. Hoy en día los bares no quieren tener menú. Entonces tienen un código QR. Entonces,¿qué hace? El VAR carga en alguna plataformita web.
En realidad, ni siquiera hace eso, es peor. Pero bueno, cargan en una plataformita el menú. Y cuando viene el usuario escanea el menú y lo ve bonito en su celular. Se escaneó un QR que lo lleva a la página de un menú. Esta persona, porque supo de encontrar un truco legal para obtener dominios gratis, entonces pudo crear cientos de páginas pagando una sola.
Y técnicamente no está haciendo nada ilegal. Es un tecnicismo muy grande. Se está llenando dinero por vender eso a Vares. Va a Vares y le dice: Che,¿vos querés tener tu menú web?¿Tu menú con QR? Y el tipo lo que hace es subo como una especie de PDF a una página y ya está, eso es todo. Y lo vende a un precio no muy caro, pero lo vende en un montón de bares y se está llenando de dinero. Y se y vive de eso. O sea, el tipo se dio cuenta cómo va a hacer cosas sencillísimas y se está llenando dinero.
No es que uno tiene que hacer algo súper complejo, el tema es que uno tiene que saber venderlo. Que nuevamente la otra cosa es una cosa que personalmente no me sale. Yo soy un pésimo vendedor. Sería un muy mal vendedor. Siento que para vender cosas tengo que ser deshonesto y no decir la verdad en muchas cosas. No me gusta.
Porque también el cliente tiene expectativa y el vendedor muchas veces comete el truquito de decir, no, sí, sí, esto es la mejor herramienta que vas a tener, resuelve todos tus problemas. Yo estoy como esto funciona bien. Y lo hice yo, voy a procurar que funcione bien, pero probablemente no tenga todo lo que voy a estar esperando, se puede mejorar, pero eso no sirve para vender.
Eso piensa hacer, pero las personas no solo quieren el menú, también quieren aceptar pagos. Bueno, te tenés que integrar con una pasarela de pago como mercado pago. Bueno, tendrás que aprender cómo funciona el mercado de pago. pero mercado pago no es un punto de venta De última, podés hacer de que el a ver a mí se me ocurre cómo hacer el sistema completo porque le di vueltas a la idea un buen rato, pero siempre me dio fiaca hacerlo y no lo haría solo ni lo.
más que hay que venderlo y yo no estoy dispuesto a venderlo porque yo no soy para vender Pero, a ver, truco sencillo. Es fácil. Vos tenés una. El QR es por mesa. Vos vas registrando los pedidos de una mesa. o sea el el camarero lo que sea toma los pedidos en una mesa registra los ítems y cuando va a concretar la compra le figura el total y para pagar pueden pagar con mercado pago o transferencia bancaria o algo por el estilo y ya está
Simple. No es un punto de venta completo. Es. En realidad es una pa la integración con la pasarela de pago. Digo mercado de pago por decir una de las más populares, pero puede ser otra. Cuantas más tengas, mejor. Pero es literalmente tenés el registro del menú por parte del local, tenés la visualización del menú por parte del ehm,¿cómo se llama?
del de la mesa por así decirlo eh, cada código QR es de una mesa en particular, o sea cada código QR es diferente Y listo.¿Tenéis que hacer alguna forma de generar los QR?
y después el los pagos simplemente podés hacer que el camarero tenga la o sea estoy pensando esto sobre la marcha el camarero toma nota sobre las distintas cosas y y después le decís che ya ya quiero comprar y le pagá y todo o sea no no es eso no es una pa no no es un punto de venta como tal es más sencillo Pero sirve para un bar nomás, o para un restaurante. Este después, si eso lo querés incorporar al sistema de facturación.
mucho más complejo si eso lo quería incorporar un sistema de stock es mucho más complejo yo estoy diciendo solamente algo que sirve para ver un menú o incluso para cobrar una compra Pero ahí es donde se pone más compleja la cosa. Um Y ahí el detalle, como diría Welcantief: Sí, sí, aceptar los pagos no es un problema, el tema de cómo hacer que ese pago se registre en el sistema de facturación.
Esta persona que te digo que se está llenando dinero a base de hacer menús con QR, no hace sistema de facturación ni a martillazo. El tema es que es un buen vendedor. se sabe vender eso y la verdad que le está yendo bien. Bueno, la facturación de alguna forma la tenés que integrar, es el problema. O sea, el cómo se integra con el sistema que tiene el local es otro problema.
Que si usan, por ejemplo, Mercado Pago tiene un podés facilitarte algunas de esas cuestiones, pero es inevitable que vas a tener de alguna forma que registrar eso.
🔇 Silence
La integración con un sistema de facturación custom es otro préstamo. probablemente ahí sí no te no estén dispuestos a pagarlo ahora el tema está en qué es lo que les estás vendiendo o sea si vos estás pensando en querer resolver todos los problemas que tenga el local incluso llevar un seguimiento de todo el stock estás haciendo un sistema súper complejo yo estoy hablando de un menú Y algo tan simple como un menú si sos bueno vendiendo lo puedes vender.
🔇 Silence
Esa es la gracia. Incluso en lo que acabo de mencionar hace un rato, he abarcado el doble de lo que he pensado en otro tiempo de cómo resolver la cuestión. Hay más capacidad de la que imaginé. Pero integrar con el sistema de facturación, o sea, muy específico. Cada lugar tiene un sistema de factura, no existe un único sistema de facturación, ese es el problema.
Después de última, si querés integrar a algo que te permita facturar, tendrías que ver, en el caso de México es el SAT, cómo se registran facturas de última. Y tendrías que ver cómo asocias a cada ítem del registro, del menú, con una venta. O se hace una venta generalizada. De última, si sabes integrarte con las APIs del SAT, podés agarrar, registrar las ventas y dejárselas al local disponibles para tener.
tenés el catálogo de ventas el menú y en la en las ventas tenés la factura asociada después que lo accedan mediante una plataforma y hagan lo que se les cante Es una especie de punto de venta simplificado. Después tenés que contemplar cómo funciona el pago en efectivo y Pero bueno el temite de los pagos si quieres integrar una pasarela de pagos ahí
Tenés que considerar de que las pasarelas de pago tienen una comisión, mercado pago. Tiene comisiones. Acá lo que hacen muchos bares es directamente: no, no, no, no pagues con mercado de pago, transferir, porque la transferencia no tiene costo, el pago de un QR tiene costo. Tiene una comisión. Eso es lo que comercio no le gusta. Pero bueno, funciona así.
🔇 Silence
Pero en realidad es saber vender. Lamentablemente, eso lo aprendí también. Hay que saber vender. Eso paga muy bien. Personalmente, no es lo que más me salga, tampoco es lo que más me interese. Pero algo muy apreciado es saber vender. Si vos tenés una idea fantástica, si vos trabajás muy bien, pero no sabés vender lo que hiciste, no sé.
Lamentablemente, eh. O sea, vos podés tener una persona que es muy trabajadora, pero si su trabajo no se hace visible en las cosas importantes, no. No, pero ahora es más óptimo, demora cinco segundos menos. Tu jefe va a decir, salvo que seas Amazon, que 5 segundos menos es una estupidez de tiempo, es muchísimo tiempo, pero si no tu jefe te va a.¿Qué me importa?
Y en parte tiene razón, es como si cumpliste un logro personal, pero¿en qué le mejoraste las ganancias o las ventas? Nada, bueno, para él es como si no hubiese hecho nada. Tenés que entender cuál es el objetivo del otro también. O sea, esto me acuerdo cuando yo entré en la empresa en la que estoy ahora, el, el que fue mi manager en aquel tiempo que me estuvo entrevistando. Me planteo algo que me pareció muy razonable.
las relaciones laborales son una relación recíproca en la cual ambas partes ganan el empleado ofrece un servicio que le ayuda a la empresa a poder crecer y obtener ganancias y el empleado obtenece eh obtiene crecimiento personal y un sueldo, por ejemplo. Y aprender cosas, por ejemplo. Entonces. Es una relación en la cual ambas partes deberían ganar. Si solamente una de las partes está ganando, probablemente algo esté mal. Pero idealmente ambas partes tendrían que ganar.
El tema es que hay veces que lo que busca uno y lo que busca el otro son dos cosas diferentes. Y ahí es donde uno, bueno, no coincidimos y lo sano sería como bueno, cada uno por su lado. Este, pero hay que saber hay que saber venderse o hay que Saber ofrecer lo que el otro quiere y si querés en el medio hacer lo tuyo. Yo, por ejemplo, lo que estuve comentando en este podcast son herramientas que hice.
No es que a mí me vino management y me dijo vení, quiero que hagas herramientas. Eso lo hice por voluntad propia. Pero le dio un beneficio al equipo. Y en darle el beneficio al equipo es donde ganamos todos. Y de repente pudimos mejorar el rendimiento. Porque de repente podemos hacer prueba. Y la calidad de lo que íbamos lanzando fue mejorando.¿Qué es lo que yo ofrecí?
Herramientas o una mejora de la calidad del producto. El resultado fue una mejora de la calidad del producto.¿Qué es lo que le tengo que decir al management que le estoy dando? Una mejora en la calidad del producto.¿Cómo lo hice? Hice las herramientas que nos permitió desarrollar más rápido y con una mejor calidad. Desde el punto de vista técnico hice una cosa, desde el punto de vista para ellos hice otra.
¿A ellos les interesa? No, mirá, es una herramienta utilizando las últimas tecnologías y con un coverage del 99,6% y bla bla bla bla bla. Y ellos te van a decir, muy bien, estuviste desperdiciando tu tiempo. Y si yo digo, hice una herramienta que nos ayuda a hacer un código que nos garantiza una mejor calidad. O nos garantiza un producto con una mejor calidad. Va a tener menos errores.
🔇 Silence
Eso es lo que quieren escuchar. Es saber decirle lo que quieren escuchar y saber ofrecérselo realmente. No mentirle. Hay gente que lo hace a base de mentiras. Yo estoy totalmente en contra de hacer eso. Uno tiene que saber cómo ofrecer lo que necesitan o lo que quieren. Y en el medio uno puede agarrar y aprender muchas cosas, como es el caso de estas herramientas.
ninguna de estas herramientas fueron una petición directa ahora algunas de estas herramientas por ejemplo las de automatización para podcast son cosas que se pueden vender o puedo de hecho esa es una oportunidad que tuve en su tiempo No la pude usar como correspondía por cuestiones personales, laborales, etcétera. Pero qué yo, hacer una aplicación buena de podcast y ofrecerla es una aplicación que podría funcionar. No me voy a hacer rico con eso, pero puedo ganar algo de dinero.
El tema que la tengo que vender. O sea, tengo que encontrar una necesidad y satisfacerla. Ahí se intentaré ver qué pasa. Total, ya no tengo nada que perder. Posiblemente estudiaré un máster para obtener una beca. Éxitos con eso. A ver, ningún trabajo es fácil. Cuando te gusta es más fácil, pero ningún trabajo es...
La programación no es fácil. Me gusta, por eso le pongo interés y por ejemplo por eso hice las herramientas que hice. Y estoy dispuesto a soportar ciertas cosas en pos de esto que me gusta. Mas obviamente tudo tem o mesmo. Em ahora, algo que aprendí con el tiempo es que conocer al negocio es muy valioso. No es solamente patrones de diseño, código, lenguajes de programación. Eso lo charlaba hoy con un compañero y justamente decía. El menor de mis problemas es el código.
tratar con gente es muy complicado. Hablando con él porque él interesaba la parte de management, y yo estaba como, uff, qué ganas de lidiar con gente, eh. Porque un manager no hace otra cosa que lidiar con personas. Yo no lo entiendo, a mi no me gusta, lo respeto, pero a mi no me gusta.
Lidiar constantemente, o sea, tengo que lidiar con gente, eso no es un problema, pero tener que lidiar constantemente con un montón de problemas relacionados a gente, relacionados a personas,¡ah!¡qué dolor de cabeza! Dame un poco de parte técnica que me interesa más. Pero una cosa no quita la otra. Y si yo, por ejemplo, me fuera a la competencia, sería, es mucho más probable que me contraten a que si fuera a trabajar a otra empresa.
Porque yo ya tengo conocimiento de cómo funciona el negocio, ellos les interesa eso, y uno es muy ignorante. Y de hecho, yo un ejercicio simple que siempre recomiendo es. Sentate y escribí todo lo que necesitaría tu punto de ventas y qué cosa necesita cada cosa hasta que no encuentres algo que no necesite, por ejemplo, yo te di el caso.
de un pu el punto de vente necesita la facturación, necesita tener stock y mantenerlo actualizado, necesita poder, o sea miralo físicamente primero o lo mismo, agarrar alguna aplicación más o menos compleja que yo de pedido de comida de Como se llama esto de, o al estilo Airbnb, o sea de alquileres o de ventas al estilo Amazon Mercado Libre, algunas de esas aplicaciones y de poner a analizar qué información necesitas.
en base a lo que ves en pantalla te vas a dar cuenta que nunca Vas a describir todas las cosas que necesitas generalmente. siempre vas a te va a faltar algo como ah me olvidé este dato a me olvidé este otro dato los productos qué información tienen un comercio que información tienen ojo en la práctica muchas veces uno se da cuenta sobre la marca como nos pasó en el supermercado donde solamente consideramos productos por unidad y de repente queríamos venderlo
Por peso, entonces queríamos empezar a vender verdura y la verdura teníamos que vender. Bueno, quiero comprar medio kilo, no compras por un tomate, sino compras por peso. Y bueno y tuvimos que aprender que ah existen dos tipos, los pesables y los que los no pesables, o sea los que los puedes pesar y los que se venden por unidad Lo mismo, descuentos.¿Cómo puedes vender descuentos? Descuentos por porcentaje, descuentos por cantidad, que yo hago 3x2. Hay distintas formas de dar un descuento.
Entonces, o hay descuentos en el producto, o hay descuentos en un envío, que no es lo mismo, que yo si compras 15 cajas de leche, te hacemos un 10% descuento en el envío. No lo mismo porcentaje de descuento en el envío que porcentaje de descuento en lo que estás comprando. Y eso generalmente al principio dice: Bueno, los descuentos son por producto. Y después decís, no, quiero dar una oferta sobre el envío. Y te das cuenta que eso nunca lo pensás.
Entonces, ese ejercicio de observar un montón de cosas que existen y analizarlas sin escribir código, sin escribir una sola bendita línea de código, ayuda mucho. Y otra cosa que sirve es agarrarse en Tata y leer código. Pero lee código que sirva,¿no? El típico código de un tutorial. O sea, código de.Hola amiguitos, hoy les voy a enseñar cómo crear un singleton. But don't sir.
De hecho, eso agradezco que en Android hay libros lindos que van explicando, por ejemplo, con ejemplos, o sea, con aplicaciones más o menos reales. Creo que hay una que es Real World Android Applications o algo así. Que te enseña cómo desarrollar una aplicación de Android bastante más realista. Tiene un montón de características interesantes y te explican paso a paso. Escribir el código y dices, bueno, esto hace tal, tal, tal cosa. No vas a encontrar un punto de venta, por ejemplo.
Pero si vas a encontrar más, porque obviamente va enfocado a aplicaciones, pero si quieres entender cómo funciona un punto de venta, vas a tener que ver qué es lo que tiene un punto de venta y estudiar. cómo funciona un sistema de facturación, yo no sabía cómo funcionaba un electrocardiógrafo Era un aparatito que te enchufaban cosas en el pecho, en los brazos, en la pierna y tiraba unas rayitas locas.
Cuando tuve que usar uno, tuve que leer la documentación, y después ir a Wikipedia, y después ir a documentación más o menos médica, para entenderlo. Y te das cuenta cuántas cosas desconoces. Y me tuvieron que decir no, te faltan más cosas todavía. Es frustrante porque siempre te das cuenta que no sabes.
Pero bueno, si nunca uno se enfrenta a eso, nunca aprende. Yo hace dos años no sabía hacer herramientas y hoy en día aprendí bastante y se me ocurren mejores maneras de hacerlas, pero porque hice varias. tampoco me engolosiné con hacer algo gigante aprendí del error y dije bueno ya sé que hacer cosas gigantes no me sale si no tengo el conocimiento previo entonces voy a hacer cosas pequeñas Voy a ser partecita y después voy a ver que puedo rehusar de eso.
y mucho conocimiento que aprendiste en un lugar, después te das cuenta que en otro lugar es parecido y así. Hay libros muy interesantes sobre el manejo de datos que yo dar a intensio Designing data intensive applications es un libro muy interesante que se va un poco fuera de mambo de lo que uno normalmente necesita, pero explica cómo diseñar sistemas que tienen que manejar una cantidad ridícula de datos.
Y en realidad no es que dices, bueno, vas a tener que alquilar tal cosa en Amazon y ya está, y de hecho el mismo libro en la introducción te dice: este libro no te va a enseñar a resolver el problema, este libro nomás te va a plantear el problema y cómo algunos sistemas lo resuelven. Y para mí el libro fue abrumador en la cantidad de información que tiene.
Y esa es la gracia, o sea, tiene un montón de información. Yo partiría siempre de cosas sencillas y las iría complejizando. Bueno, voy a hacer una página web que tenga algunas cosas básicas. Yo, la cosita de códigos QR, y bueno, necesito que sea una web, por ejemplo. Bueno, vamos a aprender a hacer una web. Vamos a aprender a hacer una web que tenga una lista de productos. Vamos a aprender a cómo muestro un ticket. Vamos a. Y de eso sí tenés tutoriales.
Y a ver, ya para ir cerrando. Gracias por los consejos de Vito Moreto de Dan Cuente, espero que salga algo bien por lo menos. A ver, voy a github.com A ver, vamos a, no, product no, search jump to, email... No, a ver... era por acá.¿Cómo se llama? Point of Sale.
🔇 Silence
Acá tenés uno en Python, Adons, Input, Output, no sé qué cuerno es, pogres, no. Vamos a buscarlo mejor. Point of sale. PHP Point of Sale Acá está, año 2023, actualizado 7 de mayo donde esta la descripcion? PHP Point of Sale of POS is designed to help small businesses with keeping track of customers items and inventory and generate reports based on sales.
This program works great for businesses that use cash, check, or account numbers for their sales. Bien, aclara que no tiene otros medios de pago. Pero yo arrancaría, por ejemplo, por este sistemita y tenés un sistemita en PHP. Y puedes arrancar con el index.php, que suele ser el punto de entrada de todo proyecto. Y tenés algunas líneas clásicas. Aquí tiene Set Server Path. Ok, te enseña cómo configurar. Inicializa el proyecto. Y después vamos a Application. Helpers, errors, controllers.
Barcode, para gestionar código barra, no tengo ni idea. Customer, bueno, tiene pinta que son clientes, employees, empleados, home, calculo que el punto de entrada, index.html, ítems, login. No Access, Person Controller. Si yo jugaría con esto. De última, algo que puedes hacer es meter una especie de console.log en cada clase y ver en el orden que se van llamando. Va a ser un link. Pero ya acá encontré uno y. Está bastante bien. Acá tiene algún que otro comentario.
config autoload config constants database.php hooks index.html que tiene index.html directory access is forbidden ok acceso anegado Archivo rutas y te va tirando las distintas rutas, como se acceden. Ah, mira que bien. Y ahí ya encontré uno. O sea, ese es un ejemplo. Lo acabo de buscar en GitHub. Puse point of sailing. Es creo que el segundo resultado dice PP point of sailing es un punto de venta que funciona. O sea, sirve para tener un seguimiento.
No es tan potente porque no maneja facturación completa, no maneja todos los medios de pago, pero si no entendés un punto de venta básico, menos vas a entender un punto de venta más avanzado. Así que bueno, y buscaré así tutoriales, cosas sencillas y obviamente en inglés, si estás buscando en español, tranquilo, no vas a encontrar nada. Ese es el problema. que más hay JavaFX Point of Zero hay uno en Java Store. Desktop una construida in electron open source.
Open source point of sale. Open source point of sale is a web based point of sale application written in PHP using coordinator framework it use my SQL as database. Point of Sales System, Javafx. Point of Sales es considerada por uno hecho en ASP.NET. Obviamente, de cada tecnología que elijas, tendrías que aprenderte un poco cómo se suelen estructurar las cosas. Si sabes que las cosas comienzan en el index.html o el index.php, bueno, te metes ahí primero.
No intentes leer tutte le linee e entendere tutte. Fijate a chi chi chiama. Y fíjate que tienes otro y con el tiempo te vas dando cuenta por el contexto.
🔇 Silence
Creo que me retiré porque mañana tengo que ir a mi trabajo. Para ver si me dan la liquidación por lo menos. Bueno, che, éxitos con eso y muchas gracias por pasar. A los que hayan escuchado el podcast hasta acá, la verdad que guau llegaron lejos. Se puso bastante reflexivo de cierto punto en adelante. A ver si después marco bien los timestamps o no.
Ya veremos. Y espero honestamente que lo hayan disfrutado y que mi experiencia les sirva a ustedes para aprender algo de todo esto. Los episodios suelen tener la parte final de mucho bla bla bla. De mi parte, o sea, mucha conversación off topic, probablemente. Pero la idea acá es también compartir un poco. Cuanta más gente hay, más interesante creo que se hace.
Hasta cierto punto hay un límite en cuánta gente puede manejar al mismo tiempo. Pero bueno, espero que algo de todo este conocimiento que fui adquiriendo les sea de útil a ustedes. Me encantaría poder mostrar un poco más, pero bueno, cuestiones. de mantener cierto detalle que no puedo exponer me obligan a no poder revelar todos los nombres o mostrar las aplicaciones, mostrar cómo se usan, porque también es otra cosa que no puedo mostrar.
Así que muchas gracias a todos los que escuchan esto en vivo y los que escuchan diferido. Si llegaron hasta acá, wow, los felicito muchísimas gracias. Y bueno, ahora sí, les recuerdo que los medios de contacto están en la descripción. Si quieren contribuir, también. Los medios están en la descripción. Con darle like, comentar y suscribirse, ya me ayudan un montón. Y si me dan su opinión al respecto del episodio o quieren contribuir.
Con ideas, con participaciones directas, se agradecería muchísimo. Y ahora sí, ya sé mucho más. Con esto me despido y será. Hasta la próxima.
🎵 Music
