Entradas

Mostrando entradas de 2015

First gnuplot graphic

Imagen
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:

Remove proxy or add no_proxy for API endpoint creation.

Imagen
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.

Palabras del bodoque

Carne de gusano - Chistorra
Agua del rayo - Gatorade
Amich del señor - KFC

taskset vs. numactl

You will find this information useful in case of task affinity on your multicore system:

http://www.glennklockwood.com/hpc-howtos/process-affinity.html

taskset vs. numactl detailed explanation is located on that link.

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: http://linux.koolsolutions.com/2009/09/19/howto-using-cpu-msr-tools-rdmsrwrmsr-in-debian-linux/

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 p…

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: 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 wifiPuede geolocalizarse con su respectivo GPS para referenciar a la gasolineraUn display que vaya en la luneta trasera del auto (que despliegue un texto que tu envíes con voz)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.

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.

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:
http://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
$ 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?

Imagen
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.

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.

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

¿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

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

No handlers could be found for logger "oslo_config.cfg"

Launchpad bug 1450291 explains well why nova-manage db sync fails.
Brief explanation is: change logdir to log_dir on /etc/nova/nova.conf

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.

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 p…

Best and easy way to install puppet on SLES12

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.

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

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.

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 …

SLURM 101

Taken from bright software web page:

The basics contain how to list jobs, get job information, terminate a job, submit a job and so forth:

http://info.brightcomputing.com/Blog/bid/174099/Slurm-101-Basic-Slurm-Usage-for-Linux-Clusters

PXELINUX Unable to locate configuration file

Imagen
PXELINUX Unable to locate configuration file
Let's see if I get this one solved on the course of this day. 

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.

Catársis de un bloqueo kilométrico

Imagen
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ña…

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.

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 e9ca61ca-7fee-4ce6-9728-f9eacd343b08

References:
https://docs.puppetlabs.com/guides/templating.html
ht…

Pending: create a custom fact to retrieve the network UUID

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/mImcAAQWB3V5JDHbs…

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 }

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

PostOps: A Non-Surgical Tale of Software, Fragility, and Reliability

De laggard, pero no es tarde para recuperar el tiempo perdido:

PostOps: A Non-Surgical Tale of Software, Fragility, and Reliability

Si tienen algún tiempo pueden echarle ojo, es muy ameno.

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:


Instala un servidor webHabilita el servidor web al momento de arrancar el equipoConfigura el archivo /var/www/index.html con el contenido de /var/usr/my_index.htmlConfigura httpd.conf con el contenido de /var/usr/my_httpd.confetc. 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 …

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$

Perfkit (Google Launches Open-Source, Cross-Cloud Benchmarking Tool)

Valdrá la pena probar PerfKit:

https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/blob/master/README.md

Para irme estrenando en el área de benchmarking.

Loreto visitado por cruceros

Imagen
Parece que este año empiezan a llegar cruceros a Loreto BCS:
4200 cruceristas en el Crown Princess. Son buenas noticias para la región. 
http://www.tribunadeloscabos.com.mx/newpage2/index.cfm?op=por2&recordID=217911&seccion=Boletin_gob


Por si se quieren aventar el viajecito y ver el itinerario ;)

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í…

Un infierno cubierto de oro

Imagen
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 …

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.