Three years ago, I started a series of long posts called "PyQt by Example". It reached five posts
before I abandoned for a series of reasons that don't matter anymore. That series is coming back
starting next week, rewritten, improved and extended.
It will do so in a new site, and the "old" posts will be retired to an archive page. Why? Well,
the technologies used in some of them are obsolete or don't quite work nowadays. So, the new
versions will be the preferred ones.
And while I am not promising anything, I have enough written to make this something quite longer,
more nicely layouted, more interesting and make it cover more ground. BUT, while doing some
checks on the traffic statistics for the old posts, some things popped out.
This was very popular
About 60% of my site's traffic goes to those five posts. Out of about 1200 posts over
12 years, 60% of the viewers go to the 0.4% of the pages. That is a lot.
It's a long tail
The traffic has not decreased in three years. If anything, it has increased
A long and tall tail.
So, all this means there is a desire for PyQt documentation that is not satisfied. I am not
surprised: PyQt is great, and the recommended book is not free, so there is bound to be a lot
of demand.
And, here's the not-so-rosy bit: I had unobtrusive, relevant, out-of-the-way-but-visible ads
in those pages for more than two years. Of the 70000 unique visitors, not even one clicked on
an ad. Don't worry, I was not expecting to get money out of them (although I would love to
some day collect a $100 check instead of having google hold my money for me ad eternum).
But really? Not even one ad click? In more than two years, thousands of people? I have to
wonder if I just attract cheap people ;-)
Así que va a estar buenísimo. Para mí es una rara oportunidad de poder
pasar unos días dándole manija a proyectos personales, sin que me interrumpan
pavadas como familia, trabajo, cocinar, o socializar, excepto con otros nerds.
Seguro, puede llegar a haber algún ocasional paseo en monociclo, lecciones
de malabares, o práctica de tiro, pero en serio, tres o cuatro días
sólidos de hacking.
Mi idea es trabajar en proyectos relacionados con Nikola
mi generador de sitios estáticos, así que si te interesa y vas a pycamp, hablemos.
Y si te interesa pero no vas a pycamp, no hay motivo para no hacer un sprint
virtual. Hay internet. Hay IRC. Voy a tener tiempo. ¡Es un fin de semana largo!
Por favor compartí ideas en el grupo nikola-discuss
y veremos qué podemos implementar, o por lo menos empezar.
Este script es un muy simple verificador de links que se asegura que las páginas
que Nikola genera no tengan links rotos. Va a
ser parte de Nikola propiamente dicho una vez que esté más pulido y doit soporte listar los targets
Para probarlo, bajalo y ejecutálo desde el mismo lugar
donde está tu conf.py, inmediatamente después de un doit.
import os
import urllib
from urlparse import urlparse
import lxml.html
def analyze(filename):
try:
# Use LXML to parse the HTML
d = lxml.html.fromstring(open(filename).read())
for l in d.iterlinks():
# Get the target link
target = l[0].attrib[l[1]]
if target == "#": # These are always valid
continue
parsed = urlparse(target)
# We only handle relative links.
# TODO: check if the URL points to inside the generated
# site and check it anyway
if parsed.scheme:
continue
# Ignore the fragment, since the link will still work
# TODO: check that the fragment is valid
if parsed.fragment:
target = target.split('#')[0]
# Calculate what file or folder this points to
target_filename = os.path.abspath(
os.path.join(os.path.dirname(filename), urllib.unquote(target)))
# Check if it exists, or report it
if not os.path.exists(target_filename):
print "In %s broken link: " % filename, target
except Exception as exc:
# Something bad happened, report
print "Error with:", filename, exc
# This is hackish: we use doit to get a list of all
# generated files. Minor modifications would let you check
# the non-generated files as well.
for task in os.popen('doit list --all', 'r').readlines():
task = task.strip()
if task.split(':')[0] in (
'render_tags',
'render_archive',
'render_galleries',
'render_indexes',
'render_pages',
'render_site') and '.html' in task:
# It looks like a generated HTML file
analyze(task.split(":")[-1])
Últimamente se ha hablado mucho sobre códigos de conducta en conferencias. No tengo
muchas respuestas, pero tengo muchas preguntas en la cabeza, y algunas cosas me
hacen ruido, así que quiero volcar un poco lo que tengo adentro, y veamos si surge
algo de claridad.
Lo principal parece ser que estos códigos de conducta propuestos apuntan a
hacer que los eventos sean inclusivos, y más diversos, y que gente que en
el pasado no se sentía bienvenida ahora lo sea. Que entre esa gente se cuente
a las mujeres debería ser un llamado de atención. ¿Mujeres? ¡Son la mitad del
mundo! Y aparentemente con intención o no, las estamos excluyendo.
Entonces, en principio, si adoptar un código de conducta ayuda con eso, vamos
con eso. Lo mismo sobre gays, lesbianas, transexuales, etc. No son el 50% de la
gente, pero son tipo el 10%, así que es un montón de gente, y agregarlos a
nuestro grupo es una optimización fácil.
Sin embargo, me preocupa un poco que estos códigos de conducta contengan
lenguaje como éste:
Acoso incluye comentarios verbales ofensivos relacionados con
género, orientación sexual, discapacidades, apariencia física,
tamaño del cuerpo, raza, religión, imágenes sexuales en lugares
públicos, intimidación deliberada, stalking, seguimiento, fotografía
o grabación no autorizada o inapropiada, interrupción sostenida de
charlas u otros eventos, contacto físico inapropiado, y atención
sexual no bienvenida.
Algunos son completamente obvios, gente que interrumpe las charlas en las
conferencias hay que echarla, la intimidación es abominable, el stalking
es una cagada, etc. ¿Pero "comentarios verbales ofensivos relacionados con [todo]"?
Y acá tengo que hacer un desvío y mostrarles un cartel. Cuando estuve en Londres
una cosa que me llamaba la atención eran los carteles en las calles. Ejemplo:
¿En otros países diría "No se permiten perros", no?
¿Y porqué son así? Es probable que sea porque son gente muy muy muy
educada. También porque los carteles ofensivos son castigados con pena de prisión.
Tengo la infundada sospecha de que primero fueron educados, y después
vino el derecho a que nadie te ofenda, que terminó siendo ley, y ahora tenés
que ser educado o si no vas a ver.
Soy un ateo bastante ruidoso, pero sólo lo menciono afuera de este blog
si otro menciona su religión primero. Por ejemplo, si alguien dice "menos
averigua dios y perdona", capaz que le digo "eso es porque no existe", como
una broma. De ahora en más tengo que asumir que eso puede ser ofensivo y no
lo puedo hacer. Y está bien, puedo vivir con eso, puedo estar unas horas
sin ofender a nadie. Hace mucho que no trato, pero creo que puedo.
Y en un evento privado, como es una conferencia, no hay una libertad inherente
de expresión, porque tienen derecho de admisión y me pueden rajar cuando
quieran sin explicaciones, y estoy de acuerdo con eso, porque me reservo
el derecho de rajar gente de mi casa.
Así que ok, dejamos la religión afuera. No tiene lugar en una conferencia
técnica de todos modos, y como protesta voy a ponerme mi remera del
unicornio rosa invisible (parece una remera gris cuello en v).
Y no me jode no molestar gente por su género o preferencias sexuales. Soy
lo bastante viejo y pajuerano como para que si dos tipos se dan un beso
al lado mío, me molesta un poco. Por suerte soy lo bastante adulto como
para decirme a mí mismo "sos un viejo pajuerano" y mirar para otro lado.
Después de todo, he visto gente a la que le molesta que bese a mi esposa
en público, y hacerlo me gusta, así que cada uno a besar a lo suyo, y
todos contentos. Por otro lado, a mí me gustan las mujeres, a mi esposa
le gusto yo, así que puedo entender casi cualquier gusto.
Por otro lado, entiendo que la mera presencia de alguien puede ser
ofensivo para otros. Conozco gente que prefiere pasar dos horas parado
que sentarse al lado de un transexual, o bajarse del bondi en cualquier
lado antes que "soportarlo". Y soy lo bastante viejo y pajuerano que
los entiendo. Así que ofender no es la cosa, porque ofender se ofende
cualquiera por cualquier cosa, si con solo estar ofendés, no quiero que
no estés. Lo que queremos es que no se ofendan, o que se ofendan y se
la aguanten callados, o que se ofendan y no le importe a nadie.
Y sí, invitar gente a enfiestarse cuando te los cruzás en los pasillos es
mucho (yo nunca invito a tríos antes de la cuarta cita porque es mala
educación). Tratar de levantarse gente en un bar a la noche no es tan
grave, a menos que molestes, en cuyo caso espero un círculo protector
de gente copada para que el desubicado no arruine su propia noche ni
la del otro. Pero bueno, no sé, nunca encaré ni me encararon en un
bar, excepto otros tipos, porque tengo esa suerte.
Lo que queremos es que sean educados. Queremos que se traten todos
bien los unos a los otros. Queremos que todos sean tan educados como
puedan con la mayor cantidad de gente que puedan. Especialmente quiero
que todos sean muy educados con la gente que peor les caiga. Porque
con la gente que te llevás bien, capaz que no importa.
Por otro lado debe haber algo acá que no estoy viendo, porque esto de
la tolerancia y el respeto no es lo mío, yo estoy a favor del
proselitismo, la falta de respeto, la molestia ingeniosa y poner
incómoda a la gente. Pero en general trato de no hacerlo personalmente,
si no de tirar cosas a la tribuna y ver que pasa.
A mí me han fotografiado sin pedirme permiso. ¡Me han escaneado la remera
sin pedirme permiso! (Ok, admito que tener un código de barras en
la remera es un permiso implícito), me han puesto nombres feos, pero yo
sé que como dijo un escritor, estoy jugando la vida en el nivel fácil,
porque soy un varón blanco, relativamente sano, heterosexual, de
clase media para arriba con un buen laburo. No sé qué se siente ser
gay, o atractivo, o atractivo a los gays, ni nada. No soy acosable
porque la cara me salva el culo. Y sé que otros no tienen esa suerte.
Así que si bien esa clase de códigos me llena de dudas, y me hace pensar
en qúe clase de comunidad he estado moviéndome estos años, ignorando
todas estas cosas que ahora salen a la luz, lo voy a seguir. Nunca los
rompí intencionalmente antes (bueno, una vez saqué una foto
inapropiada pero fué un chiste, la vió una sola persona, y la borré, y
me arrepiento, ¿ok?).
Así que ojalá en los próximos eventos que vaya haya mucha gente que no
conozco. Ojalá no ofenda a nadie de forma irreparable. Voy a tratar
de ser tranqui. Voy a ser abierto e inclusivo. Voy a ser copado.
Peor acordáte, si soy muy muy copado capaz que es porque no te
banco. De nada.