Las citas espirituales de Notepad++

Una vez más, en la última actualización rutinaria de Notepad++, miro de reojo el log de bugs arreglados y mejoras y me encuentro otra sorpresa. (Voy a tener que dejar de mirarlo).

  1. Fix bug: language menu item is restored back on the wrong zone.
  2. Add a spiritual quote.

Un par de días después, en un rato libre, me lanzo a buscar dónde ver esas citas que elevarán mi espíritu cuando esté obligado a programar en Windows y encuentro que para verlas debe lanzarse Notepad con el parámetro «qnrandom»:

c:\Program Files (x86)\Notepad++>notepad++.exe -qnrandom

Atención a lo que pasa, al elevado apoyo espiritual que aportan las citas y al tiempo libre que tienen algunos programadores:

Juro que yo no escribo, escribe Notepad, yo sujeto el móvil. :-O


Editado el 27/03/2018:

Nueva actualización y nueva frikada. ¡A este paso va a hacer falta una sección propia!

Yahoo toca fondo

Verizon ha comprado Yahoo, y encima lo ha logrado con una rebaja importante por la devaluación sufrida al conocerse las vulnerabilidades de seguridad que permitieron el robo de los datos de millones de usuarios.

De ser una de las grandes de Internet, pero con miedo a Microsoft, a ver como primero Google, y después otros, la pasaban a toda velocidad dejándola en la cuneta. Querer ser una compañía de contenidos, quitar el control de los productos a los programadores para dárselo a diseñadores y jefes de proyectos fue el principio del fin.

Según leí en su momento, las pérdidas de datos de sus usuarios fueron debidas a priorizar el volumen de tránsito por encima de todo, incluida la seguridad, a pesar de las advertencias de los técnicos. Eso ya fue el fin.

Muy interesante el ensayo de Paul Graham, ex-empleado de Yahoo, que leí hace años, para conocer los barros que la llevaron a estos lodos.

Google deja de leer Gmail

Google ha anunciado recientemente que ya no escaneará los emails de los usuarios de Gmail:

Google has decided to follow suit later this year in our free consumer Gmail service. Consumer Gmail content will not be used or scanned for any ads personalization after this change.

Algo que no hacen ni Yahoo ni la compañía más criticada en el pasado reciente por sus prácticas: Microsoft. ¿Qué hubiera pasado si fuera Microsoft la que lee los emails de Hotmail (ahora Outlook)? Probablemente muchos hubieran puesto el grito en el cielo. Pero para Google hay otro rasero.

Cuando hace bastantes años atrás leí que «Don’t be evil» (no seas malvado) es su lema para la conducta interna me llamó la atención leer tantas opiniones favorables a Google, como si fuera fuente de toda virtud. Fui un poco escéptico y pensé que Google, como todas las grandes empresas, tiene como objetivo rendir beneficios a sus accionistas; ni es una ONG ni son las hermanitas de la caridad. El caso es que su estrategia de marketing les funcionó porque durante años todos los usuarios de Gmail hemos estado conformes con que Google escaneé nuestros emails para ofrecernos una publicidad más personalizada. Como bien dice el refrán: más vale caer en gracia que ser gracioso. Google supo desde el principio que no bastaba con tener la mejor tecnología.

Zen, matemáticas y la paradoja de Sorites

Montón de arena o duna o n granos de arena

¿Montón de arena? ¿Duna? ¿N granos de arena?

Hace años leí algunos capítulos de un fragmento de un libro Zen escrito en algún momento entre los siglos XVI y XIX, ya no recuerdo, de la escuela Soto o Rinzai, tampoco lo recuerdo, de un autor que, como probablemente habrás adelantado, tampoco recuerdo, pero sí, era japonés. En definitiva, muy Zen todo. Lo que sí recuerdo bien es un símil realizado con la evolución de un fuego recién empezado con unos leños hasta su consumición completa. ¿En qué momento podemos decir que dejaron de haber leños para haber sólo ceniza? Creo que con este ejemplo el autor quería hacer notar las limitaciones que nuestros conceptos mentales tienen para ayudarnos a entender la realidad.

Bastantes años después he caído, navegando por Internet, en la paradoja de Sorites. Esta paradoja entiendo que quiere hacernos caer en la cuenta de algo muy parecido, poniendo como ejemplo no la combustión de un pequeño fuego sino un montón de arena. Sorites es como se pronuncia en griego σωρείτης palabra que significa montón o cúmulo. La paradoja parte del hecho de que estaremos todos de acuerdo en que:

  1. Dos o tres granos de arena no son un montón.
  2. 100.000 o 1.000.000 sí lo son.
  3. Si dos o tres granos de arena – llamemos n a esos dos o tres – no son un montón, tampoco lo serán n+1
  4. Un montón de n granos no dejará de serlo por quitarle uno (n-1)

Mediante inducción matemática se comprueba que la primera y tercera característica niegan la segunda, es decir, que 100.000 granos (ni un millón) forman un montón.

Llamemos a ser un montón tener la propiedad P. La primera característica nos dice que para n = 1 no existe la propiedad P, y que tampoco existe para n = 2 ni para n = 3. La tercera nos dice que dado que Pn no es un montón tampoco lo será Pn+1 = n+1 Tenemos:

  1. ¬P(1)
  2. ¬P(2)
  3. ¬P(n) ⇒ ¬P(n+1)

Supongamos que hay un número mínimo de granos de arena a partir del cual sí se verifica P, llamaremos m a ese número. Tenemos entonces que m-1 no es un montón y a partir de m granos sí lo es. También sabemos por la característica 1 que m > 1 y por la 3 sabemos que m -1 debe cumplir:

P(m-1) ⇒ P(m -1 + 1)

Es decir, que P(m-1) = P(m) y esto es una contradicción pues hemos impuesto que m es el elemento mínimo a partir del cual tenemos la propiedad P (es un montón) y por debajo de m granos no tenemos esa propiedad.

Por el mismo método de la inducción matemática se demuestra a partir de las características segunda y cuarta de un montón que la primera es falsa, es decir, que tan solo dos o tres granos de arena sí son un montón. Incluso que ningún grano también lo es.

Por lo tanto, no sólo conceptos como la belleza o la armonía son difíciles de definir, sino que identificar conceptos que representan objetos físicos como la madera o la ceniza, incluso los medibles como la gordura o la delgadez (peso), o un montón (número de elementos que lo forman) nos pueden resultar evidentes cuando realmente no lo son.

¿Hace falta ir a la universidad para ser un buen desarrollador?

Son muchos los artículos que hay en Internet, principalmente en inglés, defendiendo la idea de que no es necesario ir a la universidad para serlo, llegando algunos al extremo de decir que los mejores desarrolladores son los que no fueron. Las argumentaciones son de lo más variopintas. Algunos razonan que en un mundo teórico ideal el software sería determinista, desarrollado en lenguajes funcionales y por lo tanto libre de efectos secundarios, pero que en el mundo real los lenguajes, por ejemplo Java y todos los orientados a objetos, fueron creados para solventar las necesidades de los negocios, y por lo tanto aceptando que errores del software por casuísticas imprevistas son sobradamente compensados por el incremento en productividad, ductilidad del software, etc. Es decir, que no importa la calidad de la base teórica del software desarrollado, sólo importa si ayuda a cumplir los objetivos de la empresa, que a grandes rasgos sólo pueden ser dos: reducir los costes o aumentar lo beneficios.

Uno de los artículos más famosos que defienden la idea de que no es necesario ir a la universidad, aunque no es este el tema principal del artículo, lo escribió ya hace años Peter Norvig, empleado de Google y de la NASA, reputado científico computacional muy destacado en inteligencia artificial.

Grandes desarrolladores nunca fueron a la universidad o abandonaron a los pocos trimestres: Bill Gates, John Carmack o Jamie Zawinski son buenos ejemplos, Janus Friis no terminó ni el Bachillerato, mientras que buenos ejemplos de lo contrario son Dennis Ritchie, Ken Thompson, Linus Torvalds y Yukihiro Matsumoto.

La informática, en sus albores, fue creada por matemáticos, ingenieros y físicos. A principios del siglo XX se planteó en matemáticas la pregunta: ¿Es posible saber de antemano si un problema matemático tiene solución? Es decir, saber de antemano si hay problemas para los que no hay solución. Los problemas a los que hace referencia la pregunta no son cálculos matemáticos sino afirmaciones, la demostración que concluye si es correcta o no es la solución. Un ejemplo de afirmación es:

Los números primos son infinitos.

La solución es la demostración que concluye si la afirmación es cierta o falsa. Es el llamado problema de la decisión. Lo que el problema pregunta es si es posible saber de antemano si toda afirmación será o bien cierta, o bien falsa, o si existen afirmaciones que no se pueden demostrar.

Cuando el matemático británico Alan Turing creó el modelo matemático que ahora conocemos como máquina de Turing1, no tenía como objetivo crear la computación sino hallar la respuesta a este problema. Por un lado, Turing probó que cualquier método de implementar un problema se podía simplificar siempre a su máquina. Por otro, también probó que no se podía construir ninguna máquina de Turing capaz de demostrar si un problema iba a tener solución o no, por lo que la respuesta al problema de la decisión es un no. Por lo tanto, vemos que el nacimiento de la informática está íntimamente ligado a las matemáticas.

Otro de los padres de la informática, el húngaro John von Neumann, era matemático, ingeniero, físico e inventor. Además de sus aportes para que esta ciencia naciera, aportó a la física, las matemáticas (también a la estadística), la economía y la ingeniería.

Algunos de los desarrollos posteriores que tuvo la ciencia de la computación también fueron debidos a matemáticos y físicos. Unos, para avanzar más en sus respectivas disciplinas, debieron primero avanzar ésta. Otros, directamente dejaron de lado su ciencia para especializarse en la informática.

Creo que está fuera de discusión que la informática es una ciencia cuyas bases están en las matemáticas. Por lo tanto, opino que un conocimiento de la teoría que sustenta la informática, ya sea autodidacta o adquirido en la universidad, da una ventaja a quien lo poseé en un mundo donde la tecnología cambia cada 5 años, donde por ejemplo esas librerías que conocía al dedillo el programador de Visual Basic se convirtieron en conocimiento inútil cuando tuvo que migrar a .NET para no verse tirado en la cuneta por la tecnología. Esta ventaja consiste en la capacidad de aprender más rápido una nueva tecnología. Lamentablemente, a veces un «reclutador» puede preferir a un desarrollador Java recién salido de la universidad frente a otro licenciado años atrás y con experiencia en otro lenguaje pero que quiere migrar a Java, simplemente porque el recién licenciado se sabe más librerías de memoria, lo que frecuentemente sucede en las «cárnicas».

Los conocimientos teóricos no te ponen delante de alguien que lleva años trabajando en el sector, tampoco evitan que te pase la mano por la cara alguien que no los tiene pero sí tiene una elevada inteligencia. Lo único que pueden hacer es hacerte mejor desarrollador y en un mundo global, donde se puede trabajar a distancia para otros países, a veces en otros continentes, tal vez sea más sano no compararse con otros e intentar «sólo» ser mejor. Hace tan sólo 10 años, ser un reconocido desarrollador en Barcelona podía significar unos elevados ingresos, pero hoy una empresa puede contratar los servicios remotos de especialistas a nivel mundial, a sus tarifas, claro.

Otra ventaja, no ya de los conocimientos, sino del título, es que en una empresa muy establecida y grande puede ser una condición sine quan non. Incluso estando el reclutador, por ejemplo el jefe del departamento que necesita el empleado, dispuesto a ver el CV de candidatos sin el título pero con experiencia laboral que considere adecuada, puede verse incapaz de retirar este requisito de la oferta laboral por ser la cultura de la empresa.

Me ha sorprendido haberme encontrado en mi trayectoria profesional compañeros que hacía poco que habían acabado la carrera y afirmaban no entender para qué les habían puesto tantas matemáticas en la carrera: álgebra, análisis, estadística, matemática discreta… O bien pretendían confundirme o bien no entendieron que un ingeniero se las ingenia mejor con una base. En todo caso, tanto esfuerzo de la sociedad para escolarizarlos para que finalmente acabaran llegando a esta conclusión…


1 Este es el modelo que mejor representa un ordenador actual. Como una de sus características es que tiene dos registros capaces de albergar, cada uno, un número entero infinitamente grande, semejante máquina no puede construirse; se trata «sólo» de un modelo teórico.

Los campos meta que Facebook impone

Facebook imponiendo su criterio en la web (todavía libre):

Resultados de la herramienta Sharing Debugger de Facebook al procesar una URL

Pueden deducirse todos todos los valores de otros meta tags pero no le gustan que no sean estrictamente los suyos. Y no son pocos, aquí sólo unos cuantos:

<meta property="og:type" content="website" />
<meta property="og:title" content="Título de la página" />
<meta property="og:description" content="Descripción de la página" />
<meta property="og:site_name" content="bla bla bla" />
<meta property="og:url" content="http://www.bla.com/lang/bla-bla-bla/bla/" />
<meta property="og:image" content="http://www.bla.com/images/bla/1/bla.jpg" />

Sigue leyendo