Tuesday, June 21, 2011

Apodos con Git (Git Aliases)

Hace algunos años cuando empece a usar git una de las cosas que más me molestaba como viejo usuario de svn era cuando escribía:

git st

Eso era por que yo recordaba y añoraba algunos shortcuts con los que cuenta svn, por ejemplo:

svn st
svn ls
svn ci

Ese era mi único problema con Git y yo estaba resignado a vivir con el, pero un día cabilando decidí que algo no estaba bien, Git era muy bueno para hacerme padecer eso, ¡Linus no podía hacerme eso! ¡Imposible! Entonces, decidí leer el manual más detenidamente, y encontre Los Git Aliases , basicamente un alias, es una configuración que tu puedes poner globalmente o a nivel de tu proyecto. De repente todo hizo sentido: "Git no me dió el pescado por que me estaba enseñando como pescar"

Veamos como funcionan los aliases:

Para especificar un alias en un proyecto dado sólo basta con editar el archivo .git/config y añadir un alias en la sección correspondiente, por ejemplo:

[alias]
st = status

( Si quieren guardar esta configuración a nivel global necesitan editar $HOME/.gitconfig )

Y eso es todo, ¡Ahora ya puedo escribir mi estimado comando git st sin ningun problema!

Esta es una lista de aliases o apodos utiles que les quiero regalar

[alias]
st = status
ci = commit
br = branch
co = checkout
df = diff
lg = log -p
who = shortlog -s --
wip = !"git add -A; git ls-files --deleted -z | xargs -0 git rm; git commit -m \"wip\""
unwip = !"git log -n 1 | grep -q -c wip && git reset HEAD~1"
panic = !tar cvf ../git_panic.tar *

wip y unwip son para añadir o quitar trabajo en progreso, esto se lo robé a David Gageot, panic es para ejecutarse antes de que se acabe el mundo en 2012.

Espero y me manden sus mejores aliases ;)

Wednesday, April 13, 2011

Kindle 3, extraordinaria herramienta

Carecer de libros propios es el colmo de la miseria.
Benjamín Franklin


Durante los ultimos 2 meses he estado disfrutando de una nueva herramienta, un Kindle 3, después de mucho leer en el metro y muchos libros y pesos menos, me puse a pensar que es una herramienta que probablemente no se ha valorado lo suficiente en México por los programadores. A continuación voy a exponer mis razones.

1. Resuelve el problema de no tener librerías que vendan libros técnicos en México.

Las librerías existentes son una broma. Si eres un programador profesional después de algún tiempo ya te diste cuenta de que sólo encuentras libros obsoletos y a muy alto precio. Si compras tu libro para kindle en Amazon lo tienes inmediatamente en tu computadora o kindle. Sin gastos de envío y sin espera. Disponible en multiples dispositivos que se sincronizan entre sí.

2. Hay una aplicación de kindle para tu PC y Smarth aunque no compres el hardware.

Eso significa que puedes leer los libros en tu kindle, ipad o computadora mientras esta programando o siguiendo el texto. El libro se sincroniza automaticamente para que continues leyendo en tu computadora desde el punto en el que te quedaste en tu kindle o teléfono.

3. La cantidad de libros es muy buena y generalmente el libro es más barato.

4. No gastas papel por lo que ayudas a cuidar el planeta un poco más.

En suma quería expresar lo valiosa que considero está herramienta para hacerse de bibliografía técnica. Ojalá les sirva para resolver el problema de las pocas opciones que tenemos en México.

Colofón: Después de 7 años librerías Gonvill cambio la imagen de "Proximamente" por esta página: www.gonvill.com.mx . Si eso tomo 7 años podemos esperar la opción de buscar libros durante el 2020.

Saturday, March 19, 2011

El programador apasionado




"Nada de que ahí se va, ¡Hagalo bien cabrón!"
- Tomado del letrero de los mercados mexicanos.


Durante las pasadas dos semanas volvía a leer el libro "The Passionate Programmer", lo quería recomendar a los que puedan llegar a leer el blog por que creo se basa en muchos consejos que los van a ayudar a hacer y a tener una mejor carrera en el mundo de la programación, y aún si no son del mundo de la programación creo les puede ayudar a tener una actitud emprendedora y sobre todo una independencia sobre todos sus empleadores. Tener esa independencia y saber que uno es libre de esa manera es un sentimiento que les recomiendo mucho buscar. Aquí les van algunas ideas del libro que recomiendo rescatar.

1. El libro se basa en recetas para llegar a ser de los mejores en la programada, si ustedes estan interesados en un trabajo de 9 a 6 sin preocupaciones y sin pasión, probablemente no sea para ustedes (Y es probable tampoco lleguen a leer este blog), pero es probable ustedes quieran mejorar día a día y este libro les va a abrir las puertas a muchos trabajos mejores, con mejores compañeros y mejores proyectos.

2. Ayuda al crecimiento personal en muchas maneras, sobre todo a tener control sobre tu futuro, en 2007 me tocó ver como muchos Ingenieros perdieron su trabajo en IBM Guadalajara y se encontraban en un mercado que no necesitaba su experiencia como consecuencia tenían que cambiar su manera de vivir, siempre he creído en tener control de mi carrera sin importar lo que mi gerente me diga que hacer, esto implica que tu tienes que saber que estudiar, cuando estudiarlo y cual es el siguiente paso. En el libro encontraras muchas recetas para hacerlo.

3. Los cambios de especialidad no son malos. Si en algún momento cambias de Programador a Project Manager o de Programador a Tester, no es malo, al contrario habilidades skills a tu futuro.

4. Te incita a ser mejor, si no te gusta tu empresa, no te quejes, cambia. Si no te gusta ninguna empresa, no te quejes, haz la tuya. A final de cuentas ya eres libre al aplicar estos consejos :)

5. Este es el punto más importante, lo deje al último como postre, pero la idea principal es "Ser fregón", ser fregón es hacer las cosas bien, es ganar y ganar bien, siempre he creído que al mismo tiempo que se gana se le deba dar la misma importancia a como se ganó. Nunca he sido participe del Necaxa (Ganar jugando mal), se debe ganar, claro, pero no hay ningún chiste en ganar si no lo haces bien y sobre todo disfrutando, se pueden ganar campeonatos jugando mal y sirve un poco, pero nadie recuerda al Necaxa y todos recuerdan al Toluca. Tu vida no debe ser aburrida, este libro no es como ganar un mejor sueldo estando todo el día en el Facebook, es sobre como ser el mejor, como ser el Pipiripau, como ser el Muchacho chicho de la película gacha, como ser recordado cuando ya no estes. A final de cuentas esto es lo que haces en la vida. Disfrutar lo que haces es lo mejor que puedes hacer para dejar huella en este mundo.

Para mas informes les dejo el libro como referencia:

Link: http://www.pragprog.com/titles/cfcar2/the-passionate-programmer
ISBN: 978-1-93435-634-0

Friday, February 4, 2011

No hagas tacos de tlacuache

Todos hemos estado alguna vez en esta situación:

Pedrito es el nuevo encargado de los tacos de la esquina, llega un cuate y pide una orden grande con todo, una quezadilla y un agua de horchata grande (¡con fresa!), saca una moneda de 10 pesos y Pedrito se da cuenta eso es todo lo que trae el cliente, la comida completa normalmente cuesta 50 pesos, más propina.

Pedrito, siendo un encargado orgulloso, quiere satisfacer a su clientela. No le puede dar los tacos normales así de baratos por que el cliente podría venir diario, esperando su descuento. Pedrito entonces tiene una idea. Saca el tlacuache que atropello con la cuatrimoto al poner el puesto de tacos, lo cocina y se lo da al cliente.


Pedrito sacrificó la calidad de los tacos para darle al cliente lo que pidió, por lo que tenía para pagar.

Existen muchos problemas con esta solución, el cliente puede regresar y pedirte 10 ordenes para llevarle a su familia y no vas a poder conseguir 10 tlacuaches, puede enfermarse y demandarte. En general no va a funcionar por más que quieras darlo todo al mismo tiempo.

La solución es que negocies entregarle un poco menos al cliente. A lo mejor esta dispuesto a aceptar un taco solamente para aguantar el hambre o simplemente puede ir a pedir prestado, como sea es un buen servicio el que estas dando y a la larga es mejor para ti y para tu empresa.

Siempre debemos trabajar con estimados realistas basados en la calidad que persigues al hacer un sistema, de lo contrario no vas a poder dar un buen servicio y en un futuro cercano tus clientes se irán. O terminaras presionando a tus empleados y en un futuro cercano se irán. Normalmente es un trato en el que todos pierden.

Este relato lo traduje de un término muy conocido en el mundo Agile llamado (Don't make squirrel burgers) por si quieren ahondar más en el tema

Wednesday, April 14, 2010

Se buscan programadores en Guadalajara

Mi empresa está buscando programadores estrella, ustedes saben como definirlo si lo son, si no lo son probablemente esto ayude:

- Han programado muchos programas, no me refiero a que leyeron libros y saben como funcionan las cosas, si no que además han realizado programas exitosamente.
- Los maestros les preguntaban a ustedes en la Universidad, no siempre, pero si crearon ese ambiente de confrontación con el profe.
- Su computadora es su amiga, literalmente con nombre y apellido.
- Se hablan de tu con sus lenguajes y OS preferidos, conocen sus recovecos.
- Si su abuelita entendiera su código, no les daría pena mostrarselo.
- Son apasionados de lo que hacen, discusiones sobre Java vs C# y Unix vs Linux les han costado más de un amigo.
- A veces programan a deshoras y ante el reclamo familiar, responden "¿Qué tiene de malo?"
- Humor, a nadie le interesa programar con alguién aburrido.
- Buen gusto, nuestras salas de conferencia se llaman, El Santo, el Cavernario, Blue Demon y el Bulldog, date una idea.
- Proyectos mascota, tienes tu portafolio listo, mantienes código abierto, algo así.
- Somos una Java shop, necesitas ser muy bueno en Java.

Si, conoces a alguíen así denuncialo a oscar [at] mexicanhacker[dot]com. Tenemos un lugar divertido para ustedes en Guadalajara.

Wednesday, February 3, 2010

Actualizar de Ubuntu 8.04 a 9.10

Si el usuario paga el desarrollador dice: 'Gracias, en 6 meses habrá una actualización, comprala y entonces el problema estará resuelto'.
Richard Stallman


Normalmente uso Ubuntu en casa y en la Mac tengo una VM donde puedo hacer y deshacer cosas que me gusta probar, por ejemplo probar GNOME-DO y otros proyectos locales que hago bajo pedido. La Mac sigue siendo mi primera opción pero me gusta empaparme de la versión no tan afortunada economicamente de Linux en dado caso que la necesite.

Al querer probar unas cosas quise actualizar Ubuntu a la versión más nueva, 9.10 en el momento, yo tenía 8.04LTS (LTS significa que es un release que tendrá soporte por mucho tiempo) por lo que me dí cuenta que la opción de hacer upgrade no salía, aquí una muestra:




ahí el primer problema, así que para obtener la siguiente versión puedes hacer esto. Ve a System > Administration > Software Sources como lo indica la siguiente imagen:




Una vez ahí en la pestaña de "Updates" cambia el valor de Release Upgrage a ser "Normal Releases" en vez de "Long Term Support Releases Only", despues trata de actualizar de vuelta y verás:



Con esa opción estarás libre para actualizar tu versión de ubuntu. Es probable de 8.10 tengas que actualizar a 9.04 y luego a 9.10 pero como sea no necesitaré instalar todas mis preferencias otra vez.

En otros posts les hablare de la ventaja de GNOME-DO y más herramientas de GTD, así como también de mi evaluación de Fedora 12, las versiones anteriores no me gustaron tanto, pero sigo suspirando por una versión de RedHat que me haga regresar.

Wednesday, January 20, 2010

Torre a Línea de Comandos, torre a línea de comandos




Hace unos días algunos compañeros de trabajo nos dieron como recomendación el volvernos profesionales en el uso de algunos comandos de UNIX (sed, grep, uniq, awk), con el tiempo he ido incorporándolos a las herramientas que uso, pero durante este año uno de mis propósitos es vivir el evangelio de GTD y Pragmatic Programmer tanto como se pueda.

He visto que no es muy comun que un programador use este tipo de herramientas en la industria Mexicana y es algo que podemos mejorar, creo que es parte por que al trabajar mucho en Windows, nos olvidamos de los beneficios de la línea de comandos, y poco a poco nos vamos haciendo más dependientes de los asistentes de código, que aunque son útiles para ciertas tareas, también se requieren muchos clicks para poder realizar una acción que un par de comandos podrían realizar.

Si usas Windows puedes probar con Cygwin para tener algunos de estos comandos disponibles, pero si puedes te recomendaría probar desarrollar con Linux o alguna versión de Unix, es realmente más productivo y veremos por que. En este post vamos a tomar como referencia OSX Leopard.

Las ventajas de las línea de comandos son muchas por ejemplo:

1.Puedes abrir la línea de comandos con un par de teclas sin retirar las manos del teclado para tomar el ratón, hecho esto puedes buscar cuales son todas las clases que contengan "todo" en tu proyecto con un par de comandos.

2.Los comandos normalmente tienen nombres cortos. Lo que implica menos teclas que necesitan ser oprimidas.

3. La tecla tab nos proporciona la ayuda al auto completar los comandos y direcciones de archivos.

4. La ayuda se encuentra autocontenida, basta con teclear man grep, para obtener la ayuda y ejemplos de grep en la misma pantalla.

5. Toda la ayuda y opciones es más o menos similar, lo cual ayuda al programador a manejar sólo un punto de vista.

6. Los comandos pueden ser puestos en un Shell Script para después ser ejecutados en serie, lo cual es una de las mayores ventajas ya que permite automatizar tareas.

7. Los comandos son más o menos universales lo cual te ayuda a ejecutar las mismas tareas en tu servidor de Producción o Pruebas, que es muy probable sea basado en UNIX.


Estas sólo son algunas de las ventajas que la línea de comandos nos proporciona, así que ¿Por que no le das una prueba, ya veras como producirás mejor en poco tiempo.

Algunos comandos para empezar son:

ls ,grep, awk, sed, uniq,

En Linux puedes llamar el comando fortune y te dirá que te depara el destino. :)