miércoles, 9 de diciembre de 2015

First gnuplot graphic

I had to check the temperature behavior on a device and had to sample each second creating a text file.

Cleaning the raw text file to get only the temperature column with awk, something like: awk '{print $10}' output.log > celcius.log was the second step.

And finally a small gnuplot script to fetch the celcius.log file which contained only 2 digits by row:
45
43
44
40
45
40
.
.
.

Gnuplot script to generate a png file:

set term png
set output "celcius.png"
set ylabel "C"
set xtic auto
plot "celcius.log"

And the final result:


viernes, 20 de noviembre de 2015

Remove proxy or add no_proxy for API endpoint creation.

Beware of creating openstack API endpoints on the controller using proxy environment variables. This is why:

# openstack service create \
>   --name keystone --description "OpenStack Identity" identity
ERROR: openstack Not Found (HTTP 404)

You will need to remove the proxy environment variables or add your controller hostname into the no_proxy environment variable:

# export no_proxy=localhost,127.0.0.0/8,controller

That will resolve the 404 Apache error.

jueves, 22 de octubre de 2015

martes, 20 de octubre de 2015

Reading MSRs from linux

Well, so long and there has been no updates on this blog, but here is a brief technical update.

Right now I'm trying to read some BIOS registers from linux. We have a package on Ubuntu named msr-tools which provide the commands to read the intended registers:

# apt-get install msr-tools

Then modprobe msr, and finally read your MSR register:
# rdmsr 0x1A4
c
# rdmsr 0x198
18b200000c00

Reference:

lunes, 7 de septiembre de 2015

Las ciclovías de la ZMG tienen un problema de diseño

Durante mi trayecto en bicicleta de hoy lunes por la mañana me fuí meditando algo respecto a una modificación que se hizo a la ciclovía que hay en aviación a la altura de la región militar.

Hace algunos 4 meses aproximadamente se comenzó a construir un nuevo fraccionamiento, por lo cual la ciclovía se tuvo que modificar, en vez de ser lineal, ahora tiene un par de rampas muy pronunciadas que afecta a las personas que circulan por esta ciclovía, favoreciendo indudablemente al paso de un vehículo por la misma al intersectarla y entrar a este nuevo fraccionamiento.

Después de observar el estado de la ciclovía en otros tramos, la situación es la misma. El paso de la ciclovía es la que tiene irregularidades, mientras que el paso vehicular es el que permanece parejo y sin escalones.

Esto sin duda denota que las ciclovías de la zona metropolitana de Guadalajara al menos en esa parte de la ciudad tienen problemas de diseño, dado que al ser la bicicleta el transporte que menos daños sociales provoca, se le manda a tener las mayores complicaciones, mientras que el vehículo atraviesa por ellas sin escalones ni problema. Veo en esto dos escenarios:


  1. Hacer los cruces de la ciclovía a nivel de la bicicleta en vez de hacerla al nivel del vehículo, forzaría a los autos a disminuir su velocidad indudablemente para cruzarlas, haciendo mas seguras las ciclovías para sus usuarios
  2. Al dejar el cruce al nivel del auto, de manera que el auto pase sin problema y no tenga que pasar por un cruce escalonado, hace que no disminuya su velocidad y por lo tanto sea mas peligrosa para los usuarios de la ciclovía.
No es solo hacer una ciclovía, también es hacerla bien. Tenemos un reglamento o lineamientos al respecto? Y en cada modificación que se hace hay manera de que se obligue a los constructores a mantener dichas normas?

Mis dos centavos.

domingo, 23 de agosto de 2015

Tres proyectos didácticos para Edison Arduino

Desde ya algunos meses que tenía la curiosidad de hacer algunas pruebas y aprender como programar las tarjetas arduino. Josech me hizo el favor de agenciarme una Edison con su breakout board y llegó hace unos 5 días a casa. El primer experimento fué hacer parpadear un led, cosa que fué sencilla.
Realicé el parpadeo de led desde arduino IDE y con python.

Ahora en mente tengo algunos proyectos meramente didácticos para los cuales necesitaré algunos sensores:
  1. Un medidor de litros despachados (para ver que te den litros de a litro en las gasolineras)
    • Puede subir los resultados a internet, ya que la Edison tiene wifi
    • Puede geolocalizarse con su respectivo GPS para referenciar a la gasolinera
  2. Un display que vaya en la luneta trasera del auto (que despliegue un texto que tu envíes con voz)
  3. Un despachador de comida de perro automático (que de N kg de comida cada cierto tiempo)
Ya les platicaré que tal van esos proyectitos.

miércoles, 19 de agosto de 2015

Getting the Pktgen LUA exposed functions from pktgen-dpdk

Currently there's no documentation on which functions are exposed to LUA from Pktgen.

Not documented and got this hint from Keith:
Search at the bottom of the ./app/lpktgenlib.c file to see the LUA functions.

  // Set the single packet value on main screen
  {"set_mac",     pktgen_set_mac},     // Set the MAC address for a port
  {"set_ipaddr",  pktgen_set_ip_addr}, // Set the src and dst IP addresses
  {"mac_from_arp",  pktgen_macFromArp},      // Configure MAC from ARP packet
  {"set_proto",   pktgen_prototype},      // Set the prototype value
  {"set_type",    pktgen_set_type},    // Set the type value

For instance you can now call the pktgen.set_type function on your lua script.

martes, 18 de agosto de 2015

Anotaciones: negar un patrón de bash

En ocasiones me sucede que quiero utilizar la negación de un wildcard para eliminar archivos o moverlos en bash. Siempre olvido como hacerlo así que aquí dejo la nota:


$ shopt -s extglob (extended pattern matching)

Quiero eliminar todo lo que haya dentro de /tmp excepto lo que empiece con abc1*

$ rm -fr !(/tmp/abc1*) 

Fin

What is DPDK about?

Before a couple of months ago I was not aware of a new technology called DPDK intended to accelerate packet processing on common commodity servers. Instead of running propietary hardware with high cost licenses DPDK allow a very modest server to process 24x the amount of packets compared to a single core network appliance. It use an source BSD license.

A brief and easy 4 minutes explanation of DPDK can be found on the following video:


Next just for fun experiment would be to build a virtualized DPDK appliance under openstack.

viernes, 14 de agosto de 2015

HipHop Virtual Machine or HHVM

What is this about?

Taken from the official HHVM website:

"HHVM is an open-source virtual machine designed for executing programs written in Hackand PHP. HHVM uses a just-in-time (JIT) compilation approach to achieve superior performance while maintaining the development flexibility that PHP provides."

"Rather than directly interpret or compile PHP code directly to C++, HHVM compiles Hack and PHP into an intermediate bytecode. This bytecode is then translated into x64 machine code dynamically at runtime by a just-in-time (JIT) compiler. This compilation process allows for all sorts of optimizations that cannot be made in a statically compiled binary, thus enabling higher performance of your Hack and PHP programs."

Worth taking a look at this technology.

jueves, 6 de agosto de 2015

Checking your linux hardware clock source

Current clock source:
# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc

And about the available clock sources:
# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm

Source: http://serverfault.com/questions/459901/hpet-missing-from-available-clocksources-on-centos

miércoles, 5 de agosto de 2015

¿Qué es lo que nos motiva?

1 de Agosto de 2015.

A un año de haber tomado un rumbo y ritmo distinto al que había llevado laboralmente durante aproximadamente 6 años. Se acaba de cumplir una vuelta al sol trabajando en Intel, y durante esta vuelta he cambiado muchas percepciones y aprendido bastantes cosas en el camino.

El aprendizaje técnico ha sido una rampa empinada, desde los fierros hasta el software y middleware. Llena de high performance computing, benchmarks, virtualización, mediciones, instrumentación, código, scrums, automation.

Es un tanto liberador poder proponer soluciones, sugerir cambios y que estos sean tomados en cuenta. Dice el video de ¿Qué es lo que nos motiva? que para trabajos que requieren habilidades específicas, 3 cosas importan mucho para mantener un "engagement": autonomía, maestría y propósito.

Para no hacer largo el monólogo: FIN

martes, 28 de julio de 2015

SLURM commands to remember

Things to remember about SLURM:

sinfo - view information about SLURM nodes and partitions.
scontrol - Used view and modify Slurm configuration and state.
sdiag - Scheduling diagnostic tool for SLURM
srun - Run parallel jobs

jueves, 23 de julio de 2015

martes, 21 de julio de 2015

Noticias irrelevantes del blog

Las dos semanas pasadas han sido interesantes en lo laboral, comienzo a agarrar un ritmo que no había vivido desde mis días como recién egresado. 

Aprender herramientas nuevas, leer el código de alguien más y modificarlo. En esta ocasión he tenido la oportunidad de aprender lo básico de git para poder cooperar con un proyecto en el ciclo de vida tradicional, clonar, commit, push, merge. 

Por otro lado: ruby; fué cuestión de dedicarle unas horas adicionales para ver que no es tan feo como la impresión que da de conocerlo a primera vista.

Me agrada este estado de constante aprendizaje, muy al estilo de mis años como estudiante. 

martes, 14 de julio de 2015

Los IM/Redes Sociales/correos son un aniquilador de la concentración?

Mucho se ha hablado de los beneficios de dormir, y de como las hormonas juegan un papel importante en nuestro bienestar después de una siesta de calidad y cantidad.

Especialmente cuando inicio mi día, siento como las ideas fluyen, encuentro soluciones mas fácilmente; algo como una zona y estado ideal de concentración. 

He notado que la manera mas sencilla de matar toda esta inspiración es: revisar redes sociales por la mañana. PUM! El asesino de la creatividad, el aniquilador de ideas, la mole que aplasta la concentración. Al menos eso es lo que sucede en mi caso, pues he puesto en práctica el no revisar correos personales ni redes sociales, ni chats o mensajeros instantáneos cuando enciendo mi computadora por las mañanas y encuentro que puedo estar horas ininterrumpidas resolviendo algún problema técnico con los ya mencionados beneficios matutinos. Ah pero cuando he pasado unos minutos en redes sociales, mi atención queda desviada, así que no me concentro igual, no resuelvo igual y para terminar pronto, me arruina esa zona perfecta mental ideal.

Mis experiencias al respecto. 

lunes, 1 de junio de 2015

Run a custom fact based on core facts

So what if my previous example puppet custom fact easy as 1 2 3, needs to be run only on RedHat systems?

An additional line on the ruby file is added:

Facter.add('netuuid') do
   confine :operatingsystem => "RedHat"
   setcode do
      Facter::Core::Execution.exec("echo `grep UUID /etc/sysconfig/network-scripts/ifcfg-eth0 | cut -c 7-42`")
   end
end

Any core fact can be referenced with the colon and name of the fact
:operatingsystem
:osfamily
:kernel
etc.

jueves, 28 de mayo de 2015

Proper puppet variable declaration

The problem:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Syntax error at ','; expected '}' 

Wrong variable declaration:

class repos::params {
      $baseurl = "foo",
      $baseurl_key = "ha",
      $sles12_baseurl = "doo",
      $sles12_SDK_baseurl = "ken",
}


Proper variable declaration:

class repos::params {
      $baseurl = "foo"
      $baseurl_key = "ha"
      $sles12_baseurl = "doo"
      $sles12_SDK_baseurl = "ken"
}

Enabling puppet syntax highlighting for vi

This works for Ubuntu and should be the same similar process for other distributions.

# apt-get install vim-puppet
# vim-addons -w install puppet (system wide configuration for all users)
# vim-addons install puppet (for the current user)

Read on:
/usr/share/doc/vim-puppet/README.Debian

martes, 26 de mayo de 2015

SLES12 and puppet agent

I found close to no documentation on getting the puppet agent running on SLES 12.

What worked for me was the following repository and then only a zypper install puppet.

http://download.opensuse.org/repositories/systemsmanagement:/puppet/SLE_12/

That's pretty much it.

lunes, 25 de mayo de 2015

Solo vemos lo que ellos quieren que veas

Recuerdo que durante mi infancia escuché muchas ocasiones una frase que se repetía en muchos de mis círculos amistosos y familiares al respecto de los medios de comunicación:

"solo vemos lo que ellos quieren que veas"

Si, tenía mucho sentido en un medio como la televisión donde no se interactuaba de ningún modo y toda comunicación era unidireccional. La radio igual y los medios impresos.

Así tuvieron que pasar muchos años para que se masificara la utilización de medios "interactivos" donde los usuarios generan contenidos, imágenes, comentan, reciben comentarios y así todos forman parte de un medio en el que se elimina la posibilidad de que un medio genere el contenido que nosotros queremos ver.

Hay una falsa ilusión en esta "libertad" de información; y me refiero específicamente a la plataforma facebook ya que para los ciudadanos de zonas metropolitanas, y no hablo de zonas rurales, toda la vida, acción, invitación y evento gira en torno a la red social de la F. 
Oh si, comparten información, artículos de interés, chismes, moda, reportajes, etc, una "libertad" de escoger lo que queremos ver, de lo que nos queremos informar.

A través de ciertos algoritmos que facebook ha diseñado. Un usuario solo lee las noticias o eventos que la red social decide que leas. 


"the algorithm that chose which stories to boost was called “the publisher." "A squirrel dying in front of your house may be more relevant to your interests right now than people dying in Africa.”"

Y eso solo un ejemplo; que tal si brincamos al aspecto político?

"They found that the News Feed algorithm—which has long been accused of shielding users from politically oppositional content—decreased the visibility of ideologically “cross-cutting”"

Tanta tecnología atrás de estos avances en medios, para terminar nuevamente leyendo, viendo y escuchando lo que ellos quieren que veamos.

martes, 19 de mayo de 2015

miércoles, 13 de mayo de 2015

wicked: device ib0 failed: operation timed out

Just to mention that when trying to start an InfiniBand ib0 interface without the opensm-3.3.17-5.7.x86_64.rpm package on SLES12 will throw you the following message:

wicked: device ib0 failed: operation timed out

Make sure you have package opensm-3.3.17-5.7.x86_64.rpm installed and then issue:

/etc/init.d/opensmd start 

in order to:

ifup ib0

Comments are welcome.

domingo, 3 de mayo de 2015

Catársis de un bloqueo kilométrico

Si hay algo que me cuesta trabajos superar, es el hecho de ver como otras personas se brincan filas o no respetan a los demás cuando rebasan por acotamientos, siendo que cientos de personas mas están esperando con la misma paciencia en una fila kilométrica.
Esto nos sucedió ahora que a los amigos del gobierno se les ocurrió bloquear muchos de los accesos del estado de Jalisco fueron bloqueados. Observé muchos comportamientos que probablemente han sido estudiados por alguien, y es como cuando nos encontramos en grupo, cuando una persona como las que rebasan a los demás por el acotamiento pone el mal ejemplo, muchos otros imitan esa conducta en automático. Es mas fácil imita una conducta negativa que una positiva? Tendré que investigar un poquito al respecto para conocer el fenómeno.



Otro comportamiento curioso es el que vi cuando un automóvil que pasaba a un lado de nosotros traía el noticiero, al parecer un informe oficial sobre los hechos. Dado que en nuestro radio no llegaba la señal intentamos escuchar el auto vecino, se escucharon algunas declaraciones que no entendí muy bien, y un segundo después los que iban en ese auto comenzaron a proferir frases como "que mentiroso!", "quién va a creele!", Estoy de acuerdo con las frases que lanzaban, aunque me parece un poco infructuosa la manera de hacerlo. Si nos subimos a todos los rings de pelea que encontramos y la pasamos luchando unilateralmente, dia a dia, hora tras hora, año tras año, no sé, en mi opnión me parece la fórmula perfecta para desgastarnos interna y prematuramente.

Fuera de la temática violenta de la jornada y dado que hubo la oportunidad de desviarnos hacia la libre Guadalajara-Tepic por un paso que capufe abrió de entre sus túneles pasadizos, tuve las memorias de esta carretera que durante mi infancia viajé con mis padres en muchas ocasiones. Plan de barrancas es de esas carreteras libres que me imagino se asemejan a la famosa ruta 66, en su momento fué una carretera llena de actividad, pero ahora es una carretera vacía, hasta se aprecian limpios los acotamientos y orillas de la misma, señal de que desgraciadamente no circula mucha gente por ahí, o la gente que circula es gente muy limpia y educada. Me inclino mas por la primer opción.


viernes, 3 de abril de 2015

La misión

Comienzo a creer que mi misión ha terminado, ya vi lo que tenía que ver, ya hice lo que tenía que hacer, el resto es papalotear, consumir, y repetir en un ciclo hasta que se vaya la última gota de vida.


lunes, 30 de marzo de 2015

Puppet custom fact easy as 1, 2, 3.

After taking a careful reading at creating a custom fact. The solution was as follows to get the net uuid from /etc/sysconfig/network-scripts/ifcfg-eth0:

My custom fact stored on <modulepath>/<module>/lib/facter/netuuid.rb:
Facter.add('netuuid') do
        setcode do
                Facter::Core::Execution.exec("echo `grep UUID /etc/sysconfig/network-scripts/ifcfg-eth0 | cut -c 7-42`")
        end
end

I have created the <modulepath>/<module>/templates/netuuid.erb with this content:
<%= netuuid %>

And then call my custom netuuid facter variable on a template inside a manifest:
class netuuid {
        file { '/tmp/netuuid':
                        path    => '/tmp/netuuid',
                        ensure  => file,
                        content => template("module1/netuuid.erb"),
                }
}

# cat /tmp/netuuid

jueves, 19 de marzo de 2015

Maintain known_hosts file with a puppet class

Each time an ssh client gets connected to another ssh remote host, a known_hosts file is generated or updated based on the remote host public key.

The purpose of this file is well explaines on the following link: http://en.wikibooks.org/wiki/OpenSSH/Client_Configuration_Files#.7E.2F.ssh.2Fknown_hosts

Let's say that we have a network with 100 servers and each time we add another server to this network all the machines need to update the known_hosts file with the new public key. 

First step: ask the new machine for it's public key with ssh-keyscan:

# ssh-keyscan localhost/remotehost
# localhost SSH-2.0-OpenSSH_5.3
localhost ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAygRKDjzHw1a1L79f5rNaGlqPUDndZv9KhtZPG2MYrUrU/9NiBOiVDWwllUwWXQkLY3fhdTVncjGfzn4oc09876J3uXZJaNWr0PZpD8S7Y6+50iZWYVA0fTM0j32WdD3MMfJjCtrXo+/gDx9+XiQPXlWqkuy5L5PRIvjIzVeZwL6BDDalmQXx3Jw5QcfQn9Bc7m+Bw7ZO80mxnFnKH5zZa8jdjd6XPSLXN0Q+5UlvZ5o5hxaFA+4ywtvKbF6avlQj5rm9+6kGUkVLIZRVw+lkkGqSixsTMGC3mZURH2s38UB1OjHXQSW8DP/mImcAAQWB3V5JDHbswee99C8CU6ekcw==

And manually append the output to your ssh_known_hosts/known_hosts file in the proper format (man ssh-keyscan):

     Output format for rsa1 keys:

     host-or-namelist bits exponent modulus

     Output format for rsa and dsa keys:

     host-or-namelist keytype base64-encoded-key

     Where keytype is either “ssh-rsa” or “ssh-dss”.


Distribute this file with a puppet class on your nodes and you won't be prompted again to add this new key into your known_hosts/ssh_known_hosts file at the first login attempt. 

For sure this is far from perfect, but solves the problem in a short time. 

martes, 10 de marzo de 2015

Puppet: estructura de un módulo y como invocar a sus clases

Dicen que es de sabios cambiar de opinión, pero también es de idiotas permanecer aferrados. Como sea, ahora que he estado aprendiendo algo de puppet, he tenido que generarme algunos módulos para hacer algunas tareas básicas de configuración en mis nodos. Para lo que es bueno recordar las siguientes referencias; basado en mi siguiente estructura de directorios:

# tree
.
└── base
    ├── files
    │   ├── hosts
    │   ├── motd
    │   └── vimrc
    ├── manifests
    │   ├── hosts.pp
    │   ├── init.pp
    │   ├── motd.pp
    │   └── vimrc.pp
    └── tests
        └── init.pp

4 directories, 8 files

Tendría que llamar a las clases de la siguiente manera:

# cat ../manifests/site.pp
node 'foo-host' {
        include base::hosts
}

node 'default' {
        include base::motd
        include base::vimrc
        include base::hosts
}

jueves, 5 de marzo de 2015

Remember how to nat your network

Is a good idea to remember how to nat a network, so the lessons learned are always good lessons. This is for most linux distributions and not permanent changes (let's say a reboot will destroy this change).

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Also make sure we have a default gateway on the internal network:

# route add default gw aaa.bbb.ccc.ddd

And that's it.

More details on: http://www.revsys.com/writings/quicktips/nat.html

miércoles, 18 de febrero de 2015

Primeras pruebas con chef

Dado que voy a necesitar de una manera sencilla de configurar algunos ambientes e instalar sus respectivos paquetes, anduve rascandole un poco para encontrar la manera menos dolorosa de hacerlo. Hubiera podido hacer algunos scripts con bash o perl, pero si quiero aprender algo que me sirve técnicamente en un futuro y además de eso no me absorba tanto tiempo encontré que chef podría solucionarme este particular problema.

Con chef se definen recetas de modo que al aplicar una receta, se logra instalar alguna aplicación en el orden en el que lo definimos, digamos:


  1. Instala un servidor web
  2. Habilita el servidor web al momento de arrancar el equipo
  3. Configura el archivo /var/www/index.html con el contenido de /var/usr/my_index.html
  4. Configura httpd.conf con el contenido de /var/usr/my_httpd.conf
  5. etc.
De modo que no se pierde tiempo en hacer un script y no se diga en cada una de las excepciones entre cada servidor, en caso de tratarse de un servidor web, uno de DB, otro de archivos, cada uno son su perfil específico.

El gran pero que he encontrado con chef en mi caso particular es el siguiente: chef utiliza un programa llamado ohai que obtiene muchas de las características del sistema, cpu, usuarios, grupos, uptime, parámetros del kernel y otros. Dado que mi equipo de pruebas está ligado a un servidor LDAP, por alguna razón ohai se está trayendo todos los grupos de LDAP, generando así un output como de 7 a 8MBs. Al momento de hacer un bootstrap, el cual a su vez llama a ohai, el servidor me niega el output dado que es demasiado grande:

"ERROR: 413 "Request Entity Too Large"

Estuve rascandole en irc.freenode.net en #chef, en la documentación, así como en el ticket https://tickets.opscode.com/browse/CHEF-4912, y la solución ha sido que vaya y edite un archivo específico para deshabilitar un plugin, el cual no deshabilita la consulta de grupos y usuarios. De modo que sin solución y sin afán de estar perdiendo mas tiempo en el tema, mejor brincaré a puppet, que por cierto he leído supera por mucho a chef. 

viernes, 13 de febrero de 2015

Del chef fundamentals

tox@foo:~/chef_repo$ chef-apply hello.rb
Recipe: (chef-apply cookbook)::(chef-apply recipe)
  * file[motd] action create
    - create new file motd
    - update content in file motd from none to b94d27
    --- motd    2015-02-13 15:27:22.082862620 -0800
    +++ ./.motd20150213-8088-rymt9q     2015-02-13 15:27:22.082862620 -0800
    @@ -1 +1,2 @@
    +hello world
tox@foo:~/chef_repo$

Un cambio al hello.rb

tox@foo:~/chef_repo$ chef-apply hello.rb
Recipe: (chef-apply cookbook)::(chef-apply recipe)
  * file[motd] action create
    - update content in file motd from b94d27 to c38c60
    --- motd    2015-02-13 15:27:22.082862620 -0800
    +++ ./.motd20150213-8404-i9zkrw     2015-02-13 15:30:30.605742425 -0800
    @@ -1,2 +1,2 @@
    -hello world
    +hello chef
tox@foo:~/chef_repo$

martes, 27 de enero de 2015

Bicicletas de última milla + automóviles modulares

En la mañana venía pensando sobre una idea. Primero pensé que las pizzas del perro negro son como una aberración culinaria pero a pesar de eso mucha gente las ha tomado como wow. Pizza de chiles rellenos? al menos no es para mi, pero para todo tenemos gustos.
Me pareció una idea aberrante, pero para algunos es cautivadora y atractiva, pensé.

¿Que tal si tuviéramos un auto-bici? fué mi siguiente pensamiento en analogía a una pizza y chiles rellenos; hummmm auto+bici. Y si tuviéramos algo así como bicicletas con algún tipo de motor modular, que pudieran anexarse a otras 3 para formar algo como un automóvil?

Vamos por partes.

1) Una bicicleta que se anexe a otras
2) 4 Bicicletas "anexables" formarían un automóvil
3) Este automóvil formado por 4 bicicletas podría tener un mejor desempeño al tener por dar un ejemplo mas caballos de fuerza

Pensemos en las implicaciones o incentivos de esto:

1) Motivaría esto a mas personas a hacer algún tipo de "bicicarpooling"?
2) Podríamos hacer la última milla en nuestro "módulo"
3) Podríamos cubrir las distancias largas en el automóvil formado por 4 módulos bici

No creo ser el primero en pensar en esta idea pero supongo no es viable por el momento y nadie lo ha desarrollado.

Un auto equivalente al teléfono modular de google.

jueves, 22 de enero de 2015

Un infierno cubierto de oro

Conversaba el otro día con un camarada respecto a cuestiones laborales y de sueldo; llegamos al punto de una observación que me pareció bastante curiosa respecto a una famosa empresa que existe en la ciudad que paga muy bien pero donde las condiciones son terribles. El equivalente a ser un pescador de cangrejos en Alaska pero del mundo de tecnologías de la información; un "infierno cubierto de oro".

Dado que ese día iba en la bicicleta, me dió un poco de tiempo para meditar al respecto de "un infierno cubierto de oro", y quienes estarían dispuestos a vivirlo; bajo que costos. No tengo duda que hay quienes están dispuestos a estar en el infierno cubierto de oro, pues esa transnacional aún sigue en funcionamiento (y seguirá). Pero mi reflexión va en otro sentido.

No tengo los datos duros de cuanto sea el tiempo que un trabajador ahí está trabajando, pero por las pocas personas que conozco, duran de 4 a 5 años y después brincan a otros empleos. A nadie, absolutamente a nadie he escuchado decir que se la pasó muy padre por ahí. Pero volvamos al cálculo. Digamos que una persona dura 5 años trabajando en el infierno dorado. El incentivo de estar ahí definitivamente económico. Digamos que esta hipotética persona A gana 50 mil pesos al mes. Al finalizar 5 años de trabajo tendríamos que esta persona ganó 3 millones de pesos.

Tenemos un trabajador hipotético B que trabaja en otro lugar. Su sueldo no es estratosférico pero las condiciones de trabajo y el ambiente laboral no merecen el distintivo de "infierno". Este hipotético trabjador B tiene un ingreso mensual de 35 mil pesos; ¿cuánto tiempo le llevaría acumular el mismo ingreso que el trabajador A?

Nada menos que 2 años y 2 meses.

Observese la tablita para números detallados

Aquí es donde empezamos la comparación y la reflexión: 5 años de infierno contra 7 años de pasartela bonito; ¿qué cosas se sacrifican durante 5 años para acumular 3 millones de pesos comparado con el hipotético trabajador B que le toma 7 años y 2 meses acumular lo mismo? Hay cosas que millones de pesos no van a comprar, trillado, muy trillado es verdad, pero en un comparativo a secas y con números duros hace ver un contraste y una no tan alejada diferencia entre lo que cuesta y se sacrifica al tener un empleo A en el "infierno cubierto de oro" y otro empleo cualquiera B.

Como respondemos a los incentivos y como actuamos en consecuencia.

Fin de la reflexión.

martes, 6 de enero de 2015

Tasty chips

De poco a poco entre los datos que ofrece freakonomics y la información de "la parajoda de la generosidad", uno observa, analiza y en muchas ocasiones confirma la información que se ha digerido en este par de libros.

Entre la empatía, sociabilidad, cantidad de amigos, frecuencia con la que dependemos de otros, frecuencia con la que otros dependen de nosotros y muchas variables más se ven patrones, poco evidentes a simple vista, pero mas claros al observarlos con detenimiento.

Una correlación no implica una causa: cuando cae nieve hace frío, o cuando hace frío cae nieve, hay más variables involucradas y determinar las causas requieren de un análisis de regresión.

Bla bla bla, tasty chips.

Correct fail2ban filter for sshd on Amazon Linux

Fail2ban does not catch the regular expression for Invalid or Illegal ssh logins on Amazon Linux. So far the fix goes like this: Not match...