27.6.11

20 cosas que he aprendido sobre la web

En realidad son 20 cosas que han aprendido los de google sobre la web y que han liberado en un formato de libro HTML5 muy curioso.

http://www.20thingsilearned.com/es-ES/foreword/1

Además han liberado el código fuente del libro de forma que la gente pueda hacer otros libros parecidos. El libro no es técnicamente una maravilla pero tiene sus cosas y sobre todo las ilustraciones molan mucho :P

8.6.11

Eres un quisquilloso vs código bien escrito

for(int i = 0; i < 10; i++) {
     //do something
}



Cuando escribo código y la mayoría de las veces escribo en C/C++ uso una convención de espacios, paréntesis y llaves muy cuidadosa. Alguna vez me han llamado quisquilloso pero la mayoría de las veces dicen pijotero.

Lo importante no es los espacios ni donde están las llaves ni nada de eso, hay muchas convenciones y hay "guerras" por estas cosas cada vez que uno abre la boca, hay un montón de estilos con sus propias reglas, el que yo uso se parece bastante a BSD KNF. Para saber mas lo mejor es mirar la wiki.

Lo importante es que de un solo vistazo sabes claramente si estabas escribiendo las cosas cuidadosamente o muy de prisa. Si era muy de prisa, es también muy probable que el error esté por ahí cerca.Espero que esto os salve la mitad de horas que me ha salvado a mi por lo menos

7.6.11

La sensación del tiempo infinito

Cuando estas programando te enfrentas a un monton de problemas, la mayoría son problemas del propio código o del software que se está intentando desarrollar, esos problemas al final se solucionan. Hay otros problemas que son mucho más complicados de definir y de solucionar. Aqui es donde llega "La sensación del tiempo infinito".

Es una sensación que tiene el programador cuando no avanza, cuando cree que tiene un montón de horas por delante y avanza muy lentamente. El dia va pasando y la solucion no llega, no estas realmente atascado en el código pero no tienes un incentivo real para ir más rápido.

Es probablemente la peor sensación a la que se puede enfrentar un programador. Al menos de las peores a las que yo me he enfrentado.

¿Como se soluciona esto?

La respuesta rápida es: no lo sé. La respuesta larga es lo que peor me sienta es el código repetitivo que no es un reto sino más bien "Book keeping" como le llaman los ingleses. Asi que paso 1: evitar el código repetitivo automatizando todo lo posible

Lo siguiente que peor me sienta es tenerme que pelear con el IDE, la librería o el framework en vez de con mi problema, esto realmente es horrible y la única forma de solucionarlo que conozco es conocer tu entorno, esto cuesta mucho porque por cosas de la vida cambias de IDE, de entorno y hasta de sistema operativo.

Finalmente usar una PDA (Papel de apuntar), todas las mañanas escribo una pequeña lista de 4 o 5 cosas que tengo que hacer y al terminarlas voy tachandolas, esto da la sensación de trabajo realizado y ayuda a ver como avanza el trabajo.

No todos los problemas se solucionan con un mejor algoritmo, algunos necesitan tener en cuenta al programador pero oye cuando funciona es casi arte.

28.5.11

Gmail pide un telefono para registrarse

Hoy quise hacer un nuevo gmail y me encontre con que para poder registrarme se pide un telefono ¿?¿?¿? he optado por hacerme un correo en otra página, me parece una aberración que se pida un telefono para hacer un correo electrónico.

Creo que ha llegado la hora de buscar alternativas a los servicios online de google, esta gente se está pasando de la raya ....

2.3.11

Raíz cuadrada

Siempre desde que era pequeño me preguntaba como se hace para calcular una raíz cuadrada en una calculadora. Cuando me enseñaron a hacer raíces cuadradas me di cuenta rápidamente que eso no era lo que hacia la calculadora porque ... básicamente la calculadora no hace apuestas ...

Después de mucho tiempo he encontrado una forma de hacer raíces cuadradas que si podría ir en una calculadora, es bastante cutre pero ... funciona:

Quiero calcular la raíz cuadrada de 10:

(1) Empezamos por una aproximación sqrt(x) ~= y
(2) Mejoramos nuestra aproximación como: sqrt(x) = media(y, x/y)

Y se itera el segundo paso hasta que la aproximación sea suficientemente buena. Esto se llama iteración de Newton

5.2.11

Privacidad de las comunicaciones

Una operadora sueca va a hacer todas sus comunicaciones anónimas. Lo que van a hacer en Bahnhof es hacer pasar todo el tráfico de los clientes por una VPN (Red Privada Virtual) completamente cifrada mediante técnicas criptográficas seguras. De este modo, ni siquiera los propios operadores de Bahnhof sabrán por dónde navegan los usuarios, dado que no habrá registros (logs) que guardar: su navegación será anónima a todos los efectos.


No creo que ninguna operadora española vaya a hacer algo parecido, pero bueno, podemos hacerlo nosotros igualmente no?


Encriptando el bittorrent


El otro día me enteré de que el protocolo bittorrent permite encriptación y se me ocurrió comprobar si mi cliente lo soportaba. Mi cliente se llama Transmission y viene por defecto en Ubuntu.

La forma de activarlo es: Edit->preferences


Y hasta donde he podido comprobar las descargas son igual de rápidas. Que aproveche el invento

5.1.11

Lo verde del roscón


A esta hora debería estar durmiendo tranquilamente para que los reyes me traigan los regalos (si es que no he sido demasiado malo), pero hay una duda que me corroe desde que me comí un trozo de roscón, hace un rato, ¿qué coj... es lo verde que lleva el roscón encima?

Hasta el momento nadie me lo ha sabido responder, yo no quería, pero finalmente he tenido que preguntárselo a Mr. Google y la respuesta es ... "Calabazate" ... estoooo después de buscar me he quedado igual; así que veamos que es un "Calabazate"






Con esto, tiempo y la receta eventualmente sale el pegote verde tan amado/odiado del roscón de reyes.

Además con esta misma fruta se hace el cabello de ángel y algunas otras cosas (o no la verdad es que no tengo ni idea)