Entrevista a Alfredo Moreno, fundador de Time of Software

19/09/2017
Artículo original

Espero y este post sea de tu agrado, no olvides compartirlo en su redes sociales y sobre todo.. Gracias por seguirnos!

¿Conoces Time of Software? Si eres una persona relacionada al mundo del desarrollo de software seguro que si! Hoy vamos a conocer un poco más a detalle la historia del blog Time of Software y de su fundador Alfredo Moreno en esta fascinante entrevista. Time of Software de Alfredo Moreno Time of Software es un fascinante blog de software que si te dedicas a esto y no lo conoces debes de pasarte por él. El día de hoy vamos a conocer a detalle la historia de este blog asi como la de su fundador, Alfredo Moreno. Antes que nada quiero

Compartir en Facebook

Comparte en Google Plus

Compartir en Twitter

El post Entrevista a Alfredo Moreno, fundador de Time of Software aparece en el Blog de Jonathan Melgoza

Consejos para el inicio de tu emprendimiento

19/09/2017
Artículo original

Espero y este post sea de tu agrado, no olvides compartirlo en su redes sociales y sobre todo.. Gracias por seguirnos!

¿Estás por iniciar un emprendimiento? Hoy te voy a platicar un poco sobre mi experiencia al dejar mi trabajo tradicional y comenzar mi propio negocio, algunos consejos para el inicio de tu emprendimiento que estoy seguro que te servirán bastante para lograr el éxito que estas buscando. Hace ya casi dos años que abandone mi trabajo tradicional en una empresa de miles de empleados donde solo erá uno más de muchos y que además sentía que estaba desperdiciando mi vida y deseaba con todo mi ser hacer algo por mi mismo. Tal vez tu estás en esta situación ahora pensando

Compartir en Facebook

Comparte en Google Plus

Compartir en Twitter

El post Consejos para el inicio de tu emprendimiento aparece en el Blog de Jonathan Melgoza

¿Cómo agregar botones sociales en el RSS de WordPress?

19/09/2017
Artículo original

Espero y este post sea de tu agrado, no olvides compartirlo en su redes sociales y sobre todo.. Gracias por seguirnos!

¿Tienes un blog con WordPress? Hoy aprenderemos a agregar botones sociales en el RSS de tu WordPress, de esta forma tus lectores de RSS podrán visualizar botones de compartir en Facebook, Google Plus y Twitter para que tus lectores compartan tu contenido fácilmente. El día de hoy veremos rápidamente como agregar a nuestro RSS en WordPress un pequeño código para visualizar botones sociales de Facebook, Google plus y Twitter. De esta forma en nuestro RSS de WordPress se agregará un codigo con los botones sociales para compartir el contenido, cuando un lector de RSS lea tu contenido también agregará estos

Compartir en Facebook

Comparte en Google Plus

Compartir en Twitter

El post ¿Cómo agregar botones sociales en el RSS de WordPress? aparece en el Blog de Jonathan Melgoza

Sitio web y correos con diferente proveedor

19/09/2017
Artículo original

Espero y este post sea de tu agrado, no olvides compartirlo en su redes sociales y sobre todo.. Gracias por seguirnos!

¿Quieres tener tu sitio web con un proveedor de hospedaje y los correos con otro? Hoy vas a aprender a realizar los ajustes necesarios en tu nombre de dominio para redirigir el trafico de tu sitio web a un proveedor de hosting y los correos a otro proveedor, ¿Quieres aprender a configurar tu sitio web y correos con diferente proveedor de hospedaje? Sigue leyendo! Recientemente tuve la necesidad de realizar este ajuste para un cliente y aunque no es la primera vez me dí cuenta que no lo había publicado en el blog! Vaya pecado! Antes que nada debemos definir

Compartir en Facebook

Comparte en Google Plus

Compartir en Twitter

El post Sitio web y correos con diferente proveedor aparece en el Blog de Jonathan Melgoza

Cambiar de dominio en WordPress

19/09/2017
Artículo original

Espero y este post sea de tu agrado, no olvides compartirlo en su redes sociales y sobre todo.. Gracias por seguirnos!

¿Estas por cambiar de dominio en WordPress? ¿No sabes como hacerlo o tienes un poco de miedo? No te preocupes! Hoy te voy a mostrar como hacer un correcto cambio de dominio en WordPress con simples y fáciles pasos para que no te pierdas y todo salga a la perfección! Hace un par de semanas realice una guia para cambiar wordpress de http a https, es decir, configurar un certificado SSL en este CMS, ahora recientemente me encontré con un cliente en la necesidad de cambiar de dominio un sitio en WordPress que tenia una letra Ñ en él y

Compartir en Facebook

Comparte en Google Plus

Compartir en Twitter

El post Cambiar de dominio en WordPress aparece en el Blog de Jonathan Melgoza

Actualizar automáticamente el kernel en Gentoo

15/09/2017
Artículo original

Llevo unos cuantos años usando Gentoo, y cada vez que salía una actualización del kernel terminaba visitando la página Kernel/Upgrade de la Wiki de Gentoo. Tras casi aprenderme los pasos de memoria, decidí que iba siendo hora de escribir un script que automatizara el proceso.

El script es bastante simple, lo publico por si a alguien le resulta útil:

#!/usr/bin/env bash

## Upgrade gentoo kernel

# The first and only argument must be the folder name of the new kernel.

# Stop script when an error occurs
set -o errexit
set -o pipefail
set -o nounset
# For debugging purposes
set -o xtrace

readonly kernel_path='/usr/src/'

_usage () {
    local script_name="$0"
    echo "Usage: $0 <newkernelfolder>"
}

_main () {
    echo "Backing up old kernel..."
    cd "${kernel_path}/linux/"
    cp .config ~/kernel-config-"$(uname -r)"
    echo "Copying old configuration..."
    cp /usr/src/linux/.config /tmp/.config
    echo "Setting new kernel as default..."
    #ln -sf /usr/src/"$1" /usr/src/linux
    cp /tmp/.config /usr/src/linux/
    eselect kernel set 2
    cd /usr/src/linux/
    echo "Building..."
    make -j4 olddefconfig
    make -j4 modules_prepare
    emerge --ask @module-rebuild
    make -j4
    make install
    echo "Please, update your EFI entry: cp /boot/vmlinuz-*-gentoo /boot/efi/boot/bootx64.efi"
}


if [[ $# -eq 1 ]]
then
    _main $1
else
    _usage
fi

Para usarlo basta con ejecutar:

$ sudo ./updatekernel.sh <nombre-carpeta-kernel>
## por ejemplo
$ sudo ./updatekernel.sh linux-4.12.12-gentoo

El script se puede mejorar aún bastante, si te apetece contribuir, está alojado en mi repositorio de Dotfiles.

Tras escribir el script, me dí cuenta que portage tiene una opción para añadir hooks a los paquetes, concretamente hay uno para que el kernel se compile e instale automáticamente. Al probarlo me dí cuenta de que no usa el .config del kernel anterior. Seguramente se pueda configurar para que lo haga, pero ya que escribí el script, decidí usarlo.

Espero que te sea útil!

Las 5 principales causas de infelicidad entre los programadores

15/09/2017
Artículo original

Imagen ornamental - Estatua de piedra de un ángel en un cementerio

(Fotografía de maggyona en Pixabay - CC0)

¿Eres feliz como programador? Desde ya hace mucho tiempo venimos escuchando que una de las mejores maneras de incrementar la productividad y la calidad del software de un desarrollador de software es centrarse en las personas y proporcionarles estímulos para que se sientan felices y satisfechos.

Recientemente se ha publicado un estudio sobre la "Infelicidad entre los desarrolladores de software" (PDF, 597KB) por parte de varios investigadores de Universidades de diferentes partes de Europa: la Universidad de Stuttgart (Alemania), la Universidad de Bozen-Bolzano (Italia), y la Universidad de Helsinki (Finlandia). En dicho estudio intentan identificar aquellas causas más comunes que producen frustración entre los desarrolladores de software.

La investigación parte de la idea de la importancia de la gestión de las personas en el sector de la programación, ya que el desarrollo de software es una actividad intelectual que exige muchas destrezas humanas difíciles de medir a priori, como la alta capacidad analítica de cara a la resolución de problemas o la creatividad a la hora de enfrentarse a un proceso de creación de software.

Según diversos estudios en psicología (y también según lo que dicta el sentido común) los estados afectivos, el estado de ánimo y las emociones, afectan en gran medida las capacidades del proceso cognitivo y el rendimiento de los trabajadores, incluidos la creatividad y la capacidad de resolución de problemas de forma analítica.

Hoy en día todas las empresas tecnológicas intentan "vender" la imagen de tener un buen entorno laboral, de buen rollo, donde las personas se lo pasan bien trabajando. Ofrecen desde cosas extravagantes como un lugar de trabajo poco convencional (con toboganes que unen diferentes plantas o zonas de juego o de siesta, cada empresa según sus posibles), hasta incentivos como vacaciones extra o incluso ilimitadas, cafetería de comida sana incluida en el sueldo... siempre se están buscando cosas para satisfacer a los empleados y tenerlos contentos.

La lógica nos dice que los desarrolladores que se sienten felices son mejores en su trabajo y no es una idea innovadora en absoluto. Si estamos contentos, nos lo pasamos bien y seguimos aprendiendo cosas con un espíritu optimista, vamos a ser más rentables y productivos en el lugar de trabajo.

Dentro de los hallazgos del citado estudio, se concluye que existen más de 200 causas de infelicidad concretas. Pero si hacemos una pequeña abstracción, identificamos dos categorías:

  • Causas internas, relacionadas con la forma de ser del desarrollador, derivadas del comportamiento personal de la persona y las consecuencias de estos actos.
  • Causas externas, que se centran en cómo afectan a los desarrolladores los hechos sobre los cuales no tienen ningún control.

Evidentemente estas dos categorías son tan amplias que se hace complicado determinar cuáles son las fuentes concretas de insatisfacción e infelicidad. Por esta razón los investigadores las diseccionaron en 18 sub-categorías, para facilitar la identificación de las causas específicas que provocan infelicidad. A continuación, extrajeron las principales causas de infelicidad entre los desarrolladores de software.

5 principales causas de infelicidad: categoría y frecuencia

 

Causa Categoría Frecuencia
Quedarse atascado programando Causa interna (forma de ser) 186
Presión por los plazos Causa externa (procesos) 152
Mal código / Malas prácticas Causa externa (código de terceros) 107
Compañero con bajo rendimiento Causa externa (co-trabajadores) 71
Sentirse inadecuado para el trabajo Causa interna (forma de ser) 63

 

Como podemos observar en la tabla, 3 de las primeras 5 causas de infelicidad son externas, y 2 internas.

Seguro que muchos nos sentimos identificados con esas causas externas de insatisfacción: plazos muy ajustados, heredar un código ilegible, compañeros que rinden menos de lo esperado, etc...

En este sentido, al ser causas externas, la empresa puede intentar remediar la situación implementando procesos que ayuden a mejorar la política de plazos y la metodología usada en cada tipo de proyecto (que también ayuda a mejorar la calidad del código), y con la puesta en marcha de estrategias de recursos humanos que ayuden a que los equipos de trabajo den lo mejor de sí mismos (formación continua, revisión a pares, coaching, etc...).

Sin embargo, las causas internas son más difíciles de gestionar. Vemos que la primera causa de infelicidad es la de quedarse atascado en un problema programando. Esta sensación de estar atrapado en un problema es muy común en el mundo del desarrollo del software, y es inevitable no quedarse atascado programando. Es algo que forma parte intrínseca del trabajo.

Programar es también sentir frustración por no poder solucionar un problema a la primera de cambio. Los buenos programadores son aquellos que mejor mantienen la lucidez y la motivación en este tipo de situaciones y son capaces de solucionar los problemas sin sentir mucho el desgaste de energía que provoca la frustración.

Otra de las causas internas se da cuando el programador se siente inadecuado para la tarea en cuestión. Se puede deber a varias razones que van desde el desconocimiento de algunas de las herramientas o lenguajes de programación que tiene que usar para desempeñar una tarea, hasta el "síndrome del impostor" que se da en personas ya experimentadas y que tienen cierto reconocimiento por parte de sus compañeros y jefes, y que en ciertos momentos dudan de sus propias capacidades y se sienten un "fraude".

La formación en la vida de un programador es una constante. Hay que medirse, porque los lenguajes, frameworks, y demás herramientas de software tienden a infinito y es imposible sabérselo todo. Lo importante es saber apostar por aquellas herramientas consolidadas y los lenguajes con recorrido, y no estar siempre intentando seguir la última moda.

El síndrome del impostor es algo que puede llegar a sentir cualquier persona con cierto recorrido profesional, y que va más allá de sentir o no confianza en uno mismo. Es evidente que un buen profesional siente confianza en sí mismo. Otra cosa es creer que puedes mantener el nivel infinitamente (cosa que es muy difícil) y es normal que un trabajador competente dude. Dudar es de sabios.

Lo importante en estas situaciones es repasar situaciones en el pasado en las cuales has dudado de ti mismo y en las que al final has salido airoso. Es una terapia infalible, y ayuda a mejorar la autoestima en los momentos más delicados.

Los números del estudio

El citado estudio está basado en una encuesta a más de 2,200 desarrolladores, de 88 países diferentes, y la nacionalidad más representada era la estadounidense, que supusieron un 24% de los encuestados. La mayoría de los participantes eran varones (94%), con una media de 8,2 años de experiencia, y la mayoría nacidos en torno a 1984.

De todos los encuestados, el 75% tenía como tarea principal el desarrollo de software. Solo un 8% hacían labores de gestión y dirección como CEOs, CTOs, etc. Un 10% de los participantes declararon desarrollar software por afición o de forma voluntaria no- remunerada.

Conclusión

Estar felices y contentos en el lugar de trabajo es clave en el rendimiento y la productividad de cualquier trabajador en cualquier sector. El desarrollo de software además permite ciertos incentivos que no todos los sectores se pueden permitir como el tele-trabajo y la flexibilidad.

Las causas externas de infelicidad citadas pueden solucionarse desde dentro de la empresa, mejorando la estrategia de recursos humanos y los procesos de trabajo.

Las causas internas tienen que ver más con la voluntad de las personas para crecer y mejorar. La empresa puede incentivar de algún modo la formación y la mejora personal, pero sin el convencimiento de su utilidad por parte de las personas que trabajan para la empresa, dichos esfuerzos no son muy efectivos.

ASP.NET: separando el web.config de nuestra aplicación en varios archivos

14/09/2017
Artículo original

Imagen ornamental - icono de archivo .config El archivo web.config contiene toda la configuración de nuestras aplicaciones web basadas en .NET. En él se puede encontrar de todo: desde las cadenas de conexión a las bases de datos, hasta los detalles de cómo debe funcionar Internet Information Server, pasando por todo tipo de parámetros propios de la aplicación que hemos desarrollado.

A veces este archivo puede llegar a ser enorme. Además existen ciertas configuraciones que quizá nos gustaría poder gestionar de manera separada, por ejemplo porque son especialmente privadas (claves y cosas así) o quizá porque quiénes deben gestionarlas son otras personas.

Un ejemplo muy habitual son las cadenas de conexión a las bases de datos. Otro también común es la lista de reglas del módulo de re-escritura de URLs de IIS (módulo URLRewrite, equivalente al conocido .htaccess de Apache, si no lo conoces ya estás tardando).

En concreto con URL Rewrite hay ocasiones en las que el archivo puede ser kilométrico, sobre todo si utilizamos mapeos de direcciones para redirigir muchas direcciones antiguas a nuevas. Además, si la gestión de esto la lleva un webmaster o alguien de sistemas que no tiene por qué ser programador, no querremos que meta las zarpas en nuestro precioso archivo de configuración.

En estos casos lo más inteligente es extraer fuera de web.config la información que queramos tratar individualmente.

Para ello el "truco" es utilizar un útil atributo de las secciones de configuración llamado configSource. Este atributo permite indicar el nombre de un archivo en el que se almacena el contenido del nodo de configuración al que se le aplica.

Por ejemplo, consideremos un nodo de configuración de URLRewrite para mapas de direcciones, que sería algo así:

<rewriteMaps>  
  <rewriteMap name="Páginas Eliminadas">  
    <add key="/carpetaVieja/articulo.html" value="/CarpetaNueva/articulo/" />  
    <add key="/productos.php" value="/Catálogo/" />  
    ......
  </rewriteMap>  
</rewriteMaps>

Este tipo de listas puede ser larguísima, y además pueden existir varias (varios nodos de tipo rewriteMap).

Podemos llevarlas individualmente, cada una a un archivo externo, o todas juntas en un único archivo para los mapas usando este atributo.

Por ejemplo, si cambiamos todo lo anterior por esto:

<rewriteMaps configSource="mapas.config" />

ahora podremos crear un archivo en disco llamado mapas.config que contendrá los nodos necesarios para definir las re-escrituras, es decir, contendrá exactamente lo mismo que el primer fragmento de configuración:

<rewriteMaps>  
  <rewriteMap name="Páginas Eliminadas">  
    <add key="/carpetaVieja/articulo.html" value="/CarpetaNueva/articulo/" />  
    <add key="/productos.php" value="/Catálogo/" />  
    ......
  </rewriteMap>  
</rewriteMaps>

Lo que hace ASP.NET es sustituir el nodo con el atributo configSource por el contenido del archivo, lo que enla práctica deja el web.config como estaba inicialmente. pero para nosotros la cosa cambia puesto que ahora podemos gestionar esta configuración en particular de manera separada a las otras.

Podemos repetir este proceso con todas las secciones que nos interesen, reduciendo el tamaño del archivo y dándole acceso a cada cosa a quién verdaderamente lo necesita. Además de este modo podremos tener también archivos diferentes de ciertas configuraciones para desarrollo, pruebas y producción, por ejemplo, gestionándolos de manera más cómoda y segura.

¡Espero que te parezca útil!

Curiosidades programando Java

14/09/2017
Artículo original

Hoy les voy a mostrar algunas curiosidades que se pueden hacer con código Java que puede que algunas sirvan y algunas pues solo para divertirse:

1.- Crear en línea una colección mediante una clase anónima y un bloque inicializador de instancia en lugar de hacerlo con Arrays.asList:

public static void main(String[] args) {
       
        List<Integer> lista = Arrays.asList(7,9,1);
        lista.add(3);
        System.out.println(primera);
}

El inconveniente de usar Arrays.asList es que debido a que la lista se genera desde la raiz de un arreglo, estos por naturaleza tienen un tamaño definido y no puede redimensionarse por lo tanto la lista generada no soporta la operación add o alguna otra que intente modificar el tamaño y devuelve UnsupportedOperationException.

public static void main(String[] args) {
       
        List<Integer> lista = new ArrayList() {{ add(7); add(9); add(1)}};
        lista.add(3);
        System.out.println(primera);
        System.out.println(primera.getClass());
}

leer más

Yarn 1.0 está ya aquí

13/09/2017
Artículo original

Logo de Yarn

Hace casi un año (10 meses y 22 días meses para ser exactos) os informamos del lanzamiento de la herramienta Yarn, creada por Facebook para sustituir y mejorar a npm (el gestor de paquetes de Node.js). npm juega un papel cada vez más importante en todo tipo de desarrollos, tanto en back-end como en front-end, pero tenía algunos problemas que lo hacían inviable en proyectos muy grandes como los que maneja Facebook. Por ejemplo, su lentitud y el hecho de que no era predecible en cuanto a la manera de descargar las dependencias. Esos eran los motivos principales de haber creado Yarn.

Desde su lanzamiento muchos programadores han adoptado Yarn como un sustituto inmediato de npm, ganando sobre todo en velocidad y comodidad de uso. Sin embargo npm se ha puesto las pilas y presentó hace poco su versión 5 que solucionaba algunos de esos problemas, quedando (casi) en igualdad de condiciones con Yarn. Pero solo casi...

Ahora Yarn vuelve a adelantarles por la derecha con el lanzamiento de su versión 1.0, dando el paso a la madurez con este número de versión y añadiendo algunas novedades interesantes.

Entre las características a destacar de Yarn 1.0 tenemos:

1.- Espacios de trabajo (Workspaces)

Permiten la capacidad de agregar e instalar dependencias desde varios archivos package.json en varias carpetas, sincronizando además las dependencias entre todos ellos.

Esto es muy útil para proyectos de tipo "monorepo" (es decir, con un solo repositorio de código) pero que realmente gestionan varios sub-módulos que pueden funcionar por separado. Los workspaces te permiten que cada subcarpeta que te interese pueda tener su propio package.json y por lo tanto que se pueda compilar por separado, mientras que si lo deseas puedes compilar todos a la vez (o un proyecto mayor en el raíz que hace uso de los demás) sin tener que ir uno por uno.

Ejecutas yarn install en la raíz y obtienes las dependencias de todos. Así de sencillo.

Puedes leer la documentación oficial para ver algún ejemplo de uso. Es especialmente interesante saber que se pueden usar patrones de tipo "Glob" para definir los sub-módulos.

2.- Auto-mezcla de archivos de bloqueo (lockfiles)

Si en un mismo proyecto trabajan muchas personas que añaden dependencias a los archivos package.json, es muy fácil que se pueda producir un conflicto (en el control de código fuente) en el archivo yarn.lock (o en package-lock.json que es el que usa npm 5+), que controla el orden y las versiones de los paquetes que se van a instalar en local en cada equipo.

Resolver este tipo de conflictos manualmente es sencillo, pero si hay muchos puede ser tedioso y delicado.

La nueva característica de auto-mezcla de Yarn 1.0 hace que se resuelvan automáticamente al usar yarn install, dejando el archivo sin conflictos en disco para que lo único que tengas que hacer es marcarlo como "resuelto" en Git.

Yarn auto-merge

3.-Resolución de versiones selectiva

Una situación lamentablemente común es la siguiente: tu proyecto utiliza una serie de dependencias, y uno de los paquetes de los que dependen éstas a su vez, lanza una actualización que resuelve un bug o un problema de seguridad importantes. Si el paquete que utiliza tu aplicación no se actualiza para forzar el uso de la nueva versión corregida, tu aplicación seguirá usando como dependencia de segundo nivel (o más) un paquete con problemas.

Para evitar este problema ahora Yarn permite añadir una sección resolutions al archivo package.json que indica a la herramienta qué versiones específicas de ciertos paquetes queremos usar, aunque la dependencia que se marca sea con otra versión.

Opción resolutions en acción

Consulta la documentación de esta característica.

4.- Otras cosas

Lo anterior es lo más destacable y llamativo, pero esta versión trae multitud de otras cosas:

  • Mejoras en la experiencia de actualización interactiva de paquetes
  • Verificación de la integridad de archivos más rápida
  • Ahora puedes incluir en tu proyecto el "parser" de los archivos de lock como un paquete npm.
  • La posibilidad de delegar la ejecución de Yarn a una versión específica de la herramienta, de modo que aseguremos que todo el equipo usa la misma.
  • Un montonazo de arreglos de pequeños bugs.

Puedes ver el log completo con todos los cambios aquí, así como el anuncio oficial de la versión.

Seguro que npm no tarda en añadir características similares, pero mientras tanto Yarn va un paso por delante.

Página Anterior Página Siguiente