Algo que ocurre con relativa frequencia, en especial con los desarrolladores, diseñadores & demás profesionales en sistemas es la necesidad de compartir una carpeta de recursos comunes entre múltiples proyectos.
La mayoria simplemente copiaria la carpeta a la nueva ubicación, con la desventaja que se duplican los archivos y se duplica la ocupación en el disco duro.
En los sistemas operativos basados en UNIX existe el comando ls que crea links simbólicos a las capetas, o sea, permite crear un espejo de la carpeta.
Windows desde hace rato tiene esa funcionalidad pero no es muy conocida. La forma más sencilla de utilizarla es descargando la utilidad Junction y copiando el archivo junction.exe en la carpeta WindowsSystem32.
A partir de allí, es muy fácil de usar, usando la sintaxis de junction *ESPEJO* **REAL**. Por ejemplo:
junction c:\Espejo c:\Windows
Lo que hay que tener en cuenta, es que TODO lo que hagas en el directorio ESPEJO ocurrira en el real.
0 comments | 0 pingbacks | tags: windows
El malabarista es reseller oficial de RemObjects
Durante mucho años he sido fan de los productos de RemObjects, tal como se ve en uno de los primeros post que hice.
Luego de una charla interesante con Marc Hoffman termine convirtiendome en reseller de toda la línea de productos de RemObjects.
Ahora bien, resulta que no soy un vendedor o comercializador, sino un desarrollador puro & duro, asi que al principio casi me da un shock la idea….
Pero luego de pensarlo veo que es una progresión natural. Y que puedo brindar la ventaja de realmente usar los productos en la vida real, aunado a más de 10 años de experiencia en proyectos de desarrollo multi-nivel, multi-base de datos e internet.
Por lo pronto, estoy armando la documentación en español antes de poder aceptar pedidos o de empezar a vender — de hecho, me pareceria criminal vender un producto sin documentación! -.
También estoy desempolvando mis habilidades con el mismo, ya que por razones de trabajo llevaba casi 2 años sin usarlo en serio — durante ese tiempo me pidieron actualizar unos programas a .NET — pero con agradable sorpresa veo que no ha cambiado mucho y que de hecho varias cosas, aunque pequeñas, se han simplificado o mejorado.
Estoy creando un programa para mi empresa que sera multiplataforma, tanto en Windows como en Mac OS X y posiblemente en Linux también. Asi que en la medida que tenga la plena confianza de lo que estoy usando ire compartiendo la información.
La documentación no sera una simple traducción al español de la ya muy completa información existente el sitio Web de RemObjects, sino una adaptación al mercado latino y al tipo de proyectos típicos que creamos al sur del planeta.
Si tienen alguna sugerencia de lo que les gustaria ver, solo pinchen comenten!.
0 comments | 0 pingbacks | tags: delphi, remobjects
Soporte para Sql Server en Django
Ultimamente he estado usando django como framework para crear sitios Web y servir como interface de usuarios para los servidores que desarrollo en Delphi y .NET.
Sin embargo, django no soporta Sql Server, que es una base de datos muy usada por muchas empresas en Colombia, asi que estoy creandole el soporte para que django funcione con Sql Server.
Pueden ver los patch en http://code.djangoproject.com/ticket/5062.
Este es a la fecha el mayor aporte a un proyecto open source, aparte de los que he hecho a MUTIS y TodoAki
.P.D. Incluso me mencionaron el el weblog de django (para el observador cuidadoso, mamcx soy yo ;))
0 comments | 0 pingbacks | tags: django, python, sql server
Creando un sitio web para una micro-isv
Durante más de 10 años trabaje como una clase de mercenario para varias empresas de desarrollo de la ciudad, ayudándolos generalmente a pasar sus aplicaciones de tecnologías anteriores a nuevas (por ejemplo, de programas en DOS a Windows, de arquitectura monolítica a multi-nivel, de Visual Basic a .NET, etc.).
Pero a partir de este año empecé en firme con mi propia empresa, El malabarista. Con la experiencia que había acumulado de antes ya sabía que iba ser un poco más difícil de lo que normalmente uno se imagina, ya que no solo me tendría que preocupar por el desarrollo de programas de computadora sino también de todos los demás aspectos de crear una empresa. Asi que en términos generales hay que preocuparse por:
- Como hacer negocios & ser un empresario.
- Contratar, sub-contratar o arrendar servicios.
- Establecer la infraestructura de trabajo (computadores, espacio de trabajo, herramientas de software, etc.).
- Imagen de la empresa, logos, logotipos, fuentes, mensaje a comunicar.
- Desarrollar el software.
- Mejorar la calidad del software, hacerlo viable comercialmente.
- Manejar el dinero, como cobrarlo, como recibirlo & como gastarlo.
- Estar pendiente de los aspectos legales.
- Hacer parte de redes de empresarios afines, crear alianzas comerciales, hacer parte de la industria.
- Dar a conocer el producto o los servicios.
- Estar a la altura de los avances & devenires de la tecnología.
Como ven, hacer el software es solo una parte de todo el esfuerzo.
Y todo eso, mientras se lucha por no perder la concentración con tanta información que hay alrededor, como chats, sitios web interesantes, foros de internet, el pregonero del barrio vendiendo canasta de huevos a $7.000… y de paso no perder la cabeza, ni la familia, ni el entender que el trabajo no es lo más importante en la vida.
Así que para tener una empresa hay que tener un plan, capacitarse & trabajar duro. Pero a la vez es un esfuerzo gratificante ver cómo va cobrando forma tu pequeña empresa.
Tiene vida, tiene alma. No es estar encasillado en un cubículo gris con la sensación de no hacer nada, de no alcanzar el máximo potencial o ver cortada las alas. Hay que sudar más pero hay más satisfacción. Nadie puede echarte de tu trabajo, y aunque pueden pasar semanas sin un peso en el bolsillo, no está el estrés ni el temor del “despido”.
Luego de un tiempo fuera del aire, ya por fin he terminado de actualizar el conjunto de mis sitios web.
Durante mucho tiempo utilice los servicios de http://www.blogger.com/ para publicar mi blog — desde cuando el servicio salió por primera vez – pero llego el punto en el cual se hizo imperativo tener una visión unificada de todo lo que hago.
Así que me propuse crear un sitio web a la medida de una micro-isv. Este lo desarrolle en django luego de haber evaluado muchas opciones, plataformas & lenguajes durante más de 6 meses!
No falta decir que las alternativas me resultaban o insuficientes, o mucho trabajo de mantenimiento. Además, como desarrollador, se tiene una cierta tendencia a tener todo bajo control y lo más fácil en controlar lo que haces con tus propias manos.
Este sitio y este blog no están terminados. Pero con orgullo:
- Tiene un manejo decente de la tipografía.
- Diseñado bajo los estándares de CSS/XHTML
- Es muy fácil de administrar, gracias al sistema incluido en django para tal fin.
- Puedo administrar la información de mis productos de forma sencilla. Una tienda electrónica es demasiado para una pequeña empresa de software que a lo sumo maneja 10 productos en total.
- Tiene un módulo de documentación, debidamente licenciado con Creative commons para compartir la información.
- Ahora los ejemplos de código se colorean con http://pygments.org/ para mayor claridad.
- Todo el contenido se escribe usando markdown.
- Y otra cantidad de pequeños datos técnicos que son irrelevantes para el mundo exterior pero que hacen parte del por qué sentirse orgulloso por lo que haces.
Hay más que hace falta, como la integración con pagos en línea, terminar de escribir la documentación, inventar un mejor logo & mejorar la gráfica – me gusta pensar que el sitio está en obra negra – y más.
Pero eso hace parte de lo que implica tener realmente un sitio web. Es un trabajo continuo de mejoras & refinamiento.
0 comments | 0 pingbacks | tags: django, opinion
Le ayude a mi hermano a completar la evaluación de una estación de trabajo Sun Ultra M4, pueden ver los resultados en http://melkao.wordpress.com/.Si, es un sueño trabajar en un juguete de esos ;).
0 comments | 0 pingbacks | tags: sun
Muchos creen que el mundo de software es solamente complicado por su código, ese montón de 0 y 1 o esa cantidad de líneas en un lenguaje de programación concreto.
Luego, a la hora de implementar o usar el software se descubre que es complicado por su uso, porque falla, porque no instala, porque se vuelve obsoleto, porque llueve y porque hace sol también.
Pero no termina allí. Es notoria la confusión en cuanto al licenciamiento, uso y distribución del software.
Por lo general se tiene la mentalidad de que:
Todo software comercial es costoso, monopolista y cerrado
y
Todo software “open source” es abierto, gratis y libre
Al igual que un programa típico esta compuesto de diferentes partes, la parte económica y social del mismo también. Suponiendo un software que se va a distribuir, por cualquier razón, un programa completo consta de:
Un(os) autor(es)
Bueno, todo código al final tiene uno o varios autores, quienes diseñan y programan el sistema. Por defecto, todo el material del programa le(s) pertenece(n) exclusivamente por la leyes internacionales de derechos de autor, a menos que de alguna manera hayan dado un paso al respecto.
Código fuente
Todo programa requiere código fuente, las instrucciones que se escriben en un mas-o-menos-comprensible-para-humanos lenguaje de computador. Este es el indispensable para poder corregir y mejorar el programa.
Código compilado
Otro programa se encarga de “compilar” o convertir ese código fuente en un sistema binario que pueda ser ejecutado por la máquina.
Archivos anexos
Como pueden ser los archivos de ayuda, imagenes y demás.
Licencia
El cual es el contrato de uso del programa.
Si un programa no tiene una licencia explicita, es difícil saber que hacer al respecto (como no soy abogado, no tengo idea, y la idea que tengo, me la guardo para que luego no me llame de la carcel alguien quejandose de mi consejo).
Por eso, si Ud. es un desarrollador y no especifica una licencia, por favor hagalo.
Una licencia ES UN CONTRATO. Es por eso que es tan complicado como cualquier otro contrato, y para muchos, incomprensible. Como muchos contratos, pocos lo leen y menos lo entienden, pero como también muchos atestiguaran, puede volverse en contra y patearnos en el hígado.
Por eso, es indispensable buscar asesoría legal al respecto. ¿La razón? Los abogados saben de problemas legales, incluso problemas que uno como programador o usuario NI SE IMAGINA.
Como desarrollador, AUN SI SE ELIGE UNA LICENCIA OPEN SOURCE, es una señal de responsabilidad revisar el mismo por un abogado, en especial si el software o sitio web o lo que sea va a tener distribución significativa o va a ser usado bajo serias condiciones (por ejemplo, al manejar dinero). ¿La razón? Las leyes varían de país en país y además — y es posible que las cláusulas de una licencia copiada de internet sean ILEGALES en el país.
¿Cuales? No se. Yo no soy abogado, ningún desarrollador sin experiencia legal esta capacitado para saber en que rayos se esta metiendo, de igual manera que un abogado sin experiencia en desarrollo podrá entender porque solo hay 10 tipos de personas en este mundo: Los que entienden binario y los que no (-i.e. si quedo en blanco es un chiste de programadores-).
Sistema de distribución
O sea, como se hace llegar al usuario final. Puede ser copiando archivos, imprimiendo el código en papel, descargando de un sitio, obteniendo el archivo binario, o el código fuente.
Al final se reduce en el “open source” que contrario a la creencia popular, nada tiene que ver con hippies que promulgan la libertad y el anti-monopolio, ni mucho menos significa “gratis”.
“Open source” significa “Código abierto” o sea, que se distribuye el programa en sus archivos fuentes para su posterior compilación, que es algo útil en manos de un programador y puede-que-si-o-no útil para el resto de la gente.
Y esta el “binary” (o: “código binario”) que no significa, como muchos creen, que las libertades de la gente estan negadas, que es monopolista y demás chorradas.
Solo quiere decir que el código esta “cerrado” porque el software esta compilado en archivos binarios, y por lo tanto a menos que seas un operador de la matrix, no entenderás todos esos caracteres raros.
Es por eso que al final todos los programas “open source” se transforman en “binary” de forma natural. SIN LA LICENCIA, no se puede presumir absolutamente nada acerca de lo que “open” y “closed” significa.
Un modelo económico
Entiendase por el mismo, como el mecanismo de integración al mundo real.
Puede ser por medio de pagar el diseño, el desarrollo, la entrega, la distribución, la capacitación, o puede ser pagando por todo o por ninguno de los anteriores (en economía, sea como sea, se “paga” el tiempo en emplear algo, en saber usarlo, en costos indirectos como la luz y el agua, etc… por eso es que no hay nada absolutamente gratuito).
Puede que haya una motivación intelectual, espiritual, monetaria, o similar, o todo junto u otras. El modelo económico no esta directamente ligado al software. Es por eso que hay software “cerrado” o “closed” que sale más barato que el “abierto” y al revés también.
Al final, el dueño del software debe mezclar todos los elementos para traducir un aburrido programa de computador en un producto, o sea, en algo que se puede usar, entender, distribuir y desechar. Asi que al final, es importante de parte y parte entender cuales son las motivaciones ecónomicas del programa y bajo que contrato (licencia) se da derecho al uso del mismo.
O puede que darle “siguiente siguiente” sirva también hasta que llegue la policia ;).
0 comments | 0 pingbacks | tags: delphi, open source, programacion, software
Grupo de usuarios Delphi/Afines Medellín / Colombia
Ya es hora de que los programadores de Delphi / Pascal / C# / C++ y afines usando tecnologia de Borland tengamos apoyo en Medellín.
Estoy armando un grupo de usuarios. Más info: http://www.clubdelphi.com/foros/showthread.php?p=160321#post160321.
0 comments | 0 pingbacks | tags: delphi, programacion
Ya se público mi segundo artículo: Programando al programador en el sitio de desarrolladores de CodeGear.
Trata sobre lo que es minimamente necesario para trabajar de forma organizada.
0 comments | 0 pingbacks | tags: delphi, programacion
Se publico mi primer artículo en CDN (CodeGear Developer Network) : Codificar para el cambio.
Es algo que escribi hace dos años, cuando era mas joven pero igual de feo. Espero les guste!.
0 comments | 0 pingbacks | tags: delphi, programacion
Jugo de naranja, sabor artificial
La vida se supone, deberia ser sencilla.
Por ejemplo… programar. Eso es sencillo!… si ya se que a muchas personas les parece que lo que tiene que ver con computadores es taaannn esoterico! es mágico! es de “genios”! Son nerds! Wooaaa!
Por ejemplo, la inteligencia artificial. ¿Que es la inteligencia artificial? Preguntale a un ser humano de verdad y veras que va a suponer que es que los computadores son inteligentes (imaginate!).
¿Un ejemplo? A varios amigos mios les parece que el muñequito bailarin de Office (paperclip) es algo asi, al fin y al cabo, ¿cómo supo que queria escribir una carta?
No pierdas tu tiempo buscando en Wikipedia o Google la respuesta, porque entonces no eres tan inteligente despues de todo…La inteligencia artificial, realmente, es marketing nerd.
Ya que los demás piensan que somos genios, pues demosle gusto. Asi que llamamos a nuestros programas inteligentes… que es tan falso que cuando afirmamos que nuestros programas son fáciles de usar y requieren poco o ningún entrenamiento o que son seguros, pero eso no se lo aseguro.
Lo que pasa es que el transeunte casual no sabe que Inteligencia Artificial no significa “Algo artificial, que es inteligente” sino “Algo que sabe o parece ARTIFICIALMENTE inteligente”, o sea, como el jugo de naranja con sabor artificial que:
- No sabe realmente a naranja
- No se siente como una naranja
- No huele como una naranja
- No alimenta como una naranja
- Si le hechas sal, no sabe tan rico como la naranja de verdad con sal y lo más importante, no tiene pepitas de naranja. Es importante porque esas pepitas permiten a los más osados plantar su propio arbol de naranja y asi dejar de ir al supermercado.
Sin embargo, los jugos de sabor artificial son un exito comercial, a pesar que DEFINITIVAMENTE no se parecen a los sabores que afirman ser y no brindan los mismos beneficios.
Igualmente, la IA es exitosa, asi sea en las peliculas, no importa que al fin de cuentas son solo formas ingeniosas de emplear matematicas avanzadas y uno que otro truco de magia aqui y alla.
Marketing nerd. Despues de todo, hay nerds que si saben de marketing. Increible!
Verdad que hablaba de la vida sencilla. Programar… eso es sencillo!.
Por ejemplo, me pusieron hace unos años a hacer un sistema de contable que soporta los movimientos de entidades públicas (como alcaldia/municipios, contralorias y esas cosas).
Me quedo bien. Funciona bien. Ahora, por ejemplo preguntenme cuanto se de contabilidad pública…NADA.
¿Conclusión? Programar es tan sencillo que es posible hacer una cosa que mueve millones y millones de pesos sin tener idea de que es lo que teoricamente debe hacer. Da miedo, ¿verdad?.
Lo que me lleva a que la vida debería de ser sencilla. Programar… eso es sencillo!A proposito de la ignorancia mía con respecto a lo contable, no se como llevar un presupuesto… o si? No estoy seguro, pero mejor me aseguro y contrato alguien que lo haga.
Estar pendiente de las cosas rutinarias de la vida como cuando hay que pagar impuestos (en serio, hay que pagarlos) es dificil… programar es sencillo!
De vuelta al jugo con sabor artificial… de naranja, por supuesto. Un supuesto que tengo es que la vida deberia ser sencilla y programar… eso es sencillo!
Pero que va, al igual que con el jugo de naranja, solo es un sabor artificial. La vida no es tan sencilla. Y no soy un genio, aunque lo cree mi mama. De hecho, con excepción de este tema, siempre parece que soy más inteligente por lo que puedo escribir que cuando se me conoce de persona.
Es que yo tambien.. se de marketing de nerds ;) Que a proposito, es como los magos: Mira la bolita, mira la bolita.. pufff!!! desparecio (aplausos) (magico, dicen unos, manos rápidas dice el mago).
Marketing nerd, que era el punto que se me acaba de ocurrir de esta incoherencia, que a proposito, se suponia que escribiria sobre otra cosa ;).
