Un problema del webmail de Network Solutions ( UTF8 )

En el nuevo corporativo tengo asignadas dos cuentas de correo. Una personal y otra para pruebas, debido a que mi aplicativo va a estar enviando correos con xml y txt a los clientes.

Normalmente bajo todo de la empresa por webmail, y lo mio propio lo hago desde outlook express. El dominio de la empresa tiene el correo bajo Network Solutions.

Estuve haciendo pruebas y uno de los ejemplos, que me mandaron suelto, llego mal una Ñ. Revisaron el origen y estaba bien, el problema que encontré necesitaba seguimiento.

Tengo cuentas de correo desconocidas en gmail, yahoo y hotmail. No para usarlas sino para estas pruebas.

Pedir que me enviaran el ejemplo y en todas se ve bien.

Extraño.

Al hacer que me mandaran exactamente el mismo ejemplo pude descartar la fuente. De entrada en gmail se descarga bien con el mismo navegador, o sea que la opción de descarga del webmail de Network Solutions , mete un doble uuencode, y por eso la ñ me lelgaba con doble codificación.

Lo que deberé hacer es probar despues ver desde el imap de network solutions y con eso veo si lo descarto también o no.

que lata.

A veces DEBES reinventar el hilo negro

En este momento tengo en varios lugares establecidos sistemas de tickets, programados por mí, para pendientes de clientes. Algunos en python, uno en ruby, lo demás en PHP bajo GPL o LGPL.

Sugerí varios en el trabajo anterior, y los tenía implantados en el 2010 antes de la reestructuración, pero en una junta de junio del 2011 (la que fue de todo el día ) se hizo una presentación de 10 minutos que no decía nada, y decidieron usar un software propietario, sin licencia y muy pesado para una implantación PARCIAL y no metódica. La excusa que dijeron después era la opción para reaccionar/recibir correos de clientes. Dos de mis softwares lo hacían por IMAP.

Ahora me encuentro en una opción parecida. Resulta que el proyecto del mes por la empresa principal de las que contrataron a la PYME debo convertir unos xml/txt a otro formato. Algo muy parecido era el trabajo «inicial» de los «analistas» del trabajo anterior Lo que ellos hacían era adaptar un php a cada cliente.

Tengo que hacer algo similar, pero para un solo cliente corporativo. Solo que en este caso además que el código era confuso y las bases de datos no estaban optimizadas, no puedo por copyright reutilizar ese código, e inclusive ya lo borré de mis respaldos. Así que lo que hice fue buscar algo similar en internet (encontrado en 3 minutos con código libre en una revista española de hace varios años), y elaboré desde cero la validación de los XML que regresan los SCADA. Ya se guarda en una base de datos mysql el resultado de importar los XML de los scada, y me falta generar el sitio web con sus catálogos, pero tengo ya los ingredientes como los descuentos de burbuja .

Lo que está criminal es lo que noté desde entonces : falta de limpieza y enfoque en lo que estaban haciendo.

No es posible que en menos de 4 horas yo tenga funcionando adecuadamente un sistema de PROCESADO Y FILTRADO en base de datos de un xml de scada, mientras que ellos no quisieron jamás poner los servicios estadísticos que sugerí en el 2010.

Y aqui ya está la base de los servicios estadísticos, porque los datos exportados/explotados ya están en la base de datos, y se pueden filtrar.

Alla no.

Y tenian dos/tres personas dedicadas de tiemplo completo a hacer cambio a ese script personalizado, cuando podía hacerse por una sola persona (un programador real con el sueldo adecuado, ni siquiera se necesita alguien con mi experiencia y sueldo para eso), y así gastaban tres medios sueldos en algo que una sola persona pudo hacer. Esas personas, analistas, no analizaban. (quizá un dia explique lo que para el director de corporativo era un analista y que era un programador pero el concepto era una de las versiones mas enredadas que he escuchado)

Por mas que lo veo, las piezas del rompecabezas de lo que ofrecí en el 2010 eran evidentes. Aquí es un servicio añadido de lo que voy a hacer este MES, y en donde estaba antes, la mitad de eso, era el trabajo de tres personas durante mas de dos años.

Que horror.

A veces al hacer algo de cero por cuestiones de copyright (o por código basura), puedes hacer bastante Reingeniería y hacer algo evidente.

Las siguientes etapas me hacen creer que el demo está el viernes, por lo menos parcial. Dejaré las bases de datos al ultimo porque estaré corriendo sobre WAMPServer en lo que me definen servidor.

Una junta de hace unos meses

Hace unos meses me llaman a una junta de soporte. En esa junta no tengo porque ir. Se supone que es el área de soporte a clientes, y les estan haciendo exactamente lo mismo que meses atrás. Asignándoles nuevos «clientes» a cargo. No es que sean mas clientes o empleados, o que esten haciendo una redistribución, simplemente están barajando clientes en lugar de revolver papeles.

Esa junta implica básicamente que tres personas a las que llaman «analistas» , y que ganan menos que la mitad que yo, son los que van a adecuar un formato de impresión para los clientes pero ahora de un cliente diferente. Se pierde el know how y la relación con el cliente.

El 70% del trabajo de estas personas consiste en eso.

En la reunión se encuentran dos «gerentes». Uno de ellos se supone que es mi jefe inmediato pero ha evitado todo tipo de contacto o responsabilidades. Se supone que las juntas son para informar necesidades o informar avances. Con esa persona no han habido juntas, porque no sabe expresar necesidades, y evidentemente no hay avances que informar porque son otras áreas las que me piden lo que necesitan. Las juntas son evitadas por esa persona desde que demostré que los servidores estan llamando al desastre y que la operación de la unidad de negocio penden de un hilo.

Por lo general no hay nada que informar. Que el servidor siga con vida es un milagro, y depende de mí.

Pasan unos temas que no vienen al caso. Se me dice que van a usar tres de mis sistemas para hacer que la empresa despegue… porque nadie de la competencia lo ofrece.

Lo se perfectamente. Una de mis obligaciones autoimpuestas es checar el producto de la competencia. Lo reviso desde hace mas de un año, diariamente. Puedo dar el porcentaje y fechas de problemas en los servers de la competencia con una aproximación a 98% en horarios laborales.

Que necesitan?

Pregunto.

La respuesta es dimelo tu.

Me siento igual que Galt, en la parte final de la rebelión de Atlas. Donde le dicen «necesito que me diga usted, Galt, que hacer».

No puedo sacar algo de la nada, no puedo saber cual de los tres proyectos quieren primero, y tampoco puedo saber por el titulo de que se trata o a que se refieren con términos ambiguos. Si no podemos definir la medida de éxito en base a un objetivo, menos vamos a tener los recursos para realizarlo.

Asi que me encuentro en ese momento en una situación donde me dicen que resuelva tres problemas, que genere tres proyectos, que salve la empresa (en realidad).

El asunto se complica por la falta de estándares y documentación. También de recursos. Las nóminas se pagan puntualmente, pero no se ha repuesto mi equipo propio quemado, ni me dan los recursos de servidores indispensables.

Noto en esa junta, antes de otra cosa, que no se dan cuenta que una responsabilidad lleva una autoridad y viceversa. Se refieren a esos tres proyectos como mis proyectos… y en base a eso me quieren asignar solucionar un problema. Mi respuesta inmediata : Okey, son mis proyectos. Si tengo una responsabilidad sobre ellos, también necesito una autoridad sobre ellos. Que ni SAEM ni XFBP les metan mano. Uno no corrigió algo que se comprometió a hacer en noviembre tres y ya estamos en febrero, y el otro borró un código por error.

Es que …

Responsabilidad sin autoridad no funciona. Pienso. Lo digo. Repito: No puedo hacerme responsable de algo que estan metiendo mano varias personas, y si no me dices que quieres, va a estar dificil que pueda cumplirlo.

Me tocan varias semanas en que trato de que esos dos gerentes, de los que no se hace uno, traten de decirme tiempo, alcances (definir objetivos que definan cada proyecto), prioridades de orden.

En otra mini junta me dicen… eso es lo que queremos que nos digas tu, cual de los tres proyectos es primero para la empresa.

??

Les respondo: No estoy enterado de los planes de la unidad de negocio: El modelo no me parece sustentable, no estoy enterado de los presupuestos de ventas, de los costos que tenemos y el margen de utilidad que deseamos. Sin esa información no puedo decidir cual de los tres es mas importante, y menos si no se que quieren que se haga en esos tres proyectos, y para cuando.

Es para dentro de un mes y además hay que cambiar el sitio web y atender tal otra cosa.

Ok, pregunto, entonces queieren que cambi el sitio web, que no hice yo, que hizo uno de los socios. Gracias por darme la autoridad de rehacer ciertas cosas.

Por cual de las cinco cosas empiezo? Pregunto.

Eso lo tienes que decidir tu.

Pienso otra vez Basicamente lo que me piden es que haga curitas y las ponga donde crea necesario, pero sin personal, sin servidores y sin cambiar lo que está provocando las lesiones en la empresa.

Unas semanas después , habiendo recibido varias ofertas de trabajo en la comida de cumpleaños que me hicieron varios conocidos, llegamos a una de esas situaciones absurdas: Este proyecto lo usan el 90% de nuestros clientes. Ya checamos con el 1%, esdecir 2 de ellos y ellos no usan tales opciones, destruyelo.

Ok, ponganlo por esctito. Me estan pidiendo que quite el histórico cuando nuestro producto es conservar el histórico.

pero porque? me preguntan.

Integridad referencial.

Queremos que el sistema no sea sólido. Que sea una máquina de escribir.

(si se lo dijeran a los clientes les da el infarto, pienso).

Cuando se niegan a firmar los cambios de esa junta, después de ver a mi jefe a punto de llorar diciendo que tiene mucho trabajo y que necesita mi ayuda, y al dia siguiente poniendose agresivo en publico diciendo que no manejo la tecnología que el maneja…

¿?

Supongo que no se da cuenta que no voy a resolver todo con un desarmador, y que ninguno de los tres proyectos que se manejan, son adecuados para meter ordenes jquery, y que cambiar a un metodo de tabs un formulario gigantesco de maestro detalle es imposible cuando todos los campos son necesarios, obligatorios y pertenecen al mismo renglón.

Me siento igual que Galt, en la parte final de la rebelión de Atlas. Donde le dicen «necesito que me diga usted, Galt, que hacer».

Cuando le dices a alguien que va directo al precipicio y que debe cambiar de rumbo, es su decisión si lo hace o no.

El dia de ayer vi el proyecto del mes en el nuevo trabajo, tiempos, prioridades, fechas de entrega me son pedidos, tengo la responsabilidad ,pero la autoridad de un sueldo mayor y la autoridad de elegir prioridades.

Se acepta mi orden.

la diferencia es que aqui no es Galt contra políticos que se les cae el país a puños, sino una fábrica que produce.

Un lugar de hacedores, no de vendedores o de parásitos.

El regreso de un viejo amor

En el año 1997 tomé mis primeros cursos de sql server. En el 2000 me tocó ver como autorizaron la licencia a un sistema inútil, mientras que yo debía usar dbfs.

Poco después me tocó la implantación y cambios en Lucent a un sistema que estaba pensado para trabajar en SQL Server 6,5 y se migró a 7. Recuerdo esas noches hasta altas horas de la madrugada, alterando el código ajeno que se conectaba por DAO y visual basic a nivel internacional, esas jornadas maravillosas mientras mis manos cambiaban, por si las dudas, no solo enlaces por ADO bajo MSDE 2.6 o 2.8, sino la sintaxis de los campos ajenos para usar mayúsculas, y no tener problemas si en el cambio se perdía el valor que hacía intercambiables como finalmente sucedió.

Esas mañanas al ver el sistema funcionando bajo 7.0, el levantar en pocos días el sistema de jueces, la sobriedad de unas ordenes de consola acariciadas por el nuevo Service Pack….

Mas adelante la labor en la empresa de alimentos, habiendo sido contratado para programar, y dedicando los siguientes tres años a mantener vivo un servidor agonizante por problemas de antiguos proveedores el as 400 apagado, y cada mañana, de manera clara, durante un mes y medio, levantando de la nada el sql2000 con sus service packs y los soportes AWE, para unos minutos después, con tristeza, ver como la bestia de 4 terabytes de disco duro y 16 gb de ram, en el 2006, caía de rodillas bajo el influjo de ese software basura llamado Dynaware.

Esa experiencia de levantar el servidor cada mañana durante semanas; un trabajo coordinado de tres hombres, y al filo de las siete de la mañana, mientras sabíamos que se aproximaba a su muerte por ese día, el humilde servidor sql 7, levantado por milagro, para enfrentarse a la decadencia de un software basura, dynaware, por solamente el esfuerzo de un hombre.

Y la victoria, cuando conseguí a través de la ciega suerte, que otro proveedor nos ayudara , de manera gratuita, a migrar su software de recursos humanos, que si funcionaba, a otra computadora mas poderosa. Y el ver a la pc que mantuve viva por varios años, y el nuevo servidor normal, enfrentarse al coloso que caía de rodillas por la estupidez de un software que usaba ODBC para mas de 32 usuarios.

El triunfo.

Salir de ese lugar , sabiendo que las computadoras se anulan entre sí y que importa mas el hombre, me vi obligado a alejarme por un tiempo de sql server 2000, olvidando la dulzura de procedimientos almacenados, integridad referencial y respaldos gigantescos a través de los mdf y ldfs…

Después el ver en otros lugares los problemas de progress, los pininos de mysql, y luego, otra vez, como un huracán, el sistema de control de cotizaciones, ordenes de compra, autorizaciones y el poder de una cadena de insumos encadenado a una base de datos SQL 2000… para descubrir que quien encargó el sistema no sabía que en realidad todo lo demás de la empresa corrían con sql 7, y que se habían invertido dos años( en parte mios) para hacer que el active directory hiciera lo deseado….. Mas noches revisando los respaldos, y decidiendo como hacer que coexistieran ambos servidores sql en una de las redes mas infames que el mundo haya visto, y la decisión haciéndose lógica:

Crear los usuarios al vuelo desde Visual Basic y después PHP. Olvidar los SA y la clave maestra: el trazado a través de triggers específicos que ligaban a la bitácora incluso las modificaciones desde consola, ver nacer y morir los usuarios de sql por el producto de mis manos…..

Mañanas de ver como el sistema ordenaba el viaje por avión, calculando
la disponibilidad, las pantallas lanzandose al vuelo del director general, para que autorizara la ganadora de tres cotizaciones, el poder de aceptar una partida de cada una, mientras en la lejanía el rugido del sistema y la planta , producto de la mente de un hombre, recordaba el poder de un ser humano; ser de aquellos hombres que hacían moverse los sistemas SCADA, decidir que se apagaba por si solo, viendo a los obreros, sin producto de su mente, pero a diferencia de las sectas destructivas, dispuestos a trabajar en algo real, y ver como, al nivel de su capacidad, esos obreros anónimos daban lo que podían dar en el mundo real, sabiendo que yo ganaba lo de 20 obreros, a pesar que los alimentos de la fábica eran los mismos; obreros: personas simples pero dispuestas al trabajo, ajenos a las fantasías de mentes enfermas, mismos que través de los ajustes manuales al producto de las redes SCADA que yo controlaba, eran personas productivas mientras que el clamor de una mente depuraba los puertos seriales RS435 y sus limitaciones.

¿Como pude olvidar esas depuraciones ? Esas semanas de entender vistas
creadas por integridades referenciales de cuatro campos por tabla que a su vez eran llave, ese eliminar las vistas creadas por personas que pensaban que así escapaban de una red infame… y después, cayendo, una por una todas las vistas menos dos, mientras que el sistema de triggers era capaz de registrar en bitácora lo sucedido en la consola….

Mañanas y noches hermosas , mientras los hornos de las fábrica con su estruendo eran la música que superaba nuestras voces…

Y después… adiós !

Saber que las cadenas de conexión de ADO se dejaban de lado, me era
doloroso, a pesar que lo siguiente era usar mi software en PHP demostrando que lo que fallaba eran los protocolos de la red: Que tcp/ip era como un rayo, mientras que los protocolos establecidos por la disparidad de las pc que eran los clientes de los servidores, llevaban ese sistema a su conclusión.

Supongo que fue por esas fechas que empecé a recibir encargos de sistemas bajo mssql server y mysql al mismo tiempo, lo cual no es problema si se mantiene el modelo vista controlador, en lugar de un malentendido proceso por capas, en el que programadores noveles tratan de meter las reglas de negocio en una base de datos. Es decir, el poder de los procedimientos almacenados no debe usarse para casarse con una base de datos, sino para lo que es.

En cierto modo hacer sistemas portables entre distintos motores de bases de datos, me salvó cuando empezaron los problemas de compatibilidad de sql 2008 y windows vista; esas interfaces infames de sql 2005 en el cual la compresión de base de datos se hacía por scripts y no por opciones de menú no era lo mas sano, pero ese sacrilegio que hicieron las primeras versiones de sql 2008 con la importación de textos planos, y los problemas con los nulos, mas la carencia de interfaz, me llevaron una vez más a añorar el poder de la interfaz nativa de sql 2000.

Y entonces vino el momento. Decidir dejar si una topología de red, profanada se llevaba mi esfuerzo, migraba a un sql2008 con demasiados recursos y costo mas alto y con menos prestaciones, o pasar a algo mas duro: ORACLE y sus sinónimos.

Abandoné sql server 2005 en adelante.

Despues de todo, fueron tantas las versiones que instalé de servidores hp con cinco licencias gratuitas de sql 2000 incluidas, que pasar a 2005 era estupidez económica además de sacrilegio.

Y esas mañanas se fueron, los sueños con Store Procedures fueron cambiados por Grants y repman.

Ahora, años después de eso, veo frente a mi, a mi alcance, la posibilidad de un desarrollo adicional sobre sql 2000, así que en los próximos años, el regreso de trabajo real sobre sql 2000 en una base de datos que
crecerá de sus 10 gb actuales….

Es hermoso ver el futuro… sentir aproximarse los grants a través de php, y saber que los usuarios serán creados al vuelo, y que las bitácoras permitirán asegurarnos otra vez los controles HIPAA. (sabiendo que la falta de interfaz gráfica de sql 2005 para la compresión y detección de errores hace a sql2000 mucho mejor que el 2005)

Y entonces… en este nuevo lugar, sabiendo que la importación de csv hace suicida usar sql 2005 en adelante, me he acercado con temor al conmutador de teclados en el cuarto de servers, y bajo mis manos la orden @@version regresa el número 2039. Sql 2000 con los service pack instalados.

Que belleza !

Y ahora, sigue lo normal del producto de una mente, y de trabajo de una mente experimentada, sin interferencia de protocolos blasfemos, y teniendo las copias de seguridad iniciando por si solas, mientras el sistema de discos externos iomega de 160 gb, decretan por si solos el inicio y el fin de un nuevo día, como un moderno Dios.

Bienvenido SQL 2000 sp4, de regreso a mi vida: Ahora será bajo Php 5.3 y yo me encargaré de eliminar las vistas infames y crear de mis manos triggers y store procedures para en un futuro mandar SMS por nextel
cuando algo pase a los SCADA, haciendo portable con mysql y Oracle, mientras que los fines de semana estaré viendo el producto en mi mesa llena, con productos que ayudé a crear, alimentandome nuevamente , de manera plena, con el producto de una mente, pero ahora al servicio de una
PYME propia, y no como años atrás, bajo el comando de topologías
infames !

Un correo que mandé hace unos años

Envié este correo hace unos años en otra empresa al tomar posesión de mi puesto de jefe de desarrollo. Tiene varias ideas, que es justo lo que falta aquí aunque no funciona en los ambientes empresariales viciados.

Notese que permite scrum y continuidad de negocio.
=======================================
Para poder comunicarme de manera rápida con las personas de desarrollo,
elaboré un mecanismo que me permite fijartes tareas diarias, y que reporten tener terminadas las tareas, además de concentrar informacion util y clasificarla.

Despues de pensarlo un poco, encontré que la mejor manera de llevar a la
vez un control de documentos / control de versiones / knowledge Base, era
implementar un Repositorio mediante un foro gratuito, que usuarios externos no pueden ver.

Ya se esta parametrizando la información, y necesitaba hacer esto como paso previo para poder poner en la knwoledge base la documentación tecnica del proyecto. Los niveles de visibilidad no estan funcionando todavia ( voy en proceso ), pero la idea basica es usar un subforo como si fuera un gabinete y asi las intrucciones especificas a programadores se guardan en su propio gabinete. Ademas no tienen derecho a editar, por lo cual la implementación es segura y podemos funcionar inclusive en caso de incendio, robo o algo que nos deje sin equipos de computo. La continuidad del proyecto estaría asegurada.

De manera temporal he implementado el repositorio en base a usuarios que
son las INICIALES de cada persona, y solo los usuarios pueden ver el contenido.

Le he reservado la clave de usuario:
admin
password *************

http://*********/foros/

Creo que sería conveniente darlo de alta a usted como usuario ( igual con
iniciales y le ponemos nivel de administrador), por si quiere añadir o
consultar datos de las labores que se estan desempeñando. El alta de usuario se maneja en http://*************

Me tomé la libertad de añadir a **** al repositorio, y así ella misma
podrá ver el cumplimiento de obejtivos, el trabajo realizado diariamente e
información en general que pueda serle util.

aclaraciones:

1 ) Este es un trabajo en formación:
2 ) Estoy en proceso de realizar la documentación tecnica sobre alcances.
3 ) Instalaré Skype mañana jueves.

En espera de sus comentarios y sugerencias.
Gracias.

FireWall , wireshark y VPN

En el corporativo donde estoy tengo de manera terrible problemas con el servidor principal con sus docenas de conexiones ftp simultáneas. he notado algo raro también con la redirección de puertos.

El problema radica en que además que nuestras conexiones de internet son inestables, no puedo hacer pruebas en el server de la empresa porque las pruebas muestran problemas, y no hay forma de saber si son o no son por el uso excesivo de cpu del server. Pasa de 5 el load promedio aleatorio si alguien usó el sistema de tickets propietario, que no hice yo.

Asi que creo que lo mas sensato es hacer la prueba en uno de mis propios servidores, configurar lfd en ambos servidores para bloquear las direcciones ip de las dos conexiones de internet (aunque son variables duran un buen rato) y habilitar en mi server mas libre uno de mis dominios con una orden para dar die si no es la dirección de mi propia VPN.

Sigue el problema de bajo rendimiento de la red pero es la unica forma que se me ocurre de probar esto en horas de trabajo, después de todo es para la empresa.

6824 artículos

Hace unos minutos habló el cliente que tiene miles de artículos en un sistema para 200, quejàndose de lentitud del server.

Oh surprise.

Se tarda 17 segundos en el listado de artículos (que incluye la capacidad de editar).

Solo que el sistema tiene de parte de el 6824 artículos.

No los 200-400 para los que el sistema está diseñado.

Los de ventas la regaron al permitirle ese uso; por lo menos se le va a cobrar la adecuación para usar el método alterno, pero es un cliente de 1800 al año y la adecuación anda en unos 12 a 30 mil si conozco al corporativo. Yo puedo hacerlo en menos de 8 horas, asi que el costo no llega a 3 mil pesos.

Mientras el cliente sufre.

Update:
A mediados de diciembre se les hizo una pantalla de alta rápida de artículos. Ya van , a mediados de enero, en 9800 artículos, tardan 35 segundos en cada alta de artículos. Esto les va a estallar, porque meter artículos a lo idiota, indica que no tienen nomenclatura. No pueden esperar que un sistema de cambios de precios diarios maneje cinco facturas de diferente precio el mismo día y siga teniendo integridad referencial cuando en las especificaciones se habla de 200 artículos y un precio por día.

El problema de los archivos propietarios elevados al cubo

Hace años nos quejábamos si nos mandaban un correo con una versión rara de office.

Uno de los requisitos que pongo a los clientes del corporativo es que me envien un archivo XML de ejemplo , para agilizar el proceso de lo que quieren hacer. Ocasionalmnte me mandan un XSD del que genero un ejemplo con el lenguaje o plataforma .net

Oh surprise.

Hoy me mandaron un DOC realizado en quien sabe que versión de office. Ese documento de word contiene un objeto embebido (bueno, varios) pero el que necesito No lo lee ninguna de las tres pc disponibles.

Ninguna de tres versiones funciona.

Solución:

1 ) Guardar el doc.
2 ) Desde Cmd ponerle extensión ZIP
3 ) descomprimirlo.
4 ) Tomar del subdirectorio el archivo XSD

Funciona porque:

Muchos formatos de doc recientes son realmente archivos zip.

Que estupidez !

Barcos sin brújula

Historia larga pero parecida a cuestiones del presente.

Hace unos años me encargaron un proyecto específico por nómina de tiempo determinado (menos de dos años) que debía correr en mysql y en MSSQL por lo menos. Se hicieron una serie de documentos al respecto; el documento 3 era la transcripción de una serie de preguntas que hice, alrededor de 25, sobre unos puntos finos de negocio. Las preguntas eran breves, concisas y el cuestionario lo hice revisando con un conocido que es experto en ese giro de negocio.

El que era mi jefe inmediato y director de esa empresa, me contestó todas las preguntas y como buen profesional lo puse por escrito y se lo mandé para su Visto Bueno. Tres meses después resultó que esas preguntas, tres o cuatro de ellas estaban muy mal contestadas, se había perdido un mes y medio de trabajo de dos personas en eso. Hizo berrinche, cambió el organigrama y me puso bajo las ordenes del área de desarrollo de ASP, solo que yo debía hacer este software en php.

Ok.

No me dieron datos de servidores de acceso (mssql y mysql), hice un memorandum, lo envie por correo a tres personas, y dije que de manera temporal iba a usar dos sitios mios, para hostear el proyecto y hacer las pruebas.

Hubo una junta especialmente ríspida. Va un antecedente.

Me acuerdo que el lunes y martes de esa semana me pusieron a explicarle al Gerente de Ventas (vendedor de unos 35 años) lo necesario para un sitio web (querían vender hospedaje web , y su idea era entre otras cosas que yo les ayudara a preparar los servidores ). Recuerdo que le expliqué a esta persona que un sitio web normalmente con acabados bien hechos (tipo ojosalerta.org y rojointenso.net ) normalmente el diseño se puede hacer en x costo, se configura un CMS , o se hace un diseño y logos en photoshop. Asi que cobrando por un año , incluyendo diseño, servicio del sistema que estabamos haciendo, podía venderse en unos 9000 sin mucho problema, mas nuestra licencia. (Es lo normal cuando manejas bases de datos de tienda online, otros casos hasta 3000 es muy buen precio en cuanto a la ganancia que deja si tus costos son marginales)

Su presupuesto que me mostró el miércoles, para una ferretería muy grande era de …. 35 mil pesos por el sitio. Esta persona metió en sus cálculos el precio de depreciación de mi pc, del becario que iba a hacer los logotipos, de la maquina del becario, de la gasolina de ver al cliente, de los sueldos promedio… Y no consideraba el precio real del hospedaje en server, que no teníamos.

Ese mismo día me dice:

Dice el jefe (el director de la empresa)que si mientras haces el sistema puedes enseñarle al becario X como se programa para que el haga el siguiente.

¿?

Le dije:

Si pero se multiplica el tiempo por 2. Esta persona me va a distraer y además tengo que verificar que sepa lo básico del lenguaje y de servidores, y el sistema de programación de Pair programming ( http://en.wikipedia.org/wiki/Pair_programming )necesita dos programadores de la misma capacidad, así que lo que puedo hacer es un poco de Extreme Programming (http://en.wikipedia.org/wiki/Extreme_programming), pero al mismo tiempo dar curso de parvulitos. De momento estoy usando RAD http://en.wikipedia.org/wiki/Rapid_application_development pero no puede trabajarse en RAD y enseñarse a la vez.

A final de cuentas Entre las preguntas de sitio y similares, hablé con el de ventas unas ocho horas.

El jueves presenté mi avance y el director de la empresa me empezó a reclamar por no haber avanzado las metas del mes. Le mostré que las metas a seis meses las había cumplido al segundo mes, y que las metas del año iban, A LOS TRES MESES, en un 60 %. Se enfureció cuando le expliqué que no podía mantener el ritmo de trabajo normal, si me ponían a enseñarle a alguien que no tenía experiencia (por entonces yo tenía unos 16 años de experiencia), y que evidentemente no iban a poder obtener la misma calidad, para que lo manejaran en sus tiempos.

Junta explosiva de berrinche por el sujeto

El viernes el director de ese corporativo (dedicado al ramo de seguros) me pidió moderar la junta semanal, del lunes, lo que implicaba hacer la minuta y orden del día. Esa junta era independiente de todo lo demás.

En la junta del lunes, el director del corporativo nos informó que iba a haber un cambio de jugada, y en pocas palabras, que no nos sintiéramos mal. Que una vez termináramos los objetivos del año , (que yo llevaba en un 60%) iba a haber un aumento de sueldo de 25%.

Se puso por escrito (parte de la minuta).

El cambio de jugada consistió en quitar de los objetivos del año varias cosas. Y en ese momento mi proyecto pasaba a estar 90%. Dijo claramente que no iban a haber cargas de trabajo de esos proyectos, y que el aumento se hacía en cuanto se acabara.

Hice la minuta, la pase a firma (firmaron mi jefe directo, el director de la empresa, contralora, etc); me puse a trabajar en el 10% restante, y el miércoles de la siguiente semana estaba terminado, probado, autorizado por el usuario final.

Dos semanas después dela junta que moderé, el usuario final llevaba una semana usando el sistema, habiéndome autorizado que el sistema cumplía lo necesario de las especificaciones; el documento de liberación iba con copia al director del corporativo.

Un jueves, para celebrar el cierre del proyecto me invita a comer mi jefe (no el director de la empresa ni del corporativo, sino el gerente de desarrollo), y supe lo que iba a pasar. Así que me preparé a pagar yo la comida (por lo que iba a pasar al dia siguiente segun yo), fuimos a comer a las cuatro de la tarde al bife del padrino que estaba cerca de plaza galerías. El se puso hasta atrás, pero antes pude hablar acerca del próximo proyecto. Recuerdo que me dijo que le gustaba mucho mi manera de trabajar, pero que el problema de el directivo de la empresa era que sus utilidades dependían de otra cosa, y que yo hiciera el proyecto en menos de cuatro meses cuando era de un año lo había puesto en ridículo, y considerando que al principio se había perdido un mes, era peor.

Pagué yo. Era poco después de las siete PM, y Recuerdo que fueron poco mas de 1400 (no llegaba ni al 10% de mi sueldo). El valet Parking llamó un taxi, lo pagué e hice que llevaran a mi jefe al trabajo (avisandoles por teléfono que iba para allá). Yo tomé mi coche y me fui a mi casa que me quedaba de camino.

Al dia Siguiente me llama el director de la empresa para decirme que me iban a descontar el día por haber salido a las cuatro. Le expliqué que mi jefe me invitó a comer, y que salimos a las siete. La situación se puso absurda. En esas llegó mi jefe (11 am) y aproveché para comentar que necesitaba los requerimientos del siguiente proyecto, y los datos para un servidor de Mysql y otro de MSSQL para pasar los datos del que acabamos de terminar. Les mostré en la laptop de mi propiedad las bases de datos jalando en local de mi pc de escritorio (que era de la empresa), y se las copié a un USB nuevo que abrí en ese momento.

El siguiente movimiento del director de la empresa fue pedirme que borrara la información de los programas y de las bases de datos de mis sitios. Lo hice en frente de el y de mi jefe inmediato. Con eso solo quedaban los datos de la base de datos, en la computadora local. La idea era que iban a respaldar los datos en un servidor externo.

El proyecto estaba terminado así que pedí el aumento de 25% que había dicho el director general. La respuesta fue que no me lo iban a dar porque el proyecto era por un año (¿?) y que querían que le enseñara a un becario a hacer un sistema, con el mismo sueldo (que eran como 18 mas prestaciones), en el mismo tiempo.

Claro que si yo quería tomar mi liquidación de tres meses de sueldo, el estaba encantado.

Asi que la tomé. Diez minutos después tenía mi cheque. Baje a cobrarlo y lo deposité en mi tarjeta de crédito del mismo banco. Por previsor siempre tengo todo preparado por continuidad de negocio.

Mi jefe inmediato avisó a todos que era mi ultimo día, y pidió unas pizzas de Papa Johns. El director de la empresa dijo que se seguía el procedimiento estandard.

Antes de irme, teniendo ya en mi poder (EN MI COCHE) los documentos de entrega firmados, llega el fierrero (un estudiante de UNITEC que estaba a cargo de las redes y demás) y me devuelve mi USB ya formateado. Y dijo muy contento:

Ya formatee la Máquina de escritorio también.

¿?

El procedimiento normal era formatear la pc de la persona. El no respaldó mi información de Words, Data Architects y excel, porque verificó los discos que quemé en la entrega junto con el código fuente. Y el pensaba que los datos estaban en otro servidor (de nuestro cliente, que afortunadamente era interno)

Asi que lo que hizo el técnico fue formatear mi maquina dos veces, y se perdieron TODOS los datos de casi tres meses de captura. Le instaló el sistema operativo encima. Y era Disco SATA, que no estaba soportado entonces por Norton.

El director de la empresa hizo berrinche mayúsculo, se puso morado, vio que no iban bases de datos en los discos de entrega y los aventó al piso. Mis proyectos los suelo entregar desde el 2002 mas o menos en discos de 210 mb ( http://www.amazon.com/Memorex-Pocket-Mini-Discs-50-Pack-Spindle/dp/B00005NHGP ), así que cuando los aventó al piso, los discos valieron madre.

Se perdió el código. No hay herramientas que recuperen archivos rar dañados de discos de 210 mb.

================================================================

Varios años después sigo monitoreando esa empresa. Apenas acaban de sacar una nueva versión del software que hice, ahora en ASPx via .net.

================================================================

En el corporativo en que estoy en que estoy estamos haciendo ajustes a un sistema de colegio de profesionistas hecho por un argentino sobre un proyecto a la medida mal diseñado y mal ejecutado. Ya expliqué que sale
mas caro dar mantenimiento a ese monstruo que hacer el sistema de ceros.

Ayer hubo una junta y el socio técnico, y el director de una de las empresas de aquí, fueron a proponerles que se hiciera un nuevo software. No hay presupuesto en el colegio, asi que me pidieron una serie de ajustes larguísimos que usarán una o dos semanas de mi tiempo, y estoy seguro que por lo menos pagan 30 mil. Con eso se podría hacer su sistema de ceros.

Me siento igual que cuando en aquella empresa hicieron un presupuesto de página web en 35 mil hace varios años.

Parser de JSON y pesadillas de código arbitrario.

Las dos ultimas semanas han estado saturadas de trabajo. Por lo general duermo muy poco pero esta semana dos ocasiones seguidas he dormido menos de lo común.

Por otra parte, he estado realizando un cliente de JSON y el universo de bases de datos es de un gb y medio actualizandose cada 20 minutos. Si me descarga la cabecera de código last modified, lo que me evita descargas de más.

Sigo probando ideas de servers al mismo tiempo. Y me acordé hace rato de algo , de una incomodidad fuerte en sueños allá por el domingo: Aunque pràcticamente no sueño, uno de esos días tuve una pesadilla de código arbitrario bajo el JSON.

Digo pesadilla para referirme a un sueño sin lógica, sin fin constructivo, e incluso a media depuración en sueños, yo pensaba: Se que esto es un sueño porque el cliente ya me regresa bien el header de last modify, asi que no entiendo que me quiere decir mi mente al comentarme del código arbitrario. Si mi parser no ejecuta objetos y convierte como paso previo a un array que no puede ejecutar por definición, ergo, este no es una pesadilla de código arbitrario sino un sueño estúpido.

Asi que me desperté. En ocasiones he soñado con código fuente y formas de mejorarlo, pero nunca me imaginé que fuera posible una pesadilla de código arbitrario bajo JSON.

Lo bueno de conocer las reglas del RFC y hacer tu propio parser, te hace inmune a ataques de idiotas con mucho tiempo libre.