Posts

Mis Practicas Profesionales - Acerca de las Pruebas

 Recientemente, mis prácticas profesionales han sido puestas a análisis por mis pares y siento que deberia ofrecer un contexto y los criterios que me han guiado hasta aquí. Voy a comenzar tratando las pruebas. Aquí va: Creo que la evolución actúa como una fuerza natural sobre todo lo que hacemos. De ahí que mi práctica profesional ha evolucionado con el tiempo. Lo que voy a describir puede que deje de hacerlo o que lo adapte en un futuro. En mi experiencia pasada los productos se han desarrollado o modificado para alcanzar objetivos económicos: ya sea la realización de una ganancia o la eliminación de un gasto. Este para mí es el vector de selección natural de mis prácticas profesionales. Es el lente a través del cual me analizo en retrospectiva continuamente. Hablemos en términos simples. Hablemos de implementar una nueva funcionalidad en un producto existente. Esta nueva funcionalidad responde a una necesidad del cliente objetivo del producto. Para mí esto requiere que antes de entre

Revision de Código

 La revisión de código es una actividad desarrollada por un actor diferente al autor del mismo y que es un prerrequisito para que el código llegue a usarse en producción. Esta es mi experiencia hasta ahora con esta actividad. Motivaciones La documentación al respecto no necesariamente menciona estas motivaciones. Son las que he podido ver en mi experiencia personal. Control Social La revisión de código cuando es realizada por un superior con objetivo de aprobar/desaprobar el trabajo de su subordinado es meramente una herramienta de control social. Esta motivación tiende a ser enmascarada usando otras y no aporta al producto final. Control de la Calidad La revisión de código, cuando es realizada por un par del autor con el objetivo de evaluar desde otra perspectiva, es una herramienta de control de la calidad del producto. Algunos aspectos de la calidad del código que se pueden beneficiar de la revisión son: legibilidad mantenibilidad cohesión, consistencia reducción de errores en produ

Creating a package for Debian, with its headaches

This entry is going to be brief. It is about a not so pleasant experience creating a package for Debian. In my work I have packaged several projects for Debian and this week I try to do it for a project based on QT. As I had already packaged other QT projects, I download one of them to copy/paste part of the contents of the debian/directory . At the time of executing the command debuild -b -uc -us  it fails me during the execution of the dh_install helper. This is because the helper executes a binary that has just been compiled.  After a lot of searching the Internet I find this comment. Basically if the files debian/*.dirs or debian/*.install are executable the helper dh_install will execute them and guess what was the first line of debian/install : the binary that was compiled as part of the package. And it turns out that this file when downloaded from the internet the OS for some reason put this bit. The documentation of the helper dh_install gives an idea in this rega

Creando un paquete para Debian, con sus dolores de cabeza

Esta entrada va a ser breve. Trata sobre una vivencia no tan agradable creando un paquete para Debian. En mi trabajo he empaquetado varios proyectos para Debian y esta semana trate de hacerlo para un proyecto basado en QT. Como ya había empaquetado otros proyectos de QT descargue uno de ellos para copiar/pegar parte del contenido del directorio debian/ . Al momento de ejecutar el comando  debuild -b -uc -us me falla durante la ejecución del helper dh_install . Esto es puesto que el helper ejecuta un binario que se había acabado de compilar.  Despues de mucho buscar en Internet me encuentro con este comentario . Básicamente si los ficheros debian/dirs y debian/install son ejecutables el helper dh_install los va a ejecutar y adivinen cual era la primera linea de debian/install : el binario que se compilo como parte del paquete. Y resulta que este fichero al descargarlo de internet el SO por alguna razón le puso este bit. La documentación del helper dh_install da idea al res

My take on Time Series Database requirements

Some time ago, doing some research related to my current work, i stumble upon this excellent article by Baron Schwartz on the topic of Time Series Database requirements. This article is in my opinion the best thing on my reading list for that subject and in this post i will try to expose my own take on this matter building on top of it. Definition of Data Type Baron identify series using two elements: source identifier and metric identifier. I have seem this used on existing products, but from my perspective this is needed for organization purposes and not for series identification. For me the only hard requirement on this matter is that series can be uniquely identified. Therefore a single series identifier is sufficient. You can always provide organization using some kind of namespacing over identifiers (consider the following identifiers “source1.metric1” and “source1.metric2”) or using an independent component to build the relations between series and other elements (groups, a

Mi aproximación al diseño de APIs RESTful

El diseño de APIs siguiendo el estilo arquitectónico REST es tema de debate constante en la red. Existen innumerables publicaciones sobre el tema tanto post personales como artículos respaldados por organizaciones. Separar la paja del grano en este tema es difícil dado que la fuente canónica de información son documentos académicos. Me encantaría leer algo mas aterrizado a la práctica del mismo Roy Fielding pero respeto su compromiso con la comunidad y su incansable trabajo en los procesos de estandarización. En este post voy a compartir con ustedes mi propia aproximación al problema. La parte en negritas sería la descripción necesaria de la API. El caso de estudio para este post será la clásica aplicación de Cosas Por Hacer . Lo primero es modelar el recurso Cosa Por Hacer o Todo como se le conoce en Ingles. Aquí vamos a asumir que es algo tan simple como que tiene 2 atributos: el titulo y la bandera de completado. Lo segundo sería identificar las acciones y el posible flujo de

Concurrent Alarms Processing

Currently I am working on a development project of a Control System and am faced with the task of massive event processing of measurements for signaling alarm conditions (alarms that are activated when a certain value becomes above or below a certain level, etc.). This control system notifies the alarm processing component each of the measured variables (tags) and the component ​​must update the state machine of each of the alarms set in the control system. The problem I face is that we want the system as a whole to be scalable (we need to resize depending on the load to which it is submitted) and therefore in some scenarios the number of notifications to the component of alarm processing is such that exceeds its handling capacity so it is impossible for a single computing entity (task or process) of performing real-time processing. Given this scenario, I raised the possibility of horizontally scale the alarms processing component. But the problem of scaling alarm  processing componen