jueves, 29 de diciembre de 2011

Idea — Fábricas robóticas modulares

Empezaré esta serie de artículos transcribiendo las ideas que me rondan la cabeza cuando intento dormirme. No sé si será autosugestión o qué, pero el caso es que en ese momento me parecen tan interesantes que me quedo un buen rato dándoles vueltas. Tanto que a veces pierdo el sueño y hasta que no las dejo medio-cerradas no consigo dormirme.

Albergo siempre el miedo de que a la mañana siguiente no me acuerde de ellas, como si fueran sueños que al final caerán en el olvido. Para que eso no ocurra, y como positivamente sé que ninguna de estas ideas al final llegará a materializarse... y en parte para decir de forma retrospectiva en el futuro: "ves, yo ya lo pensé en el año tal", las dejo aquí escritas para que las lea algún curioso nostálgico de los recuerdos en el futuro. ¿Quién sabe? Lo mismo estos archivos no se perderán en el tiempo y alguien los tendrá a bien en conservar. O quizás después de todo sí que se perderán.

Por todo lo anterior empiezo esta serie de artículos de mis locas ideas y proyectos. Algunos intentan ser originales como podría ser este. Otros están basados en cosas que he leído por ahí y que he modificado y/o adaptado (lo que llaman ahora los "modesnos" innovación).

Esta idea se me ocurrió hace unos días, al intentar dormirme una noche en la que me costó conciliar el sueño. Me planteaba la pregunta de por qué la fabricación de muchos productos occidentales se realiza en países emergentes mientras que el diseño se queda en occidente. Pasa con todas las empresas de tecnología ahora: Apple, HP, IBM, etc. La respuesta que encontraba era que en esos países, al haber muchos menos derechos laborales y la gente no reclamarlos por o no haberlos conocido nunca o tener miedo de las represalias, la mano de obra es mucho más barata y los países occidentales son incapaces de competir con eso. ¿Qué solución puede tener esto? ¿Cómo salimos de la encruzijada?

Entonces pensé en la definición del término "robot". Es un término que popularizó el dramaturgo checo Karel Čapek. Sin embargo, el inventor de la palabra fue su hermano Josef. Éste le sugirió el término "roboti" para una novela que estaba escribiendo. Literalmente "robota" en checo significa labor o trabajo y figuradamente "trabajo duro" (Wikipedia). Así que también se podría traducir en cierto sentido como esclavo.

Mi idea consiste en sustituir esta mano de obra barata por robots para que tanto el diseño como la fabricación se puedan realizar en los países occidentales a un coste comparable al que ahora se tiene en los países emergentes sin derechos laborales. No es una idea nueva esta, ya que en la industria automovilística por ejemplo se viene haciendo algo parecido desde hace muchos años.

Mi aportación a esta idea, sin embargo, es que la fábrica sea modular. Es decir, en vez de tener una línea de fabricación lineal como su propia palabra indica, que sea más una línea de fabricación en 2 dimensiones, incluso en 3 dimensiones.

¿Qué quiere decir esto? Limitándonos por ejemplo a una planta de fábrica, quiere decir que la diferente maquinaria se tendría que repartir en módulos. Cada módulo tendría que estar especializado en una tarea en concreto. Por ejemplo tendríamos un módulo que podría ser de troquelado, otro de impresión de piezan en una impresora 3D, otro módulo dedicado al pulido de las piezas, etc. Todos los módulos tendrían que tener además de la maquinaria específica, un par de brazos robóticos al menos con los que se manipularan las piezas y se aplicaran los procesos correspondientes a esa fase de la fabricación. La maquinaria no tendría que controlarse físicamente con botones o mandos, sino telemáticamente mediante una API. Esto ahorraría el tiempo en la realización de cada proceso.

Este planteamiento tendría varias ventajas:
  • Se podría escalar más fácilmente este sistema. Desde unos pocos módulos podríamos escalar a toda una planta, incluso podríamos escalar en altura a una fábrica de varias plantas. La inversión sería progresiva. 
  • Cuando un módulo necesitase reparación se podría sacar de la "línea de producción" o planta de producción en nuestro caso para reparar. Mientras se podría introducir otro módulo de las mismas características.
  • Mediante un programa de inteligencia artificial se podría intentar optimizar el proceso de fabricación para que fuera más óptimo, moviendo por ejemplo módulos de un sitio a otro de forma que el tiempo de producción de un producto se minimizara.
  • Si en vez de un control totalmente automático de los diferentes módulos se optase porque un operario especializado manipulase el proceso, se podría dar responsabilidad a ese operario sobre un módulo en concreto.

La comunicación entre los diferentes módulos se podría hacer mediante cintas móviles mecanizadas o mediante plataformas móviles que se pudieran mover libremente por los pasillos de servicio entre los módulos. Estos movimientos también serían susceptibles de optimización.

He hablado antes del control automático de todo el proceso de fabricación. Pero debido a que hay fases del montaje que son complejas sería deseable que los operarios también tuviesen alguna forma de grabar cada fase del proceso de fabricación. Se podrían grabar varias veces al operario para tener una muestra más significativa. De esta forma, si las condiciones iniciales son similares esa fase se podría reproducir de forma automática y la inteligencia artificial lo que tendría que hacer es ocuparse de los cambios sutiles en cada caso.

Además, alguno de los muros de la fábrica servirían como entrada de materias primas (por ejemplo una o dos fachadas del edficicio) y los otros muros como salidas (las fachadas restantes).

Como conclusión, si este sistema funciona sería un posible sustituto a la fabricación que actualmente se hace por operarios humanos en condiciones de trabajo precarias. La dificultad estriba en conseguir brazos robóticos lo suficientemente hábiles y fiables para poder sustituir la eficiencia que actualmente tiene el cuerpo humano (que sabemos que es una de las máquinas más perfectas que existen).

martes, 27 de diciembre de 2011

Neuromante, de William Gibson

Hace mucho que quería dejar aquí algún comentario sobre esta novela. Desde que la leí la primera vez en cierto sentido es una de mis novelas de referencia. Dicen los estudiosos de estos temas que es una de las primeras novelas del estilo ciberpunk.

De hecho mi primer contacto con ella fue en el tren, de camino a casa después de haber pasado el día en la universidad. Era mi época de estudiante, cuando todavía tenía mucho tiempo para leer (y más ganas de leer que de estudiar). Tampoco me había acomodado tanto como hoy e iba casi todos los días en tren a la universidad. Por aquel entonces, todo hay que decirlo, esta situación tampoco me agradaba mucho.

Había un chico enfrente mío con un ejemplar de la novela, en la edición española de la editorial Minotauro. La portada era curiosa: un dibujo más o menos abstracto que nunca he llegado muy bien a saber qué simboliza. Sobre fondo oscuro se ve una especie de esfera brillante y por detrás unos cilindros también de colores oscuros la rodean. He visto portadas de esta novela mejores, en la que se puede ver a Molly (un personaje de la novela) posando desafiante.

También recuerdo que pocos días después entré en el FNAC de Callao y me la compré. La primera lectura que hice de la novela fue tan rápida como poco fructífera. No me había enterado de nada.

Sólo después de dos o tres lecturas comprendí el sentido de lo que tenía entre manos. Una obra inspiradora, con un lenguaje propio y eléctrico. Yo que siempre estoy pensando en frases que se pueden citar cuando leo algo, esta novela sin duda es un filón. Casi toda se podría citar, frases enteras rellenarían mi pared si tuviera el espacio suficiente.

En cuanto al tema, sin destriparlo mucho, trata sobre un vaquero (hacker) del ciberespacio que ha caído en desgracia y que de buenas a primeras se ve embarcado en una operación que no sabe muy bien en qué acabará. El universo es parecido al de esa película que también nos gusta tanto: Blade Runner.

Así que si te gusta Blade Runner yo creo que puedes darle una oportunidad a Neuromante. Eso sí, la lectura en inglés se hace un poco ardua, tanto por el léxico como por el ritmo propio de la novela.

sábado, 17 de diciembre de 2011

Reflexiones sobre el tamaño óptimo de los backups incrementales o diferenciales


Definimos el factor:

Factor (F) = (Suma Incrementales o Diferenciales) / Full del ciclo

El factor está acotado de la siguiente manera:

0 ≤ F ≤ (N-1)

Donde N es la duración del ciclo. Por ejemplo si se hacen backups full semanales y cada día un incremental, N=7 porque es por semana. Si se hiciera un backup full mensual y el resto de los días del mes incrementales, N=30.

Valores de F mayores que (N-1) no tienen mucho sentido ya que querría decir que
la los incrementales, de media, pesan más que el full del ciclo.

Ej. 1: full semanal, resto de los días incrementales

         |-- L --|-- M --|-- X --|-- J --|-- V --|-- S --|-- D --|
Semana 1 |       |       |       |       |       |       | FullS |
Semana 2 | Inc1  | Inc2  | Inc3  | Inc4  | Inc5  | Inc6  |       |

=> Factor = (Inc1 + Inc2 + Inc3 + Inc4 + Inc5 + Inc6) / FullS

Ej. 2: full semanal, resto de los días diferenciales

         |-- L --|-- M --|-- X --|-- J --|-- V --|-- S --|-- D --|
Semana 1 |       |       |       |       |       |       | FullS |
Semana 2 | Dif1  | Dif2  | Dif3  | Dif4  | Dif5  | Dif6  |       |

=> Factor = (Dif1 + Dif2 + Dif3 + Dif4 + Dif5 + Dif6) / FullS

Ej. 3: full mensual, resto de los días incrementales

Semana 1 | FullM | Inc1  | Inc2  | Inc3  | Inc4  | Inc5  | Inc6  |
Semana 2 | Inc7  | Inc8  | Inc9  | Inc10 | Inc11 | Inc12 | Inc13 |
Semana 3 | Inc14 | Inc15 | Inc16 | Inc17 | Inc18 | Inc19 | Inc20 |
Semana 4 | Inc21 | Inc22 | Inc23 | Inc24 | Inc25 | Inc26 | Inc27 |
Semana 5 | Inc28 | Inc29 |

=> Factor = (Inc1 + Inc2 + Inc3 + ... + Inc29) / FullM


Tipos de clientes:

Nos encontramos con dos tipos de clientes problemáticos:

  • Clientes cuyo F < 0.1: Suma de incrementales o diferenciales es menor que el 10% del tamaño del full.
→ CLIENTES INACTIVOS

  • Clientes cuyo F > 0.9: Suma de incrementalos o diferenciales mayor que el 90% del tamaño del full.
→ CLIENTES HIPERACTIVOS

Valor óptimo del factor:

Es difícil dar una cifra óptima ya que la elección de este factor influiría por ejemplo en los tiempos de recuperación, que pueden ser diferentes dependiendo de la política que se quiera seguir en el cliente o de los requerimientos en los tiempos de recuperación.

Además también hay clientes más propensos a tener un F grande. Por ejemplo, cuando son clientes de base de datos es normal generar un volcado diario con los datos. Con lo cual el incremental suele ser grande.

Medidas a adoptar:

Dependiendo del tipo de cliente, ir adoptando las medidas en orden y estudiar cómo evoluciona F a lo largo de las sucesivas semanas.

◊ En los clientes INACTIVOS:

1) Full cada más tiempo

◊ En los clientes HIPERACTIVOS:

1) Estudiar los ficheros que ocupan más tamaño en los incrementales y activar directivas a nivel local en los SaveSets / directorios conflictivos

NOTA: Estas directivas se pueden aplicar a nivel global (se han definido varias políticas en función del sistema operativo) o por el administrador del servidor en cuestión (mediante el fichero .nsr).

1.1) Si son ficheros temporales o prescindibles, excluirlos del backup
  • skip : Excluye un directorio o fichero. Espera una máscara. 
1.2) Con los ficheros que no cambian de tamaño a lo largo de la semana, pero sin embargo se van a cinta:
  • mtime : Graba sólo un fichero cuando el tiempo de modificación del fichero cambia, es decir, cuando cambia el fichero. A veces te llevas ficheros que sólo se han accedido pero no han cambiado, lo que no es muy adecuado.
2) Si son ficheros de log que no se rotan:
  • En Unix se pueden rotar con el logrotate.
  • En Windows: habría que buscar una solución similar.
3) Si son volcados a disco (normalmente copias completas de bases de datos):
  • Estudiar si es necesario hacer el volcado realmente todos los días y llevárselo al backup o se pueden usar otras técnicas de volcado (por ejemplo, volcados incrementales aunque aumentaría el tiempo de recuperación)
  • Si no es posible, documentar en algún sitio que ese cliente tiene los incrementales/diferenciales muy altos y no se puede bajar. Reflejar también el razonamiento.
En la práctica:
  • Normalmente (aunque depende de la herramienta de backup que se use) la suma de los incrementales te los hace directamente, mientras que cuando es un cliente con diferenciales (tipo NAS) los tienes que sumar tú (por cada cliente) para calcular el factor (ya que los clasifica como diferencial nivel 1, 2, 3, etc.
  • Cuando la estadística es en un período de tiempo largo, se puede hacer la suma en el período de todos los incrementales o diferenciales y luego dividir por la suma de todos los fules en el período. De esta forma sale una muestra mayor y los valores son más significativos.
  • Si un cliente tiene varios SaveSets puede que uno de ellos tenga algún problema y los otros estén bien. Realmente cuentan los SaveSets de mayor tamaño dentro de un cliente (los que ocupan GB, es decir en tamaño los del orden de 1E+9). Dado que la política de backup se fija a nivel de cliente, si un SaveSet grande tiene problemas ese cliente tendría que ser entonces candidato para que se le optimice.
  • Los diferenciales en realidad son más grandes que los incrementales, ya que se reflejan los cambios desde el último backup full. Para clientes tipo NAS (como por ejemplo EMC Celerra, NetAPP, etc) no conviene tocar mucho la configuración ya que si no se penaliza de cara a los tiempos de recuperación.

domingo, 4 de diciembre de 2011

¿Puedes romper este código? O como optar a ser espía de UK



eb 04 af c2 bf a3 81 ec   00 01 00 00 31 c9 88 0c
0c fe c1 75 f9 31 c0 ba   ef be ad de 02 04 0c 00
d0 c1 ca 08 8a 1c 0c 8a   3c 04 88 1c 04 88 3c 0c
fe c1 75 e8 e9 5c 00 00   00 89 e3 81 c3 04 00 00
00 5c 58 4d 41 41 41 41   75 43 58 3d 42 42 42 42
75 3b 5a 89 d1 89 e6 89   df 29 cf f3 a4 89 de 89
d1 89 df 29 cf 31 c0 31   db 31 d2 fe c0 02 1c 06
8a 14 06 8a 34 1e 88 34   06 88 14 1e 00 f2 30 f6
8a 1c 16 8a 17 30 da 88   17 47 49 75 de 31 db 89
d8 fe c0 cd 80 90 90 e8   9d ff ff ff 41 41 41 41


Can you crack it? es una forma que se han inventado los británicos de captar a potenciales espías que ayuden en la caza por parte de las fuerzas de la ley de ciber-delincuentes. Si descubres el mensaje en claro asociado al cifrado transcrito arriba, éste te llevará a una página web en la que podrás mandar tu CV y que te "recluten" ;-)

Si ser un especialista en el tema, veo que hay algunos pares hexadecimales que se repiten más que otros (00, 41, 42, 88, 89, 8a, 90, por ejemplo). También creo que se podría asumir que dentro del código descifrado puede haber una URL a la página web donde mandar el CV. Por lo que el patrón http://.../.../ sería uno de los que deberíamos buscar.

Si descubro algo más en los 7 días que quedan para que termine el reto... seguramente les mande mi CV. Aunque va a estar la cosa difícil.