The Cultural Defeat of Microsoft

Many people (by which I mean many Windows users”) don’t realize the huge difference between “the Windows way of doing things” and, basically, everyone elses’ way, i.e: the POSIX world which comprises all of the Unices, Linux, BSD and even OS X.

Hugo Landau writes:

From the perspective of POSIX, Windows is “alien technology” […] Windows and POSIX are fundamentally different in many ways, and lead to further “cultural” differences in how software is developed on these platforms. Windows and POSIX, then, are two “cultures”, the technical differences of the core technology itself being only a small part of that.

Read the entire piece at: The Cultural Defeat of Microsoft

Using Bootstrap the right way

There are many ways to misuse Bootstrap, but it’s entirely possible to use it on a better way with a few tweaks on your process.

Use it as an external package

The greatest thing about Bower it’s not the ability to download whatever library or script but to use it as the package manager it’s intended to be, which primarily means to never modify packages installed with Bower.

There’s a simple reason for this: one of the key advantages of using a package manager is being able to keep your packages up-to-date, and since a package manager it’s not a version control system, whatever changes you make to an installed package will be lost with an update.

In the case of Bootstrap, here’s what I do:

Continue reading “Using Bootstrap the right way”

Utilizando funciones anónimas y closures para ordenar un array en PHP

Las funciones anónimas y closures son relativamente nuevas en PHP, y son una adición que nos puede ser muy útil.

Si necesitas ordenar los elementos de un array de forma personalizada (es decir, con una función de comparación definida por el usuario como en el caso de usort, uasort o ksort) puedes utilizar una función anónima y closures para hacerlo de forma muy fácil y directa.

// $elements tiene los elementos sin ordenr

// $order tiene el orden de los elementos
// debe estar definida en el scope superior
$order = get_option('user_defined_order');

usort( $elements, function($a, $b) use ($order) {
	$a_index = array_search($a->ID, $order);
	$b_index = array_search($b->ID, $order);
	if ( $a_index > $b_index ) return 1;
	if ( $a_index < $b_index ) return -1;
	return 0;
});

Clonar un repositorio de Git a un directorio no vacío

Cuando estás clonando un repositorio de git, sólo tienes la posibilidad de hacerlo creando un nuevo directorio o bien hacerlo en un directorio vacía; sin embargo, en maś de una ocasión es posible que debas re-utilizar un directorio ya existente en el servidor pero que no puedes renombrar, sino solamente cambiar sus contenidos.

Una solución un poco artesanal, pero que funciona, es la siguiente:

… Y cuando estés absolutamente seguro de que no necesitarás ningún archivo de las copias de respaldo puedes borrarlas y listo.

Réquiem para Bazaar

Después de haber trabajado por el suficiente tiempo con SVN (Subversion), descubrir Bazaar fue una verdadera revelación: tenía todas las ventajas de un sistema de control de versiones descentralizado, y a la vez podía implementar un flujo de trabajo tan sencillo como en SVN mientras aprendía las ventajas de trabajar de forma descentralizada. Por ello, convencer a mis compañeros de equipo de comenzar a utilizarlo fue una tarea relativamente sencilla: en la mayoría de los casos podíamos seguir trabajando del mismo modo en que estábamos acostumbrados, y ante necesidades más complejas bzr tenía las herramientas necesarias para hacerles frente.

Continue reading “Réquiem para Bazaar”