Hola mis 2 lectores:
Hace tiempo que no venía a escribir acá, he andado un poco ocupado entre trabajo, búsqueda laboral, familia, trámites e intentando seguirme actualizando, incluso me registré para empezar una maestría en IAs, pero todavía no termina el proceso de admisión, así que no sé todavía si voy a poder entrar. Y la verdad es que este negocio del Software está cambiando a velocidades que, al menos yo, nunca había visto antes. Las IAs son lo de hoy y los avances son gigantes de un día a otro.
Para esto, pues me he puesto últimamente a jugar con algunas IAs y ya saben, como todo buen tester, ver donde las cacho cometiendo errores ¡Es super fácil por cierto!, pero también es cierto que mejoran cada día, y mucho. Entre esas pruebas, y “juegos” que he estado haciendo planee venir a escribir sobre ellos y poner largos posts, pero no me he podido dar tiempo. Aquí unos ejemplos:
Tenía que hacer un trámite, entonces la agencia con la que tenía que hacer ese trámite, me pidió una foto con parámetros muy específicos, como tamaño de la foto, que debía estar sin lentes, que la cara tenía que estar a cierta distancia de la parte superior y un largo etc. Subí la misma foto original mía al Chat GPT y al Gemini, y los resultados fueron muy diferentes.
Esta es la foto que subí.

Y al darle a ambos las mismas instrucciones, exactamente las mismas, de echo fué un copy-paste. Me regresaron lo siguiente:
Chatgpt:

Removió bien los lentes, el fondo se ve bien, Sin embargo, fallo en distancias a los bordes, cortar, etc pero además ¡Ese no soy yo, creó totalmente a otra persona! Sin embargo, vean el resultado de Gemini, mucho mejor. Además de cumplir con todos los parámetros, ese sí parezco yo.

Otro pequeño experimento que hice fue que le pedí al Chatgpt que me diera ideas de como mejorar un patio que tengo en casa. Esta es la foto original:

Esto es lo que me mostró:

Que al principio, me dejó sorprendido, porque se ve muy realista, pero después mi sexto sentido de Tester empezó a alertarme. Me di cuenta de varios detallitos, como por ejemplo me desaparecio la ventana y la puerta que estan en la pared del lado derecho… Esos son muy importantes, ¡porque es la ventana y la puerta de la cocina! y me desaparecio el airea acondicionado, dejó las 2 sillas tapadas, ahí mal acomodadas y me estiró la pared del vecino para esconder el cerco del patio. Sin contar con que quitó la lampara junto a la otra puerta que sí dejó y convirtió la salida de aire de esa pared en algun tipo de lámpara, y borró todos los tubos de salida que estan en el techo ese, que tienen que estar ahí. Sin embargo, tiene buenas ideas y ayuda mas o menos en conceptos y decoración pero creo que a la generación de imágenes de ChatGPT todavía está muy verde.
Pero bueno, lo que realmente vine a platicar es, como dice el título de este post, es que hice mi primera app de Android, yo solo, sin saber Kotlin… De echo, sin escribir ni una sola línea de Kotlin, ¿Cómo? usando Gemini.
El otro día estaba platicando con alguien acerca de como sabían los repartidores de aplicación (doordash, instacart, uberEats) si les convenía hacer una entrega o no, long story short, pensé: “vamos a ver que tan fácil o difícil es crear una app pequeña para que calcule ciertas cosas y se pueda saber si conviene”.
Primero, ¿Cómo podemos saber que tanto le conviene a una persona? Tendríamos que ver sus gastos, ¿no?. Ok, necesitamos saber cuanto le cuesta hacer cierto viaje, o entrega. Para eso necesitamos saber cuanta gasolina consume su vehículo, y el precio de la gasolina, para saber después, cuanto consume por la distancia a recorrer a cierta entrega, luego ver si el pago, es suficiente para cubrir ese gasto y al menos generar un poco más acerca de eso.
Podemos extendernos mucho, mucho más, como calcular impuestos que hay que pagar de esa ganancia, o cálculos más específicos, pero para fines de practicar el uso de la IA y hacer algo sencillo, solo lo dejé ahi. Entonces usando Gemini CLI, sin mucho otro setup, además de solo instalarla, solo describí en la terminal, que tipo de aplicación quería, describiendo a detalle cuantas pantallas, donde, que calculos había que hacer, etc.
I need to build an Android native app. It’s a simple app that calculates worthiness of a delivery job given gas spent vs gains. The app should have a Settings page, where the user can edit 2 values. Each one in a different field. First field/editable value should be Gas price, and it should have that label. Then the second field should be average consumption. Add that label to that field, both fields should be editable by the users and there should be a save button that on submit. Should save those values on local memory. The app should also have a home or landing page that has a settings gear icon in the top right corner that on-tap it takes the user to the Settings page previously described; And it should have 2 fields. In one field the user should be able to enter Miles estimated for the job. Add that label to that field, then the second field should be the field where the user can enter the “job pay”. Add an appropriate label for that field. Then there would be a text field that is not editable that shows the cost of the job. Add a label “job cost” and it should show the value of doing the following calculations. (Gas price*Miles estimated for the job)/Average consumption. Then it will show more prominently a field called profit that would not be editable either and it will show the value of doing job pay – cost of the job”
Básicamente, el usuario tiene una página de “Settings” donde apuntaría valores semi-estáticos como el Consumo promedio de su vehículo, y el precio de la gasolina con la habilidad de quedarse guardados. Luego en la pantalla principal, tendría 2 campos más donde agregaría la distancia del trabajo a tomar y cuanto es el pago por ese trabajo, de esta manera la app calcularía instantáneamente con esos datos, cuanto le queda libre y ya sabrá si le conviene. Después de ese prompt, me di cuenta que el cálculo no era correcto, tuve que hacer un segundo prompt describiendo:
The app doesn’t work as expected. The Job cost field shows 0. Job cost should be calculated the following way: (Miles estimated for the job * gas price) / average consumption
A lo cual Gemini me respondió:
I have fixed the calculation bug. The issue was that the
HomeViewModelwas not actively subscribing to the settings data from local storage, causing the calculations to stay at 0. I’ve updatedHomeViewModelto:1. Actively collect the gas price and consumption values from the repository.
2. Use Compose State (mutableStateOf) to hold these values, which ensures that any changes to the settings (like saving a new gas price) will automatically trigger a recalculation of the Job cost and Profit.The app will now reactively update the costs as soon as you enter miles or change settings.
Luego de esos 2 prompts, un update de Android Studio, el cual tenía rato sin usar, Android Studio me construyo un APK que funcionaba exactamente como quería. Todo el proceso me tomó una hora.
Aquí está la app.
Y aquí pueden ver el código.
https://github.com/gustavoriveray/delivery-worthiness-app
Pues así, mis queridos lectores, así de poderoso es esto, sin escribir una sola línea de código me armé una pequeña app de Android. Ahora, si necesita mas polish y creo que podría iterar con mas prompts. El punto de esto es ponerse su sombrero de Product Owner, hacer un buen prompt, describir todos los escenarios, describir como quieres que luzcan las cosas, etc. Ahora que la estaba viendo, me gustaría agregarle ciertos detallitos extra, como, labels para las unidades en cada campo etc. Pero eso ya es para otro post.
¿Cómo ven? déjenme sus comentarios acá abajo.