viernes, 27 de diciembre de 2013

Entrevistas de trabajo

Hace poco en mi empresa hemos empezado a buscar otra persona para IT, en sistemas somos solo 2 y en microinformática tan solo 1, así que se hace urgente la necesidad de alguien más. En una profesión tan poco valorada como esta, resulta muy difícil convencer a los jefes de la importancia vital que tiene nuestra labor para la empresa y que la falta de personal en nuestros departamentos puede tener mayor impacto en la productividad que la falta de personal en cualquier otro. De nosotros depende no solo el funcionamiento de todos los servicios que da y usa la empresa, si no también que el resto de empleados puedan trabajar.


Odio entrevistar, el problema no es lo tedioso que pueda resultar ser, o la pérdida de tiempo que conlleva, el problema es más simple, no me gusta descartar gente. Obviamente no todo el mundo es válido para un puesto y al final tienes que seleccionar al mejor candidato. La pila de trabajo por hacer seguirá creciendo irremediablemente y si no eliges a alguien que te ayude a salir a flote, elegirás a alguien que te termine de hundir pero a veces me planteo si hace 8 años en esta misma situación me hubiera contratado a mi mismo.

Entonces no tenía ni los conocimientos, ni la experiencia que tengo ahora, pero tenía muchos más conocimientos de los que quizá era capaz de demostrar, al menos sobre el papel.

¿Cómo puedes encontrar eso mismo en una entrevista? Con los años he aprendido que pocas cosas del curriculum te sirven para catalogar a una persona, al menos en esta profesión. No importan los títulos universitarios, aunque saber programar es indispensable, en las carreras de informática poco se ve de sistemas y he visto ingenieros superiores caer con preguntas muy sencillas, tampoco las certificaciones: CCNA, MCSA, LPI, ... Que sin experiencia se pueden olvidar tan rápido como se obtienen, ni tan siquiera los trabajos previos, en los cuales el desempeño del candidato ha podido ser tan exagerado como su nivel de inglés.

Parafraseando una famosa cita de Blade Runner: He hecho entrevistas que vosotros no creeríais. Desde el que te recomienda a otra persona, al que le quita el portátil a tu jefe para entrar en el portal privado de su antigua empresa,  pasando por el  recién salido de la universidad, sin experiencia ninguna y que te pide ganar 40 mil euros, hasta el que tiene mejor curriculum que tú pero que no es capaz de responder ninguna pregunta técnica.

sábado, 31 de agosto de 2013

Rule #32



- What makes you a good Sysadmin?
- Curiosity

Cómo ser un buen administrador de sistemas Linux I - Distribuciones

El primer paso para ser un buen administrador de sistemas Linux, bueno, no podía ser otro que usar Linux :P y cuando hablamos de Linux en realidad hablamos de distribuciones GNU/Linux o GNU/Apache/KDE/X.org/Linux/... no importa como lo llamemos la realidad es que tenemos muchas opciones y aunque no hay que conocerlas todas, al menos sí habría que probar las más relevantes.

Tener muchas opciones es una de las ventajas y de las desventajas del software libre, la libertad es siempre problemática pero siempre merece la pena. Cada distribución existe por un motivo y puede ser usada con un propósito concreto, por eso es importante saber qué distribución nos puede venir bien para que cosa.

Si queremos aprender lo mejor es empezar por lo sencillo, un trazado demasiado empinado nos hará abandonar pero si empezamos caminando es posible que pronto estemos corriendo.

Tenemos distribuciones basadas en releases, sacan una versión estable cada X meses dependiendo del ciclo de desarrollo y podemos quedarnos con la versión que tenemos el tiempo que siga soportada o actualizar a la siguiente cuando queramos y por otro lado tenemos distribuciones rolling release, suelen tener varias ramas de desarrollo y los paquetes van pasando de una rama de forma que la distribución siempre se va actualizando.

Una distribución basada en releases será más estable y por lo tanto más indicada para servidores y para entornos de trabajo. Mientras estemos en una versión sólo recibiremos actualizaciones que corrijan problemas y no tendremos que preocuparnos de nada más hasta que cambiemos de versión que podrá ser de una forma programada.

En cambio una distribución rolling release será más indicada como escritorio para casa, siempre estaremos a la última, podremos ver y probar cuales serán las novedades antes de que lleguen a las versiones que pondremos en los servidores y por lo tanto ya conoceremos sus problemas y sus ventajas.

Otro punto importante a la hora de elegir una distribución es el sistema de paquetes. Tenemos deb que es el que usa debian y sus derivadas como ubuntu, mint, ..., rpm que viene de red hat y sus derivadas: centos, fedora, opensuse, mandriva, ... y además otros como el de gentoo, arch, slackware, ... todos con sus respectivas herramientas: apt-get, yum, zypper, emerge, pacman, ...

Elegir una distribución puede ser más difícil que elegir un coche, pero dijimos que debíamos empezar por lo fácil. Tenemos que elegir una que nos guste y que seamos capaces de usarla todos los días para todas las tareas que solíamos hacer con Windows. Así que podemos empezar por Ubuntu, Mint, Fedora o Mandriva y si no nos gusta una, pasamos a otra, así de sencillo.

Cuando las tareas diarias estén controladas, nos hayamos familiarizado con el sistema de paquetes, tengamos mínimos conocimientos de la consola (sí, la consola es importante :P) y hayamos empezado a aburrirnos podemos subir el nivel, en ese caso yo siempre recomiendo seguir con Debian. La ventaja de Debian es que empiezas por abajo, puedes poner la rama stable y de ahí complicarte la vida tanto como quieras pasando a testing o incluso a sid. Debian en sí no es difícil pero requiere más trabajo que en otras distribuciones ya está hecho, por ejemplo las fuentes no se verán igual que en Ubuntu sin un poco de esfuerzo.

Una vez dominado Debian ya podemos experimentar alternativas diferentes como Gentoo y su maravilloso portage, Arch, un clásico como Slackware o incluso por qué no, adentrarnos en otros mundos como puede ser FreeBSD.

Al final tendremos una distribución favorita para servidores, la mía es Debian y otra para escritorio, la mía hasta ahora es Arch, hasta ahora porque como ya habéis visto, nunca se sabe :P

viernes, 5 de julio de 2013

Rule #27

The more I read, the more I acquire, the more certain I am that I know nothing.
Voltaire

jueves, 4 de julio de 2013

Comparativa de algoritmos de compresión II - Multicore

Siguiendo la línea de la comparativa de algoritmos de compresión que hice hace tiempo y viendo el avance que ha habido en procesadores con múltiples núcleos quería volver a repetir las pruebas usando aplicaciones que puedan aprovechar todos los núcleos para ver como mejoran los resultados.

Entorno de pruebas

  • Sistema operativo: Debian Wheezy 64 bits
  • Directorio database sin comprimir: 32G
  • CPUs: 2 x Intel Xeon E5-2690 @ 2.90GHz
  • Cores: 32
Todas las aplicaciones están en los repositorios oficiales, excepto pxz pero se puede instalar sin problema el paquete de sid.

Multi Core


Cada aplicación afronta el problema de una forma distinta y usa distintos algoritmos de compresión. Por lo general el fichero empaquetado y comprimido es compatible y se puede descomprimir usando la aplicación original, aunque para la descompresión apenas tiene efecto el multiproceso, en determinados casos puede suponer una mejora.

Hay que tener en cuenta que al usar todos los cores también aumenta considerablemente tanto la carga del servidor como el consumo de ram, aunque según el caso nos puede compensar ampliamente. Estos han sido los resultados de los tests:

pigz 2.2.4


Compresión: Tiempo: 1m48.863s Tamaño: 8,3G
time tar --use-compress-program=pigz -cf database.tar.gz database
Descompresión: Tiempo: 5m3.773s
time tar --use-compress-program=pigz -xf database.tar.gz

plzip 0.9


Compresión: Tiempo: 23m43.777s Tamaño: 4,4G
time tar --use-compress-program=plzip -cf database.tar.gz database
Descompresión: Tiempo: 2m36.047s
time tar --use-compress-program=plzip -xf database.tar.gz

lrzip 0.608


Compresión: Tiempo: 17m26.387s Tamaño: 4,1G
time tar --use-compress-program=lrzip -cf database.tar.lrz database
Descompresión: Tiempo: 5m27.053s
time tar --use-compress-program=lrzip -xf database.tar.lrz

pbzip2 1.1.8


Compresión: Tiempo: 3m46.977s Tamaño: 6,5G
time tar --use-compress-program=pbzip2 -cf database.tar.bz2 database
Descompresión: Tiempo: 2m33.358s
time tar --use-compress-program=pbzip2 -xf database.tar.bz2

pxz 4.999.9beta


Compresión: Tiempo: 16m14.513s Tamaño: 4,2G
time tar --use-compress-program=pxz -cf database.tar.xz database
Descompresión: Tiempo: 7m39.383s
time tar --use-compress-program=pxz -xf database.tar.xz

Conclusiones


Como era de esperar el uso de varios cores mejora considerablemente el rendimiento. Si buscamos velocidad el mejor resultado nos lo va a dar pigz, aunque el archivo final ocupa bastante comparado con el resto de aplicaciones el minuto y medio que tarda en comprimir 32G es impresionante. Por otro lado, si lo que buscamos es compresión lrzip o pxz son las mejores opciones. Y por último pbzip2 alcanza muy buenas medidas tanto en tiempo como en factor de compresión.

domingo, 17 de marzo de 2013

Algunos administradores buenos

¡Tu no puedes encajar la verdad!

Vivimos en un mundo que tiene centros de datos y esos centros de datos tienen que ser atendidos por hombres con conocimientos técnicos. ¿Quién va a hacerlo? ¿Tu? ¿Tu jefe? Yo tengo una responsabilidad mayor de la que puedas calibrar jamás. Tu lloras por mi tiempo malgastado navegando por internet y maldices Reddit. Tu tienes ese lujo. Tienes el lujo de no saber lo que yo se: Que las complejidades de nuestra infraestructura, aunque trágicas, probablemente salvan trabajos. Y que mi existencia aunque grotesca e incomprensible para ti, mantiene esta empresa funcionando ... Tu no quieres la verdad porque en zonas de tu interior de las que no charlas con tus amiguetes, me quieres en ese centro de datos. Me necesitas en ese centro de datos.

Nosotros usamos palabras como compilar, código, grep, ... las usamos como columna vertebral de una vida dedicada a dar soporte a algo, tu las usas como una broma. Y no tengo ni el tiempo, ni las más mínimas ganas de explicarme ante un hombre que se levanta y se acuesta bajo la manta de la tecnología que yo le proporciono, y después cuestiona el modo en que la proporciono. Preferiría que sólo dijeras gracias y siguieras tu camino. De lo contrario te sugiero que cojas un teclado y empieces a depurar. De todos modos, ¡me importa un carajo a que creas tu que tienes derecho!

Traducción libre de un comentario de chadpatrick


domingo, 10 de marzo de 2013

Fake generosity

Take it from me, there's nothing more terrible than someone out to do the world a favour
Terry Pratchett

miércoles, 27 de febrero de 2013

Adminspotting

Choose no life. Choose sysadminning. Choose no career.        *****
Choose no family. Choose a fucking big computer, choose hard  *   *
disks the size of washing machines, old cars, CD ROM writers  * A *
and electrical coffee makers. Choose no sleep, high caffeine  * D *
and mental insurance. Choose fixed interest car loans. Choose * M *
a rented shoebox. Choose no friends. Choose black jeans and   * I *
matching combat boots. Choose a swivel chair for your office  * N *
in a range of fucking fabrics. Choose NNTP and wondering why  * S *
the fuck you're logged on on a Sunday morning. Choose sitting * P *
in that chair looking at mind-numbing, spirit-crushing web    * O *
sites, stuffing fucking junk food into your mouth. Choose     * T *
rotting away at the end of it all, pishing your last on some  * T *
miserable newsgroup, nothing more than an embarrassment to    * I *
the selfish, fucked up lusers Gates spawned to replace the    * N *
computer-literate.                                            * G *
Choose your future.                                           *   *
Choose sysadmining[1].                                        *****

Gaz
[1] It might fuck you up a little less than heroin[2].
[2] ObFootnote.
Gary Barnes 

martes, 12 de febrero de 2013

Y Dios creó al administrador de sistemas

Y el octavo día Dios miró hacia abajo a su paraíso planeado y dijo: "Necesito un guardián" Y Dios creó al administrador de sistemas.

Dios dijo: Necesito a alguien que se levente antes del amanecer y compruebe las copias de seguridad y trabaje todo el día en la sala de servidores a 10 grados, compruebe las copias de seguridad otra vez, almuerce y se vaya a la oficina principal para asistir a una reunión con los jefes. Y Dios creó al administrador de sistemas

Necesito a alguien con brazos fuertes. Lo suficientemente fuerte como para levantar un SAI y montarlo en su rack, pero lo suficientemente delicado para enchufar un conector molex en caliente en la unidad de CD sin hacer caer el servidor y provocar una caída en el servicio. Alguien que llame a los proveedores, que dome bobinas salvajes de categoría 5e, que vuelva a casa con hambre y tenga que esperar para cenar hasta que su plato de ramen esté caliente y su servidor Minecraft actualizado. Y Dios creó al administrador de sistemas.

Dios dijo: Necesito a alguien que pueda dar forma al ancho de banda, que pueda sacar un disco de una bandeja de CD desconectada usando un clip, que haga una base para smartphone de pinzas de cocodrilo, gomas de borrar y lápices. Y... que, en época de actualizaciones y temporada de virus, termine su semana de cuarenta horas para el mediodía del martes. Después, el dolor de la muñeca por usar tanto el ratón durará otras setenta y dos horas. Y Dios creó al administrador de sistemas.

Dios tenía que tener a alguien dispuesto a empujar un carrito lleno de baterías el doble de rápido antes de que se avecine la tormenta y parar en medio de la sala, sacar su smartphone y correr a ayudar a un amigo cuando vea el primer voto negativo en su envío en menéame. Y Dios creó al administrador de sistemas.

Dios dijo: Necesito a alguien lo suficientemente fuerte como para vaciar racks, levantar las guías, y  a la vez lo suficientemente delicado para eliminar los atascos de papel y limpiar los viejos PCs y ayudar a los usuarios que te ponen ojos de cordero degollado ... y hacer una pausa de una hora en su trabajo para ver fotos de gatitos en internet. Y Dios creó al administrador de sistemas.

Tenía que ser alguien que fuera capaz de concentrarse... y que no usara contraseñas duplicadas. Alguien que borrase la caché, evitase un cuelgue, ... y reiniciase y repitiese, reiniciase y repitiese y preguntáse a los usuarios una y otra vez: ¿Has probado a apagarlo y encenderlo? Alguien que replanificase el array del raid y terminase un duro día de trabajo con un paseíto al centro de datos. Alguien que crease una biblioteca multimedia personal usando fuertes lazos de intercambio, que sonría y luego suspire ... y entonces responda con ojos sonrientes cuando el usuario pregunte: ¿Está caído el servidor? Y Dios creó al administrador de sistemas.

Traducción libre de "God made a sysadmin" por gifforc, inspirado en el anuncio de Ram Trucks en la Super Bowl 2013, Farmer:


sábado, 12 de enero de 2013

Make it count

I was the CTO at WhisperSystems, which was just acquired by Twitter. In the past, I've done both contract and full-time software engineering work, and I've worked on boats and as a delivery captain. I've also spent a considerable amount of time being broke and living without money.

I don't think I have any particularly sage advice for software engineers looking to go independent, so I'll answer a different question: on a somewhat regular basis now, I receive inquiries from young people coming out of high-school or college, asking me what they should do to get started in their software or security career. My most common response is "don't do it." Or at least, not right now.

I think the biggest thing young people fail to realize is the interminable nature of a career. As a young person in the global north, your whole life is generally marked by periods with definite beginnings and endings: elementary school is 5 years, middle school is 3 years, high-school is 4 years. It's significant because when you're in high-school and hating the indignity of it all, there is at least a definite endpoint that you can look forward to. But if you're coming out of that, you might not fully comprehend that when you start a career, you're expected to do that... for the rest of your *life*! Don't be too anxious to jump into that, because it's not as different as what's come before as you might think.

A friend of mine recently quipped "most people working in software discovered technology before they discovered themselves." There are so many people in the industry working on projects without a real personal narrative as to *why* they're doing them, other than the intrinsic feeling that solving technical problems is fulfilling. There is a whole entrepreneurial scene in the Bay Area right now; I can understand the draw of building things, but the level of self-seriousness that people bring to something like a "customer loyalty" startup baffles me. Honestly, it's simply not true that this stuff is "changing the world," so don't be too concerned about missing out if you don't jump in as quickly as you can.

Please, don't spend your late teens or early twenties in front of your computer at a startup. If you're a young person, I think the very best thing you could do is get together with a group of friends and commit to a one year experiment in which the substantial part of your life will be focused on discovery and not be dedicated to wage work -- however that looks for you. Get an instrument, learn three chords, and go on tour; find a derelict boat and cross an ocean; hitchhike to Alaska; build a fleet of dirigibles; construct a UAV that will engage with the emerging local police UAVs; whatever -- but make it count. 


Moxie Marlinspike