Introducción
¿Qué es CardAK?
CardAK (Card Army Knife) es una herramienta de línea de comandos diseñada para gestionar archivos de intercambio de tarjetas MasterCard IPM (Interchange Processing Message) y trabajar con mensajes basados en el estandard ISO-8583. Proporciona un conjunto completo de utilidades para manipular, analizar y validar archivos de intercambio.
Nació de la necesidad de facilitar el manejo de dichos archivos, que son difíciles de visualizar y manipular debido a su formato.
Esta herramienta funciona en la terminal tanto en ambientes Windows como Linux
¿Por qué surgió CardAK?
Trabajar con archivos de intercambio utilizados por MasterCard no resulta sencillo debido a su estructura interna. Estos archivos pueden venir en diferentes formatos y codificaciones, y la información suele contener datos binarios por lo que no pueden abrirse o modificarse con un editor de textos clásico.
En muchos años trabajando en el desarrollo de software financiero donde se necesita procesar y generar este tipo de archivos, frecuentemente nos encontrabamos con problemas tales como errores al intentar procesar un archivo recibido debido a que el mismo llegaba en un formato diferente al que nuestros sistemas esperaban, o encontrar una transaccion específica en un grupo de archivos, algunos de ellos con miles de registros, o incluso que luego de generarlo nos dabamos cuenta que se habia incluido un registro que no debía estar, o con datos incorrectos. Muchas veces eso implicaba regenerar el archivo completo, que podia llevar mucho tiempo de procesamiento.
La solución generalmente era utilizar el simulador de MasterCard, pero no siempre estaba disponible para todo el equipo de desarrollo, y en algunos casos llegabamos a disponer de dicho simulador solo por unas horas un día a la semana, lo que provocaba demoras en la resolución de problemas.
La alternativa que utilizabamos a menudo era la de abrir el archivo con un editor hexadecimal, y si la modificación era sencilla (como cambiar un caracter en un campo que no cambiara el largo del mismo), se podia hacer pero siempre corriendo el riesgo de dejar el archivo corrupto e inservible.
Ahí surge, como una iniciativa personal, el desarrollar una herramienta que facilitara la resolución de algunos de estos problemas frecuentes. Esa primer versión vio la luz desarrollada en lenguajes mas bien orientados a scripting, tales como Perl, bash scripts, etc.
Como desarrollo personal, y para ganar experiencia en un lenguaje que estaba comenzando a ser popular (Go lang), es que decidí escribir la herramienta en este lenguaje para ganar performance. Ahí surgió un primer prototipo llamado Filetools.
Esta herramienta permitía realizar algunas operaciones básicas sobre diferentes archivos, donde las más importantes eran la de identificar el tipo de archivo y poder visualizar en forma amigable el contenido de los archivos IPM y MPE utilizados por MasterCard. También se había comenzado a implementar la capacidad de convertir entre formatos de archivos, pero esa herramienta nunca fue finalizada ni probada, era solo un concepto para solucionar una necesidad personal a fin de mejorar el rendimiento en el area de desarrollo.
Fue durante esta etapa que luego de desvincularme de la empresa en que estaba trabajando, y con mucho tiempo libre a mi disposición para proyectos personales, es que decidí tomar esas ideas y armar un producto que podía ser de utilidad para mas personas, aprovechando el conocimiento ganado durante años en diversas empresas del sector sobre el manejo de este tipo de archivos, que además parecían ser formatos que a la mayoria de los desarrolladores le resultaban difíciles de entender.
Durante dos años estuve desarrollando un programa que contemplara las funcionalidades de aquel prototipo inicial, y además agregara funciones mejoradas y útiles. Durante este proceso encontré muchos conceptos del prototipo original que estaban mal y que contenían muchos errores, por lo que este nuevo desarrollo fue una versión escrita desde cero, y aunque en algunos aspectos visuales se parecen, son productos totalmente diferentes.
Llegado el momento de decidir un nombre, internamente decidí llamarlo de una forma que representara su uso, y ya que se trata de un producto multipropósito para el manejo de archivos (como una "navaja Suiza" pero para archivos de intercambio), decidí llamarlo por su nombre interno como "Card Army Knife", o en forma abreviada, CardAK.