Hogar Mapa Indice Busqueda Noticias Arca Enlaces Sobre LF
[Top bar]
[Bottom bar]
This is the author after being exposure to Linux
por Juan Pablo Rosas Duran

Sobre el autor:

Currently system manager for "Optica LUX" in Mexico. He has been involved with computers since the age of three, when he played with piles of "tarjetas perforadas" in his fathers work and used Gamma10 manuals as sketch books. His professional experiences with Linux transformed him completely and since them he tries to apply open source solutions (with some success) every where.
At present he promotes an initiative for the development of GPLed applications for bussinesses: http://www.pochtecah.org/.
He thanks LinuxFocus the chance for sharing his Linux experiences and open source software.


Experiences developing tools to support a chain of optics shops.

Tux con gafas


This article dicusses how a medium size company focused on the development and production of glasses has used Linux and open source software to improve its customer support.


About Óptica LUX.

Óptica LUX is a company devoted to the development and production of comercial sun and prescription glasses. March 2000 will be the 58th anniversary of this company, and in the last eight years it has seen its number of retail stores doubled. At present time it has a total of 40 retail stores.

From its beginnings Óptica LUX has promoted a policy of satisfaction warrantied for its customers, and this requires the greatest amount of knowledge of its customer basis, needs and current design preferences.

It is estimated that by the end of 1999, Óptica LUX had information about hundreds of customers, most of this information regarding general statistics and optometric data where recorded in old paper notecards. All this information in its present form is of very limited use.

Our problem consisted on finding a solution to manage this information in order to improve our customer service without introducing any delays in the service provided and its quality and at no additional cost to the end product.


Typical activities in an Optics business

Before starting it is fundamental to understand the geenral steps a typical customer of Óptica LUX follows in order to understand the requirements for the application described later on. When a client first arrives to a store:

  1. General information about the client are taken and stored: name, address and email.

  2. The client is examined by an optometrist who performs various tests and measurements, among them the lens measurements, refraction, "queratometría" and measurement of the "agudeza visual".

  3. Based on the previous tests the client is advised on the technologies available to solve his/hers vision problem.

  4. The client selects the technology and the frame desired.

  5. The client gives a partial or full downpayment for the work, and this is forwarded to the lab for its prompt production and delivery.

To our case study of how a typical client is serviced in a retailer store we must add the following considerations in order to put things in context before writing an application:

The above analysis makes it clear that the tool needed to support our customers must be quite unique and especialized.


Unsucessfull searches.

From 19990 we have studied and tested various propertary systems specialized for optics retail stores, but none of them really satisfy all of the requirements described above. Adopting any of these commerical solutions would have required to alter significantly the way Óptica LUX interacts with its customers and manages its information, it would have also meant to pay twice as much the software value in order to pay for the modifications required. Proprietary software has the added disadvantage of making us dependent on a third party software provider.

Back in 1995 we considered for the first time to develop an in-house solution custom made for Óptica LUX needs. However when estimating the costs for licensing the platform and tools (SCO Unix and Informix), it turned out equivalent to that of openning a new retailer store! including installation, optometrics equipment and merchandise!!

It was then decided we would try to look for a viable solution that wouldn't require a huge investment in licenses. The platforms that most called our attention where coherent, qnx y Linux.

We attempted to contact coherent, but by then they ceased to exist.

Qnx had an office in Mexico (in the city of Monterrey N.L.). However their responses where limited to simply sending is brochures advertisement and the time


Discovering Linux

We learned about Linux thanks to an article entitle ``Linux una propuesta indecorosa'', written by Fernando Magariños (better known in the mailing groups as ``Mancha de la Calabaza que ladra''). We sent him an email which was replied by Miguel de Icaza himself (I doubt he remembers it now). He gave us his point of view, what reinforced even more our interest towards Linux.

At first Linux became interesting to us mainly as a ``Royalty free'' platform. However its underlying principles, its dynamism and the spirit of its community became also very important factors.

The technical support we get for Linux through mailing lists is far more effective that its commericial counterparts. Linux is a stable platform which is constantly getting better and it has a wide range of applications available.

Another factor is that the information about Linux and freee software is much more accesible than their proprietary counterpart, it is then very easy to get self-educated in the usage of Linux or its tools.

At present time Linux is being used not only in Óptica LUX no only in its retail stores but also in the main executive offices, particularly in the server side to share files and printers and to store data and execute applications developed for other UNIX machines.

We use Linux also to support the basic comminucations infrastructure in the company, like a PPP server, a web server,email and ftp (our small ``intranet''), and also for the control and fragmentation of the network traffic.

Lately we have started to use Linux as a desktop platform for end users, but this is a story for another time :-).


First Mistakes in Adopting Linux

Every beginning is difficult, and the critical step in the case of Óptica LUX was to convince the executive management not so much of the technical superiority of Linux as a platform but of making them conscious that the costs associated with developing a new system, specially one highly specialized, are very high and it is not a very fast process.

We had 7 companies or groups submitting proposals for developing a solution based on Linux, but their bids far overpassed the expense of the proprietary solutions discussed above.

Next we tried to recruit developers to create an in-house system. Unfortunately, there are still very few people really adept for this platform, and those who are available cost (as it is understandable) well above the average market price.

Today it is accepted that the development of open source based solutions can be more expensive that proprietary software, but the results are more satisfactory. In any way, the savings in licensing costs can be used to pay for the required development costs of applications.


Development Process

In the mid 1999 we hired a consulting group to develop a tool to process our clients based on Linux and the GNU software.

The development was taken in a series of incremental steps. A first analysis of the problem gave us:

  1. A detailed design of the database

  2. Usecases for our application

  3. User Interfaces

Based on this first analysis the group developed a first prototype, which was then tested by our expert optometrist. The users provided some interesting feedback that lead to modification in the requirements and a second prototype. We follow several cycles of refinement until arriving to a satisfactory product.

The features of the tools used in the development allowed us to speed up the development process, reusing and perfecting the components of the application.

The tools used can be classified in two groups: those used during analysis, design and documentation and those used during the development of the application.


Analysis, Design and Documentation Tools

Xfig  http://www.xfig.org/
Tool for drawing general diagrams
Dia  http://www.lysator.liu.se/~alla/dia
Tool for drawing UML diagrams
VisualTCL  http://www.neuron.com/stewart/vtcl
UI Prototyping tool
LYX  http://www.lyx.org/
Word processor used to write the especifications of the DB system
StarOffice  http://www.sun.com/staroffice
Word processor used writing user manual.

Development Tools

PostgreSQL  http://www.postgresql.org/
Database engine. Selected for its flexibility, power and its capability to manage large volumen of data.
Perl  http://www.perl.com/
Language base for the development of the application. Selected for its power, expressiveness and ease to learn for any relatively educated user.
 Tk  Modulehttp://www.cpan.org/modules/by_module/Tk/tk_modlist.html
PERL functions for UI development. pTk is easy to program and offers a wide range of widgets.
 DBI  Modulehttp://www.fugue.com/dbi
PERL Functions for the management of SQL databases. High level functions that save great amount of development time.
 DBD::Pg  Modulehttp://www.bawue.de/~mergl/mergl_DBD_Pg.html
A specific DBI driver for postgreSQL.
Emacs  http://www.emacs.org/
Development Environment used for writing, testing and debugging our applications.
CVS  http://www.gnu.org/software/cvs/cvs.html
Archival system use to maintain the code, prototypes and subprototypes. Much of the tracking effort of various revisions of the application would have been impossible without it.

Finally Our Application

It is difficult to described briefly such a highly specialized and dense tool. The script that creates the database has more than 1000 lines of SQL code, and the application itself about 15,000 lines of PERL. Therefore we will only mention the most relevant features.


The user interface

The most important feature of this application is the user interface. To facilitate the usability of the interface it was decided to design a very simple and flat interface, the expert optometrist may feel confortable and familiar given his experiences with other optics equipment.

The various elements in the interface are group in tabs following the methaphore of a notebook (see following figure). The graphical interface does not require the user to use the mouse to input the data. There are hot keys conviniently located to access every tab in the GUI.

The tabs in the application are as follows:

General data
contains name of the client, address and email.
Initial prescription
information regarding the initial prescription the customer used when coming to the retail store for the first time.
consigna datos sobre las molestias ópticas, estado de salud, actividades del cliente y todo lo que es necesario saber para ubicar su problemática en cuanto a visión se refiere.
donde se captan los resultados de las revisiones y mediciones ópticas de los clientes.
Lentes de contacto
el cual constituye todo un módulo dentro de la aplicación, y en donde en una serie de subpestañas se realizan una serie de cálculos necesarios para determinar el mejor lente de contacto para cada persona.
contiene la especificación final del anteojo, u orden de trabajo que se ha de remitir a la fábrica para su elaboración.
donde se consultan los exámenes y ventas anteriores que se le han efectuado al cliente.
conexión con el módulo de ventas donde se elabora la factura y se realiza el cobro de anticipos y liquidaciones de las órdenes de trabajo de cada cliente.

A continuación se expondrán los aspectos más importantes relacionados con estos grupos de información.

Datos Generales.

Lo que se destaca en esta pestaña es la facilidad con la que se pueden buscar y encontrar datos. Por ejemplo, se puede introducir parte del nombre de la colonia, seleccionar un estado de la lista e inmediatamente la aplicación proveerá de una lista con los códigos postales (C.P.) que cumplan con esas dos condiciones.

En lugar de colonia pudo haberse seleccionado Delegación/Municipio, o ambas, en cuyo caso el sistema habría provisto una lista más específica.

En la base de datos se encuentran cargados todos los códigos postales, colonias, delegaciones y municipios del país en una tabla de más de 60,000 renglones. En las búsquedas más largas la aplicación no tarda más de 3 segundos en elaborar y presentar una lista de los códigos postales.

Tales facilidades de búsqueda se extienden a lo largo de toda la aplicación. Si el usuario desea encontrar a una persona llamada ``Juan'', pero no recuerda si su Apellido es ``Pérez'' o ``Penas'', entonces escribirá ``Pe'' en el Apellido Paterno y ``Juan'' en el Nombre, oprimirá el botón ``Buscar'' (o mejor aún oprimirá la combinación de teclas Ctrl-B). El sistema le presentará una lista con todos los clientes de la base de datos que cumplan con las condiciones solicitadas.

Clientes en proceso.

En cualquier parte de la aplicación, se puede oprimir la combinación de teclas Ctrl-A, con las cuales se presenta una ventana con los clientes que se están atendiendo en ese preciso momento, permitiéndose identificarlos por su nombre y pudiendo acceder inmediatamente a cualquiera de sus datos.


Esta es una de las pestañas que más trabajo causó a los programadores, porque implicó efectuar modificaciones al código fuente de los widgets de pTk, en particular el frame de ``Revisiones de Medios Externos y Transparentes''.

En dicho frame el usuario puede seleccionar cualquiera de las revisiones que se ponen a su disposición, apareciendo a su lado derecho otra lista con las anomalías que se pueden dar, tanto en el ojo derecho como en el izquierdo, para tal revisión.

Cuando el optométrista activa el ``check button'' automáticamente aparece una cruz al lado derecho de la etiqueta de la revisión que seleccionó previamente. (¿Alguien sabe si tal cosa se puede programar fácilmente, digamos en VB?).


En la pestaña de Examen se realizan una serie de validaciones un poco complejas. Cuando el optometrista anota las lecturas que arrojan cada uno de los instrumentos y toma la decisión de la graduación que ha de prescribir al cliente, entonces el sistema valida las correlaciones que hay entre todos los datos y avisa al usuario si existe alguna condición errónea.

Lentes de contacto.

¡Esta es la joya de la aplicación!, es la parte del código que más discusiones y esfuerzos costó al equipo de desarrollo. Cuando una persona usa lentes de contacto no se imagina la maravilla tecnológica que tiene puesta en sus ojos.

Los lentes de contacto son como los zapatos. Así como no hay dos pares de pies iguales en todo el mundo, tampoco hay dos pares de ojos con idénticos padecimientos visuales.

La aplicación está diseñada para ayudar al optometrista a determinar el tipo de lente de contacto más viable para cada cliente. No es posible que la aplicación determine (o ``recete'') una graduación de manera automática, ya que hay varias condicionantes ``no medibles'' que se han de tomar en cuenta (como las asentadas en la pestaña de antecedentes). Sin embargo puede servir como herramienta para evaluar el impacto de determinados valores sobre la agudeza visual de cada ojo.

Así por ejemplo, para cierto tipo de lente llamado tórico, la aplicación pone a disposición del optometrista un medio para ensayar y corregir la desviación del eje del lente de contacto (esquina inferior derecha de la figura anterior). Como ya hemos dicho, no hay dos ojos iguales en todo el mundo, y cuando los lentes de contacto se colocan en ellos sufren ciertos acomodamientos derivados de la curvatura de la córnea, los cuales afectan a la graduación final del ojo en cuestión.


Duplicación de la base de datos vía correo electrónico encriptado.

Existen otros aspectos de la aplicación que por su singularidad son dignos de mención, uno de ellos es un mecanismo de duplicación de base de datos vía internet, el cual pretende la transmisión segura de los datos de todas las ópticas para su concentración en una enorme bodega de datos residente en las computadoras de las oficinas ejecutivas.

Dicho mecanismo esta implementado en una serie de módulos que pueden ser conseguidos en cualquier espejo de CPAN, así como con código escrito para el manejador de la base de datos PostgreSQL, tal y como se aprecia en la siguiente figura:

De hecho esta implementación tiene tantos detalles interesantes, que se espera exponerlos en un articulo futuro en LinuxFocus, esto es, si los editores nos dan nuevamente la oportunidad. :-)


Computadoras light.

El último aspecto importante que se ha de mencionar es el uso de clientes ligeros. Como se indicó al principio de este artículo, se requería que las computadoras empleadas en la aplicación ocupen el menor espacio físico posible. Por ello se emprendió la tarea de buscar la mejor opción entre computadoras 486 usadas, computadoras con gabinetes slim, ultra-slim y network computers.

Las alternativas que resultaron más viables fueron:

Computadoras con gabinete ultra-slim
Para las cuales se integró una distribución Linux que abarcara un sólo disco (imagen del kernel mínima y comprimida), con la configuración de red básica y con un cliente vnc basado en svgalib. Dicho disco de arranque habilita computadoras 486 en adelante como unidades de despliegue gráfico, no requiriendo disco duro y funcionando con apenas 8MB de memoria RAM.
Network computers
Sin disco ni floppy, con arranque remoto vía DHCP y basadas en procesador PowerPC. Aunque el modelo específico del procesador aún estaba en pruebas para Linux cuando se tuvo que tomar la decisión, existe una imagen de kernel disponible por ftp (tal y como se menciona en el HowTo de las NetStation).

Como el factor crítico es el espacio físico se eligieron las Network Computers con monitores SVGA de 9 pulgadas, ya que sus dimensiones (19.05 x 26.67 x 3.18 cm) permiten ubicarlas hasta en cualquier cajón de los aparadores.

La experiencia respecto a los clientes ligeros también esta repleta de detalles interesantes, por lo que se propone describirla en un futuro articulo en LinuxFocus, si es que los editores nos conceden su venia.


Credit where credit is due

Sólo resta reconocer la labor de todos aquellos que con su creatividad y esfuerzo hicieron posible que la aplicación de atención de clientes se basara completamente en Linux:

Citlali Calderón de Anda: mailto:citlali@galois.fciencias.unam.mx

Liliana Araceli Cabello: mailto:liliana@galois.fciencias.unam.mx

Juan José Alba

Edgar Raúl Acosta Villaseñor: mailto:edgar@galois.fciencias.unam.mx

Gunnar Wolf: mailto:gwolf@chmd.edu.mx

Roberto Andrade Fonseca: mailto:randrade@abl.com.mx

Existen partes de código que creemos que pueden ser de interés general para la comunidad, tales como las modificaciones hechas a los widgets de pTk, la implementación para enviar e-mails encriptados desde perl, los programas para la sincronización y duplicación de bases de datos PostgreSQL, así como las imágenes de discos de arranque para despliegue gráfico. Todo ello se podrá encontrar en la siguiente dirección: http://www.pochtecah.org/ABL_GNU.html.


Formulario de "talkback" para este artículo

Cada artículo tiene su propia página de "talkback". A través de esa página puedes enviar un comentario o consultar los comentarios de otros lectores
 Ir a la página de "talkback" 

Contactar con el equipo de LinuFocus
© Juan Pablo Rosas Duran
LinuxFocus 2000

Pinchar aquí para informar de algún problema o enviar comentarios a LinuxFocus

2000-08-16, generated by lfparser version 1.3