No me canso de recomendar los recursos que se encuentran disponibles de forma gratuita para aprender sobre AWS. En esta oportunidad hice otro curso disponible en https://explore.skillbuilder.aws/ para MemoryDB.
La idea es compartir mis experiencias con las diferentes pruebas que realizo sobre Open Source aplicado a GeneXus y otras tantas cosas que me pasan a diario.
jueves, diciembre 05, 2024
jueves, noviembre 28, 2024
AWS MemoryDB for Redis
El otro día tuve la oportunidad de hacer el curso de "Build with Aamzon MemoryDB for Redis" esto lo hice desde la página de https://skillbuilder.aws/
Esta plataforma permite tomar varios cursos interesantes los cuales nos permiten obtener conocimiento sobre los diferentes servicios de AWS. En esta oportunidad tengo que implementar un sistemas que necesita de Redis y dado que uso AWS me tome el trabajo de hacer este curso para poder implementar esto.
Obviamente soy un dinosaurio dado que sería más fácil preguntar a ChatGPT pero soy muy "Vieja escuela" por lo que me encanta hacer los cursos antes de preguntar a ChatGPT.
jueves, enero 04, 2024
Mi primer año en Bullk
El 2 de Enero cumplí mi primer año en la "startup" Bullk Services y lo quiero festejar con esta imágen de una de las vistas que disfrutamos desde la nueva oficina.
Quiero compartir mi felicidad por este gran año de crecimiento en mi rol de Software Architect y la experiencia vivida dentro de una "startup".
En ocasiones existe mucho miedo con la palabra "startup" y es entendible dado que se asocia el "tamaño" de la empresa con el éxito, futuro o el desarrollo que se pueda tener dentro de la empresa.
Este año tuve la suerte de participar junto a un gran equipo en la creación y mantenimiento de una plataforma pensada para atender soluciones resilientes de gran porte diseñadas con un enfoque "cloud native" que en mi experiencia no hubiera podido experimentar si no aceptaba trabajar en una "startup".
Entiendo el miedo que en ocasiones nos da la palabra "startup" cuando estamos buscando trabajo pero puedo garantizar que las oportunidades de aprendizaje, crecimiento y experiencia que existen dentro de una "startup", no se comparan con las que existen fuera de este tipo de empresas.
Experimentamos grandes desafíos que los encaramos en equipo trabajando todos por un mismo objetivo y con las ganas que nos brinda trabajar en una gran empresa que algunos pueden llamar "startup".
Recomiendo vivir la experiencia y la adrenalina que nos brinda trabajar en una "startup".
viernes, septiembre 22, 2023
Failed to create user (Unsupported or invalid SSH public key format)
Este error me lo encontré configurando un servidor sftp en aws, al crear un usuario con una clave pública SSH2 me daba este error. Revisando la documentación indica que AWS Transfer Family solo acepta claves públcias con formato PEM.
Para solucionar mi problema tuve que convertir la clave pública SSH2 a PEM, simplemente seguí el siguiente comando:
$ ssh-keygen -i -f ssh2-key.pub > PEM-key.pub
Con esto quedo solucionado mi problema.
martes, agosto 29, 2023
[Action Required] AWS Lambda end of support for the Go 1.x runtime
Hace unos días me llegó un mail con el título "[Action Required] AWS Lambda end of support for the Go 1.x runtime".
En el mail explica los motivos y tiene los links a blogs de como hacer esta migración. Por lo que pude entender y el fondo de esto es que quieren que cuando se usen lambdas en go se usen con la arquitectura arm64 y no con x86_64. En mi caso lo tenía todo con x86_64 y ahora estoy haciendo el cambio ya que como indica la nota es mucho más barato usar esto.
En mi caso el cambio fue mínimo dado que solo tuve que cambiar el nombre del handler por bootstrap y listo, luego también cambiar la configuración en la lambda para que use la nueva arquitectura. Los detalles y la explicación en detalle se encuentra en este link.
sábado, junio 03, 2023
Mis primeros 6 meses en una startup Cloud Native
Desde el 2 de enero de este año me encuentro trabajando en una startup cloud native y por ahora estoy mas que feliz. Muchos de mis colegas me comentaban lo negativo de trabajar en una startup y la verdad que hasta el momento no he visto nada de negativo.
En una startup tienes la oportunidad de hacer todo y aprender de todo dado que al estar arrancando puedes hacer cosas que en una empresa grande ya tienen gente o roles definidos para esas tareas. En particular cumplo el rol de arquitecto y por lo general como arquitecto tienes los conocimientos teóricos como para diseñar aplicaciones pero muy pocas veces puedes realmente llevarlos a la práctica.
En mi caso me gusta mucho experimentar y estar cerca de las soluciones que diseño, con esto me refiero a poder programar y si es necesario formar parte del equipo que la pone en producción. En mi actual puesto tengo la suerte de poder programar bastante usando Go como lenguaje principal y desplegar nuestras soluciones sobre AWS.
Hace 5 meses solo conocía la teoría de AWS para poder discutir de implementaciones en la nube pero ahora al tener la suerte de trabajar para una startup puedo hacer las implementaciones directamente tocando yo mismo los diferentes servicios en la nube.
Lo bueno de esto es que pude aprender a fondo muchos de los servicios que nos propusimos usar en una solución con una arquitectura orientada a eventos que tuvimos que implementar. A continuación les muestro una imagen de la consola de AWS con los servicios que use recientemente
Como se puede ver en este tiempo tuve la oportunidad de aprender y poner en práctica mucho de lo que solo sabía en la teoría gracias a trabajar en una pequeña startup. Les recomiendo experimentar y si te gusta estar cerca de la parte técnica y no aburrirte en una empresa grande busques alguna startup que sin dudas vas a poder aprender mucho más rápido que en una empresa grande. Te lo digo por experiencia ya que tuve la suerte de trabajar en empresas de todos los tamaños y me di cuenta que en las pequeñas o startup es donde más se aprende.
miércoles, mayo 31, 2023
A tour of Go
A tour of Go es un pequeño recorrido por las características del lenguaje. La verdad que es muy recomendable si estas iniciando en go o si quieres tener las básicas del mismo. Tengo que admitir que no le di mucha importancia cuando comencé con esto pero me hubiera ahorrado muchos dolores de cabeza si lo hubiera seguido desde mis inicios en Go.
martes, mayo 23, 2023
Echo de menos a GeneXus
La última semana me ha pasado que extrañe el uso de GeneXus. Extraño la época en que mi tiempo de desarrollo era 100% en GeneXus independientemente del lenguaje para el que estuviera generando. Lo bueno de GeneXus es que puedes generar para varios lenguajes usando la misma base de conocimiento, eso hace que te puedas especializar en la herramientas sin tener que aprender varios lenguajes.
En la actualidad el 90% de mi desarrollo lo hago utilizando Go, un 5% Java y el restante en Python. Al tener varios microservicios me pasa que en ocasiones tengo que tocar o manejar tres lenguajes cuando antes todo lo resolvía con GeneXus. Entiendo que hay cosas que se pueden lograr con Go que con GeneXus no eran posibles pero siempre le encontrábamos la vuelta.
Espero en algún momento volver a trabajar con GeneXus ya que cada día que pasa lo hecho de menos.
viernes, marzo 31, 2023
Git Large File Storage
El día de hoy por primera vez desde que uso git tuve un problema al querer subir archivos grandes a github. Contexto: tengo un modelo entrenado con extensión pkl el cual pesa algo así como 280 MB, cuando quise subirlo a mi repositorio me dio el siguiente error:
Siguiendo el mensaje de error conocí la existencia de git-lfs, básicamente es un proyecto que nos permite almacenar archivos grandes en nuestros repositorios.
Seguí los pasos de la documentación pero mi error seguía sucediendo, investigando un poco me di cuenta que hay que seguir los pasos en orden.
En mi caso lo que hice fue lo siguiente:
a) Descargar nuevamente mi repositorio
b) Ejecute el comando: git lfs install
c) Habilite el seguimiento de archivos grandes con extensión pkl: git lfs track "*.pkl"
d) En el paso anterior se creo automáticamente el archivo .gitattributes por lo que hice el git add . y commit
e) Agregue el archivo del modelo prediccion.pkl al repo, luego hice push con los cambios
Luego de hacer los pasos en orden pude subir mi archivo grande al repositorio.
miércoles, marzo 22, 2023
Error "cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in $PATH" al hacer Build Image
Tengo una aplicación desarrollado en Go que usa una BD SQLite y al intentar crear mi imagen me da el siguiente error:
#10 0.467 cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in $PATH
El dockerfile que estoy utilizando es el siguiente:
Luego de analizar y buscar en google me di cuenta que falta instalar build-base por lo que mi dockerfile queda de la siguiente manera:
Luego de indicar que instale build-base la imagen se crea de forma correcta.
lunes, marzo 20, 2023
GitHub Copilot (Go)
Desde hace unas semanas en la StartUp que me encuentro trabajando surgió la idea de utilizar GitHub Copilot. La verdad que al principio no podía darme cuenta de como poder sacarle provecho a esta herramienta de AI.
Con el correr del tiempo me di cuenta que la herramienta analiza tu forma de programar y según el contexto de tu código le puedes sacar mas o menos provecho. Lo bueno que esta herramienta te completo o sugiere el código que debes poner según el contexto de tu código.
En mi caso le pude sacar mucho provecho creando las pruebas unitarias ya que me proponía los test unitarios que me faltaban hacer o me los completaba.
Ejemplo:
Debía escribir prueba unitarias para encriptar y para desencriptar por lo que solo con el nombre que le puse a la func ya comenzó a proponerme código.
Copilot detecto que quería realizar un test para hacer una encriptación RSA por lo que solo con nombrar la func el completo el código. En realidad solo escribí la primer línea y el resto me lo propuso. Hasta ahí me había sorprendido ya que me propuso el código de forma correcta pero mi sorpresa fue al hacer el unit test para el Decrypt.
Al poner el título de la función me propuso todo el código, solo con un error el cual tuve que corregir pero me ahorre de escribir mas de 15 líneas.
En síntesis:
La herramienta es muy potente, solo debemos ayudarla teniendo un buen código ya que toma como contexto el código de nuestro repo para proponer código siguiendo nuestra lógica. Es importante los comentarios y los nombres de las funciones o estructuras. Creo que este tipo de herramientas se están haciendo cada día mas populares y como desarrollador es importante que aprendamos a convivir con este tipo de ayuda dado que nos brinda la posibilidad de aumentar nuestra productividad.
lunes, enero 23, 2023
Mejor canal de youtube para aprender Golang
Desde hace unos meses comencé a trabajar como Arquitecto de soluciones en una Startup Cloud Native que usa Golang para sus desarrollos. Lo interesante de esta propuesta es que mi experiencia esta basada en Java por lo que tuve que aprender Go rápidamente. Esto me llevo a investigar recursos de aprendizaje y existen miles de lugares para aprender. Por suerte me cruce con un canal de youtube que tiene un curso de golang que tiene en cuenta las buenas prácticas con ejemplos prácticos reales.
El curso se llama: Golang Crash Course y la verdad que provee todo lo que necesitas para ser un experto en Go.
A pesar que había trabajado el año anterior con Go no tenía la experiencia necesaria hasta que pude encontrar este curso, realmente recomiendo este curso ya que cubre todo lo que necesitamos para crear aplicaciones profesionales en Goland.
Happy code
sábado, diciembre 17, 2022
Estudiar MongoDB on-line
Estuve revisando y búscando cursos hasta que me di cuenta que existe MongoDB University
jueves, diciembre 15, 2022
MongoDB 6.0
jueves, diciembre 01, 2022
tsc : The term 'tsc' is not recognized as the name of a cmdlet...
Realizando un curso de typescript veo que me aparece el siguiente error:
>npm install typescript --save
El error seguía por lo que búscando en google encontre que la forma de "fixear" esto era haciendo lo siguiente:
> npm install typescript@latest -g
Luego de hacer esto pude ejecutar tsc test.ts y se genero mi archivo test.js sin problemas.
viernes, noviembre 25, 2022
ng.ps1 cannot be loaded because running scripts is disabled on this system
Seguramente si te topas con este mensaje de error al querer generar un componente en Angular se debe a que estas usando Windows :-)
En mi caso tengo el siguiente error:
> ng g c components/Saludo
ng : File C:\Users\uruli\AppData\Roaming\npm\ng.ps1 cannot be loaded because running scripts is disabled on
this system. For more information, see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ ng g c components/Saludo
+ ~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
Esto se debe a que Windows por defecto tiene directivas para no permitir que scripts mal intencionados se ejecuten en tu equipo. Para poder ver estas directivas puedes hacer lo siguiente:
> Get-ExecutionPolicy -List que te dara una salida similar a esta:
Retomando con Angular
Desde hace un tiempo que no tocaba Angular en mi equipo por lo que me ha tocado actualizar la versión como muestra la siguiente imágen:
Vamos a ver como me va con esta verisón
miércoles, febrero 16, 2022
Upgrade macOS Monterey
Desde hace tres meses me convertí en usuario MAC, basicamente cambie de trabajo y me asignaron una MAC para trabajar. La verdad que el equipo vuela y hace poco tuve que ejecutar una actualización del SO llamada Monterey.
-bash: /usr/local/bin/fury: /Library/Developer/CommandLineTools/usr/bin/python3: bad interpreter: No such file or directory
La solución a este problema fue ejecutar el siguiente comando:
$ xcode-select --install
miércoles, agosto 26, 2020
Recuperar contraseña postgres 12 en Linux Mint
En mi equipo tengo instalado Linux Mint 20 y para un proyecto instale PostgreSQL, no lo use por un tiempo y ahora que quiero usarlo me pide contraseña para el usuario postgres. La verdad que no recuerdo haber puesto una contraseña y no encuentro cual es la contraseña por defecto. No soy un guru en este tema por lo que me puse a investigar como restablecer la contraseña, lo dejo aquí por si otro es igual de despistado que yo.
Esto lo hice de la siguiente manera:
Lo primero es editar el archivo pg_hba.conf y agregarle la siguiente línea:
host all postgres 127.0.0.1/32 trust
Luego de editar el archivo hay que reiniciar el servicio:
service postgresql restart
Luego de reiniciar el servicio pude entrar a cambiar la contraseña del postgres:
psql -h localhost -U postgres
ALTER USER postgres with password 'NuevaPassword';
\q
Después de cambiar el password edite el archivo pg_hba.conf, reinicie el servicio de postgresql nuevamente y pude verificar que efectivamente había podido cambiar la contraseña.


.jpeg)
%2012.12.49.png)













