Short Ids

uuids

Hace poco me encontré con la siguiente necesidad. Debía pasar un identificador de recurso por url, el cual se da de alta en una base de datos (junto con otros datos) y tiene un nombre descriptivo (que debe ser único), asociado que es especificado por un humano. En principio se me ocurrieron 2 formas de identificar al objeto: Usar un valor autoincremental de la base de datos como PK y agragar una restricción para que no se repita el nombre, más un índice.

Read more →

Let's test

testing

Estuve leyendo un post del blog de Airbnb sobre testing: http://nerds.airbnb.com/testing-at-airbnb/ y quiero resaltar algunos puntos que me parecieron importantes First, we needed to take a lesson from the PR rollout and lead by example. This meant including tests with any PRs we submitted, whether it was new feature development, bug fixes, or refactors. Me pareció algo muy interesante incluir casos de test en los pull requests, lo cual me lleva a pensar un poco en el nivel de granularidad de los casos de test.

Read more →

Escribo esto por la sorpresa que me dió el siguiente descubrimiento. Estaba leyendo algunas notas sobre performance en Java y como el autoboxing lo afectaba. En particular se plantea el siguiente ejemplo: public static void main(String[] args){ long start = System.currentTimeMillis(); long sum = 0L; for (long i = 0; i <= Integer.MAX_VALUE; i++) { sum += i; } System.out.println(sum + " took " + (System.currentTimeMillis()-start) + "ms"); } El programa tarda 1329ms.

Read more →

Shortening-uuid

java uuids

Muchos están familiarizados hoy con los UUIDs, hoy en día son muy utilizados como identificadores debido a su no secuencialidad y su baja probabilidad de colisiones. Los uuids son una secuencia de 128 bits (16 bytes). La representación usual de estos es con 36 caracteres: 32 caracteres hexadecimales más 4 separadores (por ejemplo: 7625c7e9-38b1-4622-aa71-1ad439c1bced). Los separadores son decorativos, por lo que los caracteres que realmente tienen información son 32 (7625c7e938b14622aa711ad439c1bced). Dado que los caracteres hexadecimales se pueden representar con 4 bits, cada caracter representa 4 bits del UUID, requiriendo 32 caracteres para representar los 128 bits.

Read more →

Innovación

development

Quizás estés trabajando en una compañía desarrollando software y sientas que tu trabajo se tornó rutinario y aburrido. Quizás veas para afuera y pienses que en otras compañías el trabajo es más “divertido”, entretenido o desafiante. Quiero invitarte a que lo pienses dos veces. Quizás el problema no sea la compañía sino que seas tú. Primero, me gustaría meditar un poco sobre qué entendemos por innovación. Si hacemos una búsqueda rápida en Google, te darás cuenta que existen varios enfoques y en general el más importante en los negocios es el enfoque económico.

Read more →

Mailgun rocks!

Hace rato que lucho por dar emails para los dominios que administro. En general los usuarios ya tienen sus cuentas de Gmail, Hotmail, Yahoo u otros y están acostumbrados a ellos. Por lo que en general no me piden una casilla nueva o sino hacer un forward de los mails que lleguen a ese dominio a sus casillas personales y usar su cuenta. Pasé mucho tiempo tratando de configurar Postfix y creo que logré hacerlo bastante bien, pero no siempre funcionaba todo o por lo menos no me resultaba claro.

Read more →

En estos días en que las decisiones de negocio se toman en base a los datos, se me pidió muchas veces activar cierta funcionalidad para al poco tiempo apagarla porque no rendía. Otras veces por motivo de algún bug o algún caso no contemplado requerimos volver atrás alguna de estas funcionalidades. Las tareas de llevar a producción y hacer rollback de funcionalidades en sitios que tienen que estar disponibles las 24hs los 7 días de la semana y sin downtime no siempre es sencilla.

Read more →

Una duda recurrente en cualquier equipo de desarrollo es ¿en qué paquete va esta clase? Muchas veces me encontré con diferentes opiniones y en general carecía de un buen criterio para tomar una decisión. En general siempre opté por empaquetar por funcionalidad, pero siempre fue más por un presentimiento (gut feeling) que una decisión fundada. Si alguna vez se encuentran así, este texto puede aportar algo de claridad: Package by feature, not layer

Read more →

Gastón Fournier
Disclaimer: The information and opinions shared on this blog are my own and are not associated with my employer.

I'm a Software Engineer living at Barcelona.
I'm passionate about development, agile methodologies, machine learning and artificial intelligence.

I hope you enjoy the reading!