Jacobo Tarrío announces the availability of a press release

DUBLIN, Ireland — November 5th 2009 — Jacobo Tarrío, a leading Galician software engineer residing in Dublin, today announced in his website the general availability of a press release.

“This press release is a milestone in my quest to write content other people will read,” said Jacobo Tarrío. “Thanks to it, tens and even dozens of persons will know that I published a press release.”

The idea for the press release was born when Jacobo Tarrío read a press release from Apple and noticed that all press releases followed the same scheme. After many seconds spent in research and development, and investments in IT totalling almost one cent, a new press release was born.

“I am glad that this press release went out,” said Jacobo. “Now I can sleep happy knowing that it is out there, possibly being read by someone other than me.”

About Jacobo Tarrío:

Jacobo Tarrío is the leading member of the community of Galician software engineers who live in Dublin near a rail track. He revolutionized the world of press releases when he published in his website a press release about his publishing a press release. Jacobo also makes revolutionary humorous videos when he is not writing revolutionary press releases.

The Twitter client for Windows^H^H^H^H^H^H^H^H Android

I just wanted to post a note saying that I abandoned the Windows Twitter client a month ago, when I discovered that embedding IE in an application using the raw Win32 API is hard, but not as hard as making it do something more than just browsing web pages (it is very easy with .NET and other frameworks, but, then again, the point was not using them).

But fear not; for the past two weekends I wrote a Twitter client for Android; and, in this case, I will actually use it every day, because I was really fed up with the one I had been using before. I even recycled the name "CheepCheep" for the new client.

Ah, and I programmed it entirely from Windows, of course :)

I will post some more about it one of those days.

Bicis de Dublín

Poco antes de que comenzara a operar en Dublín el nuevo sistema de alquiler de bicicletas, la prensa pidió su opinión a un representante de la menos numerosa que antaño, pero todavía influyente, comunidad yonki de Dublín.

— Bah, esas bicis no sirven para nada —fue su veredicto—. Son demasiado distintivas.

Orgullo ciudadano

Como sabéis, llevo algo más de dos años residiendo en Irlanda. Por eso, aunque no sea ciudadano irlandés, me llena de orgullo la noticia de que an Garda Síochána, el cuerpo de Policía de la República de Irlanda, ha ganado un premio.

En efecto, an Garda ha ganado el premio Ig Nobel 2009 de Literatura. Su obra: emitir decenas de multas por todo el territorio de la República al más persistente infractor, un ciudadano polaco llamado Prawo Jazdy. Cuyo nombre, casualmente, significa “Permiso de Conducción”.

¡Enhorabuena a los premiados, y buen trabajo!

State of the art (of the Twitter client)

This is what my Twitter client looks like today.

Current look of CheepCheep

It is displaying my "home timeline"; that is, the list of tweets I see when I log in to Twitter. The timeline is rendered in an embedded Internet Explorer control (and I need to apply some more CSS styles). I have also implemented the preferences dialog, and it works, but I cannot save the preferences yet (I have to enter the credentials every time I restart the application).

Not implemented yet: automatic updates, entering new tweets, deleting your tweets, viewing single tweets/conversations, viewing a single user.

Yes, I'm learning quite a bit writing this program. One of the things I have learnt is that Windows programming is not as horrible as I remember it — but then, it was about 15 years ago :)

More impressions on Windows Programming

I'm still learning how to program for Windows in C++ using the Win32 API, and I'm writing more of my impressions — remember that I've worked with Linux for the past 12 years, and this all is practically new for me.

  • Visual Studio is not a bad IDE, but it is not excellent either (at least for C++). That, or I have been spoilt by Eclipse and IntelliJ IDEA and their excellent support for refactoring (at least for Java). IDEA has such a powerful autocompletion, I have written complete modules without writing a method or variable name in full. In Visual Studio, OTOH, IntelliSense stops working all the time. Are you initializing a variable in the definition? It stops working. Have you got a syntax error 50 lines up? It stops working. Are you using C++ templates? It stops working. I don't know why it stops working so much, when it doesn't even try to figure out whether you want to input a type or a method or a variable name.
  • It is hard work embedding Internet Explorer in an application when you aren't using MFC or Visual Basic or C# or one of those frameworks that give you a "WebBrowser" class in which all the work is already done. Not knowing anything about OLE/COM/ActiveX didn't help, of course. I have to thank Jeff Glatt for his article, “Embed an HTML control in your own window using plain C” (and his “COM in plain C” series), and the authors of wxCode's IEHtmlWin component (once again, Free Software comes to the rescue!). Reading them helped me to understand how it works. Now when I go read the documentation on MSDN, it makes sense!.
  • Talking about MSDN, the quality of the documentation varies. At some points it is very comprehensive and includes tutorials and guides and everything, and can be read as an introductory book. However, at other points it already assumes you know how to do what you want to learn, and only includes a very broad overview and reference information. Not that the documentation in most Linux or free/open source projects is much better in general, mind you...
  • Update: I also want to correct my previous assertion that there was few documentation and my assumption that they kept it scarce on purpose for book publishers' sakes. It turns out there is plenty of documentation (see the point above), only that I didn't know how to find it, as it wasn't in the Express Edition help files. I think. Anyway, it's all online on MSDN.

Dúas semanas despois

O 15 de agosto publicara unha historia aquí dicindo que ía empregar Windows máis a miudo, e incluso ía a aprender a programar para Windows. Vexamos como me vai:

De tódalas diferencias entre Windows e Linux, a que máis noto é que en Windows non existe a “selección primaria”. Iso é o nome técnico da característica de X-Window pola que, se seleccionas texto co rato, despois podes pegalo en calquera sitio premendo a roda do rato. Como estou afeito a usalo continuamente en Linux, en Windows sempre esquezo premer Control-C e Control-V para copiar e pegar.

Tamén, coma dixen antes, estou a aprender a programar para Windows. Ao principio descargara o Visual Studio C++ Express Edition (por iso de que é gratuito), pero resulta que ten tantas limitacións que incluso me impedía traballar. Por sorte, na web de Microsoft hai dispoñible unha versión de avaliación do Visual Studio Professional Edition, que ten todas as características pero está limitado a 90 días, así que a descarguei (3 GB) e estou a empregala agora.

O programa que estou a facer é un cliente de Twitter. Ao facer este programa poderei traballar en moitas partes de Windows distintas, coma a interface de usuario, as comunicacións pola rede, APIs para interpretar XML e traballar con gráficos, etc. Hame dar bastante traballo porque teño que aprendelo todo segundo avanzo, pero xa conseguín facer un programa que amosa unha fiestra e pode descargar datos de Twitter e amosalos en formato XML tal como os recibiu do servidor:

Unha imaxe da fiestra do programa.

Ah, e tamén xoguei e acabei o World of Goo. Ese é un xogo que consiste en unir bólas pegañentas formando estructuras para acadar un obxectivo. Fixérono entre catro persoas cun presuposto de 10.000 dólares, e tivo moito éxito. A verdade é que é un xogo precioso, e paga a pena. Ah, e funciona en Windows, Mac e Linux (e hai versións de demostración para as tres arquitecturas).

Taxis en Dublín y en Nueva York

Cuando llegué por primera vez a Dublín, alguien me dijo que había más taxis en Dublín que en Nueva York. Por supuesto, no me lo creí, así que pedí una aclaración: “¿per cápita, o en términos absolutos?” “En términos absolutos” fue la respuesta. Seguí sin creérmelo mucho, pero no volví a prestarle atención.

Hasta ayer, claro. Hablando de otras cosas, de alguna forma llegamos al tema de los taxis, así que decidí investigar el asunto. Decidí contar sólo licencias para vehículos del tipo que normalmente consideramos “taxi”; esto no incluye limusinas u otros tipos de coches de alquiler.

Conclusiones: en County Dublin hay unos 12.000 taxis para unas 1.200.000 personas. Esto son 100 personas por cada taxi. En Nueva York, sin embargo, hay unos 13.000 taxis para unas 8.400.000 personas. Esto son 646 personas por cada taxi. Por lo tanto, Dublín tiene menos taxis que Nueva York en términos absolutos, pero muchísimos más per cápita. Si mi amigo hubiera respondido “per cápita” habría tenido razón.

Mi paso al reverso tenebroso

Llevo usando Linux desde finales de 1996. Al principio, como todo el mundo, tenía arranque dual entre Windows 95/98 y Linux; sin embargo, cuando compré un ordenador en 2004 sólo le isntalé Linux (aunque había hecho sitio para una partición Windows, al final no lo instalé), así que utilicé Linux de forma exclusiva hasta que compré mi ordenador nuevo hace un año.

Este ordenador vino con Windows Vista. Durante un rato pensé en vaciar el disco duro e instalar sólo Linux, pero al final decidí reducir el tamaño de la partición Windows e instalar Linux al lado. Esta partición quedó ociosa hasta hace un par de meses.

Hace un par de meses me di cuenta de que me aburría usando mi ordenador. Al fin y al cabo, incluso cuando se tiene una conexión a Internet, hay un límite para el número de LOLcats que uno puede ver en un día. Por suerte, me acordé de que tenía una partición Windows, y me compré la Orange Box. La Orange Box es una caja de color naranja con varios juegos (tres episodios de Half-Life 2, Portal y Team Fortress 2, por lo que recuerdo). Terminé Portal en cuatro horas, probé Half-Life 2 (no me gustó mucho, así que jugué poco) y luego me puse con Team Fortress 2, que me gusta mucho.

Justo antes de esto también había comprado una videocámara para hacer estos vídeos que pongo aquí de vez en cuando. Resulta que todos los programas de edición de vídeo libres para Linux son una mierda, pero en la partición Windows encontré el Microsoft Movie Maker, que no es muy bueno pero al menos funciona, así que con él podía editar mis vídeos aunque no pudiera hacer muchas florituras.

Entre una cosa y la otra, empecé a utilizar Windows bastante tiempo. No mucho tiempo, ojo, pero sí lo suficiente para que me preguntara: “¿Qué pasaría si utilizara más Windows?”

Una de las cosas que quiero probar es la programación para Windows, así que para tener una experiencia “auténtica” me descargué el Visual C++ Express, que es gratuito. Necesitaba un tutorial para empezar, así que abrí la ayuda del programa y pulsé en un enlace con el prometedor título “cree su primera aplicación en C++ para Windows”. Como suponía, esto me llevó a una página llena de instrucciones para hacer un programa que muestra una ventana con el texto “¡Hola, mundo!”. Sin embargo, el enlace para el siguiente paso no era “Añada un botón a la ventana” o “Haga que su aplicación sea interactiva” o algo parecido, que sería el segundo paso de un tutorial, sino algo como “Emplee el CLR desde C++”.

Aquí supongo que me encontré con una de las diferencias filosóficas entre el bando del Software Libre y el bando de... bueno, y el resto del mundo. Supongo que hay muchas empresas que publican libros con títulos como “Aprenda a programar para Windows en 24 horas” o “Guía de estudio para el examen de MSCE”, y se molestarían bastante si Microsoft incluyera un tutorial completo y gratuito en Visual C++ Express.

Por lo tanto, compré dos libros: “Windows via C/C++” y “Windows Internals” (prefiero hacer programación de sistemas). No los he abierto todavía (me quedan 350 páginas de “Guerra y Paz”), pero lo haré pronto.

Volveré a escribir cuando tenga más experiencia con esto de Windows.

Confesiones de un troll de Internet

Este vídeo-documental demuestra que el que juega con fuego (aunque sea virtual) a veces se quema.