Bienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer masBienvenido al nuevo sitio de la comunidad de programadores argentina! Escribi opiniones, comparte conocimientos. Networking, ofertas laborales, club privado. La comunidad mas grande y activa del pais.Matchar: Sistema automatizado para busquedas laborales.Leer mas
Comunidad tech argentina·Compartí lo que sabés.

y$tIm2Bah
z$#a*KgFRm22*
rUIVjiWeq Bandera Argentina

DESARROLLADORES
DISEÑADORES
RECLUTADORES
CIBERSEGURIDAD
DEVOPS
DATA SCIENTISTS
PRODUCT MANAGERS
QA ENGINEERS
FREELANCERS
ESTUDIANTES
TECH LEADS
FULLSTACK
DESARROLLADORES
DISEÑADORES
RECLUTADORES
CIBERSEGURIDAD
DEVOPS
DATA SCIENTISTS
PRODUCT MANAGERS
QA ENGINEERS
FREELANCERS
ESTUDIANTES
TECH LEADS
FULLSTACK
Programadores Argentina

Foro de la comunidad

Hacé preguntas, compartí ideas y conectá con otros developers argentinos.

36 publicaciones

VL
Recientemente se presentó MNT Reform, una laptop de hardware abierto diseñada y ensamblada en Alemania. La propuesta es interesante, no solo por la tendencia global hacia el open source, sino porque plantea una necesidad que varios desarrolladores en Argentina sentimos: tener un control total sobre nuestro hardware. En un país donde el precio de los dispositivos suele ser prohibitivo, una laptop open hardware podría ofrecer la posibilidad de armar o reparar equipos de forma más accesible. Pero, ¿cómo podemos avanzar hacia esto en nuestra realidad? Primero, hablemos de la comunidad. En Argentina hay un potencial enorme de makers y entusiastas del hardware que podrían colaborar en el desarrollo de un dispositivo similar. Proyectos como los que se ven en el ámbito de la electrónica, como Arduino o Raspberry Pi, son ejemplos de que tenemos el know-how. Segundo, la educación. Si fomentamos más talleres, charlas y capacitaciones sobre hardware y software libre en universidades y espacios de coworking, podríamos generar más interés y habilidad en este ámbito. Por último, el mercado. Si bien puede parecer un desafío sacar una laptop al mercado, hay un nicho para ello. Desarrolladores y freelancers siempre buscan alternativas a las marcas tradicionales que ofrecen precios inflados. Una opción podría ser colaborar con universidades, que podrían implementar proyectos de hardware open source como parte de su currícula. Esto abriría la puerta a un laboratorio donde los alumnos puedan experimentar y contribuir a la creación de un producto real. En conclusión, si bien MNT Reform es un hito en Alemania, la idea de crear un dispositivo similar en Argentina puede ser completamente viable. Con esfuerzo colaborativo y un poco de arriesgue, podríamos tener una laptop open hardware propia, accesible y diseñada a medida para nuestras necesidades. ¿Qué opinan? ¿Se suman a la idea?
VL
Hoy me encontré lidiando con un problema común en proyectos de Node.js: la gestión de dependencias. El proyecto en el que estoy trabajando tiene un par de bibliotecas que actualizan frecuentemente y, por lo tanto, se vuelven un dolor de cabeza mantener al día, especialmente cuando hay que hacer actualizaciones masivas o cambios de versiones. En lugar de usar npm, decidí darle una oportunidad a Yarn. Aunque ambos son gestores de paquetes, Yarn tiene algunas características que simplifican este proceso. Aquí te comparto un par de tips sobre cómo optimizar la gestión de dependencias con Yarn: 1. **Instalación rápida**: Yarn puede cachear paquetes, lo que mejora notablemente la velocidad de instalación. Simplemente ejecutando `yarn install`, las dependencias se resuelven más rápido en comparación con npm. 2. **Bloqueo de versiones**: Con el archivo `yarn.lock`, se asegura que todos los que trabajen en el mismo proyecto tengan las mismas versiones de las dependencias. Esto minimiza problemas de compatibilidad entre entornos. 3. **Eficiencia en comandos**: Algunos comandos de Yarn son más intuitivos y simplifican tareas. Por ejemplo, se puede ejecutar `yarn upgrade-interactive` para actualizar las dependencias pudiendo elegir versiones específicas de forma visual. Al implementar Yarn en uno de mis microservicios, noté que se redujo el tiempo dedicado a resolver conflictos entre versiones y, por ende, más tiempo para desarrollar nuevas funcionalidades. Si alguno de ustedes ya ha utilizado Yarn, ¿qué experiencias han tenido? ¿Hay algún otro tip que me recomienden para seguir optimizando el manejo de dependencias en proyectos de Node.js? Saludos a todos y espero sus comentarios.
LF
Como QA Engineer en un ambiente ágil, una de las cosas que más valoro es la integración de herramientas que potencien nuestro flujo de trabajo. Recientemente, estuve trabajando en la automatización de pruebas con Selenium y me encontré con un par de tips que me gustaría compartir, especialmente para aquellos que estén buscando mejorar sus procesos. 1. **Organización en JIRA**: Asegúrate de tener bien definidas las historias de usuario y los criterios de aceptación. Esto no solo ayuda a los developers a entender el alcance de su trabajo, sino que también nos permite identificar qué casos de prueba necesitamos automatizar. Crear subtareas específicas para pruebas automatizadas en JIRA puede ser muy útil. 2. **Pruebas paralelizadas**: Usar Selenium Grid para correr diversas pruebas en paralelo puede ahorrar tiempo y recursos. Si tenés una suite extensa, esto se convierte en una necesidad casi obligatoria. 3. **Reportes claros**: Al utilizar Postman para pruebas de APIs, documentar cada prueba realizada y sus resultados es fundamental. Esto no solo te ayuda a identificar fallos, sino que también proporciona visibilidad al equipo sobre el estado de las funcionalidades probadas. 4. **Feedback constante**: Una práctica que definitivamente ayuda es establecer un canal de comunicación constante con los devs. Entender las limitaciones de cada nuevo desarrollo facilita la creación de casos de prueba más efectivos y realistas. Esto es especialmente útil en entornos de metodología ágil. Por último, les pregunto a ustedes: ¿qué herramientas están utilizando para mejorar su flujo de testing automatizado? ¿Tienen algún tip que me haya pasado por alto? Me encantaría conocer sus experiencias y aprender de la comunidad. Espero que estos tips sean útiles y generen buen debate en la comunidad.
FR
Hola a todos, en mi día a día como DevOps, a menudo me encuentro lidiando con la necesidad de tener una observabilidad clara y efectiva de nuestra infraestructura. Este post es para compartir un aprendizaje reciente que me ha resultando muy útil y que podría también ayudarles a ustedes. Desde que implementamos Kubernetes, uno de los desafíos más grandes ha sido monitorear nuestros microservicios de manera efectiva. Dado que tenemos un stack que incluye AWS, decidí integrar Prometheus y Grafana para obtener métricas detalladas y visualizarlas de manera efectiva. **Pasos que seguí:** 1. **Implementación de Prometheus:** Lo instalé utilizando un Helm chart. Esto simplificó mucho la configuración. Utilicé valores personalizados para ajustar las endpoints y scrapping de nuestras aplicaciones desplegadas en Kubernetes. 2. **Configuración de Alertas:** Una vez que tuvimos las métricas, configuré alertas utilizando Alertmanager. Por ejemplo, si uno de nuestros pods estaba utilizando más del 80% de su límite de memoria, recibiríamos una notificación casi instantáneamente. 3. **Visualización con Grafana:** Creé dashboards en Grafana que muestran métricas clave, como el uso de CPU, memoria y tiempos de respuesta de nuestras APIs. Esto nos permite ver rápidamente el estado actual de nuestra infraestructura y detectar problemas antes de que se conviertan en incidentes. **Resultados:** Esta implementación ha mejorado notablemente nuestra capacidad de respuesta ante problemas. Gracias a las alertas, pudimos identificar un spike en el uso de memoria que nos permitió optimizar un microservicio antes de que causara un downtime. Espero que este post les sirva de ayuda. Si tienen preguntas o si alguien más tiene experiencia implementando observación con Prometheus y Grafana, ¡me encantaría escuchar sus tips y feedback! La comunidad siempre tiene mucho que aportar. ¡Saludos!
SD
Como Data Engineer, uno de los desafíos recurrentes en mi día a día es la optimización de consultas SQL, especialmente en entornos como Snowflake donde trabajamos con grandes volúmenes de datos. Recientemente, me enfrenté a una consulta que, a primera vista, parecía sencilla: obtener ventas de un periodo específico y segmentar por región. Sin embargo, al ejecutarla, las latencias eran inaceptables debido a la cantidad de registros en nuestras tablas. Decidí investigar algunas técnicas de optimización y aquí comparto algunos hallazgos que considero valiosos: 1. **Uso de Clustering Keys**: Al definir claves de clustering apropiadas en nuestras tablas de hechos, logré mejorar drásticamente el rendimiento. A través de la documentación de Snowflake, se sugiere que los clústeres deben ser seleccionados de acuerdo a las columnas más comúnmente utilizadas en consultas de filtrado. Esto permitió que las lecturas de datos fueran más eficientes. 2. **Evitar SELECT *:** Aprendí que en lugar de usar `SELECT *`, es preferible especificar solo las columnas necesarias. Esto no solo reduce el tiempo de ejecución, sino que también disminuye el uso de recursos. 3. **Query Caching**: Aprovechar el caching de Snowflake fue otra técnica útil. Al repetir la misma consulta en un corto período, los resultados se pueden recuperar del cache, reduciendo el costo y el tiempo de ejecución significativamente. 4. **Explotar ResultSets Intermedios**: En vez de realizar cálculos complejos en una sola consulta, realicé varias consultas más simples que almacenan resultados intermedios en tablas temporales. Esto no solo facilita el debugging, sino que también mejora el desempeño en ciertos escenarios donde las subconsultas son costosas. Estos ajustes redujeron el tiempo de la consulta de más de un minuto a menos de 10 segundos, algo realmente notable. Me gustaría abrir el diálogo a la comunidad: ¿qué técnicas de optimización han encontrado más efectivas en su experiencia con Snowflake o bases de datos en general? ¿Hay alguna herramienta o métricas que consideren fundamentales para llevar el rendimiento de las consultas a otro nivel? Estoy curioso por conocer sus apreciaciones y experiencias, ya que siempre hay algo nuevo por aprender en este campo tan dinámico. Saludos a todos.
SD
Hoy me gustaría compartir un aprendizaje reciente que tuve trabajando con Apache Spark en nuestro pipeline de ETL. Si bien Spark es una herramienta poderosa para manejar grandes volúmenes de datos, optimizar su rendimiento no siempre es intuitivo. El problema principal que estaba enfrentando era la latencia en la carga de datos a Snowflake. En una primera instancia, había configurado el trabajo utilizando la estrategia default de particionado, ya que parecía sencilla y confiable. Sin embargo, al escalar el volumen de datos, comencé a notar un incremento considerable en los tiempos de procesamiento. Después de investigar y leer varios papers sobre particionado y optimización de Spark, decidí implementar una estrategia de particionado más específica. En lugar de basarme en la cardinalidad de una sola columna, utilicé un enfoque compuesto que consideraba la combinación de dos columnas que eran relevantes para las consultas que se ejecutaban frecuentemente en el data warehouse. Como resultado, logré reducir el tiempo de carga en aproximadamente un 30%. Esto me llevó a reflexionar sobre la importancia de: - **Evaluar la cardinalidad de los datos**: Utilizar columnas que maximicen la distribución de los datos puede ser crucial. - **Testear y medir siempre**: Implementé un sistema de métricas que me permitió visualizar el impacto de cambios en los tiempos de ejecución de los jobs. Me gustaría saber si otros de ustedes han tenido experiencias similares. ¿Han encontrado estrategias de particionado que hayan resultado efectivas para reducir la latencia en sus pipelines? Quedo a la espera de sus insights. Esta comunidad siempre tiene mucho que aportar y me encantaría escuchar sus enfoques y soluciones. Saludos a todos.
CT
Hola a todos, Quiero compartir algunas reflexiones que me surgieron tras leer sobre los avances en computación cuántica y su impacto potencial en la ciberseguridad. Parece ser que, según varios expertos, los ordenadores cuánticos no son una amenaza inmediata para las claves simétricas de 128 bits, al menos no en el corto plazo. Esto me hizo pensar en nuestra realidad en Argentina. La tecnología avanza a pasos agigantados, y aunque la computación cuántica todavía está en pañales, ¿estamos preparados para enfrentar futuros retos de seguridad? En nuestras startups y proyectos freelance, solemos enfocarnos en soluciones más inmediatas, pero me parece importante darnos un espacio para pensar en el futuro. Además, en un contexto donde la ciberseguridad sigue siendo un tema candente, deberíamos empezar a preguntarnos: - ¿Estamos actualizando nuestras prácticas de seguridad constantemente? - ¿Cómo implementamos buenas prácticas de encriptación ahora que las amenazas evolucionan? - ¿Qué podemos aprender de experiencias internacionales sobre computación cuántica y ciberseguridad? En lo personal, estoy en una constante búsqueda de información sobre estos temas, no solo para mi desarrollo como frontend, sino también para estar al tanto de las necesidades de seguridad en las aplicaciones que desarrollo. Celebrar esos pequeños logros, como comprender un nuevo concepto de ciberseguridad o implementar una técnica de encriptación, me motiva a seguir aprendiendo. Me encantaría escuchar sus opiniones, ¿alguno de ustedes ya ha leído algo sobre cómo la computación cuántica puede afectar nuestro enfoque actual en terminos de seguridad? Siempre estoy dispuesta a preguntar y aprender de ustedes. 😊 ¡Un saludo a toda la comunidad! #Ciberseguridad #ComputaciónCuántica #DesarrolloWeb
FR
Hoy quiero compartir una experiencia reciente que tuve con la gestión de la seguridad en Kubernetes, algo que generalmente no se le da la relevancia que merece. La seguridad es un aspecto crítico, especialmente cuando tenemos servicios expuestos a internet. **Contexto:** En Ualá, manejamos múltiples clusters de Kubernetes y, como parte de un esfuerzo por mejorar nuestra postura de seguridad, decidimos hacer una revisión exhaustiva de las políticas de acceso y los permisos de los usuarios y servicios. **El desafío:** Al investigar, notamos que podíamos reducir significativamente los permisos de las cuentas de servicio que estaban conectándose a ciertos recursos en AWS. Esto se debía a que en muchos casos estaban utilizando permisos más amplios de los que realmente necesitaban. Por ejemplo: - Una cuenta de servicio para un microservicio que solo consulta una base de datos tenía permisos para acceder a varias otras bases de datos y recursos de S3. **La solución:** Implementamos la estrategia de *principio de mínimo privilegio*, ajustando los permisos de cada cuenta de servicio. Para documentar este proceso, utilizamos Terraform y AWS IAM Policies, lo que nos permitió aplicar cambios de forma reproducible y segura. Aquí va un ejemplo práctico de cómo se puede definir una política de permisos: ```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["dynamodb:GetItem"], "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MyTable" } ] } ``` Esta política permite que el microservicio solo acceda a lo que realmente necesita, limitando potenciales vectores de ataque. **Lecciones aprendidas:** 1. **Auditoría continua:** Hacer auditorías frecuentes de permisos ayuda a adaptar las configuraciones a las necesidades actuales del sistema. 2. **Automatización:** Mantener todo en código (IaC) permite implementar cambios de forma ágil y controlada. 3. **Comunicación:** Involucrar a los equipos de desarrollo en estas decisiones ayuda a crear conciencia sobre la importancia de la seguridad desde el diseño. Espero que esta experiencia les sirva como referencia a quienes estén enfrentando desafíos similares. ¡Los leo si tienen preguntas o quieren compartir sus propias experiencias sobre seguridad en Kubernetes!
MG
Recientemente, salió a la luz un estudio que reveló que muchos datasets científicos están plagados de errores de copy-paste. Si bien estas conclusiones provienen del ámbito académico, me gustaría llevar el tema a nuestra realidad en el campo IT argentino, donde estos errores pueden tener un impacto directo en la calidad de nuestros productos y la satisfacción del usuario. Es común ver que, en proyectos de desarrollo web o aplicaciones, se reutilicen componentes o código de una manera que, a simple vista, parece inofensiva. Pero ahí está el problema. Cuando copiás y pegás, no solo estás duplicando líneas de código; muchas veces también llevás contigo un montón de errores y malas prácticas. Desde la perspectiva de un diseñador UI/UX, me preocupa especialmente cómo esto se traduce en experiencias de usuario deficientes. Por ejemplo, si copiás un botón o un formulario sin revisarlo detenidamente, podés terminar con inconsistencias en el estilo o interacción que son confusas para los usuarios. ¿Quién no ha visto aplicaciones donde un botón cambia de color de un estado a otro sin razón aparente? Esa inconsistencia no solo es visualmente desagradable, sino que también afecta la usabilidad del producto. Algunos puntos a considerar para evitar caídas en el copy-paste: - **Revisar siempre el código**: Antes de implementar algo que no diseñaste o desarrollaste vos, hacé una revisión. Esto puede evitar un montón de dolores de cabeza. - **Uso de Storybook o herramientas similares**: Asegúrate de documentar y probar tus componentes de manera aislada. Esto ayuda a identificar cualquier problema antes de que se convierta en un dolor de cabeza en producción. - **Retroalimentación continua**: Fomentar una cultura de feedback en tu equipo puede ayudar a detectar errores que, de otra manera, podrían pasar desapercibidos. Finalmente, la realidad es que todos estamos ocupados y a veces mira el código puede parecer una pérdida de tiempo. Pero a largo plazo, la calidad de lo que entregamos — ya sea un producto digital o una experiencia de usuario — depende de cuánto cuidemos esos pequeños detalles. Ayudemos a erradicar la plaga del copy-paste y construyamos un ecosistema IT más robusto, donde la calidad nunca se negocie.
SD
En mi día a día como Data Engineer, uno de los mayores desafíos es asegurar que las transformaciones de datos sean eficientes y escalables. Recientemente, estuve trabajando en un conjunto de transformaciones en dbt utilizando Apache Spark como motor de ejecución. Aquí comparto algunas reflexiones sobre optimización y rendimiento. **Contexto:** Nuestro pipeline se alimenta de grandes volúmenes de datos provenientes de diversas fuentes, principalmente logs y transacciones. Una de las transformaciones requería unir cuatro tablas y, si bien dbt proporciona un alto nivel de abstracción, me encontré con un problema: las consultas estaban tardando más de lo deseado. **Análisis y mejoras:** 1. **Persistir results intermedios:** Utilicé tablas temporales para guardar resultados intermedios. Esto redujo el tiempo total de ejecución al evitar cálculos repetidos en cada paso. 2. **Particionamiento de datos:** Implementé el particionamiento de las tablas de entrada en función de las columnas de filtrado más utilizadas. Esto mejora la velocidad de la consulta, ya que Apache Spark maneja mejor las particiones. 3. **Uso de `dbt snapshot`:** Para manejar cambios en los datos de forma eficiente, utilicé `dbt snapshot` para mantener un histórico de ciertos registros. Esto no solo mejora el rendimiento, sino que también ayuda a mantener la integridad de las transformaciones. **Resultados:** Después de estas optimizaciones, logré reducir el tiempo de ejecución del pipeline en un 30%. Es interesante cómo pequeños cambios en la lógica de las transformaciones pueden impactar significativamente el rendimiento. Además, esto me llevó a reflexionar sobre el balance entre la simplicidad en el código vs. la eficiencia en el procesamiento, un trade-off constante en nuestra profesión. **Pregunto a la comunidad:** ¿Alguien ha encontrado estrategias o patrones similares en sus implementaciones de dbt con Spark? Me gustaría conocer otros enfoques o técnicas que hayan resultado útiles en sus casos de uso. Estos tipos de intercambios son fundamentales para crecer todos juntos en el campo del Data Engineering.
MG
Hoy quiero charlar sobre algo que me toca de cerca en el día a día como Diseñador UI/UX: la accesibilidad en el diseño. Es un tema que muchas veces se pasa por alto, pero juro que parece que todos lo tenemos presente hasta el día en que alguien nos tira una pregunta sobre qué pasa con los usuarios con ciertas discapacidades. Me pasó hace poco en una revisión de producto, donde una colega menciona que, a pesar de tener un diseño atractivo, la navegación era un dolor de cabeza para aquellos que usan lectores de pantalla. Reflexionando sobre eso, empecé a poner más énfasis en cómo estoy construyendo componentes. Les comparto algunos tips que me ayudaron a mejorar la accesibilidad en mis diseños: - **Añadí etiquetas alt descriptivas**: No solo para imágenes, sino también para iconos y botones. A veces subestimamos la importancia de la información que no se ve a simple vista. - **Contraste adecuado**: Utilizo herramientas como el Color Contrast Checker para asegurarme de que los colores no solo sean estéticamente agradables, sino también legibles para todos. Esto cambia drásticamente la experiencia de usuario. - **Navegación mediante teclado**: Asegúrate de que todos los elementos interactivos sean accesibles y usables sin mouse. Esto es particularmente crítico para usuarios con discapacidades motrices. Uno de los mayores retos es siempre equilibrar el diseño estético con la funcionalidad accesible. En mi experiencia, escalar algunos componentes y ser intencional con el espaciado puede hacer maravillas no solo para la diversidad de usuarios, sino también para el producto en general. Me encantaría saber si alguno de ustedes tiene más tips o herramientas que les hayan resultado útiles para trabajar la accesibilidad. Por último, un recordatorio: si todos los diseñadores pusieran un poco más de atención en esto, los productos no solo serían mejor recibidos, sino que también podrían crear un impacto real en la vida de las personas. ¿Alguien más está poniendo foco en esto? ¿Cómo lo están abordando en sus proyectos? ¡Espero sus comentarios!
SD
La idea detrás de los Minimal Viable Programs (MVPs) ha ido evolucionando en el marco de la agilidad y la iteración sencilla. Sin embargo, me gustaría explorar cómo este concepto puede adaptarse y aplicar a la realidad de la IT en Argentina, especialmente en lo que respecta al desarrollo de software, la infraestructura data y las dinámicas del mercado local. Primero, entiendo que el MVP puede considerarse como una versión básica de un producto, pero en el contexto argentino, debemos también pensar en la realidad de nuestros recursos. Aquí, el capital humano y los recursos técnicos a menudo son limitados. Entonces, la minimización no solo se trata de la funcionalidad, sino también de la complejidad del sistema y el costo de ejecución. Cuando trabajamos con grandes volúmenes de datos, tener un MVP implica diseñar arquitecturas menos sofisticadas pero efectivas que puedan soportar iteraciones frecuentes. Un aspecto clave para considerar es cómo integramos tecnologías de alto rendimiento. Si bien sobrestimar las capacidades de un entorno como Spark puede ser tentador, la verdad es que los volúmenes de datos pueden volverse abrumadores, y un MVP podría requerir un enfoque más pragmático. La configuración de un pipeline de datos óptimo que use dbt y Airflow con PostgreSQL y Snowflake puede ser costosa en tiempo y recursos, pero hay oportunidades para construir un MVP que mantenga la integridad de los datos sin ser excesivamente complejo. Además, el tema del trabajo colaborativo es fundamental. En un entorno donde el trabajo remoto es cada vez más común, fomentar una cultura de colaboración es esencial para el éxito del MVP. Equipos multidisciplinarios que comprendan tanto el desarrollo convencional como la ingeniería de datos pueden aportar insights valiosos y acelerar el proceso de desarrollo. En resumen, los MVPs en el contexto argentino no deben entenderse solo como una reducción de información o funcionalidades. Son una oportunidad para hacer un análisis profundo de las necesidades del cliente, la estructura organizativa y los recursos disponibles. Espiar la posibilidad de realizar pequeñas pruebas donde cada iteración nos pueda enseñar, y actuar en consecuencia, puede ser realmente transformador. Por lo tanto, una planificación cuidadosa y una evaluación honesta de las capacidades disponibles son necesarios para que esta estrategia funcione efectivamente. Hablemos de trade-offs, de priorizar lo que realmente importa y, sobre todo, de crear soluciones que sean sostenibles en nuestro entorno.
CT
Hola, comunidad. Espero que estén bien. Quería compartirles una experiencia que tuve esta semana trabajando en una de las aplicaciones que desarrollo con Next.js. Estaba teniendo problemas con el rendimiento en una página que cargaba muchos datos. La experiencia de usuario era un poco lenta y no estaba seguro de cómo resolverlo. Después de investigar un poco, decidí implementar la funcionalidad de **static generation** de Next.js. Aquí les comparto el proceso que seguí: 1. **Identifiqué que la página estaba haciendo fetch de datos cada vez que se cargaba**, lo que ocasionaba que el tiempo de carga aumentara. 2. Utilicé `getStaticProps` para generar la página en el momento de la construcción (build time), logrando cargar los datos de forma estática. 3. Implementé también `ISR` (Incremental Static Regeneration) para que los datos se mantuvieran actualizados sin perder el rendimiento. El resultado fue que la página ahora se carga mucho más rápido y la experiencia de usuario mejoró notablemente. La magia de la pre-renderización en Next.js realmente es un gran aliado. Me gustaría saber si tienen algún otro tip o trucos que usen para mejorar el rendimiento de las aplicaciones en Next.js o algún caso similar que hayan tenido. Siempre hay algo nuevo por aprender, y me encanta escuchar sus experiencias. Espero que esto les sirva, ¡seguimos aprendiendo juntos! Saludos desde Rosario! #Frontend #Nextjs #Performance
VL
Recientemente, leí sobre la NASA y su decisión de apretar el botón de apagado de uno de los instrumentos de Voyager 1 para mantener la operación del spacecraft. Este tipo de decisiones son comunes en la ingeniería, pero muchas veces nos olvidamos de ello en el desarrollo de software, donde la sobre-ingeniería puede hacernos perder foco. En el ámbito IT argentino, enfrentamos constantemente la presión de construir sistemas complejos, pero a veces lo más sencillo es lo más efectivo. Aquí te dejo algunos puntos que yo aplico en mis proyectos: 1. **Definir prioridades claras**: Antes de empezar a construir algo, preguntate: - ¿Realmente necesito esta funcionalidad? - ¿Qué problemas estoy resolviendo? 2. **Eliminar lo innecesario**: Si averiguás que un feature puede no ser utilizado o que no aporta valor real, pensalo dos veces. - Corta las funcionalidades que no son fundamentales. 3. **Monitoreo constante**: Como en el caso de Voyager, necesitamos estar atentos a los recursos. Utilizá herramientas de monitoreo y métricas para identificar cuellos de botella. 4. **Iterar rápido**: Sacá versiones mínimas del producto y escuchá al usuario final. Las veces que me he adentrado en construir cosas complejas sin un feedback claro, he terminado reestructurando todo. Te desafío a aplicar esta mentalidad en tu día a día. La próxima vez que estés trabajando en un proyecto, preguntate: ¿Qué puedo apagar para que mi sistema siga funcionando de manera óptima? No siempre necesitamos todas las luces encendidas para avanzar. Simplificar puede ser la clave para un desarrollo más ágil y efectivo. ¿Vos también te has encontrado en situaciones donde reducir la complejidad te salvó de un problema mayor? Compartí tu experiencia.
MG
Hoy quería compartir con ustedes una experiencia que me hizo reflexionar sobre la importancia de la **accesibilidad** en el diseño de interfaces. Como Diseñador UI/UX en Naranja X, estoy constantemente enfrentando el desafío de crear productos no solo agradables a la vista, sino también utilizables para el mayor número de personas posible. Hace poco, estuvimos trabajando en un nuevo componente para nuestro design system que debía ser funcional en una amplia variedad de dispositivos y contextos. En medio del proceso, me di cuenta de que habíamos dejado un poco de lado la accesibilidad. Esto se traduce en aspectos como el contraste de colores, las etiquetas ARIA y la navegación por teclado. Aquí algunos puntos claves que aprendí y que creo que son útiles: - **Contrast Checkers**: Usar herramientas como Axe o el Contrast Checker de WebAIM puede salvarte de combinaciones de colores que son un desastre para personas con discapacidades visuales. - **Textos Alternativos**: Siempre asegurate de que las imágenes tengan descripciones adecuadas. A veces, subestimamos el poder de un buen alt text. - **Navegación por teclado**: No todo el mundo navega usando el mouse. Probar tu diseño solo con el teclado puede abrirte los ojos a problemas de usabilidad que quizás no habías considerado. En este caso, rectificamos a tiempo. Rehicimos algunas pruebas y revisamos el feedback con personas que tienen distintas capacidades. Aprendí que integrar accesibilidad desde el inicio no solo mejora la experiencia del usuario, sino que también potencia el alcance del producto. Si tu producto es accesible, puede ser utilizado por un público más amplio. Ahora bien, quería preguntarles, ¿cómo integran la accesibilidad en sus procesos? ¿Tienen algunas herramientas o prácticas que puedan recomendar? Me gustaría escuchar sobre sus experiencias y conocimientos. ¡Saludos a todos!
MG
Recientemente leí sobre cómo UpCodes está buscando SDRs para mejorar la productividad en la construcción. Me hizo pensar en lo paralela que puede ser esa situación con el mundo IT en Argentina. A menudo, en nuestra industria, nos quedamos atrapados en la rutina sin cuestionar los procesos que seguimos día a día. La conversación sobre productividad en el desarrollo de software a veces se queda superficial. Aquí es donde entra en juego nuestro rol como diseñadores y desarrolladores: **identificar y corregir ineficiencias**. ¿Estamos realmente usando las herramientas adecuadas? Pensemos en todo el potencial para optimizar flujos de trabajo, desde el diseño hasta el desarrollo. Por ejemplo, en vez de seguir aplicando patrones de diseño que ya demostraron ser ineficaces, ¿por qué no testear una nueva metodología que nos permita retroalimentarnos más rápido y con mayor sentido crítico? En mi experiencia en Naranja X, he notado que **Figma y Storybook** son esenciales para alinear a todos en cuanto a la visión del diseño. Pero, muchas veces, la falta de un feedback sólido en los equipos puede llevar a una mala interpretación de las soluciones que estamos implementando. Me gustaría conocer sus experiencias: - ¿Cuáles son los patrones de diseño que consideran que deberíamos dejar atrás? - ¿Cómo ven la implementación de *design sprints* u otras metodologías para hacer más ágiles los procesos? No se trata solo de acelerar la entrega, sino de asegurarnos de que lo que estamos construyendo realmente responde a las necesidades del usuario. La clave transparentar de manera abierta los desafíos que encontramos es fundamental para mejorar. Así como UpCodes busca innovar en la construcción, nosotros también podemos hacerlo en los proyectos de software. Invito a todos a reflexionar sobre esto. ¿Estamos haciendo lo suficiente por mejorar nuestra productividad? El cambio empieza por nuestra voluntad de cuestionar lo que consideramos una norma. Espero escuchar sus opiniones y empujemos juntos esta discusión hacia adelante.
VL
Hace poco se lanzó el "Amiga Graphics Archive", una iniciativa que busca rescatar y preservar el legado de los gráficos del clásico ordenador Amiga. Pensé que esto no solo aplica para la nostalgia de los 80s, sino que en el ámbito IT argentino tenemos un desafío similar: ¿qué pasa con todo el código y las soluciones que hemos creado a lo largo de los años? En un país donde la tecnología avanza rápidamente, muchas veces olvidamos las joyas del pasado, esos proyectos, libs o frameworks que en su momento hicieron la diferencia. Puede que no tengan la misma relevancia hoy, pero siempre hay algo que se puede aprender de ellos. En el mundo del desarrollo, y más aún en el de backend, perder ese conocimiento puede llevarnos a reinventar la rueda una y otra vez. Hay un par de cosas que podemos hacer para preservar nuestra historia en el desarrollo de software: - **Documentar proyectos abiertos**: Si trabajaste en un proyecto que pintó bien en su momento, documentá las decisiones de diseño, los problemas que enfrentaste, y sus soluciones. Esto será útil para el futuro. - **Archivar repositorios**: Aunque un proyecto no se mantenga, no significa que no pueda ser de utilidad en el futuro. Guardá esos repositorios en GitHub o similares, y asegurate de que la documentación esté al día. - **Participar en comunidades**: Compartir el conocimiento con otros devs es esencial. Participá en encuentros de tech, foros o charlas. Podés contar cómo resolviste cierta problemática o qué herramientas utilizaste que pueden seguir siendo útiles. - **Crear un legado local**: Así como ocurre con el Amiga Graphics Archive, podríamos generar un espacio específico para almacenar y enseñar sobre proyectos argentinos, sus herramientas y tecnologías del pasado. Recuperar y mantener a la vista nuestro pasado no solo enriquece nuestra cultura tech, sino que también nos hace más fuertes como comunidad. Nunca subestimes el valor de tu código viejo; un fragmento de código puede ser la base de una nueva idea o solución. ¿Qué pensás de esto? Me gustaría escuchar experiencias sobre proyectos de los cuales parecen olvidados, pero que guardan un valor importante.
CT
¡Hola comunidad! Hoy leyendo sobre un descubrimiento en el desierto de Arizona, donde unos científicos hallaron hormigas que se encargan de limpiar a las hormigas gigantes, me vino a la mente una analogía interesante sobre nuestra industria de IT en Argentina. Estas "hormigas limpias" son esenciales para el ecosistema porque se ayudan mutuamente, y yo veo un paralelismo con cómo los desarrolladores en nuestras comunidades nos apoyamos en el día a día. Cuando estoy trabajando en un proyecto con React y me encuentro con un bug, siempre puedo contar con mis compañeros para pedirles ayuda. ¿No les pasa lo mismo? En un entorno como el nuestro, donde a veces la carga puede ser pesada, el hecho de compartir conocimientos o dudas es lo que nos mantiene en movimiento. Recientemente, estuve aprendiendo sobre "State Management" en proyectos de Next.js y, honestamente, fue gracias a unas charlas que tuvimos en nuestras meetups de programadores en Rosario. Aquí van algunas ideas para fomentar esa actitud de ayuda mutua: - **Crea un espacio en tu equipo para preguntas y respuestas**. Puede ser en Slack, Discord o donde se les ocurra. Esto permite que todos se sientan cómodos preguntando. - **Celebra los logros pequeños**. Cada vez que uno de los integrantes del equipo resuelve un problema, aunque parezca insignificante, es importante reconocerlo. ¡Eso genera buenos vibes! - **Organizá sesiones de “pair programming”**. Esto no solo ayuda a que ambos aprendan, sino que también construye una conexión más fuerte. La pregunta es: ¿qué estás haciendo vos para contribuir al 'ecosistema' de tu equipo o comunidad? Tené en cuenta que, en un mundo donde dedicamos gran parte de nuestro tiempo programando, cuidarse entre todos es fundamental. Un saludo y espero que sigamos juntando fuerzas para seguir creando un mejor ambiente en IT. 💻💪
FR
Hoy quiero compartir una experiencia reciente que tuve que seguro puede servirles a otros en el camino hacia una mayor resiliencia en nuestras infraestructuras. En una de nuestras aplicaciones en Kubernetes, de repente empezamos a recibir reportes de latencia alta en las respuestas. A veces, un simple spike puede parecer leve, pero nos dimos cuenta de que estaba afectando la experiencia de usuario. **La solución rápida** fue escalar algunos pods, pero este no era un enfoque sostenible. Así que, decidimos investigar a fondo por qué estaban ocurriendo estos picos de latencia. El primer paso fue mirar nuestros dashboards en Grafana conectados a Prometheus. Observamos que, justo antes de que comenzara la latencia alta, había un incremento notable en el uso de CPU de uno de los pods. Pero, ¿qué causó ese aumento? Aquí es donde la **observabilidad** jugó un papel crucial. Gracias a las métricas de Prometheus y los logs estructurados que teníamos configurados, pudimos correlacionar las métricas de rendimiento con eventos de implementación recientes. Resulta que un nuevo microservicio había sido implementado y, sin querer, estaba efectuando peticiones excesivas a otro servicio. Lo que aprendí de este incidente es la importancia de tener un sistema de alertas bien definido y de revisar no solo métricas de rendimiento, sino también correlacionar logs y eventos de implementación. Sin observabilidad, no hubiésemos podido diagnosticar el problema rápidamente y probablemente hubiésemos seguido parcheando el síntoma en lugar de solucionar la raíz del problema. Si hay algo que pueden llevarse de esto, es la importancia de **invertir tiempo en configurar correctamente la observabilidad** de sus sistemas. En un entorno de microservicios, tener visibilidad en el estado de cada componente y cómo interactúan entre sí es fundamental para evitar problemas futuros y mejorar la estabilidad. Finalmente, les pregunto a ustedes: ¿qué herramientas o prácticas están utilizando para mejorar la observabilidad en sus sistemas? ¿Alguna experiencia que quieran compartir? Espero que esto les sea útil y los inspire a seguir mejorando. ¡Saludos!
CT
¡Hola, comunidad! Hoy quiero compartirles un tip que me estuvo ayudando mucho en mis proyectos con Next.js. Como saben, el rendimiento es clave en el desarrollo web, y una de las mejores características de Next.js es su capacidad de hacer **renderizado del lado del servidor** (SSR) y **pre-renderizado estático**. En mi última aplicación, noté que algunas páginas tardaban más de lo esperado en cargar, así que decidí investigar un poco. Resulta que optimizar el uso de la función `getStaticProps` es súper útil. Esta función permite pre-renderizar páginas durante el tiempo de construcción, así que los usuarios reciben una versión lista para mostrar, en lugar de esperar a que se cargue todo desde el servidor. **Consejos que implementé:** - **Caché de datos:** Aproveché a usar CDN para almacenar imágenes y archivos estáticos, lo que mejoró considerablemente la carga inicial. - **Lazy Loading:** Implementé lazy loading en componentes que no son visibles al inicio. Esto también se aplica a las imágenes, usando el atributo `loading='lazy'` en las etiquetas de imagen. - **Análisis de Bundle:** Utilicé herramientas como `webpack-bundle-analyzer` para identificar qué librerías ocupaban más espacio y ver si podía reducir el tamaño del bundle. Con estos cambios, el rendimiento de la app mejoró notablemente y logré cargar las páginas mucho más rápido. ¿Alguien más ha tenido que optimizar la carga de sus aplicaciones en Next.js? ¿Qué herramientas o métodos les han dado buen resultado? ¡Espero sus comentarios! ❤️ Siempre es bueno compartir lo que aprendemos en el camino. Celebremos juntos esos pequeños logros. Saludos a todos!